remove some core changes; add missing sync that caused stress test failure
diff --git a/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java b/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java
index 908722f..22a9571 100644
--- a/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java
+++ b/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java
@@ -175,10 +175,8 @@
@Override
public void renameFile(String source, String dest) throws IOException {
unCache(source);
- try {
- cache.deleteFile(dest);
- } catch (FileNotFoundException fnfe) {
- // OK -- it may not exist
+ if (cache.fileNameExists(dest)) {
+ throw new IllegalArgumentException("target file " + dest + " already exists");
}
in.renameFile(source, dest);
}
diff --git a/lucene/core/src/java/org/apache/lucene/util/IOUtils.java b/lucene/core/src/java/org/apache/lucene/util/IOUtils.java
index 1a26542..ce8884c 100644
--- a/lucene/core/src/java/org/apache/lucene/util/IOUtils.java
+++ b/lucene/core/src/java/org/apache/lucene/util/IOUtils.java
@@ -107,9 +107,6 @@
* objects to call <tt>close()</tt> on
*/
public static void closeWhileHandlingException(Closeable... objects) {
- if (objects.length == 0) {
- throw new IllegalArgumentException("pass at least one Closeable");
- }
closeWhileHandlingException(Arrays.asList(objects));
}
diff --git a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimplePrimaryNode.java b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimplePrimaryNode.java
index 93d20f7..3d41b32 100644
--- a/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimplePrimaryNode.java
+++ b/lucene/replicator/src/test/org/apache/lucene/replicator/nrt/SimplePrimaryNode.java
@@ -679,41 +679,43 @@
int replicaTCPPort = in.readVInt();
message("new replica: " + warmingSegments.size() + " current warming merges");
// Step through all currently warming segments and try to add this replica if it isn't there already:
- for(MergePreCopy preCopy : warmingSegments) {
- message("warming segment " + preCopy.files.keySet());
- boolean found = false;
- synchronized (preCopy.connections) {
- for(Connection c : preCopy.connections) {
- if (c.destTCPPort == replicaTCPPort) {
- found = true;
- break;
+ synchronized(warmingSegments) {
+ for(MergePreCopy preCopy : warmingSegments) {
+ message("warming segment " + preCopy.files.keySet());
+ boolean found = false;
+ synchronized (preCopy.connections) {
+ for(Connection c : preCopy.connections) {
+ if (c.destTCPPort == replicaTCPPort) {
+ found = true;
+ break;
+ }
}
}
- }
- if (found) {
- message("this replica is already warming this segment; skipping");
- // It's possible (maybe) that the replica started up, then a merge kicked off, and it warmed to this new replica, all before the
- // replica sent us this command:
- continue;
- }
+ if (found) {
+ message("this replica is already warming this segment; skipping");
+ // It's possible (maybe) that the replica started up, then a merge kicked off, and it warmed to this new replica, all before the
+ // replica sent us this command:
+ continue;
+ }
- // OK, this new replica is not already warming this segment, so attempt (could fail) to start warming now:
+ // OK, this new replica is not already warming this segment, so attempt (could fail) to start warming now:
- Connection c = new Connection(replicaTCPPort);
- if (preCopy.tryAddConnection(c) == false) {
- // This can happen, if all other replicas just now finished warming this segment, and so we were just a bit too late. In this
- // case the segment will be copied over in the next nrt point sent to this replica
- message("failed to add connection to segment warmer (too late); closing");
- c.close();
+ Connection c = new Connection(replicaTCPPort);
+ if (preCopy.tryAddConnection(c) == false) {
+ // This can happen, if all other replicas just now finished warming this segment, and so we were just a bit too late. In this
+ // case the segment will be copied over in the next nrt point sent to this replica
+ message("failed to add connection to segment warmer (too late); closing");
+ c.close();
+ }
+ c.out.writeByte(SimpleReplicaNode.CMD_PRE_COPY_MERGE);
+ c.out.writeVLong(primaryGen);
+ c.out.writeVInt(tcpPort);
+ SimpleServer.writeFilesMetaData(c.out, preCopy.files);
+ c.flush();
+ c.s.shutdownOutput();
+ message("successfully started warming");
}
- c.out.writeByte(SimpleReplicaNode.CMD_PRE_COPY_MERGE);
- c.out.writeVLong(primaryGen);
- c.out.writeVInt(tcpPort);
- SimpleServer.writeFilesMetaData(c.out, preCopy.files);
- c.flush();
- c.s.shutdownOutput();
- message("successfully started warming");
}
break;