Reputation: 1455
I am using Titan 1.0 with HBase backend, creating hundreds of millions of vertices and edges daily. I am receiving the following error repeatedly:
TitanException: Could not acquire new ID from storage
After some research, I was able to generate Vertex IDs by myself, but I am still witnessing the allocation error while adding new Edges and Vertex Properties.
What can I do to overcome that issue? Is it possible to set Edge and Property ids using UUID, as offered here? Will it influence querying performance somehow?
Thanks
Upvotes: 0
Views: 129
Reputation: 1455
After some research, I came up with some insights.
On Titan 1.0, the configuration setting that sets the timeout for each ID Block allocation was moved and is now called ids.authority.wait-time
.
Moreover, you cannot set the value for this option via a local Titan properties file -- it must be updated globally on your Backend (HBase in my case).
The default value for the timeout is 0.3 seconds
- that explains our frequent failures. After setting the value, the error is much less frequent.
Upvotes: 1
Reputation: 3565
I was getting similar errors and the way I managed to fix it is by increasing the id block size that each transaction can use. This did the trick for me:
TitanGraph titanGraph = TitanFactory.open(config);
graph.configuration().setProperty("ids.block-size", idBlockSize);
The reference doc here says the following about changing the ids.block-size:
Globally reserve graph element IDs in chunks of this size. Setting this too low will make commits frequently block on slow reservation requests. Setting it too high will result in IDs wasted when a graph instance shuts down with reserved but mostly-unused blocks.
Upvotes: 1