diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RequestTracker.java b/servicetalk-client-api/src/main/java/io/servicetalk/client/api/RequestTracker.java
similarity index 98%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RequestTracker.java
rename to servicetalk-client-api/src/main/java/io/servicetalk/client/api/RequestTracker.java
index 95964b3c22..e6c40f0757 100644
--- a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RequestTracker.java
+++ b/servicetalk-client-api/src/main/java/io/servicetalk/client/api/RequestTracker.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.servicetalk.loadbalancer;
+package io.servicetalk.client.api;
import io.servicetalk.context.api.ContextMap;
diff --git a/servicetalk-examples/docs/modules/ROOT/pages/http/index.adoc b/servicetalk-examples/docs/modules/ROOT/pages/http/index.adoc
index 46efa5d3e8..1285ab5566 100644
--- a/servicetalk-examples/docs/modules/ROOT/pages/http/index.adoc
+++ b/servicetalk-examples/docs/modules/ROOT/pages/http/index.adoc
@@ -236,11 +236,11 @@ on via a client filter on the client builder.
[#LoadBalancer]
== LoadBalancer
-This example demonstrates how to use and configure the experimental link:{source-root}/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancers.java[LoadBalancers]:
+This example demonstrates how to use and configure link:{source-root}/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancers.java[LoadBalancers]:
-- by using link:{source-root}/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilder.java[LoadBalancerBuilder] to customize its setting:
- * configuring a different link:{source-root}/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicy.java[LoadBalancingPolicy]
- * configuring xDS failure detection using link:{source-root}/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/OutlierDetectorConfig.java[OutlierDetectorConfig]
+- by using link:{source-root}/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilder.java[LoadBalancerBuilder] to customize its setting:
+ * configuring a different link:{source-root}/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicy.java[LoadBalancingPolicy]
+ * configuring xDS failure detection using link:{source-root}/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/OutlierDetectorConfig.java[OutlierDetectorConfig]
- by using link:{source-root}/servicetalk-http-api/src/main/java/io/servicetalk/http/api/DefaultHttpLoadBalancerFactory.java[DefaultHttpLoadBalancerFactory] to adapt a LoadBalancer to HTTP and configure it via client builder
Using the following classes:
@@ -248,8 +248,6 @@ Using the following classes:
- link:{source-root}/servicetalk-examples/http/loadbalancer/src/main/java/io/servicetalk/examples/http/loadbalancer/CustomLoadBalancerClient.java[CustomLoadBalancerClient] - A client that configures custom settings for its LoadBalancer.
- link:{source-root}/servicetalk-examples/http/loadbalancer/src/main/java/io/servicetalk/examples/http/loadbalancer/HelloWorldServer.java[HelloWorldServer] - A simple server implementation.
-NOTE: DefaultLoadBalancer is currently considered experimental and therefore the API is subject to change.
-
[#OpenTracing]
== OpenTracing
diff --git a/servicetalk-examples/http/loadbalancer/build.gradle b/servicetalk-examples/http/loadbalancer/build.gradle
index 30e74d6ff6..a56719c07d 100644
--- a/servicetalk-examples/http/loadbalancer/build.gradle
+++ b/servicetalk-examples/http/loadbalancer/build.gradle
@@ -19,7 +19,7 @@ apply from: "../../gradle/idea.gradle"
dependencies {
implementation project(":servicetalk-annotations")
implementation project(":servicetalk-http-netty")
- implementation project(":servicetalk-loadbalancer-experimental")
+ implementation project(":servicetalk-loadbalancer")
runtimeOnly "org.apache.logging.log4j:log4j-slf4j-impl:$log4jVersion"
}
diff --git a/servicetalk-grpc-netty/build.gradle b/servicetalk-grpc-netty/build.gradle
index f8b2bd8c79..ddb7ba82ae 100644
--- a/servicetalk-grpc-netty/build.gradle
+++ b/servicetalk-grpc-netty/build.gradle
@@ -36,7 +36,6 @@ dependencies {
implementation project(":servicetalk-transport-netty-internal")
implementation project(":servicetalk-utils-internal")
implementation project(":servicetalk-concurrent-internal")
- implementation project(":servicetalk-loadbalancer-experimental")
implementation "org.slf4j:slf4j-api:$slf4jVersion"
implementation "com.google.protobuf:protobuf-java"
diff --git a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcRequestTracker.java b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcRequestTracker.java
index 59aeafc259..64f7c639e8 100644
--- a/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcRequestTracker.java
+++ b/servicetalk-grpc-netty/src/main/java/io/servicetalk/grpc/netty/GrpcRequestTracker.java
@@ -19,6 +19,7 @@
import io.servicetalk.client.api.ConnectionFactory;
import io.servicetalk.client.api.ConnectionFactoryFilter;
import io.servicetalk.client.api.DelegatingConnectionFactory;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.Single;
import io.servicetalk.context.api.ContextMap;
import io.servicetalk.grpc.api.GrpcLifecycleObserver;
@@ -28,7 +29,6 @@
import io.servicetalk.http.api.HttpRequestMetaData;
import io.servicetalk.http.api.HttpResponseMetaData;
import io.servicetalk.http.netty.HttpLifecycleObserverRequesterFilter;
-import io.servicetalk.loadbalancer.RequestTracker;
import io.servicetalk.transport.api.ConnectionInfo;
import io.servicetalk.transport.api.ExecutionStrategy;
import io.servicetalk.transport.api.TransportObserver;
@@ -40,7 +40,7 @@
import java.util.function.Function;
import javax.annotation.Nullable;
-import static io.servicetalk.loadbalancer.RequestTracker.REQUEST_TRACKER_KEY;
+import static io.servicetalk.client.api.RequestTracker.REQUEST_TRACKER_KEY;
final class GrpcRequestTracker {
diff --git a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/GrpcRequestTrackerTest.java b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/GrpcRequestTrackerTest.java
index 877ae8b4d5..6de33fd6bc 100644
--- a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/GrpcRequestTrackerTest.java
+++ b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/GrpcRequestTrackerTest.java
@@ -16,6 +16,7 @@
package io.servicetalk.grpc.netty;
import io.servicetalk.client.api.DelegatingConnectionFactory;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.Publisher;
import io.servicetalk.concurrent.api.Single;
import io.servicetalk.context.api.ContextMap;
@@ -25,7 +26,6 @@
import io.servicetalk.grpc.api.GrpcStatusCode;
import io.servicetalk.grpc.api.GrpcStatusException;
import io.servicetalk.http.api.FilterableStreamingHttpConnection;
-import io.servicetalk.loadbalancer.RequestTracker;
import io.servicetalk.transport.api.HostAndPort;
import io.servicetalk.transport.api.ServerContext;
import io.servicetalk.transport.api.TransportObserver;
@@ -40,7 +40,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nullable;
-import static io.servicetalk.loadbalancer.RequestTracker.REQUEST_TRACKER_KEY;
+import static io.servicetalk.client.api.RequestTracker.REQUEST_TRACKER_KEY;
import static io.servicetalk.transport.netty.internal.AddressUtils.localAddress;
import static io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort;
import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/servicetalk-http-netty/build.gradle b/servicetalk-http-netty/build.gradle
index 385140e2fa..856c4c99f3 100644
--- a/servicetalk-http-netty/build.gradle
+++ b/servicetalk-http-netty/build.gradle
@@ -29,7 +29,6 @@ dependencies {
implementation project(":servicetalk-dns-discovery-netty")
implementation project(":servicetalk-http-utils")
implementation project(":servicetalk-loadbalancer")
- implementation project(":servicetalk-loadbalancer-experimental")
implementation project(":servicetalk-loadbalancer-experimental-provider")
implementation project(":servicetalk-logging-slf4j-internal")
implementation project(":servicetalk-tcp-netty-internal")
diff --git a/servicetalk-http-netty/src/main/java/io/servicetalk/http/netty/HttpRequestTracker.java b/servicetalk-http-netty/src/main/java/io/servicetalk/http/netty/HttpRequestTracker.java
index c31c855746..5ad6d0b4cd 100644
--- a/servicetalk-http-netty/src/main/java/io/servicetalk/http/netty/HttpRequestTracker.java
+++ b/servicetalk-http-netty/src/main/java/io/servicetalk/http/netty/HttpRequestTracker.java
@@ -19,6 +19,7 @@
import io.servicetalk.client.api.ConnectionFactory;
import io.servicetalk.client.api.ConnectionFactoryFilter;
import io.servicetalk.client.api.DelegatingConnectionFactory;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.Single;
import io.servicetalk.context.api.ContextMap;
import io.servicetalk.http.api.FilterableStreamingHttpConnection;
@@ -26,7 +27,6 @@
import io.servicetalk.http.api.HttpLifecycleObserver;
import io.servicetalk.http.api.HttpRequestMetaData;
import io.servicetalk.http.api.HttpResponseMetaData;
-import io.servicetalk.loadbalancer.RequestTracker;
import io.servicetalk.transport.api.ConnectionInfo;
import io.servicetalk.transport.api.ExecutionStrategy;
import io.servicetalk.transport.api.TransportObserver;
@@ -38,11 +38,11 @@
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
import javax.annotation.Nullable;
+import static io.servicetalk.client.api.RequestTracker.ErrorClass.EXT_ORIGIN_TIMEOUT;
+import static io.servicetalk.client.api.RequestTracker.ErrorClass.LOCAL_ORIGIN_REQUEST_FAILED;
+import static io.servicetalk.client.api.RequestTracker.REQUEST_TRACKER_KEY;
import static io.servicetalk.http.api.HttpResponseStatus.StatusClass.SERVER_ERROR_5XX;
import static io.servicetalk.http.api.HttpResponseStatus.TOO_MANY_REQUESTS;
-import static io.servicetalk.loadbalancer.RequestTracker.ErrorClass.EXT_ORIGIN_TIMEOUT;
-import static io.servicetalk.loadbalancer.RequestTracker.ErrorClass.LOCAL_ORIGIN_REQUEST_FAILED;
-import static io.servicetalk.loadbalancer.RequestTracker.REQUEST_TRACKER_KEY;
final class HttpRequestTracker {
diff --git a/servicetalk-http-netty/src/test/java/io/servicetalk/http/netty/HttpRequestTrackerTest.java b/servicetalk-http-netty/src/test/java/io/servicetalk/http/netty/HttpRequestTrackerTest.java
index fb9ac74f46..f8b24cc801 100644
--- a/servicetalk-http-netty/src/test/java/io/servicetalk/http/netty/HttpRequestTrackerTest.java
+++ b/servicetalk-http-netty/src/test/java/io/servicetalk/http/netty/HttpRequestTrackerTest.java
@@ -16,6 +16,7 @@
package io.servicetalk.http.netty;
import io.servicetalk.client.api.DelegatingConnectionFactory;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.Single;
import io.servicetalk.context.api.ContextMap;
import io.servicetalk.http.api.FilterableStreamingHttpConnection;
@@ -23,7 +24,6 @@
import io.servicetalk.http.api.HttpResponse;
import io.servicetalk.http.api.HttpService;
import io.servicetalk.http.api.SingleAddressHttpClientBuilder;
-import io.servicetalk.loadbalancer.RequestTracker;
import io.servicetalk.transport.api.HostAndPort;
import io.servicetalk.transport.api.ServerContext;
import io.servicetalk.transport.api.TransportObserver;
@@ -39,7 +39,7 @@
import static io.netty.handler.codec.http.HttpStatusClass.SERVER_ERROR;
import static io.netty.handler.codec.http.HttpStatusClass.SUCCESS;
-import static io.servicetalk.loadbalancer.RequestTracker.REQUEST_TRACKER_KEY;
+import static io.servicetalk.client.api.RequestTracker.REQUEST_TRACKER_KEY;
import static io.servicetalk.transport.netty.internal.AddressUtils.localAddress;
import static io.servicetalk.transport.netty.internal.AddressUtils.serverHostAndPort;
import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/servicetalk-loadbalancer-experimental-provider/build.gradle b/servicetalk-loadbalancer-experimental-provider/build.gradle
index 5b11dd5942..be4481cbb0 100644
--- a/servicetalk-loadbalancer-experimental-provider/build.gradle
+++ b/servicetalk-loadbalancer-experimental-provider/build.gradle
@@ -21,6 +21,5 @@ dependencies {
implementation project(":servicetalk-annotations")
implementation project(":servicetalk-loadbalancer")
- implementation project(":servicetalk-loadbalancer-experimental")
implementation "org.slf4j:slf4j-api:$slf4jVersion"
}
diff --git a/servicetalk-loadbalancer-experimental/build.gradle b/servicetalk-loadbalancer-experimental/build.gradle
index bc60b924a1..194f9a7117 100644
--- a/servicetalk-loadbalancer-experimental/build.gradle
+++ b/servicetalk-loadbalancer-experimental/build.gradle
@@ -16,24 +16,9 @@
apply plugin: "io.servicetalk.servicetalk-gradle-plugin-internal-library"
-dependencies {
- api project(":servicetalk-client-api")
- api project(":servicetalk-concurrent-api")
-
- implementation project(":servicetalk-annotations")
- implementation project(":servicetalk-concurrent-api-internal")
- implementation project(":servicetalk-concurrent-internal")
- implementation project(":servicetalk-loadbalancer")
- implementation project(":servicetalk-utils-internal")
- implementation "org.slf4j:slf4j-api:$slf4jVersion"
+tasks.named("javadoc").configure {
+ enabled = false
+}
- testImplementation enforcedPlatform("org.junit:junit-bom:$junit5Version")
- testImplementation testFixtures(project(":servicetalk-concurrent-api"))
- testImplementation testFixtures(project(":servicetalk-concurrent-internal"))
- testImplementation project(":servicetalk-concurrent-test-internal")
- testImplementation project(":servicetalk-test-resources")
- testImplementation "org.junit.jupiter:junit-jupiter-api"
- testImplementation "org.junit.jupiter:junit-jupiter-params"
- testImplementation "org.hamcrest:hamcrest:$hamcrestVersion"
- testImplementation "org.mockito:mockito-core:$mockitoCoreVersion"
+dependencies {
}
diff --git a/servicetalk-loadbalancer-experimental/gradle.lockfile b/servicetalk-loadbalancer-experimental/gradle.lockfile
index 7c26e66085..9eb5aa7fce 100644
--- a/servicetalk-loadbalancer-experimental/gradle.lockfile
+++ b/servicetalk-loadbalancer-experimental/gradle.lockfile
@@ -1,7 +1,4 @@
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
-com.google.code.findbugs:jsr305:3.0.2=compileClasspath,runtimeClasspath
-org.jctools:jctools-core:4.0.3=runtimeClasspath
-org.slf4j:slf4j-api:1.7.36=compileClasspath,runtimeClasspath
-empty=annotationProcessor,spotbugsPlugins,testAnnotationProcessor
+empty=annotationProcessor,compileClasspath,runtimeClasspath
diff --git a/servicetalk-loadbalancer-experimental/gradle/checkstyle/suppressions.xml b/servicetalk-loadbalancer-experimental/gradle/checkstyle/suppressions.xml
index 848b50c7f2..0a549e3778 100644
--- a/servicetalk-loadbalancer-experimental/gradle/checkstyle/suppressions.xml
+++ b/servicetalk-loadbalancer-experimental/gradle/checkstyle/suppressions.xml
@@ -21,8 +21,4 @@
-
-
diff --git a/servicetalk-loadbalancer-experimental/gradle/spotbugs/test-exclusions.xml b/servicetalk-loadbalancer-experimental/gradle/spotbugs/test-exclusions.xml
deleted file mode 100644
index 7e276c24b9..0000000000
--- a/servicetalk-loadbalancer-experimental/gradle/spotbugs/test-exclusions.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/PlaceHolder.java b/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/PlaceHolder.java
new file mode 100644
index 0000000000..7abe92c0da
--- /dev/null
+++ b/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/PlaceHolder.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright © 2024 Apple Inc. and the ServiceTalk project authors
+ *
+ * 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.servicetalk.loadbalancer;
+
+// FIXME: 0.43: TL;DR: Remove this module. This package existed to support the DefaultLoadBalancer development which
+// has since been merged into the servicetalk-loadbalancer module.
+final class PlaceHolder {
+ private PlaceHolder() {
+ }
+}
diff --git a/servicetalk-loadbalancer-experimental/README.adoc b/servicetalk-loadbalancer/DEFAULTLOADBALANCER.adoc
similarity index 97%
rename from servicetalk-loadbalancer-experimental/README.adoc
rename to servicetalk-loadbalancer/DEFAULTLOADBALANCER.adoc
index 57a06264c6..7fa8e175f6 100644
--- a/servicetalk-loadbalancer-experimental/README.adoc
+++ b/servicetalk-loadbalancer/DEFAULTLOADBALANCER.adoc
@@ -2,7 +2,7 @@
== What is DefaultLoadBalancer?
-https://github.com/apple/servicetalk/blob/main/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancer.java[DefaultLoadBalancer]
+https://github.com/apple/servicetalk/blob/main/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancer.java[DefaultLoadBalancer]
is a refactor of the ServiceTalk
https://github.com/apple/servicetalk/blob/main/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancer.java[RoundRobinLoadBalancer]
that is intended to provide a more flexible foundation for building load balancers. It also serves as the basis for new
@@ -11,7 +11,7 @@ outlier detectors.
=== Relationship Between the LoadBalancer and Connections
-The load balancer is structured as a series of https://github.com/apple/servicetalk/blob/main/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/Host.java[Host]'s
+The load balancer is structured as a series of https://github.com/apple/servicetalk/blob/main/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/Host.java[Host]'s
and those hosts can have many connections. The number of connections to each Host is driven by the number of connections
required to satisfy the request load. Usage of the HTTP/2 protocol will dramatically shrink the necessary number of
connections to each backend, often to 1, and is strongly encouraged.
diff --git a/servicetalk-loadbalancer/gradle/checkstyle/suppressions.xml b/servicetalk-loadbalancer/gradle/checkstyle/suppressions.xml
new file mode 100644
index 0000000000..afba493613
--- /dev/null
+++ b/servicetalk-loadbalancer/gradle/checkstyle/suppressions.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/servicetalk-loadbalancer-experimental/license/LICENSE.grpc-java.txt b/servicetalk-loadbalancer/license/LICENSE.grpc-java.txt
similarity index 100%
rename from servicetalk-loadbalancer-experimental/license/LICENSE.grpc-java.txt
rename to servicetalk-loadbalancer/license/LICENSE.grpc-java.txt
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/BaseHostSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/BaseHostSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/BaseHostSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/BaseHostSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/CatchAllLoadBalancerObserver.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/CatchAllLoadBalancerObserver.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/CatchAllLoadBalancerObserver.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/CatchAllLoadBalancerObserver.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectTracker.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectTracker.java
similarity index 97%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectTracker.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectTracker.java
index 3819c441f8..5ac1dd5562 100644
--- a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectTracker.java
+++ b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectTracker.java
@@ -15,6 +15,8 @@
*/
package io.servicetalk.loadbalancer;
+import io.servicetalk.client.api.RequestTracker;
+
/**
* An interface for tracking connection establishment measurements.
* This has an intended usage similar to the {@link RequestTracker} but with a focus on connection establishment
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectionSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectionSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectionSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectionSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicies.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicies.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicies.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicies.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicy.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicy.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicy.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/ConnectionSelectorPolicy.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/CorePoolConnectionSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/CorePoolConnectionSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/CorePoolConnectionSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/CorePoolConnectionSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultHost.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultHost.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultHost.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultHost.java
index 7da7c76d46..39cdfda5ec 100644
--- a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultHost.java
+++ b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultHost.java
@@ -42,6 +42,7 @@
import java.util.function.Predicate;
import javax.annotation.Nullable;
+import static io.servicetalk.client.api.RequestTracker.REQUEST_TRACKER_KEY;
import static io.servicetalk.concurrent.api.AsyncCloseables.toAsyncCloseable;
import static io.servicetalk.concurrent.api.Completable.completed;
import static io.servicetalk.concurrent.api.Publisher.fromIterable;
@@ -52,7 +53,6 @@
import static io.servicetalk.loadbalancer.ConnectTracker.ErrorClass.CANCELLED;
import static io.servicetalk.loadbalancer.ConnectTracker.ErrorClass.CONNECT_ERROR;
import static io.servicetalk.loadbalancer.ConnectTracker.ErrorClass.CONNECT_TIMEOUT;
-import static io.servicetalk.loadbalancer.RequestTracker.REQUEST_TRACKER_KEY;
import static java.util.Collections.emptyList;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater;
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategy.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategy.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategy.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategy.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancer.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancer.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancer.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancer.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilder.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilder.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilder.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilder.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultRequestTracker.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultRequestTracker.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultRequestTracker.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultRequestTracker.java
index 073cd9e894..d6a288b2e1 100644
--- a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DefaultRequestTracker.java
+++ b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DefaultRequestTracker.java
@@ -15,6 +15,7 @@
*/
package io.servicetalk.loadbalancer;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.client.api.ScoreSupplier;
import java.util.concurrent.locks.StampedLock;
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DelegatingLoadBalancerBuilder.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DelegatingLoadBalancerBuilder.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/DelegatingLoadBalancerBuilder.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/DelegatingLoadBalancerBuilder.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/FailurePercentageXdsOutlierDetectorAlgorithm.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/FailurePercentageXdsOutlierDetectorAlgorithm.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/FailurePercentageXdsOutlierDetectorAlgorithm.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/FailurePercentageXdsOutlierDetectorAlgorithm.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/HealthIndicator.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/HealthIndicator.java
similarity index 97%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/HealthIndicator.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/HealthIndicator.java
index 2ef472a7c5..4e3e91bcea 100644
--- a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/HealthIndicator.java
+++ b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/HealthIndicator.java
@@ -16,6 +16,7 @@
package io.servicetalk.loadbalancer;
import io.servicetalk.client.api.LoadBalancedConnection;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.client.api.ScoreSupplier;
import io.servicetalk.concurrent.Cancellable;
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/Host.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/Host.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/Host.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/Host.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/HostPriorityStrategy.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/HostPriorityStrategy.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/HostPriorityStrategy.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/HostPriorityStrategy.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/HostSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/HostSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/HostSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/HostSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilder.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilder.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilder.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilder.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilderProvider.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilderProvider.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilderProvider.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerBuilderProvider.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserver.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserver.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserver.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserver.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserverFactory.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserverFactory.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserverFactory.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancerObserverFactory.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancers.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancers.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancers.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancers.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicies.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicies.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicies.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicies.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicy.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicy.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicy.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/LoadBalancingPolicy.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/NoopLoadBalancerObserver.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/NoopLoadBalancerObserver.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/NoopLoadBalancerObserver.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/NoopLoadBalancerObserver.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/NoopOutlierDetector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/NoopOutlierDetector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/NoopOutlierDetector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/NoopOutlierDetector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/OutlierDetector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/OutlierDetector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/OutlierDetector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/OutlierDetector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/OutlierDetectorConfig.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/OutlierDetectorConfig.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/OutlierDetectorConfig.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/OutlierDetectorConfig.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CConnectionSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CConnectionSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CConnectionSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CConnectionSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicy.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicy.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicy.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicy.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicyBuilder.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicyBuilder.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicyBuilder.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CLoadBalancingPolicyBuilder.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/P2CSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/P2CSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/PrioritizedHost.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/PrioritizedHost.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/PrioritizedHost.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/PrioritizedHost.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RandomSubsetter.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RandomSubsetter.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RandomSubsetter.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RandomSubsetter.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RichServiceDiscovererEvent.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RichServiceDiscovererEvent.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RichServiceDiscovererEvent.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RichServiceDiscovererEvent.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicy.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicy.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicy.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicy.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicyBuilder.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicyBuilder.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicyBuilder.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancingPolicyBuilder.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinSelector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinSelector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinSelector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinSelector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProvider.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProvider.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProvider.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProvider.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/SequentialExecutor.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/SequentialExecutor.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/SequentialExecutor.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/SequentialExecutor.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/Subsetter.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/Subsetter.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/Subsetter.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/Subsetter.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/SuccessRateXdsOutlierDetectorAlgorithm.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/SuccessRateXdsOutlierDetectorAlgorithm.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/SuccessRateXdsOutlierDetectorAlgorithm.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/SuccessRateXdsOutlierDetectorAlgorithm.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/XdsHealthIndicator.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/XdsHealthIndicator.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/XdsHealthIndicator.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/XdsHealthIndicator.java
index a657773fdd..1c7591e8dd 100644
--- a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/XdsHealthIndicator.java
+++ b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/XdsHealthIndicator.java
@@ -16,6 +16,7 @@
package io.servicetalk.loadbalancer;
import io.servicetalk.client.api.LoadBalancedConnection;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.Executor;
import io.servicetalk.loadbalancer.LoadBalancerObserver.HostObserver;
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetector.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetector.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetector.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetector.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithm.java b/servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithm.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithm.java
rename to servicetalk-loadbalancer/src/main/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithm.java
diff --git a/servicetalk-loadbalancer-experimental/src/main/resources/META-INF/services/io.servicetalk.loadbalancer.RoundRobinLoadBalancerBuilderProvider b/servicetalk-loadbalancer/src/main/resources/META-INF/services/io.servicetalk.loadbalancer.RoundRobinLoadBalancerBuilderProvider
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/main/resources/META-INF/services/io.servicetalk.loadbalancer.RoundRobinLoadBalancerBuilderProvider
rename to servicetalk-loadbalancer/src/main/resources/META-INF/services/io.servicetalk.loadbalancer.RoundRobinLoadBalancerBuilderProvider
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/ConnectionSelectorHelpers.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/ConnectionSelectorHelpers.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/ConnectionSelectorHelpers.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/ConnectionSelectorHelpers.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/CorePoolConnectionSelectorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/CorePoolConnectionSelectorTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/CorePoolConnectionSelectorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/CorePoolConnectionSelectorTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategyTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategyTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategyTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultHostPriorityStrategyTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultHostTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultHostTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultHostTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultHostTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilderTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilderTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilderTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerBuilderTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerTest.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerTest.java
index 89047303cf..1858031f7b 100644
--- a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerTest.java
+++ b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultLoadBalancerTest.java
@@ -15,6 +15,7 @@
*/
package io.servicetalk.loadbalancer;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.client.api.ServiceDiscovererEvent;
import io.servicetalk.concurrent.PublisherSource;
import io.servicetalk.concurrent.api.Processors;
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultRequestTrackerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultRequestTrackerTest.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultRequestTrackerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultRequestTrackerTest.java
index 8d0b15aa48..5bb838f392 100644
--- a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/DefaultRequestTrackerTest.java
+++ b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/DefaultRequestTrackerTest.java
@@ -15,6 +15,8 @@
*/
package io.servicetalk.loadbalancer;
+import io.servicetalk.client.api.RequestTracker;
+
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerNewRoundRobinLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerNewRoundRobinLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerNewRoundRobinLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerNewRoundRobinLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerP2CLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerP2CLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerP2CLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerP2CLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerRoundRobinLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerRoundRobinLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/EagerRoundRobinLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/EagerRoundRobinLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelectorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelectorTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelectorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LinearSearchConnectionSelectorTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringNewRoundRobinLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringNewRoundRobinLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringNewRoundRobinLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringNewRoundRobinLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringP2CLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringP2CLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringP2CLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringP2CLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringRoundRobinLoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringRoundRobinLoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LingeringRoundRobinLoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LingeringRoundRobinLoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTestScaffold.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTestScaffold.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTestScaffold.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/LoadBalancerTestScaffold.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/MockLoadBalancerObserver.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/MockLoadBalancerObserver.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/MockLoadBalancerObserver.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/MockLoadBalancerObserver.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/P2CConnectionSelectorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/P2CConnectionSelectorTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/P2CConnectionSelectorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/P2CConnectionSelectorTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/P2CSelectorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/P2CSelectorTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/P2CSelectorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/P2CSelectorTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RandomSubsetterTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RandomSubsetterTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RandomSubsetterTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RandomSubsetterTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderAdapter.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderAdapter.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderAdapter.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderAdapter.java
diff --git a/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderProviderTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderProviderTest.java
index 03c95fd85d..494e33e7dd 100644
--- a/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderProviderTest.java
+++ b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinLoadBalancerBuilderProviderTest.java
@@ -26,6 +26,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
+import static io.servicetalk.loadbalancer.RoundRobinToDefaultLBMigrationProvider.PROPERTY_NAME;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
@@ -34,11 +35,13 @@ class RoundRobinLoadBalancerBuilderProviderTest {
@BeforeEach
void reset() {
TestRoundRobinLoadBalancerBuilderProvider.reset();
+ System.setProperty(PROPERTY_NAME, Boolean.FALSE.toString());
}
@AfterEach
void deactivate() {
TestRoundRobinLoadBalancerBuilderProvider.activated.set(false);
+ System.setProperty(PROPERTY_NAME, Boolean.TRUE.toString());
}
@Test
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RoundRobinSelectorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinSelectorTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RoundRobinSelectorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinSelectorTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProviderTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProviderTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProviderTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/RoundRobinToDefaultLBMigrationProviderTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/SelectorTestHelpers.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/SelectorTestHelpers.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/SelectorTestHelpers.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/SelectorTestHelpers.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/SequentialExecutorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/SequentialExecutorTest.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/SequentialExecutorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/SequentialExecutorTest.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/TestConnectionFactory.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/TestConnectionFactory.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/TestConnectionFactory.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/TestConnectionFactory.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/TestLoadBalancedConnection.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/TestLoadBalancedConnection.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/TestLoadBalancedConnection.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/TestLoadBalancedConnection.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/UnhealthyHostConnectionFactory.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/UnhealthyHostConnectionFactory.java
similarity index 100%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/UnhealthyHostConnectionFactory.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/UnhealthyHostConnectionFactory.java
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsHealthIndicatorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsHealthIndicatorTest.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsHealthIndicatorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsHealthIndicatorTest.java
index 183b401152..eede354478 100644
--- a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsHealthIndicatorTest.java
+++ b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsHealthIndicatorTest.java
@@ -15,6 +15,7 @@
*/
package io.servicetalk.loadbalancer;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.ExecutorExtension;
import io.servicetalk.concurrent.api.TestExecutor;
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithmTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithmTest.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithmTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithmTest.java
index d67a8519d1..9e0d0afca1 100644
--- a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithmTest.java
+++ b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorAlgorithmTest.java
@@ -15,6 +15,7 @@
*/
package io.servicetalk.loadbalancer;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.ExecutorExtension;
import io.servicetalk.concurrent.api.TestExecutor;
diff --git a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorTest.java b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorTest.java
similarity index 99%
rename from servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorTest.java
rename to servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorTest.java
index 0b6af7b0d9..5cd11eae77 100644
--- a/servicetalk-loadbalancer-experimental/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorTest.java
+++ b/servicetalk-loadbalancer/src/test/java/io/servicetalk/loadbalancer/XdsOutlierDetectorTest.java
@@ -15,6 +15,7 @@
*/
package io.servicetalk.loadbalancer;
+import io.servicetalk.client.api.RequestTracker;
import io.servicetalk.concurrent.api.TestExecutor;
import org.junit.jupiter.api.Test;