[ 
https://issues.apache.org/jira/browse/BLUR-132?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13741255#comment-13741255
 ] 

Aaron McCurry commented on BLUR-132:
------------------------------------

I think that you have the right idea but I think it needs to go lower in the 
system.  I think that we should add 2 methods to the BlurIndex.

BlurIndex {
  public abstract void createSnapshot(String name) throws IOException;
  public abstract void removeSnapshot(String name) throws IOException;
  public abstract List<String> getSnapshots() throws IOException;
}

There are 2 sub classes BlurIndexReader and BlurNRTIndex.  For BlurIndexReader, 
make these methods throw some sort of unsupported ioexception.  As for 
BlurNRTIndex you should have everything you need in that class.  You can 
control the index deletion policy, you have access to the writer, etc.

To get this in the system and make it usable, I would first stub out the 3 new 
methods in BlurIndex = BlurNRTIndex.  Then modify Blur.thrift to add the three 
methods, createSnapshot, removeSnapshot and listSnapshots.

  void createSnapshot(1:string table, 2:string name) throws (1:BlurException ex)
  void removeSnapshot(1:string table, 2:string name) throws (1:BlurException ex)
  // Should return a map where the key is the shard, and the list is the 
snapshots within that shard
  map<string,list<string>> listSnapshots(1:string table) throws 
(1:BlurException ex)

It should probably take the table name and the snapshot name as parameters.  
Generate the thrift code by running genAndReplace.sh in the distribution 
project.  After that you should implement the new methods in the 
BlurShardServer class and the BlurControllerServer class.  For the shard 
server, it should get all the indexes from the indexserver and call 
create/remove/list on all the indexes and return the results (if any).  The 
controller server should just spray the requests to all the shard servers and 
merge the results.  Take a look at the existing methods for guidance, and ask 
if you need any help with that.

After you get the RPC plumbing all hooked up then you can actually call the 
snapshot code you provide in the BlurNRTIndex class.  Let me know if you have 
any more questions.

Aaron 

                
> Create Index Snapshots
> ----------------------
>
>                 Key: BLUR-132
>                 URL: https://issues.apache.org/jira/browse/BLUR-132
>             Project: Apache Blur
>          Issue Type: New Feature
>    Affects Versions: 0.3.0
>            Reporter: Aaron McCurry
>             Fix For: 0.3.0
>
>


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to