From 349bbd983ab8be2a5c92eaf9cb281b7d01db6bb4 Mon Sep 17 00:00:00 2001 From: Qiang Zhao Date: Tue, 14 Jan 2025 17:08:55 +0800 Subject: [PATCH 1/5] feat: support keepalive by default --- .../oxia/client/api/OxiaClientBuilder.java | 4 ++++ .../oxia/client/AsyncOxiaClientImpl.java | 10 ++------- .../oxia/client/ClientConfig.java | 2 ++ .../oxia/client/OxiaClientBuilderImpl.java | 18 ++++++++++++++++ .../oxia/client/grpc/OxiaStub.java | 13 +++++++----- .../oxia/client/grpc/OxiaStubManager.java | 21 +++++++------------ 6 files changed, 42 insertions(+), 26 deletions(-) diff --git a/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java b/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java index df2ce0b6..d4415e94 100644 --- a/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java +++ b/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java @@ -57,6 +57,10 @@ static OxiaClientBuilder create(String serviceAddress) { OxiaClientBuilder maxConnectionPerNode(int connections); + OxiaClientBuilder connectionKeepAliveTimeout(Duration connectionKeepAliveTimeout); + + OxiaClientBuilder connectionKeepAliveTime(Duration connectionKeepAlive); + /** * Configure the authentication plugin and its parameters. * diff --git a/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java b/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java index afcdecee..fb11e97a 100644 --- a/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java +++ b/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java @@ -79,11 +79,7 @@ class AsyncOxiaClientImpl implements AsyncOxiaClient { OxiaBackoffProvider.create( config.connectionBackoffMinDelay(), config.connectionBackoffMaxDelay()); var stubManager = - new OxiaStubManager( - config.authentication(), - config.enableTls(), - oxiaBackoffProvider, - config.maxConnectionPerNode()); + new OxiaStubManager(config, oxiaBackoffProvider); var instrumentProvider = new InstrumentProvider(config.openTelemetry(), config.namespace()); var serviceAddrStub = stubManager.getStub(config.serviceAddress()); @@ -91,10 +87,8 @@ class AsyncOxiaClientImpl implements AsyncOxiaClient { new ShardManager(executor, serviceAddrStub, instrumentProvider, config.namespace()); var notificationManager = new NotificationManager(executor, stubManager, shardManager, instrumentProvider); - - OxiaStubProvider stubProvider = + final var stubProvider = new OxiaStubProvider(config.namespace(), stubManager, shardManager); - shardManager.addCallback(notificationManager); var readBatchManager = BatchManager.newReadBatchManager(config, stubProvider, instrumentProvider); diff --git a/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java b/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java index a0a66528..6eb98589 100644 --- a/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java +++ b/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java @@ -35,4 +35,6 @@ public record ClientConfig( boolean enableTls, @NonNull Duration connectionBackoffMinDelay, @NonNull Duration connectionBackoffMaxDelay, + Duration connectionKeepAliveTime, + Duration connectionKeepAliveTimeout, int maxConnectionPerNode) {} diff --git a/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java b/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java index 2f224631..3a6dae79 100644 --- a/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java +++ b/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java @@ -18,6 +18,7 @@ import static java.time.Duration.ZERO; import com.google.common.base.Strings; +import com.google.protobuf.DurationOrBuilder; import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; import io.streamnative.oxia.client.api.AsyncOxiaClient; @@ -71,6 +72,9 @@ public class OxiaClientBuilderImpl implements OxiaClientBuilder { @NonNull protected Duration connectionBackoffMinDelay = Duration.ofMillis(100); @NonNull protected Duration connectionBackoffMaxDelay = Duration.ofSeconds(30); + protected Duration connectionKeepAliveTime = Duration.ofSeconds(10); + protected Duration connectionKeepAliveTimeout = Duration.ofSeconds(5); + protected int maxConnectionsPerNode = DefaultMaxConnectionPerNode; @Override @@ -164,6 +168,18 @@ public OxiaClientBuilder maxConnectionPerNode(int connections) { return this; } + @Override + public OxiaClientBuilder connectionKeepAliveTimeout(Duration connectionKeepAliveTimeout) { + this.connectionKeepAliveTimeout = connectionKeepAliveTimeout; + return this; + } + + @Override + public OxiaClientBuilder connectionKeepAliveTime(Duration keepAliveTime) { + this.connectionKeepAliveTime = keepAliveTime; + return this; + } + @Override public OxiaClientBuilder authentication(String authPluginClassName, String authParamsString) throws UnsupportedAuthenticationException { @@ -253,6 +269,8 @@ public OxiaClientBuilder loadConfig(Properties properties) { enableTls, connectionBackoffMinDelay, connectionBackoffMaxDelay, + connectionKeepAliveTime, + connectionKeepAliveTimeout, maxConnectionsPerNode); return AsyncOxiaClientImpl.newInstance(config); } diff --git a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java index 26546729..e0bbe118 100644 --- a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java +++ b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java @@ -25,11 +25,13 @@ import io.grpc.ManagedChannel; import io.grpc.TlsChannelCredentials; import io.grpc.internal.BackoffPolicy; +import io.streamnative.oxia.client.ClientConfig; import io.streamnative.oxia.client.api.Authentication; import io.streamnative.oxia.proto.OxiaClientGrpc; import java.lang.reflect.Field; import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; import lombok.NonNull; @@ -56,14 +58,15 @@ static ChannelCredentials getChannelCredential(String address, boolean tlsEnable public OxiaStub( String address, - @Nullable Authentication authentication, - boolean enableTls, + ClientConfig clientConfig, @Nullable BackoffPolicy.Provider backoffProvider) { - this(Grpc.newChannelBuilder(getAddress(address), getChannelCredential(address, enableTls)) + this(Grpc.newChannelBuilder(getAddress(address), getChannelCredential(address, clientConfig.enableTls())) + .keepAliveTime(clientConfig.connectionKeepAliveTime().toMillis(), MILLISECONDS) + .keepAliveTimeout(clientConfig.connectionKeepAliveTimeout().toMillis(), MILLISECONDS) + .keepAliveWithoutCalls(true) .directExecutor() - .build(), - authentication, backoffProvider); + .build(), clientConfig.authentication(), backoffProvider); } public OxiaStub(ManagedChannel channel) { diff --git a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java index 6617d013..4cb922db 100644 --- a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java +++ b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java @@ -17,6 +17,7 @@ import com.google.common.annotations.VisibleForTesting; import io.grpc.internal.BackoffPolicy; +import io.streamnative.oxia.client.ClientConfig; import io.streamnative.oxia.client.api.Authentication; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -26,21 +27,15 @@ public class OxiaStubManager implements AutoCloseable { @VisibleForTesting final Map stubs = new ConcurrentHashMap<>(); - @Nullable private final Authentication authentication; - private final boolean enableTls; - @Nullable private final BackoffPolicy.Provider backoffProvider; - + private final BackoffPolicy.Provider backoffProvider; private final int maxConnectionPerNode; + private final ClientConfig clientConfig; - public OxiaStubManager( - @Nullable Authentication authentication, - boolean enableTls, - @Nullable BackoffPolicy.Provider backoffProvider, - int maxConnectionPerNode) { - this.authentication = authentication; - this.enableTls = enableTls; + public OxiaStubManager(ClientConfig clientConfig, + BackoffPolicy.Provider backoffProvider){ this.backoffProvider = backoffProvider; - this.maxConnectionPerNode = maxConnectionPerNode; + this.clientConfig = clientConfig; + this.maxConnectionPerNode = clientConfig.maxConnectionPerNode(); } public OxiaStub getStub(String address) { @@ -51,7 +46,7 @@ public OxiaStub getStub(String address) { } return stubs.computeIfAbsent( new Key(address, modKey), - key -> new OxiaStub(key.address, authentication, enableTls, backoffProvider)); + key -> new OxiaStub(key.address, clientConfig, backoffProvider)); } @Override From 1fbc35e4339cabec365872da391d06f039f11537 Mon Sep 17 00:00:00 2001 From: Qiang Zhao Date: Tue, 14 Jan 2025 17:26:50 +0800 Subject: [PATCH 2/5] fix test --- .../oxia/client/OxiaClientBuilderImpl.java | 9 +++++--- .../oxia/client/OxiaClientBuilderTest.java | 13 +++++++++++ .../oxia/client/batch/BatchTest.java | 4 ++++ .../oxia/client/batch/BatcherTest.java | 2 ++ .../oxia/client/grpc/OxiaStubTest.java | 11 ++++++--- .../oxia/client/session/SessionTest.java | 2 ++ .../oxia/client/util/ConfigUtils.java | 23 +++++++++++++++++++ 7 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java diff --git a/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java b/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java index 3a6dae79..61cb0b9d 100644 --- a/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java +++ b/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java @@ -17,6 +17,7 @@ import static java.time.Duration.ZERO; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; import com.google.protobuf.DurationOrBuilder; import io.opentelemetry.api.GlobalOpenTelemetry; @@ -254,8 +255,11 @@ public OxiaClientBuilder loadConfig(Properties properties) { @Override public @NonNull CompletableFuture asyncClient() { - var config = - new ClientConfig( + return AsyncOxiaClientImpl.newInstance(getClientConfig()); + } + + public ClientConfig getClientConfig() { + return new ClientConfig( serviceAddress, requestTimeout, batchLinger, @@ -272,7 +276,6 @@ public OxiaClientBuilder loadConfig(Properties properties) { connectionKeepAliveTime, connectionKeepAliveTimeout, maxConnectionsPerNode); - return AsyncOxiaClientImpl.newInstance(config); } @Override diff --git a/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java b/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java index 7fb78124..f4dea183 100644 --- a/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java @@ -26,6 +26,8 @@ import io.streamnative.oxia.client.auth.TokenAuthentication; import java.time.Duration; import java.util.Properties; + +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; class OxiaClientBuilderTest { @@ -132,4 +134,15 @@ void loadConfigFromFile() { String token = metadata.get(Metadata.Key.of("Authorization", ASCII_STRING_MARSHALLER)); assertThat(token).isEqualTo("Bearer 1234"); } + + @Test + void connectionKeepAlive() { + final var keepAliveTime = Duration.ofMillis(10); + final var keepAliveTimeout = Duration.ofMillis(10); + builder.connectionKeepAliveTime(keepAliveTime); + builder.connectionKeepAliveTimeout(keepAliveTimeout); + final var impl = (OxiaClientBuilderImpl) builder; + Assertions.assertEquals(keepAliveTimeout, impl.connectionKeepAliveTimeout); + Assertions.assertEquals(keepAliveTime, impl.connectionKeepAliveTime); + } } diff --git a/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java b/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java index 4499da75..e1350b4a 100644 --- a/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java @@ -104,6 +104,8 @@ class BatchTest { authentication != null, Duration.ofMillis(100), Duration.ofSeconds(30), + Duration.ofSeconds(10), + Duration.ofSeconds(5), 1); private final OxiaClientImplBase serviceImpl = @@ -498,6 +500,8 @@ class FactoryTests { false, Duration.ofMillis(100), Duration.ofSeconds(30), + Duration.ofSeconds(10), + Duration.ofSeconds(5), 1); @Nested diff --git a/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java b/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java index 6c99f5d7..d52c592b 100644 --- a/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java @@ -66,6 +66,8 @@ class BatcherTest { false, Duration.ofMillis(100), Duration.ofSeconds(30), + Duration.ofSeconds(10), + Duration.ofSeconds(5), 1); BatchedArrayBlockingQueue> queue; diff --git a/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java b/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java index 033c6aa5..be9c7a0e 100644 --- a/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java @@ -34,6 +34,8 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; +import static io.streamnative.oxia.client.util.ConfigUtils.*; + @Testcontainers @Slf4j public class OxiaStubTest { @@ -52,9 +54,9 @@ public enum BackoffType { public void testOxiaReconnectBackoff(BackoffType type) throws Exception { final OxiaStubManager stubManager; if (type == BackoffType.Oxia) { - stubManager = new OxiaStubManager(null, false, OxiaBackoffProvider.DEFAULT, 1); + stubManager = new OxiaStubManager(getDefaultClientConfig(), OxiaBackoffProvider.DEFAULT); } else { - stubManager = new OxiaStubManager(null, false, null, 1); + stubManager = new OxiaStubManager(getDefaultClientConfig(), null); } final OxiaStub stub = stubManager.getStub(oxia.getServiceAddress()); @@ -131,9 +133,12 @@ public void onCompleted() { @SneakyThrows public void testMaxConnectionPerNode() { final var maxConnectionPerNode = 10; + final var clientConfig = getDefaultClientConfig(builder -> { + builder.maxConnectionPerNode(maxConnectionPerNode); + }); @Cleanup var stubManager = - new OxiaStubManager(null, false, OxiaBackoffProvider.DEFAULT, maxConnectionPerNode); + new OxiaStubManager(clientConfig, OxiaBackoffProvider.DEFAULT); for (int i = 0; i < 1000; i++) { stubManager.getStub(oxia.getServiceAddress()); } diff --git a/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java b/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java index 7d4493c2..6d4a5d48 100644 --- a/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java @@ -82,6 +82,8 @@ void setup() throws IOException { false, Duration.ofMillis(100), Duration.ofSeconds(30), + Duration.ofSeconds(10), + Duration.ofSeconds(5), 1); String serverName = InProcessServerBuilder.generateName(); diff --git a/client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java b/client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java new file mode 100644 index 00000000..021ed1c7 --- /dev/null +++ b/client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java @@ -0,0 +1,23 @@ +package io.streamnative.oxia.client.util; + +import io.streamnative.oxia.client.ClientConfig; +import io.streamnative.oxia.client.OxiaClientBuilderImpl; +import io.streamnative.oxia.client.api.OxiaClientBuilder; +import lombok.experimental.UtilityClass; + +import java.util.function.Consumer; + +@UtilityClass +public final class ConfigUtils { + + public static ClientConfig getDefaultClientConfig() { + final OxiaClientBuilderImpl builder = (OxiaClientBuilderImpl) OxiaClientBuilder.create(""); + return builder.getClientConfig(); + } + + public static ClientConfig getDefaultClientConfig(Consumer callback) { + final OxiaClientBuilder builder = OxiaClientBuilder.create(""); + callback.accept(builder); + return ((OxiaClientBuilderImpl) builder).getClientConfig(); + } +} From 5623c82a901022d7a488cb1f91f2d10708b7c6a0 Mon Sep 17 00:00:00 2001 From: Qiang Zhao Date: Tue, 14 Jan 2025 18:18:42 +0800 Subject: [PATCH 3/5] update license --- .../oxia/client/api/OxiaClientBuilder.java | 2 +- .../oxia/client/AsyncOxiaClientImpl.java | 2 +- .../io/streamnative/oxia/client/ClientConfig.java | 2 +- .../oxia/client/OxiaClientBuilderImpl.java | 2 +- .../streamnative/oxia/client/grpc/OxiaStub.java | 2 +- .../oxia/client/grpc/OxiaStubManager.java | 2 +- .../oxia/client/OxiaClientBuilderTest.java | 2 +- .../streamnative/oxia/client/batch/BatchTest.java | 2 +- .../oxia/client/batch/BatcherTest.java | 2 +- .../oxia/client/grpc/OxiaStubTest.java | 2 +- .../oxia/client/session/SessionTest.java | 2 +- .../oxia/client/util/ConfigUtils.java | 15 +++++++++++++++ 12 files changed, 26 insertions(+), 11 deletions(-) diff --git a/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java b/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java index d4415e94..8e97d24a 100644 --- a/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java +++ b/client-api/src/main/java/io/streamnative/oxia/client/api/OxiaClientBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java b/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java index fb11e97a..f35fbee2 100644 --- a/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java +++ b/client/src/main/java/io/streamnative/oxia/client/AsyncOxiaClientImpl.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java b/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java index 6eb98589..28832ef5 100644 --- a/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java +++ b/client/src/main/java/io/streamnative/oxia/client/ClientConfig.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java b/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java index 61cb0b9d..e1e63643 100644 --- a/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java +++ b/client/src/main/java/io/streamnative/oxia/client/OxiaClientBuilderImpl.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java index e0bbe118..83fb697f 100644 --- a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java +++ b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStub.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java index 4cb922db..d3dbb305 100644 --- a/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java +++ b/client/src/main/java/io/streamnative/oxia/client/grpc/OxiaStubManager.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java b/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java index f4dea183..6cc52995 100644 --- a/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/OxiaClientBuilderTest.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java b/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java index e1350b4a..2dcc1c03 100644 --- a/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/batch/BatchTest.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java b/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java index d52c592b..629e6eda 100644 --- a/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/batch/BatcherTest.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java b/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java index be9c7a0e..f4cb5280 100644 --- a/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/grpc/OxiaStubTest.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java b/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java index 6d4a5d48..2087115d 100644 --- a/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java +++ b/client/src/test/java/io/streamnative/oxia/client/session/SessionTest.java @@ -1,5 +1,5 @@ /* - * Copyright © 2022-2024 StreamNative Inc. + * Copyright © 2022-2025 StreamNative Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java b/client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java index 021ed1c7..7be33309 100644 --- a/client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java +++ b/client/src/test/java/io/streamnative/oxia/client/util/ConfigUtils.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2022-2025 StreamNative Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package io.streamnative.oxia.client.util; import io.streamnative.oxia.client.ClientConfig; From fd379463d06120e5077115a76ccc63adec7a791c Mon Sep 17 00:00:00 2001 From: Qiang Zhao Date: Tue, 14 Jan 2025 18:20:39 +0800 Subject: [PATCH 4/5] fix license --- client-it/pom.xml | 2 +- .../java/io/streamnative/oxia/client/it/NotificationIt.java | 2 +- .../test/java/io/streamnative/oxia/client/it/OxiaClientIT.java | 2 +- perf-ycsb/pom.xml | 2 +- perf/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client-it/pom.xml b/client-it/pom.xml index 6597dd2c..15e65603 100644 --- a/client-it/pom.xml +++ b/client-it/pom.xml @@ -1,7 +1,7 @@