Skip to content

Switch default implementation to v2 #402

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jul 12, 2021
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
433 changes: 205 additions & 228 deletions README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public void createTable() {
+ " ID STRING(20) NOT NULL,"
+ " TITLE STRING(MAX) NOT NULL"
+ ") PRIMARY KEY (ID)").execute())
.doOnNext(x -> System.out.println("Table creation completed."))
.doOnSuccess(x -> System.out.println("Table creation completed."))
.block();
}

Expand Down
115 changes: 0 additions & 115 deletions cloud-spanner-r2dbc/README_v2.adoc

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,6 @@ public class SpannerConnectionConfiguration {

private Duration ddlOperationPollInterval;

private int threadPoolSize;

private boolean usePlainText;

private String optimizerVersion;
Expand Down Expand Up @@ -139,10 +137,6 @@ public Duration getDdlOperationPollInterval() {
return this.ddlOperationPollInterval;
}

public int getThreadPoolSize() {
return this.threadPoolSize;
}

public boolean isUsePlainText() {
return this.usePlainText;
}
Expand Down Expand Up @@ -233,8 +227,6 @@ public static class Builder {

private Duration ddlOperationPollInterval = Duration.ofSeconds(5);

private Integer threadPoolSize;

private boolean usePlainText = false;

private String optimizerVersion;
Expand Down Expand Up @@ -318,11 +310,6 @@ public Builder setDdlOperationPollInterval(Duration duration) {
return this;
}

public Builder setThreadPoolSize(int threadPoolSize) {
this.threadPoolSize = threadPoolSize;
return this;
}

public Builder setUsePlainText(boolean usePlainText) {
this.usePlainText = true;
return this;
Expand Down Expand Up @@ -377,10 +364,6 @@ public SpannerConnectionConfiguration build() {
configuration.partialResultSetFetchSize = this.partialResultSetFetchSize;
configuration.ddlOperationTimeout = this.ddlOperationTimeout;
configuration.ddlOperationPollInterval = this.ddlOperationPollInterval;
configuration.threadPoolSize =
this.threadPoolSize != null
? this.threadPoolSize
: Runtime.getRuntime().availableProcessors();
configuration.usePlainText = this.usePlainText;
configuration.optimizerVersion = this.optimizerVersion;
configuration.readonly = this.readonly;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ public class SpannerConnectionFactoryProvider implements ConnectionFactoryProvid
private static final Option[] SECURITY_OPTIONS =
new Option[] { OAUTH_TOKEN, CREDENTIALS, GOOGLE_CREDENTIALS};

static final String IMPLEMENTATION_VERSION = "client-implementation";

private Client client;

private CredentialsHelper credentialsHelper = new CredentialsHelper();
Expand All @@ -120,17 +122,17 @@ public ConnectionFactory create(ConnectionFactoryOptions connectionFactoryOption

SpannerConnectionConfiguration config = createConfiguration(connectionFactoryOptions);

if (connectionFactoryOptions.hasOption(Option.valueOf("client-implementation"))
&& connectionFactoryOptions.getValue(Option.valueOf("client-implementation"))
.equals("client-library")) {
return new SpannerClientLibraryConnectionFactory(config);

} else {
if (connectionFactoryOptions.hasOption(Option.valueOf(IMPLEMENTATION_VERSION))
&& connectionFactoryOptions.getValue(Option.valueOf(IMPLEMENTATION_VERSION)).equals("grpc")
) {
if (this.client == null) {
// GrpcClient should only be instantiated if/when a SpannerConnectionFactory is needed.
this.client = new GrpcClient(config.getCredentials());
}
return new SpannerConnectionFactory(this.client, config);
} else {
// Client Library implementation is now the default.
return new SpannerClientLibraryConnectionFactory(config);
}
}

Expand Down Expand Up @@ -189,10 +191,6 @@ SpannerConnectionConfiguration createConfiguration(
}

// V2 properties
if (options.hasOption(THREAD_POOL_SIZE)) {
config.setThreadPoolSize(options.getValue(THREAD_POOL_SIZE));
}

if (options.hasOption(USE_PLAIN_TEXT)) {
config.setUsePlainText(true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,28 +115,6 @@ void partialResultSetFetchSize() {
assertThat(config.getPartialResultSetFetchSize()).isEqualTo(42);
}

@Test
void executorThreads() {
SpannerConnectionConfiguration config = this.configurationBuilder
.setThreadPoolSize(42)
.setProjectId("project1")
.setInstanceName("an-instance")
.setDatabaseName("db")
.build();
assertThat(config.getThreadPoolSize()).isEqualTo(42);
}

@Test
void executorThreadsNotSet() {
SpannerConnectionConfiguration config = this.configurationBuilder
.setProjectId("project1")
.setInstanceName("an-instance")
.setDatabaseName("db")
.build();
assertThat(config.getThreadPoolSize())
.isEqualTo(Runtime.getRuntime().availableProcessors());
}

@Test
void ddlOperationWaitSettings() {
SpannerConnectionConfiguration config = this.configurationBuilder
Expand All @@ -155,7 +133,7 @@ void ddlOperationWaitSettings() {
void databaseUrlMatchesPropertyConfiguration() {
SpannerConnectionConfiguration urlBased =
this.configurationBuilder
.setUrl("r2dbc:spanner://spanner.googleapis.com:443/"
.setUrl("r2dbc:cloudspanner://spanner.googleapis.com:443/"
+ "projects/my-project/instances/my-instance/databases/my-database")
.build();

Expand All @@ -172,7 +150,7 @@ void databaseUrlMatchesPropertyConfiguration() {
void databaseUrlExtracting() {
SpannerConnectionConfiguration config =
this.configurationBuilder
.setUrl("r2dbc:spanner://spanner.googleapis.com:443/"
.setUrl("r2dbc:cloudspanner://spanner.googleapis.com:443/"
+ "projects/my-project/instances/my-instance/databases/my-database")
.build();

Expand All @@ -184,31 +162,31 @@ void databaseUrlExtracting() {
void invalidUrlFormats() {
assertThatThrownBy(() ->
this.configurationBuilder
.setUrl("r2dbc:spanner://spanner.googleapis.com:443/"
.setUrl("r2dbc:cloudspanner://spanner.googleapis.com:443/"
+ "projects//instances/my-instance/databases/my-database"))
.isInstanceOf(IllegalArgumentException.class);

assertThatThrownBy(() ->
this.configurationBuilder
.setUrl("r2dbc:spanner://spanner.googleapis.com:443/"
.setUrl("r2dbc:cloudspanner://spanner.googleapis.com:443/"
+ "projects/proj/instances//databases/my-database"))
.isInstanceOf(IllegalArgumentException.class);

assertThatThrownBy(() ->
this.configurationBuilder
.setUrl("r2dbc:spanner://spanner.googleapis.com:443/"
.setUrl("r2dbc:cloudspanner://spanner.googleapis.com:443/"
+ "projects/a/instances/b/databases/c/d"))
.isInstanceOf(IllegalArgumentException.class);

assertThatThrownBy(() ->
this.configurationBuilder
.setUrl("r2dbc:spanner://spanner.googleapis.com:443/"
.setUrl("r2dbc:cloudspanner://spanner.googleapis.com:443/"
+ "projects/a/instances/b/databases/c d"))
.isInstanceOf(IllegalArgumentException.class);

assertThatThrownBy(() ->
this.configurationBuilder
.setUrl("r2dbc:spanner://spanner.googleapis.com:443/"
.setUrl("r2dbc:cloudspanner://spanner.googleapis.com:443/"
+ "foobar"))
.isInstanceOf(IllegalArgumentException.class);
}
Expand Down
Loading