Author: shalin
Date: Thu May 28 09:11:12 2009
New Revision: 779497

URL: http://svn.apache.org/viewvc?rev=779497&view=rev
Log:
SOLR-1152 -- Snapshoot on ReplicationHandler should acccept location as a 
request parameter

Modified:
    lucene/solr/trunk/CHANGES.txt
    lucene/solr/trunk/src/java/org/apache/solr/handler/ReplicationHandler.java
    lucene/solr/trunk/src/java/org/apache/solr/handler/SnapShooter.java

Modified: lucene/solr/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=779497&r1=779496&r2=779497&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Thu May 28 09:11:12 2009
@@ -228,6 +228,8 @@
 
 56. SOLR-1051: Support the merge of multiple indexes as a CoreAdmin and an 
update command (Ning Li via shalin)
 
+57. SOLR-1152: Snapshoot on ReplicationHandler should acccept location as a 
request parameter (shalin)
+
 Optimizations
 ----------------------
  1. SOLR-374: Use IndexReader.reopen to save resources by re-using parts of the

Modified: 
lucene/solr/trunk/src/java/org/apache/solr/handler/ReplicationHandler.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/ReplicationHandler.java?rev=779497&r1=779496&r2=779497&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/handler/ReplicationHandler.java 
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/handler/ReplicationHandler.java 
Thu May 28 09:11:12 2009
@@ -128,7 +128,7 @@
     } else if (command.equals(CMD_GET_FILE_LIST)) {
       getFileList(solrParams, rsp);
     } else if (command.equals(CMD_SNAP_SHOOT)) {
-      doSnapShoot(rsp);
+      doSnapShoot(solrParams, rsp);
     } else if (command.equals(CMD_SNAP_PULL)) {
       new Thread() {
         public void run() {
@@ -244,11 +244,11 @@
     return snapPullLock.isLocked();
   }
 
-  private void doSnapShoot(SolrQueryResponse rsp) {
+  private void doSnapShoot(SolrParams params, SolrQueryResponse rsp) {
     try {
       IndexCommit indexCommit = core.getDeletionPolicy().getLatestCommit();
       if (indexCommit != null)  {
-        new SnapShooter(core).createSnapAsync(indexCommit.getFileNames(), 
this);
+        new SnapShooter(core, 
params.get("location")).createSnapAsync(indexCommit.getFileNames(), this);
       }
     } catch (Exception e) {
       LOG.warn("Exception during creating a snapshot", e);
@@ -820,7 +820,7 @@
         }
         if (snapshoot) {
           try {
-            SnapShooter snapShooter = new SnapShooter(core);
+            SnapShooter snapShooter = new SnapShooter(core, null);
             
snapShooter.createSnapAsync(core.getDeletionPolicy().getLatestCommit().getFileNames(),
 ReplicationHandler.this);
           } catch (Exception e) {
             LOG.error("Exception while snapshooting", e);

Modified: lucene/solr/trunk/src/java/org/apache/solr/handler/SnapShooter.java
URL: 
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/SnapShooter.java?rev=779497&r1=779496&r2=779497&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/handler/SnapShooter.java 
(original)
+++ lucene/solr/trunk/src/java/org/apache/solr/handler/SnapShooter.java Thu May 
28 09:11:12 2009
@@ -43,9 +43,15 @@
   private SolrCore solrCore;
   private SimpleFSLockFactory lockFactory;
 
-  public SnapShooter(SolrCore core) throws IOException {
+  public SnapShooter(SolrCore core, String location) throws IOException {
     solrCore = core;
-    snapDir = core.getDataDir();
+    if (location == null) snapDir = core.getDataDir();
+    else  {
+      File base = new File(core.getCoreDescriptor().getInstanceDir());
+      snapDir = org.apache.solr.common.util.FileUtils.resolvePath(base, 
location).getAbsolutePath();
+      File dir = new File(snapDir);
+      if (!dir.exists())  dir.mkdirs();
+    }
     lockFactory = new SimpleFSLockFactory(snapDir);
   }
 


Reply via email to