You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2018/08/01 00:15:38 UTC

[1/2] lucene-solr:branch_7x: SOLR-12412: Leak transaction log on tragic event

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_7x a0afe4646 -> a9f129190


SOLR-12412: Leak transaction log on tragic event


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/41028dc9
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/41028dc9
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/41028dc9

Branch: refs/heads/branch_7x
Commit: 41028dc989bc53717878123c0ea3effbbd7351ae
Parents: a0afe46
Author: Cao Manh Dat <da...@apache.org>
Authored: Wed Aug 1 07:13:41 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Wed Aug 1 07:15:14 2018 +0700

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/update/UpdateLog.java |  6 ++++++
 .../org/apache/solr/cloud/LeaderTragicEventTest.java     | 11 +++++------
 2 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/41028dc9/solr/core/src/java/org/apache/solr/update/UpdateLog.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
index 46d8435..1abf23c 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
@@ -188,6 +188,7 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer {
   protected TransactionLog bufferTlog;
   protected TransactionLog tlog;
   protected TransactionLog prevTlog;
+  protected TransactionLog prevTlogOnPrecommit;
   protected final Deque<TransactionLog> logs = new LinkedList<>();  // list of recent logs, newest first
   protected LinkedList<TransactionLog> newestLogsOnStartup = new LinkedList<>();
   protected int numOldRecords;  // number of records in the recent logs
@@ -810,6 +811,11 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer {
       // since document additions can happen concurrently with commit, create
       // a new transaction log first so that we know the old one is definitely
       // in the index.
+      if (prevTlog != null) {
+        // postCommit for prevTlog is not called, may be the index is corrupted
+        // if we override prevTlog value, the correspond tlog will be leaked, close it first
+        postCommit(cmd);
+      }
       prevTlog = tlog;
       tlog = null;
       id++;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/41028dc9/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
index e432493..83bd3c3 100644
--- a/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
@@ -38,6 +38,7 @@ import org.apache.solr.common.cloud.ClusterStateUtil;
 import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
+import org.apache.solr.common.util.ObjectReleaseTracker;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.DirectoryFactory;
 import org.apache.solr.core.MockDirectoryFactory;
@@ -181,15 +182,13 @@ public class LeaderTragicEventTest extends SolrCloudTestCase {
 
       Replica oldLeader = corruptLeader(collection, new ArrayList<>());
 
-      //TODO better way to test this
-      Thread.sleep(5000);
-      Replica leader = getCollectionState(collection).getSlice("shard1").getLeader();
-      assertEquals(leader.getName(), oldLeader.getName());
-
       if (otherReplicaJetty != null) {
-        // won't be able to do anything here, since this replica can't recovery from the leader
         otherReplicaJetty.start();
       }
+      //TODO better way to test this
+      Thread.sleep(2000);
+      Replica leader = getCollectionState(collection).getSlice("shard1").getLeader();
+      assertEquals(leader.getName(), oldLeader.getName());
     } finally {
       CollectionAdminRequest.deleteCollection(collection).process(cluster.getSolrClient());
     }


[2/2] lucene-solr:branch_7x: SOLR-12412: Fix precommit

Posted by da...@apache.org.
SOLR-12412: Fix precommit


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a9f12919
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a9f12919
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a9f12919

Branch: refs/heads/branch_7x
Commit: a9f129190f9065c8775a628df181fb53248db488
Parents: 41028dc
Author: Cao Manh Dat <da...@apache.org>
Authored: Wed Aug 1 07:14:41 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Wed Aug 1 07:15:22 2018 +0700

----------------------------------------------------------------------
 solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a9f12919/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
index 83bd3c3..604ec45 100644
--- a/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/LeaderTragicEventTest.java
@@ -38,7 +38,6 @@ import org.apache.solr.common.cloud.ClusterStateUtil;
 import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.util.ObjectReleaseTracker;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.DirectoryFactory;
 import org.apache.solr.core.MockDirectoryFactory;