public DistributedMap(SolrZkClient zookeeper, String dir) { this.dir = dir;
ZkCmdExecutor cmdExecutor = new ZkCmdExecutor(zookeeper.getZkClientTimeout());
try {
cmdExecutor.ensureExists(dir, zookeeper);
} catch (KeeperException e) {
throw new SolrException(ErrorCode.SERVER_ERROR, e);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new SolrException(ErrorCode.SERVER_ERROR, e);
}
this.zookeeper = zookeeper;
}
/mnt/s1/solr3/solr/core/src/java/org/apache/solr/cloud/DistributedMap.java
43: public DistributedMap(SolrZkClient zookeeper, String dir) {
44: this.dir = dir;
45:
46: ZkCmdExecutor cmdExecutor = new ZkCmdExecutor(zookeeper.getZkClientTimeout());
47: try {
48: cmdExecutor.ensureExists(dir, zookeeper);
49: } catch (KeeperException e) {
50: throw new SolrException(ErrorCode.SERVER_ERROR, e);
51: } catch (InterruptedException e) {
52: Thread.currentThread().interrupt();
53: throw new SolrException(ErrorCode.SERVER_ERROR, e);
54: }
55:
56: this.zookeeper = zookeeper;
57: }
File: solr/core/src/java/org/apache/solr/cloud/DistributedMap.java
64: /**
65: * Puts an element in the map only if there isn't one with the same trackingId already
66: * @return True if the the element was added. False if it wasn't (because the key already exists)
67: */
68: public boolean putIfAbsent(String trackingId, byte[] data) throws KeeperException, InterruptedException {
69: try {
70: zookeeper.makePath(dir + "/" + PREFIX + trackingId, data, CreateMode.PERSISTENT, null, true, true);
71: return true;
72: } catch (NodeExistsException e) {
73: return false;
74: }
75: }
File: solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
539: if (recoveringAfterStartup) {
540: // if we're recovering after startup (i.e. we have been down), then we need to know what the last versions were
541: // when we went down. We may have received updates since then.
542: recentVersions = startingVersions;
543: try {
544: if (ulog.existOldBufferLog()) {
545: // this means we were previously doing a full index replication
546: // that probably didn't complete and buffering updates in the
547: // meantime.
548: log.info("Looks like a previous replication recovery did not complete - skipping peer sync.");
549: firstTime = false; // skip peersync
550: }
551: } catch (Exception e) {
552: SolrException.log(log, "Error trying to get ulog starting operation.", e);
553: firstTime = false; // skip peersync
554: }
555: }