diff --git a/shared/src/main/java/com/inteligr8/alfresco/asie/model/PersistedNode.java b/shared/src/main/java/com/inteligr8/alfresco/asie/model/PersistedNode.java new file mode 100644 index 0000000..9eeab4a --- /dev/null +++ b/shared/src/main/java/com/inteligr8/alfresco/asie/model/PersistedNode.java @@ -0,0 +1,36 @@ +package com.inteligr8.alfresco.asie.model; + +import java.io.Serializable; + +public class PersistedNode implements Serializable { + + private static final long serialVersionUID = 4105196543023419818L; + + private final SolrHost node; + private final long persistMillis; + private long expireTimeMillis; + + public PersistedNode(SolrHost node, int persistMinutes) { + this.node = node; + this.persistMillis = persistMinutes * 60L * 1000L; + this.reset(); + } + + public void reset() { + this.expireTimeMillis = System.currentTimeMillis() + this.persistMillis; + } + + public boolean isExpired() { + return this.expireTimeMillis < System.currentTimeMillis(); + } + + public SolrHost getNode() { + return this.node; + } + + @Override + public String toString() { + return "node: " + this.node + "; expires in: " + (System.currentTimeMillis() - this.expireTimeMillis) + " ms"; + } + +} diff --git a/shared/src/main/java/com/inteligr8/alfresco/asie/service/ShardBackupService.java b/shared/src/main/java/com/inteligr8/alfresco/asie/service/ShardBackupService.java index d9ac37c..287821a 100644 --- a/shared/src/main/java/com/inteligr8/alfresco/asie/service/ShardBackupService.java +++ b/shared/src/main/java/com/inteligr8/alfresco/asie/service/ShardBackupService.java @@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.asie.Constants; +import com.inteligr8.alfresco.asie.model.PersistedNode; import com.inteligr8.alfresco.asie.model.ShardSet; import com.inteligr8.alfresco.asie.model.SolrHost; @@ -34,7 +35,7 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard this.logger.debug("Found backup node: {}", backupNode); if (backupNode == null || backupNode.isExpired()) { - backupNode = new PersistedNode(node); + backupNode = new PersistedNode(node, this.persistTimeMinutes); this.attributeService.setAttribute(backupNode, Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey); } @@ -49,38 +50,5 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard String shardKey = shardSet.getCore() + "-" + shardId; this.attributeService.removeAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey); } - - - - private class PersistedNode implements Serializable { - - private static final long serialVersionUID = 4105196543023419818L; - - private final SolrHost node; - private long expireTimeMillis; - - PersistedNode(SolrHost node) { - this.node = node; - this.reset(); - } - - void reset() { - this.expireTimeMillis = System.currentTimeMillis() + persistTimeMinutes * 60L * 1000L; - } - - boolean isExpired() { - return this.expireTimeMillis < System.currentTimeMillis(); - } - - SolrHost getNode() { - return this.node; - } - - @Override - public String toString() { - return "node: " + this.node + "; expires in: " + (System.currentTimeMillis() - this.expireTimeMillis) + " ms"; - } - - } }