[ https://issues.apache.org/jira/browse/SOLR-561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12645632#action_12645632 ]
P E commented on SOLR-561: -------------------------- Hi, i have a couple comments about the implementation, specifically SnapShooter.java just pulled from TRUNK: ------------------------------------- createSnapshot() uses the following pattern, which seems unreliable to me, under the prospect of concurrent snapshot requests: lockFile = new File(snapDir, directoryName + ".lock"); if (lockFile.exists()) { return; } ... <1> ... lockFile.createNewFile(); ... <2> ... if (lockFile != null) { lockFile.delete(); } AFAIK, java.nio.channels.FileLock should be used for any type of file-based locking of the sort for cross-vm synchronization. If you are worried about in-vm synchronization, it might be best to just use j.u.c Locks or synchronized{} blocks. This would remove the possiblity of junk .lock files if, say the VM dies during <2>. ------------------------------------- Additionally, these lines seem suspect to me. transferTo() needs to be done in a loop for the full copy to work. fis = new FileInputStream(file); File destFile = new File(toDir, file.getName()); fos = new FileOutputStream(destFile); fis.getChannel().transferTo(0, fis.available(), fos.getChannel()); destFile.setLastModified(file.lastModified()); Am i crazy or are these real problems? > Solr replication by Solr (for windows also) > ------------------------------------------- > > Key: SOLR-561 > URL: https://issues.apache.org/jira/browse/SOLR-561 > Project: Solr > Issue Type: New Feature > Components: replication (scripts) > Affects Versions: 1.4 > Environment: All > Reporter: Noble Paul > Assignee: Shalin Shekhar Mangar > Fix For: 1.4 > > Attachments: deletion_policy.patch, SOLR-561-core.patch, > SOLR-561-fixes.patch, SOLR-561-fixes.patch, SOLR-561-fixes.patch, > SOLR-561-full.patch, SOLR-561-full.patch, SOLR-561-full.patch, > SOLR-561-full.patch, SOLR-561.patch, SOLR-561.patch, SOLR-561.patch, > SOLR-561.patch, SOLR-561.patch, SOLR-561.patch, SOLR-561.patch, > SOLR-561.patch, SOLR-561.patch, SOLR-561.patch, SOLR-561.patch, > SOLR-561.patch, SOLR-561.patch, SOLR-561.patch > > > The current replication strategy in solr involves shell scripts . The > following are the drawbacks with the approach > * It does not work with windows > * Replication works as a separate piece not integrated with solr. > * Cannot control replication from solr admin/JMX > * Each operation requires manual telnet to the host > Doing the replication in java has the following advantages > * Platform independence > * Manual steps can be completely eliminated. Everything can be driven from > solrconfig.xml . > ** Adding the url of the master in the slaves should be good enough to enable > replication. Other things like frequency of > snapshoot/snappull can also be configured . All other information can be > automatically obtained. > * Start/stop can be triggered from solr/admin or JMX > * Can get the status/progress while replication is going on. It can also > abort an ongoing replication > * No need to have a login into the machine > * From a development perspective, we can unit test it > This issue can track the implementation of solr replication in java -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.