If you look at this change:
https://github.com/thinkaurelius/titan/commit/0af6c47e24f11f18fb4b559c58e30e1a8a3e54d1(3rd change listed)
the following line was added to TitanBlueprintsTransaction.java:
if (ElementHelper.getIdValue(keyValues).isPresent()) throw Vertex.Exceptions.userSuppliedIdsNotSupported();
The TinkerPop 3.x ElementHelper code does this:
public static Optional<Object> getIdValue(final Object... keyValues) {
for (int i = 0; i < keyValues.length; i = i + 2) {
if (keyValues[i].equals(T.id))
return Optional.of(keyValues[i + 1]);
}
return Optional.empty();
}
The way I read that...getIdValue() will return something in Optional in your scenario - the 1 ID value you specified.
The isPresent() check back in TitanBlueprintsTransaction will return "true" and will throw
userSuppliedIdsNotSupportedDespite what the Titan documentation may say, this "feature" is disabled in Titan.
There were plenty of cautions about using this capability previously on Stack overflow and the mailing list:
http://stackoverflow.com/questions/17397466/how-to-overwrite-vertices-id-in-titan-database
I will open an Issue to remove the capability from the documentation given the way
the code reads today...although without Matthias commenting, we can't be 100% sure if
he intended to permanently remove this capability or if he was on his way to something else
and never got to it.
I noticed that if the code is altered around the isPresent() check to allow setting of a custom ID,
there appears to be no logic later to appropriately set an ID and another exception is encountered.