diff --git a/codestyle/guava16-forbidden-apis.txt b/codestyle/guava16-forbidden-apis.txt
deleted file mode 100644
index 274a12696fb2..000000000000
--- a/codestyle/guava16-forbidden-apis.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Those signatures are only available in Guava 16:
-com.google.common.util.concurrent.MoreExecutors#sameThreadExecutor() @ Use org.apache.druid.java.util.common.concurrent.Execs#directExecutor()
-com.google.common.base.Objects#firstNonNull(java.lang.Object, java.lang.Object) @ Use org.apache.druid.common.guava.GuavaUtils#firstNonNull(java.lang.Object, java.lang.Object) instead (probably... the GuavaUtils method return object is nullable)
diff --git a/extensions-contrib/cloudfiles-extensions/pom.xml b/extensions-contrib/cloudfiles-extensions/pom.xml
index 14c98f24e060..25e00afbf86d 100644
--- a/extensions-contrib/cloudfiles-extensions/pom.xml
+++ b/extensions-contrib/cloudfiles-extensions/pom.xml
@@ -35,7 +35,7 @@
UTF-8
- 2.0.0
+ 2.5.0
diff --git a/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesStorageDruidModule.java b/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesStorageDruidModule.java
index c54342fd32de..224be81125f2 100644
--- a/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesStorageDruidModule.java
+++ b/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesStorageDruidModule.java
@@ -32,7 +32,7 @@
import org.apache.druid.java.util.common.logger.Logger;
import org.jclouds.ContextBuilder;
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
-import org.jclouds.openstack.v2_0.config.InternalUrlModule;
+import org.jclouds.openstack.keystone.catalog.config.InternalUrlModule;
import org.jclouds.osgi.ProviderRegistry;
import org.jclouds.rackspace.cloudfiles.uk.CloudFilesUKProviderMetadata;
import org.jclouds.rackspace.cloudfiles.us.CloudFilesUSProviderMetadata;
diff --git a/extensions-contrib/compressed-bigdecimal/pom.xml b/extensions-contrib/compressed-bigdecimal/pom.xml
index a05e757a7a67..76612897ef3f 100644
--- a/extensions-contrib/compressed-bigdecimal/pom.xml
+++ b/extensions-contrib/compressed-bigdecimal/pom.xml
@@ -131,7 +131,6 @@
com.google.guava
guava
- 16.0.1
provided
diff --git a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java
index 613e3b1031e1..511c2de352fe 100644
--- a/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java
+++ b/extensions-contrib/kubernetes-overlord-extensions/src/test/java/org/apache/druid/k8s/overlord/KubernetesTaskRunnerTest.java
@@ -67,6 +67,7 @@
import static org.junit.Assert.assertTrue;
@RunWith(EasyMockRunner.class)
+@SuppressWarnings("DoNotMock")
public class KubernetesTaskRunnerTest extends EasyMockSupport
{
private static final String ID = "id";
diff --git a/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java b/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java
index 135c87c4e1f2..4848f3987a85 100644
--- a/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java
+++ b/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java
@@ -1057,12 +1057,13 @@ public void testIncrementalHandOffReadsThroughEndOffsets() throws Exception
final ListenableFuture normalReplicaFuture = runTask(normalReplica);
// Simulating one replica is slower than the other
- final ListenableFuture staleReplicaFuture = Futures.transform(
+ final ListenableFuture staleReplicaFuture = Futures.transformAsync(
taskExec.submit(() -> {
Thread.sleep(1000);
return staleReplica;
}),
- (AsyncFunction) this::runTask
+ (AsyncFunction) this::runTask,
+ MoreExecutors.directExecutor()
);
while (normalReplica.getRunner().getStatus() != Status.PAUSED) {
diff --git a/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java b/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java
index b12ec56de93b..69516979f3e1 100644
--- a/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java
+++ b/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java
@@ -2004,12 +2004,13 @@ public void testIncrementalHandOffReadsThroughEndOffsets() throws Exception
((TestableKinesisIndexTask) staleReplica).setLocalSupplier(recordSupplier2);
final ListenableFuture normalReplicaFuture = runTask(normalReplica);
// Simulating one replica is slower than the other
- final ListenableFuture staleReplicaFuture = Futures.transform(
+ final ListenableFuture staleReplicaFuture = Futures.transformAsync(
taskExec.submit(() -> {
Thread.sleep(1000);
return staleReplica;
}),
- (AsyncFunction) this::runTask
+ (AsyncFunction) this::runTask,
+ MoreExecutors.directExecutor()
);
waitUntil(normalReplica, this::isTaskPaused);
diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerImpl.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerImpl.java
index 2373a59ec926..300d87047068 100644
--- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerImpl.java
+++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerImpl.java
@@ -1199,7 +1199,7 @@ public void onFailure(Throwable t)
settableFuture.setException(t);
}
}
- });
+ }, MoreExecutors.directExecutor());
taskFutures.add(settableFuture);
}
diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ExceptionWrappingWorkerClient.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ExceptionWrappingWorkerClient.java
index eb6b1af529e5..93dbc0080045 100644
--- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ExceptionWrappingWorkerClient.java
+++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ExceptionWrappingWorkerClient.java
@@ -23,6 +23,7 @@
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import org.apache.druid.frame.channel.ReadableByteChunksFrameChannel;
import org.apache.druid.frame.key.ClusterByPartitions;
@@ -158,7 +159,8 @@ public void onFailure(Throwable t)
{
retVal.setException(new MSQException(t, new WorkerRpcFailedFault(workerTaskId)));
}
- }
+ },
+ MoreExecutors.directExecutor()
);
return retVal;
diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerImpl.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerImpl.java
index e96a933e0238..090cc9760933 100644
--- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerImpl.java
+++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerImpl.java
@@ -32,6 +32,7 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import it.unimi.dsi.fastutil.bytes.ByteArrays;
import org.apache.druid.common.guava.FutureUtils;
@@ -1320,7 +1321,8 @@ public void onFailure(final Throwable t)
kernelHolder.getStageKernelMap().get(stageDef.getId()).fail(t)
);
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
@@ -1612,7 +1614,7 @@ public OutputChannel openNilChannel(int expectedZero)
};
// Chain futures so we only sort one partition at a time.
- nextFuture = Futures.transform(
+ nextFuture = Futures.transformAsync(
nextFuture,
(AsyncFunction) ignored -> {
final SuperSorter sorter = new SuperSorter(
@@ -1639,7 +1641,8 @@ public OutputChannel openNilChannel(int expectedZero)
);
return FutureUtils.transform(sorter.run(), r -> Iterables.getOnlyElement(r.getAllChannels()));
- }
+ },
+ MoreExecutors.directExecutor()
);
sortedChannelFutures.add(nextFuture);
@@ -1665,7 +1668,7 @@ public ListenableFuture build()
throw new ISE("Not initialized");
}
- return Futures.transform(
+ return Futures.transformAsync(
pipelineFuture,
(AsyncFunction, OutputChannels>) resultAndChannels ->
Futures.transform(
@@ -1673,8 +1676,10 @@ public ListenableFuture build()
(Function
com.google.inject
@@ -1431,7 +1437,6 @@
${project.parent.basedir}/codestyle/joda-time-forbidden-apis.txt
- ${project.parent.basedir}/codestyle/guava16-forbidden-apis.txt
${project.parent.basedir}/codestyle/druid-forbidden-apis.txt
diff --git a/processing/src/main/java/org/apache/druid/common/guava/FutureUtils.java b/processing/src/main/java/org/apache/druid/common/guava/FutureUtils.java
index cf9a7f0ef71f..43ab45ef4579 100644
--- a/processing/src/main/java/org/apache/druid/common/guava/FutureUtils.java
+++ b/processing/src/main/java/org/apache/druid/common/guava/FutureUtils.java
@@ -23,6 +23,7 @@
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import org.apache.druid.java.util.common.Either;
import org.apache.druid.java.util.common.ISE;
@@ -107,11 +108,11 @@ public static T getUncheckedImmediately(final ListenableFuture future)
*/
public static ListenableFuture transform(final ListenableFuture future, final Function fn)
{
- return Futures.transform(future, fn::apply);
+ return Futures.transform(future, fn::apply, MoreExecutors.directExecutor());
}
/**
- * Like {@link Futures#transform(ListenableFuture, AsyncFunction)}, but works better with lambdas due to not having
+ * Like {@link Futures#transformAsync(ListenableFuture, AsyncFunction, java.util.concurrent.Executor)}, but works better with lambdas due to not having
* overloads.
*
* One can write {@code FutureUtils.transformAsync(future, v -> ...)} instead of
@@ -119,7 +120,7 @@ public static ListenableFuture transform(final ListenableFuture fut
*/
public static ListenableFuture transformAsync(final ListenableFuture future, final AsyncFunction fn)
{
- return Futures.transform(future, fn);
+ return Futures.transformAsync(future, fn, MoreExecutors.directExecutor());
}
/**
@@ -200,7 +201,8 @@ public void onFailure(Throwable e)
retVal.setException(e);
}
- }
+ },
+ MoreExecutors.directExecutor()
);
return retVal;
diff --git a/processing/src/main/java/org/apache/druid/frame/processor/FrameProcessorExecutor.java b/processing/src/main/java/org/apache/druid/frame/processor/FrameProcessorExecutor.java
index d278b8f83ddc..20f9f7f4fe3e 100644
--- a/processing/src/main/java/org/apache/druid/frame/processor/FrameProcessorExecutor.java
+++ b/processing/src/main/java/org/apache/druid/frame/processor/FrameProcessorExecutor.java
@@ -28,6 +28,7 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
@@ -61,6 +62,7 @@
* If you want single threaded execution, use {@code Execs.singleThreaded()}. It is not a good idea to use this with a
* same-thread executor like {@code Execs.directExecutor()}, because it will lead to deep call stacks.
*/
+@SuppressWarnings("CheckReturnValue")
public class FrameProcessorExecutor
{
private static final Logger log = new Logger(FrameProcessorExecutor.class);
@@ -286,7 +288,8 @@ public void onFailure(Throwable t)
fail(t);
}
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
diff --git a/processing/src/main/java/org/apache/druid/frame/processor/RunAllFullyWidget.java b/processing/src/main/java/org/apache/druid/frame/processor/RunAllFullyWidget.java
index dfc1dde9bd8a..67724cdf8042 100644
--- a/processing/src/main/java/org/apache/druid/frame/processor/RunAllFullyWidget.java
+++ b/processing/src/main/java/org/apache/druid/frame/processor/RunAllFullyWidget.java
@@ -23,6 +23,7 @@
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import org.apache.druid.common.guava.FutureUtils;
@@ -51,6 +52,7 @@
* The {@code bouncer} and {@code maxOutstandingProcessors} parameters are used to control how many processors are
* executed on the {@link FrameProcessorExecutor} concurrently.
*/
+@SuppressWarnings("CheckReturnValue")
public class RunAllFullyWidget
{
private static final Logger log = new Logger(RunAllFullyWidget.class);
@@ -296,7 +298,8 @@ public void onFailure(Throwable t)
cleanupIfNoMoreProcessors();
}
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
}
diff --git a/processing/src/main/java/org/apache/druid/indexer/TaskStatus.java b/processing/src/main/java/org/apache/druid/indexer/TaskStatus.java
index 714c08be65d4..7006f13fdeca 100644
--- a/processing/src/main/java/org/apache/druid/indexer/TaskStatus.java
+++ b/processing/src/main/java/org/apache/druid/indexer/TaskStatus.java
@@ -23,10 +23,11 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import javax.annotation.Nullable;
+import java.util.Objects;
/**
* Represents the status of a task from the perspective of the coordinator. The task may be ongoing
@@ -220,12 +221,12 @@ public TaskStatus withLocation(TaskLocation location)
@Override
public String toString()
{
- return Objects.toStringHelper(this)
- .add("id", id)
- .add("status", status)
- .add("duration", duration)
- .add("errorMsg", errorMsg)
- .toString();
+ return MoreObjects.toStringHelper(this)
+ .add("id", id)
+ .add("status", status)
+ .add("duration", duration)
+ .add("errorMsg", errorMsg)
+ .toString();
}
@Override
@@ -239,14 +240,14 @@ public boolean equals(Object o)
}
TaskStatus that = (TaskStatus) o;
return getDuration() == that.getDuration() &&
- java.util.Objects.equals(getId(), that.getId()) &&
+ Objects.equals(getId(), that.getId()) &&
status == that.status &&
- java.util.Objects.equals(getErrorMsg(), that.getErrorMsg());
+ Objects.equals(getErrorMsg(), that.getErrorMsg());
}
@Override
public int hashCode()
{
- return java.util.Objects.hash(getId(), status, getDuration(), getErrorMsg());
+ return Objects.hash(getId(), status, getDuration(), getErrorMsg());
}
}
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongStringColumnHeader.java b/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongStringColumnHeader.java
index e0aa21af03c3..e9ad87caee5d 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongStringColumnHeader.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongStringColumnHeader.java
@@ -19,7 +19,7 @@
package org.apache.druid.query.aggregation;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import org.apache.druid.segment.serde.cell.LongSerializer;
@@ -103,9 +103,9 @@ public int getSerializedSize()
@Override
public String toString()
{
- return Objects.toStringHelper(this)
- .add("bytes", bytes)
- .add("minValue", minValue)
- .toString();
+ return MoreObjects.toStringHelper(this)
+ .add("bytes", bytes)
+ .add("minValue", minValue)
+ .toString();
}
}
diff --git a/processing/src/test/java/org/apache/druid/collections/CombiningIteratorTest.java b/processing/src/test/java/org/apache/druid/collections/CombiningIteratorTest.java
index 2e25542efed6..b2a543a58111 100644
--- a/processing/src/test/java/org/apache/druid/collections/CombiningIteratorTest.java
+++ b/processing/src/test/java/org/apache/druid/collections/CombiningIteratorTest.java
@@ -30,6 +30,7 @@
import java.util.NoSuchElementException;
import java.util.function.BinaryOperator;
+@SuppressWarnings("DoNotMock")
public class CombiningIteratorTest
{
private CombiningIterator testingIterator;
diff --git a/processing/src/test/java/org/apache/druid/collections/spatial/ImmutableRTreeTest.java b/processing/src/test/java/org/apache/druid/collections/spatial/ImmutableRTreeTest.java
index cba7eaff2094..4f28ee626421 100644
--- a/processing/src/test/java/org/apache/druid/collections/spatial/ImmutableRTreeTest.java
+++ b/processing/src/test/java/org/apache/druid/collections/spatial/ImmutableRTreeTest.java
@@ -48,6 +48,7 @@
/**
*/
+@SuppressWarnings("CheckReturnValue")
public class ImmutableRTreeTest
{
@Test
diff --git a/processing/src/test/java/org/apache/druid/common/utils/JodaUtilsTest.java b/processing/src/test/java/org/apache/druid/common/utils/JodaUtilsTest.java
index 2ee6bc31220b..b5b9f138a8b1 100644
--- a/processing/src/test/java/org/apache/druid/common/utils/JodaUtilsTest.java
+++ b/processing/src/test/java/org/apache/druid/common/utils/JodaUtilsTest.java
@@ -39,6 +39,7 @@
/**
*
*/
+@SuppressWarnings("CheckReturnValue")
public class JodaUtilsTest
{
@Test
diff --git a/processing/src/test/java/org/apache/druid/math/expr/ParserTest.java b/processing/src/test/java/org/apache/druid/math/expr/ParserTest.java
index f6f5eccd10e9..acb6345a2e9a 100644
--- a/processing/src/test/java/org/apache/druid/math/expr/ParserTest.java
+++ b/processing/src/test/java/org/apache/druid/math/expr/ParserTest.java
@@ -450,7 +450,7 @@ public void testLiteralArraysExplicitDoubleParseException()
public void testFunctions()
{
validateParser("sqrt(x)", "(sqrt [x])", ImmutableList.of("x"));
- validateParser("if(cond,then,else)", "(if [cond, then, else])", ImmutableList.of("cond", "else", "then"));
+ validateParser("if(cond,then,else)", "(if [cond, then, else])", ImmutableList.of("then", "cond", "else"));
validateParser("cast(x, 'STRING')", "(cast [x, STRING])", ImmutableList.of("x"));
validateParser("cast(x, 'LONG')", "(cast [x, LONG])", ImmutableList.of("x"));
validateParser("cast(x, 'DOUBLE')", "(cast [x, DOUBLE])", ImmutableList.of("x"));
diff --git a/processing/src/test/java/org/apache/druid/query/ChainedExecutionQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/ChainedExecutionQueryRunnerTest.java
index 8c2cc8573c77..f7401a0dd995 100644
--- a/processing/src/test/java/org/apache/druid/query/ChainedExecutionQueryRunnerTest.java
+++ b/processing/src/test/java/org/apache/druid/query/ChainedExecutionQueryRunnerTest.java
@@ -56,6 +56,7 @@
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
+@SuppressWarnings("DoNotMock")
public class ChainedExecutionQueryRunnerTest
{
private final Lock neverRelease = new ReentrantLock();
diff --git a/processing/src/test/java/org/apache/druid/query/MetricsEmittingQueryProcessingPoolTest.java b/processing/src/test/java/org/apache/druid/query/MetricsEmittingQueryProcessingPoolTest.java
index 71b3a1c9e0f3..aa5f54731771 100644
--- a/processing/src/test/java/org/apache/druid/query/MetricsEmittingQueryProcessingPoolTest.java
+++ b/processing/src/test/java/org/apache/druid/query/MetricsEmittingQueryProcessingPoolTest.java
@@ -31,6 +31,7 @@
import java.util.ArrayList;
import java.util.List;
+@SuppressWarnings("DoNotMock")
public class MetricsEmittingQueryProcessingPoolTest
{
@Test
diff --git a/server/src/main/java/org/apache/druid/client/HttpServerInventoryView.java b/server/src/main/java/org/apache/druid/client/HttpServerInventoryView.java
index 7b67e8802b34..378706809b9d 100644
--- a/server/src/main/java/org/apache/druid/client/HttpServerInventoryView.java
+++ b/server/src/main/java/org/apache/druid/client/HttpServerInventoryView.java
@@ -540,7 +540,7 @@ private class DruidServerHolder
smileMapper,
httpClient,
inventorySyncExecutor,
- new URL(druidServer.getScheme(), hostAndPort.getHostText(), hostAndPort.getPort(), "/"),
+ new URL(druidServer.getScheme(), hostAndPort.getHost(), hostAndPort.getPort(), "/"),
"/druid-internal/v1/segments",
SEGMENT_LIST_RESP_TYPE_REF,
config.getServerTimeout(),
diff --git a/server/src/main/java/org/apache/druid/client/indexing/QueryStatus.java b/server/src/main/java/org/apache/druid/client/indexing/QueryStatus.java
index b9348731bdae..182fed97ec8d 100644
--- a/server/src/main/java/org/apache/druid/client/indexing/QueryStatus.java
+++ b/server/src/main/java/org/apache/druid/client/indexing/QueryStatus.java
@@ -22,7 +22,7 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Objects;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
/**
@@ -80,10 +80,10 @@ public boolean isComplete()
@Override
public String toString()
{
- return Objects.toStringHelper(this)
- .add("id", id)
- .add("status", status)
- .add("duration", duration)
- .toString();
+ return MoreObjects.toStringHelper(this)
+ .add("id", id)
+ .add("status", status)
+ .add("duration", duration)
+ .toString();
}
}
diff --git a/server/src/main/java/org/apache/druid/metadata/SQLMetadataRuleManager.java b/server/src/main/java/org/apache/druid/metadata/SQLMetadataRuleManager.java
index b7cdb2f7ec91..d0f9799e6aab 100644
--- a/server/src/main/java/org/apache/druid/metadata/SQLMetadataRuleManager.java
+++ b/server/src/main/java/org/apache/druid/metadata/SQLMetadataRuleManager.java
@@ -236,7 +236,7 @@ public void poll()
{
try {
- ImmutableMap> newRules = ImmutableMap.copyOf(
+ Map> newRulesMap =
dbi.withHandle(
handle -> handle.createQuery(
// Return latest version rule by dataSource
@@ -272,9 +272,10 @@ public void poll()
}
}
)
- )
);
+ ImmutableMap> newRules = ImmutableMap.copyOf(newRulesMap);
+
final int newRuleCount = newRules.values().stream().mapToInt(List::size).sum();
log.info("Polled and found [%d] rule(s) for [%d] datasource(s).", newRuleCount, newRules.size());
diff --git a/server/src/main/java/org/apache/druid/rpc/indexing/SpecificTaskServiceLocator.java b/server/src/main/java/org/apache/druid/rpc/indexing/SpecificTaskServiceLocator.java
index 88f02e430901..0276e768ba91 100644
--- a/server/src/main/java/org/apache/druid/rpc/indexing/SpecificTaskServiceLocator.java
+++ b/server/src/main/java/org/apache/druid/rpc/indexing/SpecificTaskServiceLocator.java
@@ -22,6 +22,7 @@
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import org.apache.druid.client.indexing.TaskStatusResponse;
@@ -165,7 +166,8 @@ public void onFailure(Throwable t)
}
}
}
- }
+ },
+ MoreExecutors.directExecutor()
);
return Futures.nonCancellationPropagating(retVal);
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorImpl.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorImpl.java
index 1003467c6e16..2268c00e2eb2 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorImpl.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorImpl.java
@@ -111,6 +111,7 @@
* with isLegacy
constructor argument set to false is the default. When {@link BatchAppenderator}
* proves stable then the plan is to remove this class
*/
+@SuppressWarnings("CheckReturnValue")
public class AppenderatorImpl implements Appenderator
{
// Rough estimate of memory footprint of a ColumnHolder based on actual heap dumps
@@ -430,7 +431,8 @@ public void onFailure(Throwable t)
{
persistError = t;
}
- }
+ },
+ MoreExecutors.directExecutor()
);
} else {
isPersistRequired = true;
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorPlumber.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorPlumber.java
index bea2890fcf0f..56af6382afa9 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorPlumber.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/AppenderatorPlumber.java
@@ -28,6 +28,7 @@
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
import org.apache.druid.common.guava.ThreadRenamingCallable;
import org.apache.druid.data.input.Committer;
import org.apache.druid.data.input.InputRow;
@@ -330,7 +331,8 @@ public void onFailure(Throwable e)
// TODO: Retry?
log.warn(e, "Failed to drop segment: %s", identifier);
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
@@ -483,7 +485,8 @@ public void onFailure(Throwable e)
log.warn(e, "Failed to push [%,d] segments.", segmentsToPush.size());
errorHandler.apply(e);
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
}
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BaseAppenderatorDriver.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BaseAppenderatorDriver.java
index 65a8a676d3d2..6f4c8f62ba48 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BaseAppenderatorDriver.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BaseAppenderatorDriver.java
@@ -545,7 +545,8 @@ ListenableFuture dropInBackground(SegmentsAndCommitMe
segmentsAndCommitMetadata.getSegments(),
metadata == null ? null : ((AppenderatorDriverMetadata) metadata).getCallerMetadata()
);
- }
+ },
+ MoreExecutors.directExecutor()
);
}
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderator.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderator.java
index 66cc9b87c58a..4b1d384d0f7e 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderator.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderator.java
@@ -398,7 +398,8 @@ public void onFailure(Throwable t)
{
persistError = t;
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
return new AppenderatorAddResult(identifier, sinksMetadata.get(identifier).numRowsInSegment, false);
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderatorDriver.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderatorDriver.java
index 7a99f200bea6..584148263ad4 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderatorDriver.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/BatchAppenderatorDriver.java
@@ -25,6 +25,7 @@
import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import org.apache.druid.data.input.InputRow;
import org.apache.druid.java.util.common.ISE;
import org.apache.druid.segment.loading.DataSegmentKiller;
@@ -140,9 +141,10 @@ private SegmentsAndCommitMetadata pushAndClear(
{
final Set requestedSegmentIdsForSequences = getAppendingSegments(sequenceNames);
- final ListenableFuture future = Futures.transform(
+ final ListenableFuture future = Futures.transformAsync(
pushInBackground(null, requestedSegmentIdsForSequences, false),
- (AsyncFunction) this::dropInBackground
+ (AsyncFunction) this::dropInBackground,
+ MoreExecutors.directExecutor()
);
final SegmentsAndCommitMetadata segmentsAndCommitMetadata =
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderator.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderator.java
index 70a60a77d85e..e95852bfddb1 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderator.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderator.java
@@ -101,6 +101,7 @@
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
+@SuppressWarnings("CheckReturnValue")
public class StreamAppenderator implements Appenderator
{
// Rough estimate of memory footprint of a ColumnHolder based on actual heap dumps
@@ -397,7 +398,8 @@ public void onFailure(Throwable t)
{
persistError = t;
}
- }
+ },
+ MoreExecutors.directExecutor()
);
} else {
isPersistRequired = true;
diff --git a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriver.java b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriver.java
index 8c7ec417f8cd..1a0a9d09fed2 100644
--- a/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriver.java
+++ b/server/src/main/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriver.java
@@ -27,6 +27,7 @@
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import org.apache.druid.data.input.Committer;
import org.apache.druid.data.input.InputRow;
@@ -277,7 +278,7 @@ public ListenableFuture publish(
{
final List theSegments = getSegmentIdsWithShardSpecs(sequenceNames);
- final ListenableFuture publishFuture = Futures.transform(
+ final ListenableFuture publishFuture = Futures.transformAsync(
// useUniquePath=true prevents inconsistencies in segment data when task failures or replicas leads to a second
// version of a segment with the same identifier containing different data; see DataSegmentPusher.push() docs
pushInBackground(wrapCommitter(committer), theSegments, true),
@@ -288,7 +289,8 @@ public ListenableFuture publish(
sam,
publisher,
java.util.function.Function.identity()
- )
+ ),
+ MoreExecutors.directExecutor()
);
return Futures.transform(
publishFuture,
@@ -297,7 +299,8 @@ public ListenableFuture publish(
sequenceNames.forEach(segments::remove);
}
return sam;
- }
+ },
+ MoreExecutors.directExecutor()
);
}
@@ -384,7 +387,8 @@ public void onFailure(Throwable e)
numRemainingHandoffSegments.decrementAndGet();
resultFuture.setException(e);
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
);
@@ -400,9 +404,10 @@ public ListenableFuture publishAndRegisterHandoff(
final Collection sequenceNames
)
{
- return Futures.transform(
+ return Futures.transformAsync(
publish(publisher, committer, sequenceNames),
- (AsyncFunction) this::registerHandoff
+ (AsyncFunction) this::registerHandoff,
+ MoreExecutors.directExecutor()
);
}
diff --git a/server/src/main/java/org/apache/druid/server/DruidNode.java b/server/src/main/java/org/apache/druid/server/DruidNode.java
index 1a3603936490..1c077d0cd73c 100644
--- a/server/src/main/java/org/apache/druid/server/DruidNode.java
+++ b/server/src/main/java/org/apache/druid/server/DruidNode.java
@@ -156,7 +156,7 @@ private void init(
Integer portFromHostConfig;
if (host != null) {
hostAndPort = HostAndPort.fromString(host);
- host = hostAndPort.getHostText();
+ host = hostAndPort.getHost();
portFromHostConfig = hostAndPort.hasPort() ? hostAndPort.getPort() : null;
if (plainTextPort != null && portFromHostConfig != null && !plainTextPort.equals(portFromHostConfig)) {
throw new IAE("Conflicting host:port [%s] and port [%d] settings", host, plainTextPort);
diff --git a/server/src/main/java/org/apache/druid/server/http/HostAndPortWithScheme.java b/server/src/main/java/org/apache/druid/server/http/HostAndPortWithScheme.java
index 0c584aab8d0a..297e86f38984 100644
--- a/server/src/main/java/org/apache/druid/server/http/HostAndPortWithScheme.java
+++ b/server/src/main/java/org/apache/druid/server/http/HostAndPortWithScheme.java
@@ -74,7 +74,7 @@ public String getScheme()
public String getHostText()
{
- return hostAndPort.getHostText();
+ return hostAndPort.getHost();
}
public int getPort()
diff --git a/server/src/main/java/org/apache/druid/server/http/SegmentListerResource.java b/server/src/main/java/org/apache/druid/server/http/SegmentListerResource.java
index a0281b27ff2d..1b6f8326773c 100644
--- a/server/src/main/java/org/apache/druid/server/http/SegmentListerResource.java
+++ b/server/src/main/java/org/apache/druid/server/http/SegmentListerResource.java
@@ -24,6 +24,7 @@
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.inject.Inject;
import com.sun.jersey.spi.container.ResourceFilters;
import org.apache.druid.client.HttpServerInventoryView;
@@ -205,7 +206,8 @@ public void onFailure(Throwable th)
log.debug(ex, "Request timed out or closed already.");
}
}
- }
+ },
+ MoreExecutors.directExecutor()
);
asyncContext.setTimeout(timeout);
@@ -317,7 +319,8 @@ public void onFailure(Throwable th)
log.debug(ex, "Request timed out or closed already.");
}
}
- }
+ },
+ MoreExecutors.directExecutor()
);
asyncContext.setTimeout(timeout);
diff --git a/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java b/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java
index 7526ecbcc10f..2662de6b981b 100644
--- a/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java
+++ b/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java
@@ -435,7 +435,8 @@ public void onFailure(Throwable t)
LOG.makeAlert(t, "Background lookup manager exited with error!").emit();
}
}
- }
+ },
+ MoreExecutors.directExecutor()
);
LOG.debug("Started");
diff --git a/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java b/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java
index 0ebd441360ea..4436a5c5899a 100644
--- a/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java
+++ b/server/src/test/java/org/apache/druid/client/CachingClusteredClientTest.java
@@ -376,7 +376,8 @@ public void onFailure(Throwable t)
{
pair.lhs.setException(t);
}
- }
+ },
+ MoreExecutors.directExecutor()
);
}
}
diff --git a/server/src/test/java/org/apache/druid/client/JsonParserIteratorTest.java b/server/src/test/java/org/apache/druid/client/JsonParserIteratorTest.java
index f896067646cc..3ac2b4122d29 100644
--- a/server/src/test/java/org/apache/druid/client/JsonParserIteratorTest.java
+++ b/server/src/test/java/org/apache/druid/client/JsonParserIteratorTest.java
@@ -103,7 +103,7 @@ public void testConvertFutureCancellationToQueryInterruptedException()
OBJECT_MAPPER
);
expectedException.expect(QueryInterruptedException.class);
- expectedException.expectMessage("Immediate cancelled future.");
+ expectedException.expectMessage("Task was cancelled.");
iterator.hasNext();
}
diff --git a/server/src/test/java/org/apache/druid/discovery/DruidLeaderClientTest.java b/server/src/test/java/org/apache/druid/discovery/DruidLeaderClientTest.java
index cff1aeb9fb03..f0f91469dc86 100644
--- a/server/src/test/java/org/apache/druid/discovery/DruidLeaderClientTest.java
+++ b/server/src/test/java/org/apache/druid/discovery/DruidLeaderClientTest.java
@@ -75,6 +75,7 @@
/**
*/
+@SuppressWarnings("DoNotMock")
public class DruidLeaderClientTest extends BaseJettyTest
{
@Rule
diff --git a/server/src/test/java/org/apache/druid/metadata/SqlSegmentsMetadataManagerTest.java b/server/src/test/java/org/apache/druid/metadata/SqlSegmentsMetadataManagerTest.java
index 6dad542644a6..f541af9f431c 100644
--- a/server/src/test/java/org/apache/druid/metadata/SqlSegmentsMetadataManagerTest.java
+++ b/server/src/test/java/org/apache/druid/metadata/SqlSegmentsMetadataManagerTest.java
@@ -265,7 +265,7 @@ public void testPollPeriodicallyAndOnDemandInterleave() throws Exception
Assert.assertTrue(sqlSegmentsMetadataManager.getLatestDatabasePoll() instanceof SqlSegmentsMetadataManager.PeriodicDatabasePoll);
dataSourcesSnapshot = sqlSegmentsMetadataManager.getDataSourcesSnapshot();
Assert.assertEquals(
- ImmutableList.of("wikipedia2", "wikipedia3", "wikipedia"),
+ ImmutableList.of("wikipedia3", "wikipedia", "wikipedia2"),
dataSourcesSnapshot.getDataSourcesWithAllUsedSegments()
.stream()
.map(ImmutableDruidDataSource::getName)
diff --git a/server/src/test/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriverFailTest.java b/server/src/test/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriverFailTest.java
index 1e2aa7d73e49..7e7ce334cc73 100644
--- a/server/src/test/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriverFailTest.java
+++ b/server/src/test/java/org/apache/druid/segment/realtime/appenderator/StreamAppenderatorDriverFailTest.java
@@ -28,6 +28,7 @@
import com.google.common.util.concurrent.AbstractFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import org.apache.druid.data.input.Committer;
import org.apache.druid.data.input.InputRow;
import org.apache.druid.data.input.MapBasedInputRow;
@@ -497,7 +498,8 @@ public ListenableFuture push(
.collect(Collectors.toList());
return Futures.transform(
persistAll(committer),
- (Function