Skip to content

Commit cd9a422

Browse files
committed
Change backoff time in Cloud Storage adpater
1 parent c302553 commit cd9a422

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

core/src/main/java/com/scalar/db/storage/objectstorage/cloudstorage/CloudStorageConfig.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,18 @@ public class CloudStorageConfig implements ObjectStorageConfig {
2020

2121
public static final String PARALLEL_UPLOAD_BLOCK_SIZE_IN_BYTES =
2222
PREFIX + "parallel_upload_block_size_in_bytes";
23+
public static final String INITIAL_RETRY_DELAY_IN_SECONDS =
24+
PREFIX + "initial_retry_delay_in_seconds";
25+
26+
public static final Integer DEFAULT_INITIAL_RETRY_DELAY_IN_SECONDS = 1;
2327

2428
private static final Logger logger = LoggerFactory.getLogger(CloudStorageConfig.class);
2529
private final String password;
2630
private final String bucket;
2731
private final String metadataNamespace;
2832
private final String projectId;
2933
private final Integer parallelUploadBlockSizeInBytes;
34+
private final Integer initialRetryDelayInSeconds;
3035

3136
public CloudStorageConfig(DatabaseConfig databaseConfig) {
3237
String storage = databaseConfig.getStorage();
@@ -51,6 +56,11 @@ public CloudStorageConfig(DatabaseConfig databaseConfig) {
5156

5257
parallelUploadBlockSizeInBytes =
5358
getInt(databaseConfig.getProperties(), PARALLEL_UPLOAD_BLOCK_SIZE_IN_BYTES, null);
59+
initialRetryDelayInSeconds =
60+
getInt(
61+
databaseConfig.getProperties(),
62+
INITIAL_RETRY_DELAY_IN_SECONDS,
63+
DEFAULT_INITIAL_RETRY_DELAY_IN_SECONDS);
5464
}
5565

5666
@Override
@@ -95,4 +105,8 @@ public Credentials getCredentials() {
95105
public Optional<Integer> getParallelUploadBlockSizeInBytes() {
96106
return Optional.ofNullable(parallelUploadBlockSizeInBytes);
97107
}
108+
109+
public Integer getInitialRetryDelayInSeconds() {
110+
return initialRetryDelayInSeconds;
111+
}
98112
}

core/src/main/java/com/scalar/db/storage/objectstorage/cloudstorage/CloudStorageWrapper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.scalar.db.storage.objectstorage.cloudstorage;
22

3+
import com.google.api.gax.retrying.RetrySettings;
34
import com.google.cloud.WriteChannel;
45
import com.google.cloud.storage.Blob;
56
import com.google.cloud.storage.BlobId;
@@ -25,6 +26,7 @@
2526
import java.util.stream.Collectors;
2627
import java.util.stream.StreamSupport;
2728
import javax.annotation.concurrent.ThreadSafe;
29+
import org.threeten.bp.Duration;
2830

2931
@ThreadSafe
3032
public class CloudStorageWrapper implements ObjectStorageWrapper {
@@ -40,6 +42,11 @@ public CloudStorageWrapper(CloudStorageConfig config) {
4042
StorageOptions.newBuilder()
4143
.setProjectId(config.getProjectId())
4244
.setCredentials(config.getCredentials())
45+
.setRetrySettings(
46+
RetrySettings.newBuilder()
47+
.setInitialRetryDelay(
48+
Duration.ofSeconds(config.getInitialRetryDelayInSeconds()))
49+
.build())
4350
.build()
4451
.getService();
4552
bucket = config.getBucket();

core/src/test/java/com/scalar/db/storage/objectstorage/cloudstorage/CloudStorageConfigTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class CloudStorageConfigTest {
1515
private static final String CloudStorage_STORAGE = "cloud-storage";
1616
private static final String ANY_TABLE_METADATA_NAMESPACE = "any_namespace";
1717
private static final String ANY_PARALLEL_UPLOAD_BLOCK_SIZE_IN_BYTES = "5242880"; // 5MB
18+
private static final String ANY_INITIAL_RETRY_DELAY_IN_SECONDS = "2";
1819

1920
@Test
2021
public void constructor_AllPropertiesGiven_ShouldLoadProperly() {
@@ -28,6 +29,8 @@ public void constructor_AllPropertiesGiven_ShouldLoadProperly() {
2829
props.setProperty(
2930
CloudStorageConfig.PARALLEL_UPLOAD_BLOCK_SIZE_IN_BYTES,
3031
ANY_PARALLEL_UPLOAD_BLOCK_SIZE_IN_BYTES);
32+
props.setProperty(
33+
CloudStorageConfig.INITIAL_RETRY_DELAY_IN_SECONDS, ANY_INITIAL_RETRY_DELAY_IN_SECONDS);
3134

3235
// Act
3336
CloudStorageConfig config = new CloudStorageConfig(new DatabaseConfig(props));
@@ -39,6 +42,7 @@ public void constructor_AllPropertiesGiven_ShouldLoadProperly() {
3942
assertThat(config.getMetadataNamespace()).isEqualTo(ANY_TABLE_METADATA_NAMESPACE);
4043
assertThat(config.getParallelUploadBlockSizeInBytes()).isNotEmpty();
4144
assertThat(config.getParallelUploadBlockSizeInBytes().get()).isEqualTo(5242880);
45+
assertThat(config.getInitialRetryDelayInSeconds()).isEqualTo(2);
4246
}
4347

4448
@Test
@@ -60,6 +64,8 @@ public void constructor_PropertiesWithoutNonMandatoryOptionsGiven_ShouldLoadProp
6064
assertThat(config.getMetadataNamespace())
6165
.isEqualTo(DatabaseConfig.DEFAULT_SYSTEM_NAMESPACE_NAME);
6266
assertThat(config.getParallelUploadBlockSizeInBytes()).isEmpty();
67+
assertThat(config.getInitialRetryDelayInSeconds())
68+
.isEqualTo(CloudStorageConfig.DEFAULT_INITIAL_RETRY_DELAY_IN_SECONDS);
6369
}
6470

6571
@Test

0 commit comments

Comments
 (0)