Make unique value actor system logic more configurable.
diff --git a/stack/config/src/main/resources/usergrid-default.properties b/stack/config/src/main/resources/usergrid-default.properties
index 1385216..d153ef1 100644
--- a/stack/config/src/main/resources/usergrid-default.properties
+++ b/stack/config/src/main/resources/usergrid-default.properties
@@ -449,8 +449,8 @@
# TTL of a unique value reservation when written to Cassandra
collection.uniquevalues.reservation.ttl=10
-# The default authoritative region for when is not specified elsewhere
-collection.uniquevalues.authoritative.region=default
+# The default authoritative region for when is not specified elsewhere; by default leave this empty
+collection.uniquevalues.authoritative.region=
############################## Usergrid Scheduler ###########################
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesFig.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesFig.java
index edd0cbe..a220adc 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesFig.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesFig.java
@@ -36,6 +36,10 @@
String UNIQUEVALUE_AUTHORITATIVE_REGION = "collection.uniquevalues.authoritative.region";
+ String UNIQUEVALUE_REQUEST_TIMEOUT = "collection.uniquevalues.request.timeout";
+
+ String UNIQUEVALUE_REQUEST_RETRY_COUNT = "collection.uniquevalues.request.retrycount";
+
/**
* Unique Value cache TTL in seconds.
@@ -62,6 +66,19 @@
* Primary authoritative region (used if none other specified).
*/
@Key(UNIQUEVALUE_AUTHORITATIVE_REGION)
- @Default("default")
String getAuthoritativeRegion();
+
+ /**
+ * Number of milliseconds before timing out the unique value request to the Actor System
+ */
+ @Key(UNIQUEVALUE_REQUEST_TIMEOUT)
+ @Default("5000")
+ int getRequestTimeout();
+
+ /**
+ * Number of actor instances to create on each.
+ */
+ @Key(UNIQUEVALUE_REQUEST_RETRY_COUNT)
+ @Default("2")
+ int getRequestRetryCount();
}
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java
index 777029f..8bdb02c 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceImpl.java
@@ -220,13 +220,13 @@
private void sendUniqueValueRequest(
Entity entity, String region, UniqueValueActor.Request request ) throws UniqueValueException {
- int maxRetries = 5;
+ int maxRetries = uniqueValuesFig.getRequestRetryCount();
int retries = 0;
UniqueValueActor.Response response = null;
while ( retries++ < maxRetries ) {
try {
- Timeout t = new Timeout( 1, TimeUnit.SECONDS );
+ Timeout t = new Timeout( uniqueValuesFig.getRequestTimeout(), TimeUnit.MILLISECONDS );
Future<Object> fut;
@@ -256,15 +256,15 @@
break;
} else if ( response != null ) {
- logger.debug("ERROR status retrying {} entity {} rowkey {}",
+ logger.warn("ERROR status retrying {} entity {} rowkey {}",
retries, entity.getId().getUuid(), request.getConsistentHashKey());
} else {
- logger.debug("Timed-out retrying {} entity {} rowkey",
+ logger.warn("Timed-out retrying {} entity {} rowkey",
retries, entity.getId().getUuid(), request.getConsistentHashKey());
}
} catch ( Exception e ) {
- logger.debug("{} caused retry {} for entity {} rowkey {}",
+ logger.error("{} caused retry {} for entity {} rowkey {}",
e.getClass().getSimpleName(), retries, entity.getId().getUuid(), request.getConsistentHashKey());
}
}