mirror of
https://github.com/apache/druid.git
synced 2025-02-09 03:24:55 +00:00
This change removes ListenableFutures.transformAsync in favor of the existing Guava Futures.transform implementation. Our own implementation had a bug which did not fail the future if the applied function threw an exception, resulting in the future never completing. An attempt was made to fix this bug, however when running againts Guava's own tests, our version failed another half dozen tests, so it was decided to not continue down that path and scrap our own implementation. Explanation for how was this bug manifested itself: An exception thrown in BaseAppenderatorDriver.publishInBackground when invoked via transformAsync in StreamAppenderatorDriver.publish will cause the resulting future to never complete. This explains why when encountering https://github.com/apache/druid/issues/9845 the task will never complete, forever waiting for the publishFuture to register the handoff. As a result, the corresponding "Error while publishing segments ..." message only gets logged once the index task times out and is forcefully shutdown when the future is force-cancelled by the executor.
62 lines
5.9 KiB
Plaintext
62 lines
5.9 KiB
Plaintext
com.fasterxml.jackson.databind.ObjectMapper#reader(com.fasterxml.jackson.core.type.TypeReference) @ Use ObjectMapper#readerFor instead
|
|
com.fasterxml.jackson.databind.ObjectMapper#reader(com.fasterxml.jackson.databind.JavaType) @ Use ObjectMapper#readerFor instead
|
|
com.fasterxml.jackson.databind.ObjectMapper#reader(java.lang.Class) @ Use ObjectMapper#readerFor instead
|
|
com.google.common.base.Charsets @ Use java.nio.charset.StandardCharsets instead
|
|
com.google.common.collect.Iterators#emptyIterator() @ Use java.util.Collections#emptyIterator()
|
|
com.google.common.collect.Lists#newArrayList() @ Create java.util.ArrayList directly
|
|
com.google.common.collect.Lists#newLinkedList() @ Use ArrayList or ArrayDeque instead
|
|
com.google.common.collect.Lists#newLinkedList(java.lang.Iterable) @ Use ArrayList or ArrayDeque instead
|
|
com.google.common.collect.MapMaker @ Create java.util.concurrent.ConcurrentHashMap directly
|
|
com.google.common.collect.Maps#newConcurrentMap() @ Create java.util.concurrent.ConcurrentHashMap directly
|
|
com.google.common.collect.Maps#newHashMap() @ Create java.util.HashMap directly
|
|
com.google.common.collect.Maps#newHashMap(java.util.Map) @ Create java.util.HashMap directly
|
|
com.google.common.collect.Maps#newTreeMap() @ Create java.util.TreeMap directly
|
|
com.google.common.collect.Maps#newTreeMap(java.util.Comparator) @ Create java.util.TreeMap directly
|
|
com.google.common.collect.Maps#newTreeMap(java.util.SortedMap) @ Create java.util.TreeMap directly
|
|
com.google.common.collect.Queues#newArrayDeque() @ Create java.util.ArrayDeque directly
|
|
com.google.common.collect.Queues#newConcurrentLinkedQueue() @ Create java.util.concurrent.ConcurrentLinkedQueue directly
|
|
com.google.common.collect.Queues#newLinkedBlockingQueue() @ Create java.util.concurrent.LinkedBlockingQueue directly
|
|
com.google.common.collect.Sets#newHashSet() @ Create java.util.HashSet directly
|
|
com.google.common.collect.Sets#newLinkedHashSet() @ Create java.util.LinkedHashSet directly
|
|
com.google.common.collect.Sets#newTreeSet() @ Create java.util.TreeSet directly
|
|
com.google.common.collect.Sets#newTreeSet(java.util.Comparator) @ Create java.util.TreeSet directly
|
|
com.google.common.io.Files#createTempDir() @ Use org.apache.druid.java.util.common.FileUtils.createTempDir()
|
|
com.google.common.util.concurrent.MoreExecutors#sameThreadExecutor() @ Use org.apache.druid.java.util.common.concurrent.Execs#directExecutor()
|
|
com.google.common.util.concurrent.MoreExecutors#newDirectExecutorService() @ Use org.apache.druid.java.util.common.concurrent.Execs#directExecutor()
|
|
com.google.common.util.concurrent.MoreExecutors#directExecutor() @ Use org.apache.druid.java.util.common.concurrent.Execs#directExecutor()
|
|
java.io.File#toURL() @ Use java.io.File#toURI() and java.net.URI#toURL() instead
|
|
java.lang.String#matches(java.lang.String) @ Use startsWith(), endsWith(), contains(), or compile and cache a Pattern explicitly
|
|
java.lang.String#replace(java.lang.CharSequence,java.lang.CharSequence) @ Use one of the appropriate methods in StringUtils instead
|
|
java.lang.String#replaceAll(java.lang.String,java.lang.String) @ Use one of the appropriate methods in StringUtils instead, or compile and cache a Pattern explicitly
|
|
java.lang.String#replaceFirst(java.lang.String,java.lang.String) @ Use String.indexOf() and substring methods, or compile and cache a Pattern explicitly
|
|
java.nio.file.Files#createTempDirectory(java.lang.String prefix,java.nio.file.FileAttribute...) @ Use org.apache.druid.java.util.common.FileUtils.createTempDir()
|
|
java.util.HashMap#<init>(int) @ Use com.google.common.collect.Maps#newHashMapWithExpectedSize(int) instead
|
|
java.util.HashMap#<init>(int, float) @ Use com.google.common.collect.Maps#newHashMapWithExpectedSize(int) instead
|
|
java.util.LinkedHashMap#<init>(int) @ Use org.apache.druid.utils.CollectionUtils#newLinkedHashMapWithExpectedSize(int) instead
|
|
java.util.LinkedHashMap#<init>(int, float) @ Use org.apache.druid.utils.CollectionUtils#newLinkedHashMapWithExpectedSize(int) instead
|
|
java.util.HashSet#<init>(int) @ Use com.google.collect.Sets#newHashSetWithExpectedSize(int) instead
|
|
java.util.HashSet#<init>(int, float) @ Use com.google.collect.Sets#newHashSetWithExpectedSize(int) instead
|
|
java.util.LinkedHashSet#<init>(int) @ Use com.google.collect.Sets#newLinkedHashSatWithExpectedSize(int) instead
|
|
java.util.LinkedHashSet#<init>(int, float) @ Use com.google.collect.Sets#newLinkedHashSatWithExpectedSize(int) instead
|
|
java.util.LinkedList @ Use ArrayList or ArrayDeque instead
|
|
java.util.Random#<init>() @ Use ThreadLocalRandom.current() or the constructor with a seed (the latter in tests only!)
|
|
java.lang.Math#random() @ Use ThreadLocalRandom.current()
|
|
java.util.regex.Pattern#matches(java.lang.String,java.lang.CharSequence) @ Use String.startsWith(), endsWith(), contains(), or compile and cache a Pattern explicitly
|
|
org.apache.commons.io.FileUtils#getTempDirectory() @ Use org.junit.rules.TemporaryFolder for tests instead
|
|
org.apache.commons.io.FileUtils#deleteDirectory() @ Use org.apache.druid.java.util.common.FileUtils#deleteDirectory()
|
|
java.lang.Class#getCanonicalName() @ Class.getCanonicalName can return null for anonymous types, use Class.getName instead.
|
|
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)
|
|
|
|
@defaultMessage Use Locale.ENGLISH
|
|
com.ibm.icu.text.DateFormatSymbols#<init>()
|
|
com.ibm.icu.text.SimpleDateFormat#<init>()
|
|
com.ibm.icu.text.SimpleDateFormat#<init>(java.lang.String)
|
|
|
|
@defaultMessage For performance reasons, use the utf8Base64 / encodeBase64 / encodeBase64String / decodeBase64 / decodeBase64String methods in StringUtils
|
|
org.apache.commons.codec.binary.Base64
|
|
com.google.common.io.BaseEncoding.base64
|
|
|
|
@defaultMessage Use com.google.errorprone.annotations.concurrent.GuardedBy
|
|
javax.annotations.concurrent.GuardedBy
|
|
com.amazonaws.annotation.GuardedBy
|