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) input -> { sanityCheckOutputChannels(resultAndChannels.getOutputChannels()); return resultAndChannels.getOutputChannels(); - } - ) + }, + MoreExecutors.directExecutor() + ), + MoreExecutors.directExecutor() ); } @@ -1742,7 +1747,8 @@ public void onFailure(Throwable t) } ); } - } + }, + MoreExecutors.directExecutor() ); return new ResultAndChannels<>( @@ -1772,7 +1778,7 @@ private void pushAsync(final ExceptionalFunction, Listenabl } pipelineFuture = FutureUtils.transform( - Futures.transform( + Futures.transformAsync( pipelineFuture, new AsyncFunction, ResultAndChannels>() { @@ -1781,7 +1787,8 @@ public ListenableFuture> apply(ResultAndChannels t) thro { return fn.apply(t); } - } + }, + MoreExecutors.directExecutor() ), resultAndChannels -> new ResultAndChannels<>( resultAndChannels.getResultFuture(), diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerSketchFetcher.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerSketchFetcher.java index 21b77ee1519d..d9f2291afcd7 100644 --- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerSketchFetcher.java +++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/WorkerSketchFetcher.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.common.guava.FutureUtils; import org.apache.druid.java.util.common.ISE; @@ -210,7 +211,7 @@ public void onFailure(Throwable t) } } - }); + }, MoreExecutors.directExecutor()); FutureUtils.getUnchecked(kernelActionFuture, true); } diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/client/IndexerWorkerClient.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/client/IndexerWorkerClient.java index 39a9c40e08d4..33f030bc3be7 100644 --- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/client/IndexerWorkerClient.java +++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/client/IndexerWorkerClient.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.common.util.concurrent.SettableFuture; import com.google.errorprone.annotations.concurrent.GuardedBy; import org.apache.druid.common.guava.FutureUtils; @@ -268,7 +269,8 @@ public void onFailure(Throwable t) { retVal.setException(t); } - } + }, + MoreExecutors.directExecutor() ); return retVal; diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/shuffle/input/WorkerInputChannelFactory.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/shuffle/input/WorkerInputChannelFactory.java index f583596bb88f..4dde34a67f59 100644 --- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/shuffle/input/WorkerInputChannelFactory.java +++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/shuffle/input/WorkerInputChannelFactory.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 org.apache.druid.frame.channel.ReadableByteChunksFrameChannel; import org.apache.druid.frame.channel.ReadableFrameChannel; import org.apache.druid.java.util.common.StringUtils; @@ -90,7 +91,8 @@ public void onFailure(Throwable t) { channel.setError(t); } - } + }, + MoreExecutors.directExecutor() ); } diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/util/MSQFutureUtils.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/util/MSQFutureUtils.java index 03013f08a062..1635a7964198 100644 --- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/util/MSQFutureUtils.java +++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/util/MSQFutureUtils.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 org.apache.druid.common.guava.FutureUtils; import javax.annotation.Nullable; @@ -61,7 +62,8 @@ public void onFailure(Throwable t) inputFuture.cancel(true); } } - } + }, + MoreExecutors.directExecutor() ); } diff --git a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestControllerContext.java b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestControllerContext.java index 7c37723ecc80..2ee2207fd83a 100644 --- a/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestControllerContext.java +++ b/extensions-core/multi-stage-query/src/test/java/org/apache/druid/msq/test/MSQTestControllerContext.java @@ -156,7 +156,7 @@ public void onFailure(Throwable t) log.error(t, "error running worker task %s", task.getId()); statusMap.put(task.getId(), TaskStatus.failure(task.getId(), t.getMessage())); } - }); + }, MoreExecutors.directExecutor()); return task.getId(); } diff --git a/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtobufInputFormatTest.java b/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtobufInputFormatTest.java index 6327b2dd780c..56b774f15eee 100644 --- a/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtobufInputFormatTest.java +++ b/extensions-core/protobuf-extensions/src/test/java/org/apache/druid/data/input/protobuf/ProtobufInputFormatTest.java @@ -370,7 +370,6 @@ public void testParseNestedDataSchemaless() throws Exception Assert.assertEquals( ImmutableList.of( "someOtherId", - "bar", "someIntColumn", "isValid", "foo", @@ -378,6 +377,7 @@ public void testParseNestedDataSchemaless() throws Exception "someLongColumn", "someFloatColumn", "eventType", + "bar", "id", "someBytesColumn" ), diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTask.java b/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTask.java index 45746aa63604..bfee928dfc0a 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTask.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTask.java @@ -30,6 +30,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.Committer; import org.apache.druid.data.input.Firehose; import org.apache.druid.data.input.FirehoseFactory; @@ -698,9 +699,10 @@ private void publishSegments( committerSupplier.get(), Collections.singletonList(sequenceName) ); - pendingHandoffs.add(Futures.transform( + pendingHandoffs.add(Futures.transformAsync( publishFuture, - (AsyncFunction) driver::registerHandoff + (AsyncFunction) driver::registerHandoff, + MoreExecutors.directExecutor() )); } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/common/task/batch/parallel/ParallelIndexPhaseRunner.java b/indexing-service/src/main/java/org/apache/druid/indexing/common/task/batch/parallel/ParallelIndexPhaseRunner.java index 3b725388f94b..96e4292926c2 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/common/task/batch/parallel/ParallelIndexPhaseRunner.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/common/task/batch/parallel/ParallelIndexPhaseRunner.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 org.apache.druid.indexer.TaskState; import org.apache.druid.indexer.TaskStatusPlus; import org.apache.druid.indexing.common.TaskToolbox; @@ -262,7 +263,8 @@ public void onFailure(Throwable t) LOG.error(t, "Error while running a task for spec[%s]", spec.getId()); taskCompleteEvents.offer(SubTaskCompleteEvent.fail(spec, t)); } - } + }, + MoreExecutors.directExecutor() ); } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/QuotableWhiteSpaceSplitter.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/QuotableWhiteSpaceSplitter.java index de0a04390b17..88e11821abc7 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/QuotableWhiteSpaceSplitter.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/QuotableWhiteSpaceSplitter.java @@ -54,7 +54,7 @@ public boolean matches(char c) if (inQuotes) { return false; } - return CharMatcher.BREAKING_WHITESPACE.matches(c); + return CharMatcher.breakingWhitespace().matches(c); } } ).omitEmptyStrings().split(string).iterator(); diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java index 4bae1d2cb254..b110b3a45c45 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/RemoteTaskRunner.java @@ -266,7 +266,8 @@ public void onFailure(Throwable throwable) waitingForMonitor.notifyAll(); } } - } + }, + MoreExecutors.directExecutor() ); break; case CHILD_UPDATED: @@ -1308,7 +1309,8 @@ public void onFailure(Throwable t) { removedWorkerCleanups.remove(worker, cleanupTask); } - } + }, + MoreExecutors.directExecutor() ); } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java index f84f5f3075f9..ae8c3313ec70 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/TaskLockbox.java @@ -20,6 +20,7 @@ package org.apache.druid.indexing.overlord; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import com.google.common.base.Preconditions; import com.google.common.collect.ComparisonChain; @@ -1560,10 +1561,10 @@ public int hashCode() @Override public String toString() { - return Objects.toStringHelper(this) - .add("taskLock", taskLock) - .add("taskIds", taskIds) - .toString(); + return MoreObjects.toStringHelper(this) + .add("taskLock", taskLock) + .add("taskIds", taskIds) + .toString(); } } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java index 57d610ab736d..d45f7af33fa1 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/hrtr/HttpRemoteTaskRunner.java @@ -757,7 +757,8 @@ public void onFailure(Throwable t) { removedWorkerCleanups.remove(workerHostAndPort, cleanupTask); } - } + }, + MoreExecutors.directExecutor() ); } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskClientAsyncImpl.java b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskClientAsyncImpl.java index 64b5e9064179..9d6d49e00bf2 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskClientAsyncImpl.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskClientAsyncImpl.java @@ -26,6 +26,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.common.guava.FutureUtils; import org.apache.druid.indexer.TaskLocation; @@ -407,7 +408,8 @@ public void onFailure(Throwable t) { retVal.setException(t); } - } + }, + MoreExecutors.directExecutor() ), sleepTime, TimeUnit.MILLISECONDS @@ -584,7 +586,8 @@ public void onFailure(Throwable t) retVal.set(either.valueOrThrow()); } } - } + }, + MoreExecutors.directExecutor() ); return retVal; diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskRunner.java b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskRunner.java index 1bfbd62bb86c..e44dfe9a451e 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskRunner.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/SeekableStreamIndexTaskRunner.java @@ -35,6 +35,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.InputFormat; @@ -137,6 +138,7 @@ * @param Partition Number Type * @param Sequence Number Type */ +@SuppressWarnings("CheckReturnValue") public abstract class SeekableStreamIndexTaskRunner implements ChatHandler { public enum Status @@ -697,7 +699,8 @@ public void onFailure(Throwable t) log.error("Persist failed, dying"); backgroundThreadException = t; } - } + }, + MoreExecutors.directExecutor() ); } @@ -970,7 +973,8 @@ private void publishAndRegisterHandoff(SequenceMetadata> getCurrentTotalStats() groupId, taskId, currentStats - ) + ), + MoreExecutors.directExecutor() ) ); groupAndTaskIds.add(new Pair<>(groupId, taskId)); @@ -1291,7 +1292,8 @@ private Map> getCurrentTotalStats() groupId, taskId, currentStats - ) + ), + MoreExecutors.directExecutor() ) ); groupAndTaskIds.add(new Pair<>(groupId, taskId)); @@ -1345,7 +1347,8 @@ private List getCurrentParseErrors() groupId, taskId, taskErrors - ) + ), + MoreExecutors.directExecutor() ) ); groupAndTaskIds.add(new Pair<>(groupId, taskId)); @@ -1363,7 +1366,8 @@ private List getCurrentParseErrors() groupId, taskId, taskErrors - ) + ), + MoreExecutors.directExecutor() ) ); groupAndTaskIds.add(new Pair<>(groupId, taskId)); @@ -2341,7 +2345,8 @@ public Void apply(@Nullable Boolean result) } return null; } - } + }, + MoreExecutors.directExecutor() ); } @@ -3060,7 +3065,8 @@ public Map apply(@Nullable Object input) { return null; } - } + }, + MoreExecutors.directExecutor() ); } @@ -3797,7 +3803,8 @@ private void updateCurrentOffsets() throws InterruptedException, ExecutionExcept } return null; - } + }, + MoreExecutors.directExecutor() ) ).collect(Collectors.toList()); diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/worker/WorkerTaskManager.java b/indexing-service/src/main/java/org/apache/druid/indexing/worker/WorkerTaskManager.java index 06989d995d5b..86bb642ac2f1 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/worker/WorkerTaskManager.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/worker/WorkerTaskManager.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 com.google.inject.Inject; import org.apache.druid.common.guava.FutureUtils; @@ -260,7 +261,8 @@ public void onFailure(Throwable t) ) ); } - } + }, + MoreExecutors.directExecutor() ); } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/worker/executor/ExecutorLifecycle.java b/indexing-service/src/main/java/org/apache/druid/indexing/worker/executor/ExecutorLifecycle.java index ad46ee7e666d..8784ee044618 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/worker/executor/ExecutorLifecycle.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/worker/executor/ExecutorLifecycle.java @@ -24,6 +24,7 @@ import com.google.common.base.Preconditions; 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 org.apache.druid.indexer.TaskStatus; import org.apache.druid.indexing.common.actions.TaskActionClientFactory; @@ -198,7 +199,8 @@ public TaskStatus apply(TaskStatus taskStatus) throw new RuntimeException(e); } } - } + }, + MoreExecutors.directExecutor() ); } diff --git a/indexing-service/src/main/java/org/apache/druid/indexing/worker/http/TaskManagementResource.java b/indexing-service/src/main/java/org/apache/druid/indexing/worker/http/TaskManagementResource.java index 57046ff80a03..fc6d6dc23815 100644 --- a/indexing-service/src/main/java/org/apache/druid/indexing/worker/http/TaskManagementResource.java +++ b/indexing-service/src/main/java/org/apache/druid/indexing/worker/http/TaskManagementResource.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.guice.annotations.Json; @@ -191,7 +192,8 @@ public void onFailure(Throwable th) log.debug(ex, "Request timed out or closed already."); } } - } + }, + MoreExecutors.directExecutor() ); asyncContext.setTimeout(timeout); diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/common/TaskToolboxTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/common/TaskToolboxTest.java index aaeee9fcd543..c1f7a549d65d 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/common/TaskToolboxTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/common/TaskToolboxTest.java @@ -67,6 +67,7 @@ import java.io.IOException; +@SuppressWarnings("DoNotMock") public class TaskToolboxTest { diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTaskTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTaskTest.java index 7ea82b8f57b0..e8c52f884eee 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTaskTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AppenderatorDriverRealtimeIndexTaskTest.java @@ -326,7 +326,7 @@ public void testHandoffTimeout() throws Exception // handoff would timeout, resulting in exception TaskStatus status = statusFuture.get(); Assert.assertTrue(status.getErrorMsg() - .contains("java.util.concurrent.TimeoutException: Timeout waiting for task.")); + .contains("java.util.concurrent.TimeoutException: Waited 100 milliseconds")); } @Test(timeout = 60_000L) diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/batch/parallel/AbstractParallelIndexSupervisorTaskTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/batch/parallel/AbstractParallelIndexSupervisorTaskTest.java index a5c77b33bb10..24cc10960912 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/batch/parallel/AbstractParallelIndexSupervisorTaskTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/batch/parallel/AbstractParallelIndexSupervisorTaskTest.java @@ -478,7 +478,8 @@ private Future runTask(Task task) (Function) status -> { shutdownTask(task); return status; - } + }, + MoreExecutors.directExecutor() ); return cleanupFuture; } diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TestTaskRunner.java b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TestTaskRunner.java index 3a5df86a294f..2b97b170be36 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TestTaskRunner.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/TestTaskRunner.java @@ -232,7 +232,8 @@ public void onFailure(Throwable t) { runningItems.remove(taskRunnerWorkItem); } - } + }, + MoreExecutors.directExecutor() ); return statusFuture; diff --git a/licenses.yaml b/licenses.yaml index 2f95cd92ab31..7170b1a77a11 100644 --- a/licenses.yaml +++ b/licenses.yaml @@ -364,12 +364,32 @@ name: Guava license_category: binary module: java-core license_name: Apache License version 2.0 -version: 16.0.1 +version: 31.1-jre libraries: - com.google.guava: guava --- +name: Failureaccess +license_category: binary +module: java-core +license_name: Apache License version 2.0 +version: 1.0.1 +libraries: + - com.google.guava: failureaccess + +--- + +name: j2objc +license_category: binary +module: core +license_name: Apache License version 2.0 +version: 1.3 +libraries: + - com.google.j2objc: j2objc-annotations + +--- + name: Guice license_category: binary module: java-core diff --git a/owasp-dependency-check-suppressions.xml b/owasp-dependency-check-suppressions.xml index 0685b126c424..1eb7c5a72d79 100644 --- a/owasp-dependency-check-suppressions.xml +++ b/owasp-dependency-check-suppressions.xml @@ -785,18 +785,4 @@ ^pkg:maven/.*/.*@.*$ CVE-2021-4277 - - - - ^pkg:maven/com\.google\.guava/guava@16.0.1$ - - CVE-2018-10237 - CVE-2020-8908 - CVE-2023-2976 - diff --git a/pom.xml b/pom.xml index 774e17050877..a4285f868a93 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ 4.2.19 2.20.0 8.5.4 - 16.0.1 + 31.1-jre 4.1.0 1.3 9.4.51.v20230217 @@ -490,6 +490,12 @@ com.google.guava guava ${guava.version} + + + com.google.guava + listenablefuture + + 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) commitMetadata -> new SegmentsAndCommitMetadata(segments, commitMetadata) + (Function) commitMetadata -> new SegmentsAndCommitMetadata(segments, commitMetadata), + MoreExecutors.directExecutor() ); } else { if (interruptPush) { diff --git a/server/src/test/java/org/apache/druid/server/coordination/ChangeRequestHistoryTest.java b/server/src/test/java/org/apache/druid/server/coordination/ChangeRequestHistoryTest.java index 62dcad86afaa..40af9d8b4369 100644 --- a/server/src/test/java/org/apache/druid/server/coordination/ChangeRequestHistoryTest.java +++ b/server/src/test/java/org/apache/druid/server/coordination/ChangeRequestHistoryTest.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 org.junit.Assert; import org.junit.Test; @@ -148,7 +149,8 @@ public void onFailure(Throwable t) { callbackExcecuted.set(true); } - } + }, + MoreExecutors.directExecutor() ); future.cancel(true); @@ -205,7 +207,8 @@ public void onFailure(Throwable t) { callbackExcecuted.set(true); } - } + }, + MoreExecutors.directExecutor() ); history.stop();