Skip to content

Commit 4040975

Browse files
Increasing couchbase key-value timeout
1 parent e3c936a commit 4040975

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

src/main/java/edu/ie3/datamodel/io/connectors/CouchbaseConnector.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
import com.couchbase.client.core.diagnostics.PingResult;
99
import com.couchbase.client.java.AsyncCollection;
1010
import com.couchbase.client.java.Cluster;
11+
import com.couchbase.client.java.ClusterOptions;
1112
import com.couchbase.client.java.Collection;
1213
import com.couchbase.client.java.kv.GetResult;
1314
import com.couchbase.client.java.kv.MutationResult;
1415
import com.couchbase.client.java.query.QueryResult;
16+
import java.time.Duration;
1517
import java.util.List;
1618
import java.util.concurrent.CompletableFuture;
1719

@@ -36,6 +38,24 @@ public CouchbaseConnector(String url, String bucketName, String username, String
3638
cluster = Cluster.connect(url, username, password);
3739
}
3840

41+
/**
42+
* Initializes a new CouchbaseConnector with given KV timeout
43+
*
44+
* @param url the url to the cluster
45+
* @param bucketName the name of the bucket to connect to
46+
* @param username the user name
47+
* @param password the user password
48+
* @param kvTimeout the key-value access timeout
49+
*/
50+
public CouchbaseConnector(
51+
String url, String bucketName, String username, String password, Duration kvTimeout) {
52+
this.bucketName = bucketName;
53+
ClusterOptions clusterOptions =
54+
ClusterOptions.clusterOptions(username, password)
55+
.environment(env -> env.timeoutConfig(to -> to.kvTimeout(kvTimeout)));
56+
cluster = Cluster.connect(url, clusterOptions);
57+
}
58+
3959
/**
4060
* Return the couchbase java sdk equivalent of a session - a collection - to the previously set
4161
* bucket

src/test/groovy/edu/ie3/datamodel/io/source/couchbase/CouchbaseWeatherSourceCosmoIT.groovy

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import org.testcontainers.utility.MountableFile
2323
import spock.lang.Shared
2424
import spock.lang.Specification
2525

26+
import java.time.Duration
2627
import java.time.ZoneId
2728

2829
@Testcontainers
@@ -64,7 +65,13 @@ class CouchbaseWeatherSourceCosmoIT extends Specification implements TestContain
6465
"--generate-key", "weather::%" + coordinateIdColumnName + "%::%time%",
6566
"--dataset", "file:///home/weather_cosmo.json")
6667

67-
def connector = new CouchbaseConnector(couchbaseContainer.connectionString, bucketDefinition.name, couchbaseContainer.username, couchbaseContainer.password)
68+
// increased timeout to deal with CI under high load
69+
def connector = new CouchbaseConnector(
70+
couchbaseContainer.connectionString,
71+
bucketDefinition.name,
72+
couchbaseContainer.username,
73+
couchbaseContainer.password,
74+
Duration.ofSeconds(20))
6875
def dtfPattern = "yyyy-MM-dd'T'HH:mm:ssxxx"
6976
def weatherFactory = new CosmoTimeBasedWeatherValueFactory(new TimeUtil(ZoneId.of("UTC"), Locale.GERMANY, dtfPattern))
7077
source = new CouchbaseWeatherSource(connector, CosmoWeatherTestData.coordinateSource, coordinateIdColumnName, weatherFactory, dtfPattern)

src/test/groovy/edu/ie3/datamodel/io/source/couchbase/CouchbaseWeatherSourceIconIT.groovy

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.testcontainers.spock.Testcontainers
2020
import spock.lang.Shared
2121
import spock.lang.Specification
2222

23+
import java.time.Duration
2324
import java.time.ZoneId
2425

2526
@Testcontainers
@@ -61,7 +62,13 @@ class CouchbaseWeatherSourceIconIT extends Specification implements TestContaine
6162
"--generate-key", "weather::%" + coordinateIdColumnName + "%::%time%",
6263
"--dataset", "file:///home/weather_icon.json")
6364

64-
def connector = new CouchbaseConnector(couchbaseContainer.connectionString, bucketDefinition.name, couchbaseContainer.username, couchbaseContainer.password)
65+
// increased timeout to deal with CI under high load
66+
def connector = new CouchbaseConnector(
67+
couchbaseContainer.connectionString,
68+
bucketDefinition.name,
69+
couchbaseContainer.username,
70+
couchbaseContainer.password,
71+
Duration.ofSeconds(20))
6572
def dtfPattern = "yyyy-MM-dd'T'HH:mm:ssxxx"
6673
def weatherFactory = new IconTimeBasedWeatherValueFactory(new TimeUtil(ZoneId.of("UTC"), Locale.GERMANY, dtfPattern))
6774
source = new CouchbaseWeatherSource(connector, IconWeatherTestData.coordinateSource, coordinateIdColumnName, weatherFactory, dtfPattern)

0 commit comments

Comments
 (0)