Author: sseifert
Date: Fri Aug 14 16:45:43 2015
New Revision: 1695944
URL: http://svn.apache.org/r1695944
Log:
delay couchbase connection until first access, and make sure it is tried again
and again until it succeeds
Modified:
sling/trunk/contrib/nosql/couchbase-client/src/main/java/org/apache/sling/nosql/couchbase/client/impl/CouchbaseClientImpl.java
Modified:
sling/trunk/contrib/nosql/couchbase-client/src/main/java/org/apache/sling/nosql/couchbase/client/impl/CouchbaseClientImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/couchbase-client/src/main/java/org/apache/sling/nosql/couchbase/client/impl/CouchbaseClientImpl.java?rev=1695944&r1=1695943&r2=1695944&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/couchbase-client/src/main/java/org/apache/sling/nosql/couchbase/client/impl/CouchbaseClientImpl.java
(original)
+++
sling/trunk/contrib/nosql/couchbase-client/src/main/java/org/apache/sling/nosql/couchbase/client/impl/CouchbaseClientImpl.java
Fri Aug 14 16:45:43 2015
@@ -68,7 +68,11 @@ public class CouchbaseClientImpl impleme
private String clientId;
private boolean enabled;
+ private String[] couchbaseHosts;
private String bucketName;
+ private String bucketPassword;
+
+ private volatile boolean initialized;
private Cluster cluster;
private Bucket bucket;
@@ -76,34 +80,26 @@ public class CouchbaseClientImpl impleme
private void activate(Map<String, Object> config) {
clientId = PropertiesUtil.toString(config.get(CLIENT_ID_PROPERTY),
null);
enabled = PropertiesUtil.toBoolean(config.get(ENABLED_PROPERTY),
ENABLED_PROPERTY_DEFAULT);
+ couchbaseHosts =
PropertiesUtil.toStringArray(config.get(COUCHBASE_HOSTS_PROPERTY));
+ bucketName =
PropertiesUtil.toString(config.get(CACHE_BUCKET_NAME_PROPERTY), null);
+ bucketPassword =
PropertiesUtil.toString(config.get(CACHE_BUCKET_PASSWORD_PROPERTY), null);
+
if (!enabled) {
log.info("Couchbase caching for client '{}' is disabled by
configuration.", clientId);
return;
}
- String[] couchbaseHosts =
PropertiesUtil.toStringArray(config.get(COUCHBASE_HOSTS_PROPERTY));
if (couchbaseHosts == null || couchbaseHosts.length == 0) {
enabled = false;
log.warn("No couchbase host configured, client '{}' is disabled.",
clientId);
return;
}
- bucketName =
PropertiesUtil.toString(config.get(CACHE_BUCKET_NAME_PROPERTY), null);
- String bucketPassword =
PropertiesUtil.toString(config.get(CACHE_BUCKET_PASSWORD_PROPERTY), null);
if (bucketName == null) {
enabled = false;
log.warn("No couchbase bucket name configured, client '{}' is
disabled.", clientId);
return;
}
-
- try {
- cluster =
CouchbaseEnvironmentSingleton.createCluster(couchbaseHosts);
- bucket = CouchbaseEnvironmentSingleton.openBucket(cluster,
bucketName, bucketPassword);
- }
- catch (Throwable ex) {
- enabled = false;
- log.error("Unable to connect to couchbase cluster or open
couchbase bucket, client '" + clientId + "' is disabled.", ex);
- }
}
@Deactivate
@@ -131,11 +127,25 @@ public class CouchbaseClientImpl impleme
}
public Bucket getBucket() {
+ if (!initialized) {
+ synchronized (this) {
+ if (!initialized) {
+ try {
+ cluster =
CouchbaseEnvironmentSingleton.createCluster(couchbaseHosts);
+ bucket =
CouchbaseEnvironmentSingleton.openBucket(cluster, bucketName, bucketPassword);
+ initialized = true;
+ }
+ catch (Throwable ex) {
+ throw new RuntimeException("Unable to connect to
couchbase cluster or open couchbase bucket, client '" + clientId + "'.", ex);
+ }
+ }
+ }
+ }
return bucket;
}
public AsyncBucket getAsyncBucket() {
- return bucket.async();
+ return getBucket().async();
}
}