Actions
Feature #4313
closedmon: generic key/value service
Status:
Resolved
Priority:
Normal
Assignee:
Category:
Monitor
Target version:
% Done:
0%
Source:
Development
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:
Actions
Added by Sage Weil about 11 years ago. Updated about 11 years ago.
0%
Basically, every single piece of code is now being kept on Monitor.cc. It should be moved to a different file, ideally a class inheriting PaxosService, although it really doesn't need the same guarantees as the other PaxosServices.
The whole approach follows the idea that we should be able to read a value from any monitor in the cluster, but we should only stash values through the leader, so we can leverage Paxos to do the actual dissemination of the stashed key:value.
So we have all the write operations being forwarded to the leader, who will encode them in a transaction and submit them to paxos; once all monitors commit, the leader will then reply to the client. By leveraging Paxos this way, we avoid a whole lot of trouble making these values available to all the monitors in the cluster.
I believe the approach is quite simple, and should work as it is -- thorough testing pending the creating of a simple test to perform operations alongside other tests.
Currently supported operations:
- ceph store put <key> <value> or - ceph store put <key> -i <in-file> - ceph store get <key> or - ceph store get <key> -o <out-file> - ceph store delete <key> - ceph store list - ceph store exists <key>
Btw, available @ wip-4313 commit:83ad6a7e8382b75113883f1594d831682fdca503
pull request: https://github.com/ceph/ceph/pull/150
Pushing it up for review only.
Needs to be thoroughly tested (which I will do in the morning), but from my meager testing looks like it's working fine.
Dozed off in front of the TV and forgot to push the branches.
repushed code can still be found on https://github.com/ceph/ceph/pull/150
new pull request with a script to test the 'config-key' api can be found on https://github.com/ceph/ceph/pull/162 (please read pull request notes before merging)