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 2021/02/25 15:05:15 UTC
[lucene-solr] 02/02: @1396 Finish not retrying on session
expiration in some key spots.
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 27ca69752bf86c3ac78e0a523e628b40c33bc3bb
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Thu Feb 25 09:04:16 2021 -0600
@1396 Finish not retrying on session expiration in some key spots.
Took 11 minutes
---
.../src/java/org/apache/solr/cloud/Overseer.java | 2 +-
.../java/org/apache/solr/cloud/ZkController.java | 4 +-
.../org/apache/solr/cloud/ZkDistributedQueue.java | 46 ++++------------------
.../apache/solr/cloud/overseer/ZkStateWriter.java | 9 +++--
.../java/org/apache/solr/core/CoreContainer.java | 9 -----
.../solr/client/solrj/cloud/DistributedQueue.java | 7 +---
.../org/apache/solr/common/cloud/SolrZkClient.java | 2 +-
7 files changed, 18 insertions(+), 61 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
index 52e5d48..1304bb9 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
@@ -723,7 +723,7 @@ public class Overseer implements SolrCloseable {
}
public void offerStateUpdate(byte[] data) throws KeeperException, InterruptedException {
- getStateUpdateQueue().offer(data);
+ getStateUpdateQueue().offer(data, false);
}
public boolean processQueueItem(ZkNodeProps message) throws InterruptedException {
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index fcec460..9e6d08b 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -702,7 +702,7 @@ public class ZkController implements Closeable, Runnable {
props.put(COLLECTION_PROP, cd.getCollectionName());
props.put(SHARD_ID_PROP, shard.getName());
props.put(REPLICA_PROP, cd.getName());
- getOverseerCollectionQueue().offer(Utils.toJSON(new ZkNodeProps(props)));
+ getOverseerCollectionQueue().offer(Utils.toJSON(new ZkNodeProps(props)), false);
props.clear();
props.put(Overseer.QUEUE_OPERATION, "addreplica");
@@ -710,7 +710,7 @@ public class ZkController implements Closeable, Runnable {
props.put(SHARD_ID_PROP, shard.getName());
props.put(ZkStateReader.REPLICA_TYPE, cd.getCloudDescriptor().getReplicaType().name().toUpperCase(Locale.ROOT));
props.put(CoreAdminParams.NODE, getNodeName());
- getOverseerCollectionQueue().offer(Utils.toJSON(new ZkNodeProps(props)));
+ getOverseerCollectionQueue().offer(Utils.toJSON(new ZkNodeProps(props)), false);
} catch (Exception e) {
ParWork.propagateInterrupt(e);
// Exceptions are not bubbled up. giveupLeadership is best effort, and is only called in case of some other
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkDistributedQueue.java b/solr/core/src/java/org/apache/solr/cloud/ZkDistributedQueue.java
index c3567b2..592674e 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkDistributedQueue.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkDistributedQueue.java
@@ -133,47 +133,15 @@ public class ZkDistributedQueue implements DistributedQueue {
* will be immediately visible when this method returns.
*/
@Override
- public void offer(byte[] data) throws KeeperException, InterruptedException {
-// CountDownLatch latch = new CountDownLatch(1);
-// Stat stat = zookeeper.exists(dir, new Watcher() {
-// @Override
-// public void process(WatchedEvent event) {
-// if (event.getType() == Watcher.Event.EventType.NodeChildrenChanged) {
-// try {
-// Stat stat = zookeeper.exists(dir, this);
-// if (stat.getNumChildren() <= 30) {
-// latch.countDown();
-// try {
-// zookeeper.getSolrZooKeeper().removeWatches(dir, this, WatcherType.Any, true);
-// } catch (Exception e) {
-// log.info("could not remove watch {} {}", e.getClass().getSimpleName(), e.getMessage());
-// }
-// }
-// } catch (Exception e) {
-// latch.countDown();
-// log.error("", e);
-// }
-// return;
-// }
-// try {
-// Stat stat2 = zookeeper.exists(dir, this);
-// if (stat2.getNumChildren() <= 30) {
-// latch.countDown();
-// }
-// } catch (Exception e) {
-// latch.countDown();
-// log.error("", e);
-// }
-// }
-// });
-//
-// if (stat.getNumChildren() > 15) {
-// latch.await();
-// }
+ public void offer(byte[] data, boolean retryOnExpiration) throws KeeperException, InterruptedException {
// TODO - if too many items on the queue, just block
- zookeeper.create(dir + "/" + PREFIX, data, CreateMode.PERSISTENT_SEQUENTIAL, true);
- return;
+ zookeeper.create(dir + "/" + PREFIX, data, CreateMode.PERSISTENT_SEQUENTIAL, true, retryOnExpiration);
+ }
+
+ @Override
+ public void offer(byte[] data) throws KeeperException, InterruptedException {
+ offer(data, true);
}
public Stats getZkStats() {
diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
index b68ce33..349e7c9 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
@@ -290,10 +290,11 @@ public class ZkStateWriter {
}
break;
- // case ADDROUTINGRULE:
- // return new SliceMutator(cloudManager).addRoutingRule(clusterState, message);
- // case REMOVEROUTINGRULE:
- // return new SliceMutator(cloudManager).removeRoutingRule(clusterState, message);
+ // MRM TODO:
+// case ADDROUTINGRULE:
+// return new SliceMutator(cloudManager).addRoutingRule(clusterState, message);
+// case REMOVEROUTINGRULE:
+// return new SliceMutator(cloudManager).removeRoutingRule(clusterState, message);
case UPDATESHARDSTATE: // MRM TODO: look at how we handle this and make it so it can use StatePublisher
String collection = message.getStr("collection");
message.getProperties().remove("collection");
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index f1c27da..408752a 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -2048,15 +2048,6 @@ public class CoreContainer implements Closeable {
}
}
- void deleteCoreNode(String collectionName, String nodeName, String baseUrl, String core) throws Exception {
- ZkNodeProps m = new ZkNodeProps(
- Overseer.QUEUE_OPERATION, OverseerAction.DELETECORE.toLower(),
- ZkStateReader.CORE_NAME_PROP, core,
- ZkStateReader.NODE_NAME_PROP, nodeName,
- ZkStateReader.COLLECTION_PROP, collectionName);
- getZkController().getOverseer().offerStateUpdate(Utils.toJSON(m));
- }
-
public void rename(String name, String toName) {
SolrIdentifierValidator.validateCoreName(toName);
try (SolrCore core = getCore(name)) {
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DistributedQueue.java b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DistributedQueue.java
index e5d6fed..1d6f04c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DistributedQueue.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/cloud/DistributedQueue.java
@@ -16,11 +16,7 @@
*/
package org.apache.solr.client.solrj.cloud;
-import java.util.Collection;
import java.util.Map;
-import java.util.function.Predicate;
-
-import org.apache.solr.common.util.Pair;
/**
* Distributed queue component. Methods largely follow those in {@link java.util.Queue}.
@@ -29,10 +25,11 @@ public interface DistributedQueue {
void offer(byte[] data) throws Exception;
+ void offer(byte[] data, boolean retryOnExpiration) throws Exception;
+
/**
* Retrieve statistics about the queue size, operations and their timings.
*/
Map<String, Object> getStats();
-
}
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
index ebc0232..a4502c6 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
@@ -461,7 +461,7 @@ public class SolrZkClient implements Closeable {
List<ACL> acls = zkACLProvider.getACLsToAdd(path);
ZooKeeper keeper = connManager.getKeeper();
if (retryOnConnLoss) {
- return ZkCmdExecutor.retryOperation(zkCmdExecutor, () -> keeper.create(path, data, acls, createMode));
+ return ZkCmdExecutor.retryOperation(zkCmdExecutor, () -> keeper.create(path, data, acls, createMode), retryOnSessionExp);
} else {
return keeper.create(path, data, acls, createMode);
}