foreach node in nodes
keys = adminClient.allKeys(node, partitions)
foreach (20 key chunk)
documents = client.getAll(keys)
foreach doc in documents
newStoreClient.put(key, doc.getValue())
end
end
end
This process is multithreaded, with thread reading from one node. It
all works and our data did migrate, but our logs were full of
ObsoleteVersionExceptions.
My two questions are, is this the best way to migrate data from one
cluster to another? The other is what is causing the
ObsoleteVersionException on the write into the new store?
I've looked through the wiki, list and code and I can't figure out the
sequence that would cause these errors.
We're running Voldemort 80.0 backed by BDB, with Sun's 1.6 jvm on
linux machines.
Thanks.
One possibility is that you stored the same key/value concurrently
because you are fetching from multiple nodes concurrently. The best
strategy depends on what you want to optimise for. For example, your
current approach means that some values will be fetched multiple
times. A way to avoid that is to get the keys from all the nodes and
to aggregate them in a set, but the naive way may be problematic if
all the keys for a given store are bigger than the memory of the
machine performing the migration.
Best,
Ismael
I'm not entirely sure I understand nodes and partitioning then. If I'm
only pulling back the keys from the partitions configured on that
node, is there still the possibility of pulling duplicate keys?
--
You received this message because you are subscribed to the Google Groups "project-voldemort" group.
To post to this group, send email to project-...@googlegroups.com.
To unsubscribe from this group, send email to project-voldem...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/project-voldemort?hl=en.
-Jay
If you get something working and reusable would you be willing to
contribute it back?
-Jay