Keith Turner created ACCUMULO-2268:
--------------------------------------
Summary: Use conditinal mutations to update metadata table
Key: ACCUMULO-2268
URL: https://issues.apache.org/jira/browse/ACCUMULO-2268
Project: Accumulo
Issue Type: Improvement
Reporter: Keith Turner
Fix For: 1.7.0
For correctness Accumulo requires that only one tablet server at a time serve a
tablet. Inorder to enforce this Accumulo uses zookeeper locks. It assumed
that a when a tablet server dies, it will lose its lock and kill itself.
Therefore a tablet thats assigned to a dead tablet server can be safely
reassigned. However sometimes tablet servers continue to operate for a period
of time after losing their locks. Sometimes this caused by bugs in Accumulo,
sometimes it the Java GC or swapping (and the tserver does die), sometimes its
problems w/ zookeeper (like the zk thread that reports lock lost dies).
In 1.6 Accumulo added contditional mutations. Making all tablet metadata
updates use conditional mutations could make multiply assigned tablets less
able to do damage.
For example if after a minor compaction, the metadata update mutation required
the tablet location to be the current tserver that would prevent a zombie
tserver from adding an extraneuous file to the metadata table for a tablet.
[~ctubbsii] has discussed refactoring all metadata code so that its more
modular and works w/ zookeeper (for root tablet) and metadata table using same
API. This solution could depend on that. It may also be useful to make the
root tablet operate more like a regular tablet and store its list of files in
zookeeper. Then the root tablet could benefit from these changes w/ the right
abstraction layer.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)