this fix is there in the trunk , you may not need to apply the patch On Fri, Mar 27, 2009 at 6:02 AM, sunnyfr <johanna...@gmail.com> wrote: > > Hi, > > It doesn't seem to work for me, I changed as well this part below is it ok?? >> - List<String> copiedfiles = new ArrayList<String>(); >> + Set<String> filesToCopy = new HashSet<String>(); > > http://www.nabble.com/file/p22734005/ReplicationHandler.java > ReplicationHandler.java > > Thanks a lot, > > > > > > Noble Paul നോബിള് नोब्ळ् wrote: >> >> James thanks . >> >> If this is true the place to fix this is in >> ReplicationHandler#getFileList(). patch is attached. >> >> >> On Wed, Dec 24, 2008 at 4:04 PM, James Grant <james.gr...@semantico.com> >> wrote: >>> I had the same problem. It turned out that the list of files from the >>> master >>> included duplicates. When the slave completes the download and tries to >>> move >>> the files into the index it comes across a file that does not exist >>> because >>> it has already been moved so it backs out the whole operation. >>> >>> My solution for now was to patch the copyindexFiles method of >>> org.apache.solr.handler.SnapPuller so that it normalises the list before >>> moving the files. This isn't the best solution since it will still >>> download >>> the file twice but it was the easiest and smallest change to make. The >>> patch >>> is below >>> >>> Regards >>> >>> James >>> >>> --- src/java/org/apache/solr/handler/SnapPuller.java (revision 727347) >>> +++ src/java/org/apache/solr/handler/SnapPuller.java (working copy) >>> @@ -470,7 +470,7 @@ >>> */ >>> private boolean copyIndexFiles(File snapDir, File indexDir) { >>> String segmentsFile = null; >>> - List<String> copiedfiles = new ArrayList<String>(); >>> + Set<String> filesToCopy = new HashSet<String>(); >>> for (Map<String, Object> f : filesDownloaded) { >>> String fname = (String) f.get(NAME); >>> // the segments file must be copied last >>> @@ -482,6 +482,10 @@ >>> segmentsFile = fname; >>> continue; >>> } >>> + filesToCopy.add(fname); >>> + } >>> + List<String> copiedfiles = new ArrayList<String>(); >>> + for (String fname: filesToCopy) { >>> if (!copyAFile(snapDir, indexDir, fname, copiedfiles)) return false; >>> copiedfiles.add(fname); >>> } >>> >>> >>> Jaco wrote: >>>> >>>> Hello, >>>> >>>> While testing out the new replication features, I'm running into some >>>> strange problem. On the slave, I keep getting an error like this after >>>> all >>>> files have been copied from the master to the temporary index.xxxxxxxxx >>>> directory: >>>> >>>> SEVERE: Unable to move index file from: >>>> D:\Data\solr\Slave\data\index.20081224110855\_21e.tvx to: >>>> D:\Data\Solr\Slave\data\index\_21e.tvx >>>> >>>> The replication then stops, index remains in original state, so the >>>> updates >>>> are not available at the slave. >>>> >>>> This is my replication config at the master: >>>> >>>> <requestHandler name="/replication" class="solr.ReplicationHandler" > >>>> <lst name="master"> >>>> <!--Replicate on 'optimize' it can also be 'commit' --> >>>> <str name="replicateAfter">commit</str> >>>> <str name="confFiles">schema.xml</str> >>>> </lst> >>>> </requestHandler> >>>> >>>> This is the replication config at the slave: >>>> >>>> <requestHandler name="/replication" class="solr.ReplicationHandler" > >>>> <lst name="slave"> >>>> <str name="masterUrl"> >>>> http://hostnamemaster:8080/solr/Master/replication</str> >>>> <str name="pollInterval">00:10:00</str> >>>> <str name="zip">true</str> >>>> </lst> >>>> </requestHandler> >>>> >>>> I'm running a Solr nightly build of 21.12.2008 in Tomcat 6 on Windows >>>> 2003. >>>> Initially I thought there was some problem with disk space, but this is >>>> not >>>> the case. Replication did run fine for intial version of index, but >>>> after >>>> that at some point it didn't work anymore. Any ideas what could be wrong >>>> here? >>>> >>>> Thanks very much in advance, bye, >>>> >>>> Jaco. >>>> >>>> >>> >>> >> >> >> >> -- >> --Noble Paul >> >> Index: src/java/org/apache/solr/handler/ReplicationHandler.java >> =================================================================== >> --- src/java/org/apache/solr/handler/ReplicationHandler.java (revision >> 729282) >> +++ src/java/org/apache/solr/handler/ReplicationHandler.java (working >> copy) >> @@ -268,7 +268,7 @@ >> List<Map<String, Object>> result = new ArrayList<Map<String, >> Object>>(); >> try { >> //get all the files in the commit >> - Collection<String> files = commit.getFileNames(); >> + Collection<String> files = new >> HashSet<String>(commit.getFileNames()); >> for (String fileName : files) { >> File file = new File(core.getIndexDir(), fileName); >> Map<String, Object> fileMeta = getFileInfo(file); >> >> > > -- > View this message in context: > http://www.nabble.com/%22Unable-to-move-index-file%22-error-during-replication-tp21157722p22734005.html > Sent from the Solr - User mailing list archive at Nabble.com. > >
-- --Noble Paul