Merge branch 'develop' into stable
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package com.inteligr8.alfresco.asie.rest;
|
package com.inteligr8.alfresco.asie.enterprise.rest;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@@ -17,7 +17,6 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.extensions.webscripts.WebScriptException;
|
|
||||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||||
import org.springframework.extensions.webscripts.WebScriptResponse;
|
import org.springframework.extensions.webscripts.WebScriptResponse;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -25,6 +24,7 @@ import org.springframework.http.HttpStatus;
|
|||||||
import com.inteligr8.alfresco.asie.Constants;
|
import com.inteligr8.alfresco.asie.Constants;
|
||||||
import com.inteligr8.alfresco.asie.api.CoreAdminApi;
|
import com.inteligr8.alfresco.asie.api.CoreAdminApi;
|
||||||
import com.inteligr8.alfresco.asie.model.NodeParameterSet;
|
import com.inteligr8.alfresco.asie.model.NodeParameterSet;
|
||||||
|
import com.inteligr8.alfresco.asie.rest.AbstractAsieNodeWebScript;
|
||||||
import com.inteligr8.alfresco.asie.service.ShardBackupService;
|
import com.inteligr8.alfresco.asie.service.ShardBackupService;
|
||||||
import com.inteligr8.alfresco.asie.spi.ShardStateService;
|
import com.inteligr8.alfresco.asie.spi.ShardStateService;
|
||||||
import com.inteligr8.solr.model.CoreMetadata;
|
import com.inteligr8.solr.model.CoreMetadata;
|
||||||
@@ -84,19 +84,23 @@ public abstract class AbstractUnregisterNodeWebScript<T extends NodeParameterSet
|
|||||||
ShardState shardNode = matchingCore.getValue();
|
ShardState shardNode = matchingCore.getValue();
|
||||||
String core = shardNode.getPropertyBag().get("coreName");
|
String core = shardNode.getPropertyBag().get("coreName");
|
||||||
|
|
||||||
StatusResponse status = this.getCoreStatus(nodeHostname, nodePort, core);
|
try {
|
||||||
if (status == null)
|
StatusResponse status = this.getCoreStatus(nodeHostname, nodePort, core);
|
||||||
throw new WebScriptException(HttpStatus.INTERNAL_SERVER_ERROR.value(), "This should never happen");
|
if (status == null) {
|
||||||
CoreMetadata coreMetadata = status.getStatus().getCores().get(core);
|
this.logger.warn("Registered host/core status could not be retrieved: {}:{}/solr/{}", nodeHostname, nodePort, core);
|
||||||
if (coreMetadata == null || coreMetadata.getName() == null) {
|
} else {
|
||||||
this.logger.warn("Registered core does not actually exist on the node host; could be a DNS issue: {}:{}/solr/{}", nodeHostname, nodePort, core);
|
CoreMetadata coreMetadata = status.getStatus().getCores().get(core);
|
||||||
} else {
|
if (coreMetadata == null || coreMetadata.getName() == null) {
|
||||||
this.unloadCore(nodeHostname, nodePort, core);
|
this.logger.warn("Registered core does not actually exist on the node host; could be a DNS issue: {}:{}/solr/{}", nodeHostname, nodePort, core);
|
||||||
cores.put(core, coreMetadata.getInstancePath());
|
} else {
|
||||||
|
this.unloadCore(nodeHostname, nodePort, core);
|
||||||
|
cores.put(core, coreMetadata.getInstancePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
this.sss.remove(matchingCore.getKey());
|
||||||
|
this.sbs.forget(shardNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sss.remove(matchingCore.getKey());
|
|
||||||
this.sbs.forget(shardNode);
|
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
// FIXME maybe a separate tx?
|
// FIXME maybe a separate tx?
|
@@ -1,4 +1,4 @@
|
|||||||
package com.inteligr8.alfresco.asie.rest;
|
package com.inteligr8.alfresco.asie.enterprise.rest;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@@ -21,6 +21,7 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import com.inteligr8.alfresco.asie.Constants;
|
import com.inteligr8.alfresco.asie.Constants;
|
||||||
import com.inteligr8.alfresco.asie.api.CoreAdminApi;
|
import com.inteligr8.alfresco.asie.api.CoreAdminApi;
|
||||||
|
import com.inteligr8.alfresco.asie.rest.AbstractAsieNodeWebScript;
|
||||||
import com.inteligr8.solr.model.ExceptionResponse;
|
import com.inteligr8.solr.model.ExceptionResponse;
|
||||||
import com.inteligr8.solr.model.core.CreateRequest;
|
import com.inteligr8.solr.model.core.CreateRequest;
|
||||||
import com.inteligr8.solr.model.core.ReloadRequest;
|
import com.inteligr8.solr.model.core.ReloadRequest;
|
@@ -1,4 +1,4 @@
|
|||||||
package com.inteligr8.alfresco.asie.rest;
|
package com.inteligr8.alfresco.asie.enterprise.rest;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import com.inteligr8.alfresco.asie.Constants;
|
import com.inteligr8.alfresco.asie.Constants;
|
||||||
import com.inteligr8.alfresco.asie.api.CoreAdminApi;
|
import com.inteligr8.alfresco.asie.api.CoreAdminApi;
|
||||||
|
import com.inteligr8.alfresco.asie.rest.AbstractAsieNodeWebScript;
|
||||||
import com.inteligr8.solr.model.ExceptionResponse;
|
import com.inteligr8.solr.model.ExceptionResponse;
|
||||||
import com.inteligr8.solr.model.core.CreateRequest;
|
import com.inteligr8.solr.model.core.CreateRequest;
|
||||||
import com.inteligr8.solr.model.core.ReloadRequest;
|
import com.inteligr8.solr.model.core.ReloadRequest;
|
@@ -1,4 +1,4 @@
|
|||||||
package com.inteligr8.alfresco.asie.rest;
|
package com.inteligr8.alfresco.asie.enterprise.rest;
|
||||||
|
|
||||||
import org.alfresco.repo.index.shard.ShardState;
|
import org.alfresco.repo.index.shard.ShardState;
|
||||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
import org.springframework.extensions.webscripts.WebScriptRequest;
|
@@ -1,4 +1,4 @@
|
|||||||
package com.inteligr8.alfresco.asie.rest;
|
package com.inteligr8.alfresco.asie.enterprise.rest;
|
||||||
|
|
||||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
@@ -1,3 +1,3 @@
|
|||||||
|
|
||||||
logger.inteligr8-asie.name=com.inteligr8.alfresco.asie.enterprise
|
logger.inteligr8-asie-ent.name=com.inteligr8.alfresco.asie.enterprise
|
||||||
logger.inteligr8-asie.level=INFO
|
logger.inteligr8-asie-ent.level=INFO
|
||||||
|
4
shared/src/main/java/com/inteligr8/alfresco/asie/Constants.java
Normal file → Executable file
4
shared/src/main/java/com/inteligr8/alfresco/asie/Constants.java
Normal file → Executable file
@@ -2,6 +2,8 @@ package com.inteligr8.alfresco.asie;
|
|||||||
|
|
||||||
public interface Constants {
|
public interface Constants {
|
||||||
|
|
||||||
|
static final String NAMESPACE_ASIE = "http://inteligr8.com/alfresco/asie";
|
||||||
|
|
||||||
static final String QUALIFIER_ASIE = "asie";
|
static final String QUALIFIER_ASIE = "asie";
|
||||||
|
|
||||||
// OOTB
|
// OOTB
|
||||||
@@ -15,7 +17,7 @@ public interface Constants {
|
|||||||
static final String BEAN_SHARD_REGISTRY = "asie.ShardRegistry";
|
static final String BEAN_SHARD_REGISTRY = "asie.ShardRegistry";
|
||||||
|
|
||||||
static final String ATTR_ASIE = "inteligr8.asie";
|
static final String ATTR_ASIE = "inteligr8.asie";
|
||||||
static final String ATTR_ASIE_NODES = "inteligr8.asie.nodes";
|
static final String ATTR_ASIE_NODE_SHARD = "inteligr8.asie.nodeShard";
|
||||||
static final String ATTR_STATE = "state";
|
static final String ATTR_STATE = "state";
|
||||||
static final String ATTR_ONLINE = "online";
|
static final String ATTR_ONLINE = "online";
|
||||||
static final String ATTR_UNLOADED = "unloadedNode.cores";
|
static final String ATTR_UNLOADED = "unloadedNode.cores";
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package com.inteligr8.alfresco.asie.model;
|
package com.inteligr8.alfresco.asie.model;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
@@ -11,8 +12,10 @@ import org.alfresco.repo.index.shard.ShardMethodEnum;
|
|||||||
import org.alfresco.repo.index.shard.ShardState;
|
import org.alfresco.repo.index.shard.ShardState;
|
||||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
|
|
||||||
public class ShardSet {
|
public class ShardSet implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -8891094367429601316L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Examples:
|
* Examples:
|
||||||
*
|
*
|
||||||
@@ -24,12 +27,12 @@ public class ShardSet {
|
|||||||
* DATE;key:cm:created;date.grouping:3
|
* DATE;key:cm:created;date.grouping:3
|
||||||
* PROPERTY;key:cm:created;regex:^d{4}
|
* PROPERTY;key:cm:created;regex:^d{4}
|
||||||
*/
|
*/
|
||||||
private final Pattern shardSetPattern = Pattern.compile("([A-Z]+)(;fulltext)?(;([a-z]+):([^;]+))?(;([a-z]+):([^;]+))?");
|
private static final Pattern shardSetPattern = Pattern.compile("([A-Z]+)(;fulltext)?(;([a-z]+):([^;]+))?(;([a-z]+):([^;]+))?");
|
||||||
|
|
||||||
private final ShardMethodEnum method;
|
private final ShardMethodEnum method;
|
||||||
private final boolean hasContent;
|
private final boolean hasContent;
|
||||||
private final Map<String, String> config;
|
private final Map<String, String> config;
|
||||||
private Integer hash;
|
private transient Integer hash;
|
||||||
|
|
||||||
public ShardSet(Floc floc, ShardState anyShardNode) {
|
public ShardSet(Floc floc, ShardState anyShardNode) {
|
||||||
this.method = floc.getShardMethod();
|
this.method = floc.getShardMethod();
|
||||||
@@ -38,7 +41,7 @@ public class ShardSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ShardSet(String shardSetSpec) {
|
public ShardSet(String shardSetSpec) {
|
||||||
Matcher matcher = this.shardSetPattern.matcher(shardSetSpec);
|
Matcher matcher = shardSetPattern.matcher(shardSetSpec);
|
||||||
if (!matcher.find())
|
if (!matcher.find())
|
||||||
throw new IllegalArgumentException("The shard set '" + shardSetSpec + "' is not properly formatted");
|
throw new IllegalArgumentException("The shard set '" + shardSetSpec + "' is not properly formatted");
|
||||||
|
|
||||||
|
@@ -6,17 +6,3 @@ inteligr8.asie.allowedAuthorities=ALFRESCO_ADMINISTRATORS
|
|||||||
|
|
||||||
# same as solr.baseUrl, but that property is private to the Search subsystem
|
# same as solr.baseUrl, but that property is private to the Search subsystem
|
||||||
inteligr8.asie.basePath=/solr
|
inteligr8.asie.basePath=/solr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Overrides of alfresco-repository.jar/alfresco/caches.properties
|
|
||||||
cache.shardStateSharedCache.tx.maxItems=0
|
|
||||||
cache.shardStateSharedCache.tx.statsEnabled=${caches.tx.statsEnabled}
|
|
||||||
cache.shardStateSharedCache.maxItems=0
|
|
||||||
cache.shardStateSharedCache.timeToLiveSeconds=1800
|
|
||||||
cache.shardStateSharedCache.maxIdleSeconds=0
|
|
||||||
cache.shardStateSharedCache.cluster.type=fully-distributed
|
|
||||||
cache.shardStateSharedCache.backup-count=1
|
|
||||||
cache.shardStateSharedCache.eviction-policy=LRU
|
|
||||||
cache.shardStateSharedCache.merge-policy=com.hazelcast.spi.merge.PutIfAbsentMergePolicy
|
|
||||||
cache.shardStateSharedCache.readBackupData=false
|
|
||||||
|
Reference in New Issue
Block a user