Loading shared/src/main/java/com/inteligr8/alfresco/asie/service/ShardBackupService.java +37 −5 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.service; import java.io.Serializable; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.attributes.AttributeService; import org.alfresco.service.transaction.TransactionService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; Loading @@ -25,14 +25,26 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard @Qualifier(Constants.QUALIFIER_ASIE) private AttributeService attributeService; @Autowired private TransactionService txService; @Value("${inteligr8.asie.backup.persistTimeMinutes}") private int persistTimeMinutes; public SolrHost selectNode(ShardSet shardSet, int shardId, SolrHost node) { return this.txService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<SolrHost>() { @Override public SolrHost execute() { return selectNodeTx(shardSet, shardId, node); } }, false, false); } protected SolrHost selectNodeTx(ShardSet shardSet, int shardId, SolrHost node) { String shardKey = shardSet.getCore() + "-" + shardId; PersistedNode backupNode = (PersistedNode) this.attributeService.getAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey); this.logger.debug("Found backup node: {}", backupNode); logger.debug("Found backup node: {}", backupNode); if (backupNode == null || backupNode.isExpired()) { backupNode = new PersistedNode(node, this.persistTimeMinutes); Loading @@ -43,10 +55,30 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard } public void forget() { this.txService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() { @Override public Void execute() { forgetTx(); return null; } }, false, false); } protected void forgetTx() { this.attributeService.removeAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE); } public void forget(ShardSet shardSet, int shardId) { public void forget(final ShardSet shardSet, final int shardId) { this.txService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() { @Override public Void execute() { forgetTx(shardSet, shardId); return null; } }, false, false); } public void forgetTx(ShardSet shardSet, int shardId) { String shardKey = shardSet.getCore() + "-" + shardId; this.attributeService.removeAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey); } Loading Loading
shared/src/main/java/com/inteligr8/alfresco/asie/service/ShardBackupService.java +37 −5 Original line number Diff line number Diff line package com.inteligr8.alfresco.asie.service; import java.io.Serializable; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.attributes.AttributeService; import org.alfresco.service.transaction.TransactionService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; Loading @@ -25,14 +25,26 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard @Qualifier(Constants.QUALIFIER_ASIE) private AttributeService attributeService; @Autowired private TransactionService txService; @Value("${inteligr8.asie.backup.persistTimeMinutes}") private int persistTimeMinutes; public SolrHost selectNode(ShardSet shardSet, int shardId, SolrHost node) { return this.txService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<SolrHost>() { @Override public SolrHost execute() { return selectNodeTx(shardSet, shardId, node); } }, false, false); } protected SolrHost selectNodeTx(ShardSet shardSet, int shardId, SolrHost node) { String shardKey = shardSet.getCore() + "-" + shardId; PersistedNode backupNode = (PersistedNode) this.attributeService.getAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey); this.logger.debug("Found backup node: {}", backupNode); logger.debug("Found backup node: {}", backupNode); if (backupNode == null || backupNode.isExpired()) { backupNode = new PersistedNode(node, this.persistTimeMinutes); Loading @@ -43,10 +55,30 @@ public class ShardBackupService implements com.inteligr8.alfresco.asie.spi.Shard } public void forget() { this.txService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() { @Override public Void execute() { forgetTx(); return null; } }, false, false); } protected void forgetTx() { this.attributeService.removeAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE); } public void forget(ShardSet shardSet, int shardId) { public void forget(final ShardSet shardSet, final int shardId) { this.txService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() { @Override public Void execute() { forgetTx(shardSet, shardId); return null; } }, false, false); } public void forgetTx(ShardSet shardSet, int shardId) { String shardKey = shardSet.getCore() + "-" + shardId; this.attributeService.removeAttribute(Constants.ATTR_ASIE, ATTR_BACKUP_NODE, shardKey); } Loading