You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/09/01 22:46:45 UTC
[lucene-solr] branch reference_impl_dev updated (aa752a9 -> 12fe790)
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a change to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.
from aa752a9 Delete the ephemeral znode held by the leader to trigger the watcher on the next replica inline
new 337faaf @683 Try to pin down rare updatelog leak.
new 12fe790 @684 Fix solrclient leak.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../handler/component/RealTimeGetComponent.java | 2 +-
.../org/apache/solr/update/PeerSyncWithLeader.java | 5 +++++
.../java/org/apache/solr/update/UpdateHandler.java | 26 ++++++++++++++--------
3 files changed, 23 insertions(+), 10 deletions(-)
[lucene-solr] 01/02: @683 Try to pin down rare updatelog leak.
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 337faafc722d77d65d0776f035c33396fad0a485
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Sep 1 17:31:11 2020 -0500
@683 Try to pin down rare updatelog leak.
---
.../java/org/apache/solr/update/UpdateHandler.java | 26 ++++++++++++++--------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index bed48c9..59a99bc 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -57,9 +57,10 @@ UpdateHandler implements SolrInfoBean, Closeable {
protected Vector<SolrEventListener> softCommitCallbacks = new Vector<>();
protected Vector<SolrEventListener> optimizeCallbacks = new Vector<>();
- protected volatile UpdateLog ulog;
+ protected final UpdateLog ulog;
protected SolrMetricsContext solrMetricsContext;
+ protected volatile boolean closed;
private void parseEventListeners() {
final Class<SolrEventListener> clazz = SolrEventListener.class;
@@ -96,6 +97,7 @@ UpdateHandler implements SolrInfoBean, Closeable {
@Override
public void close() throws IOException {
+ this.closed = true;
if (ulog != null) ulog.close();
ObjectReleaseTracker.release(this);
}
@@ -123,6 +125,7 @@ UpdateHandler implements SolrInfoBean, Closeable {
}
public UpdateHandler(SolrCore core, UpdateLog updateLog) {
+ UpdateLog ourUpdateLog = null;
ObjectReleaseTracker.track(this);
try {
this.core = core;
@@ -136,29 +139,34 @@ UpdateHandler implements SolrInfoBean, Closeable {
if (updateLog == null && ulogPluginInfo != null && ulogPluginInfo.isEnabled() && !skipUpdateLog) {
DirectoryFactory dirFactory = core.getDirectoryFactory();
if (dirFactory instanceof HdfsDirectoryFactory) {
- ulog = new HdfsUpdateLog(((HdfsDirectoryFactory) dirFactory).getConfDir());
+ ourUpdateLog = new HdfsUpdateLog(((HdfsDirectoryFactory) dirFactory).getConfDir());
} else {
String className = ulogPluginInfo.className == null ? UpdateLog.class.getName() : ulogPluginInfo.className;
- ulog = core.getResourceLoader().newInstance(className, UpdateLog.class, "update.");
+ ourUpdateLog = core.getResourceLoader().newInstance(className, UpdateLog.class, "update.");
}
if (!core.isReloaded() && !dirFactory.isPersistent()) {
- ulog.clearLog(core, ulogPluginInfo);
+ ourUpdateLog.clearLog(core, ulogPluginInfo);
}
if (log.isInfoEnabled()) {
- log.info("Using UpdateLog implementation: {}", ulog.getClass().getName());
+ log.info("Using UpdateLog implementation: {}", ourUpdateLog.getClass().getName());
+ }
+ ourUpdateLog.init(ulogPluginInfo);
+ ourUpdateLog.init(this, core);
+ if (updateLog != null) {
+ updateLog.close();
}
- ulog.init(ulogPluginInfo);
- ulog.init(this, core);
} else {
- ulog = updateLog;
+ ourUpdateLog = updateLog;
}
} catch (Exception e) {
- IOUtils.closeQuietly(ulog);
+ IOUtils.closeQuietly(ourUpdateLog);
ObjectReleaseTracker.release(this);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
}
+
+ ulog = ourUpdateLog;
}
/**
[lucene-solr] 02/02: @684 Fix solrclient leak.
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 12fe790f75ff3b799923b81c24f9580bc115892f
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Sep 1 17:40:59 2020 -0500
@684 Fix solrclient leak.
---
.../java/org/apache/solr/handler/component/RealTimeGetComponent.java | 2 +-
solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
index 8af6a09..0e251e4 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
@@ -1126,7 +1126,7 @@ public class RealTimeGetComponent extends SearchComponent
try (PeerSyncWithLeader peerSync = new PeerSyncWithLeader(rb.req.getCore(), syncWithLeader, nVersions)) {
boolean success = peerSync.sync(versions).isSuccess();
rb.rsp.add("syncWithLeader", success);
- } catch (IOException e) {
+ } catch (Exception e) {
log.error("Error while closing", e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java b/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java
index 70573612..e849e49 100644
--- a/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java
+++ b/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java
@@ -33,6 +33,7 @@ import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.util.IOUtils;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrInfoBean;
@@ -113,6 +114,10 @@ public class PeerSyncWithLeader implements SolrMetricProducer {
return "PeerSync: core="+uhandler.core.getName()+ " url="+myURL +" ";
}
+ public void close() {
+ IOUtils.closeQuietly(clientToLeader);
+ }
+
/**
* Sync with leader
* @param startingVersions : recent versions on startup