b-slim closed pull request #6456: Enforce Druid's exception class use
URL: https://github.com/apache/incubator-druid/pull/6456
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/.idea/inspectionProfiles/Druid.xml 
b/.idea/inspectionProfiles/Druid.xml
index 38d6033a81a..b1748e7c921 100644
--- a/.idea/inspectionProfiles/Druid.xml
+++ b/.idea/inspectionProfiles/Druid.xml
@@ -63,7 +63,6 @@
     <inspection_tool class="InvalidComparatorMethodReference" enabled="true" 
level="ERROR" enabled_by_default="true" />
     <inspection_tool class="IteratorHasNextCallsIteratorNext" enabled="true" 
level="ERROR" enabled_by_default="true" />
     <inspection_tool class="IteratorNextDoesNotThrowNoSuchElementException" 
enabled="true" level="WARNING" enabled_by_default="true" />
-    <inspection_tool class="JavadocReference" enabled="true" level="ERROR" 
enabled_by_default="true" />
     <inspection_tool class="JsonStandardCompliance" enabled="true" 
level="WARNING" enabled_by_default="true" />
     <inspection_tool class="MalformedFormatString" enabled="true" 
level="ERROR" enabled_by_default="true">
       <option name="additionalClasses" 
value="org.apache.druid.java.util.common.StringUtils,org.apache.druid.java.util.common.logger.Logger"
 />
@@ -113,7 +112,7 @@
       <searchConfiguration name="Suboptimal IndexedInts iteration" text="$x$ 
&lt; $y$.size()" recursive="false" caseInsensitive="true" type="JAVA">
         <constraint name="__context__" target="true" within="" contains="" />
         <constraint name="x" within="" contains="" />
-        <constraint name="y" nameOfExprType="IndexedInts" 
exprTypeWithinHierarchy="true" within="" contains="" />
+        <constraint name="y" nameOfExprType="IndexedInts" 
expressionTypes="IndexedInts" exprTypeWithinHierarchy="true" within="" 
contains="" />
       </searchConfiguration>
       <searchConfiguration name="Lists.newArrayList() with a single argument. 
Use Collections.singletonList() instead" created="1532737126203" 
text="Lists.newArrayList($x$)" recursive="false" caseInsensitive="true" 
type="JAVA">
         <constraint name="x" 
nameOfExprType="java\.lang\.Iterable|java\.util\.Iterator|Object\[\]" 
expressionTypes="java.lang.Iterable|java.util.Iterator|Object[]" 
exprTypeWithinHierarchy="true" negateName="true" negateExprType="true" 
within="" contains="" />
@@ -134,6 +133,55 @@
         <constraint name="x" nameOfFormalType="java\.util\.Random" 
exceptedTypes="java.util.Random" exprTypeWithinHierarchy="true" 
formalTypeWithinHierarchy="true" within="" contains="" />
         <constraint name="a" within="" contains="" />
       </searchConfiguration>
+      <searchConfiguration name="Use RE (a Druid's class)" 
created="1539352150701" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$))" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.lang\.RuntimeException" within="" 
contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use RE (a Druid's class) with cause" 
created="1539353059868" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$),$y$)" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.lang\.RuntimeException" within="" 
contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+        <constraint name="y" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use ISE (a Druid's class)" 
created="1539353519594" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$))" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.lang\.IllegalStateException" 
within="" contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use ISE (a Druid's class) with cause" 
created="1539353595734" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$),$y$)" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.lang\.IllegalStateException" 
within="" contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+        <constraint name="y" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use IAE (a Druid's class)" 
created="1539353691746" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$))" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.lang\.IllegalArgumentException" 
within="" contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use IAE (a Druid's class) with cause" 
created="1539353766336" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$),$y$)" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.lang\.IllegalArgumentException" 
within="" contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+        <constraint name="y" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use IOE (a Druid's class)" 
created="1539353913074" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$))" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.io\.IOException" within="" 
contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use IOE (a Druid's class) with cause" 
created="1539354009031" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$),$y$)" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" regexp="java\.io\.IOException" within="" 
contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+        <constraint name="y" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
+      <searchConfiguration name="Use UOE (a Druid's class)" 
created="1539354091201" text="new 
$E$(org.apache.druid.java.util.common.StringUtils.format($x$))" 
recursive="false" caseInsensitive="true" type="JAVA">
+        <constraint name="__context__" target="true" within="" contains="" />
+        <constraint name="E" 
regexp="java\.lang\.UnsupportedOperationException" within="" contains="" />
+        <constraint name="x" minCount="0" maxCount="2147483647" within="" 
contains="" />
+      </searchConfiguration>
     </inspection_tool>
     <inspection_tool class="SpellCheckingInspection" enabled="false" 
level="TYPO" enabled_by_default="false">
       <option name="processCode" value="true" />
diff --git a/api/src/main/java/org/apache/druid/indexer/TaskStatusPlus.java 
b/api/src/main/java/org/apache/druid/indexer/TaskStatusPlus.java
index e58d83111f1..4912900fb88 100644
--- a/api/src/main/java/org/apache/druid/indexer/TaskStatusPlus.java
+++ b/api/src/main/java/org/apache/druid/indexer/TaskStatusPlus.java
@@ -22,7 +22,7 @@
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.common.base.Preconditions;
-import org.apache.druid.java.util.common.StringUtils;
+import org.apache.druid.java.util.common.RE;
 import org.apache.druid.java.util.common.logger.Logger;
 import org.joda.time.DateTime;
 
@@ -104,7 +104,7 @@ public TaskStatusPlus(
       this.statusCode = status;
     } else {
       if (statusCode != null && status != null && statusCode != status) {
-        throw new RuntimeException(StringUtils.format("statusCode[%s] and 
status[%s] must match", statusCode, status));
+        throw new RE("statusCode[%s] and status[%s] must match", statusCode, 
status);
       }
       this.statusCode = statusCode;
     }
diff --git a/common/src/main/java/org/apache/druid/indexer/Jobby.java 
b/common/src/main/java/org/apache/druid/indexer/Jobby.java
index c6ea58c26fd..2d13400767a 100644
--- a/common/src/main/java/org/apache/druid/indexer/Jobby.java
+++ b/common/src/main/java/org/apache/druid/indexer/Jobby.java
@@ -19,7 +19,7 @@
 
 package org.apache.druid.indexer;
 
-import org.apache.druid.java.util.common.StringUtils;
+import org.apache.druid.java.util.common.UOE;
 
 import javax.annotation.Nullable;
 import java.util.Map;
@@ -36,9 +36,7 @@
   @Nullable
   default Map<String, Object> getStats()
   {
-    throw new UnsupportedOperationException(
-        StringUtils.format("This Jobby does not implement getJobStats(), Jobby 
class: [%s]", getClass())
-    );
+    throw new UOE("This Jobby does not implement getJobStats(), Jobby class: 
[%s]", getClass());
   }
 
   /**
@@ -48,8 +46,6 @@
   @Nullable
   default String getErrorMessage()
   {
-    throw new UnsupportedOperationException(
-        StringUtils.format("This Jobby does not implement getErrorMessage(), 
Jobby class: [%s]", getClass())
-    );
+    throw new UOE("This Jobby does not implement getErrorMessage(), Jobby 
class: [%s]", getClass());
   }
 }
diff --git 
a/extensions-core/druid-basic-security/src/main/java/org/apache/druid/security/basic/BasicAuthUtils.java
 
b/extensions-core/druid-basic-security/src/main/java/org/apache/druid/security/basic/BasicAuthUtils.java
index 6677fbc4a91..22748758a2f 100644
--- 
a/extensions-core/druid-basic-security/src/main/java/org/apache/druid/security/basic/BasicAuthUtils.java
+++ 
b/extensions-core/druid-basic-security/src/main/java/org/apache/druid/security/basic/BasicAuthUtils.java
@@ -23,6 +23,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.Maps;
 import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.java.util.common.RE;
 import org.apache.druid.java.util.common.StringUtils;
 import org.apache.druid.java.util.common.logger.Logger;
 import 
org.apache.druid.security.basic.authentication.entity.BasicAuthenticatorUser;
@@ -100,7 +101,7 @@
     }
     catch (NoSuchAlgorithmException nsae) {
       log.error("%s not supported on this system.", ALGORITHM);
-      throw new RuntimeException(StringUtils.format("%s not supported on this 
system.", ALGORITHM), nsae);
+      throw new RE(nsae, "%s not supported on this system.", ALGORITHM);
     }
   }
 
diff --git 
a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/filter/BloomDimFilter.java
 
b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/filter/BloomDimFilter.java
index 808f709f60a..bfaa37c8857 100644
--- 
a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/filter/BloomDimFilter.java
+++ 
b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/filter/BloomDimFilter.java
@@ -25,6 +25,7 @@
 import com.google.common.base.Predicate;
 import com.google.common.collect.RangeSet;
 import com.google.common.collect.Sets;
+import org.apache.druid.java.util.common.ISE;
 import org.apache.druid.java.util.common.StringUtils;
 import org.apache.druid.query.cache.CacheKeyBuilder;
 import org.apache.druid.query.extraction.ExtractionFn;
@@ -66,7 +67,7 @@ public BloomDimFilter(
       BloomKFilter.serialize(byteArrayOutputStream, bloomKFilter);
     }
     catch (IOException e) {
-      throw new IllegalStateException(StringUtils.format("Exception when 
generating cache key for [%s]", this), e);
+      throw new ISE(e, "Exception when generating cache key for [%s]", this);
     }
     byte[] bloomFilterBytes = byteArrayOutputStream.toByteArray();
     return new CacheKeyBuilder(DimFilterUtils.BLOOM_DIM_FILTER_CACHE_ID)
diff --git 
a/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/KafkaIndexTaskClient.java
 
b/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/KafkaIndexTaskClient.java
index c81b1be038a..3bc52eb954a 100644
--- 
a/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/KafkaIndexTaskClient.java
+++ 
b/extensions-core/kafka-indexing-service/src/main/java/org/apache/druid/indexing/kafka/KafkaIndexTaskClient.java
@@ -26,6 +26,7 @@
 import org.apache.druid.indexing.common.IndexTaskClient;
 import org.apache.druid.indexing.common.TaskInfoProvider;
 import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.java.util.common.RE;
 import org.apache.druid.java.util.common.StringUtils;
 import org.apache.druid.java.util.common.jackson.JacksonUtils;
 import org.apache.druid.java.util.emitter.EmittingLogger;
@@ -142,10 +143,7 @@ public boolean resume(final String id)
       return ImmutableMap.of();
     }
     catch (IOException | InterruptedException e) {
-      throw new RuntimeException(
-          StringUtils.format("Exception [%s] while pausing Task [%s]", 
e.getMessage(), id),
-          e
-      );
+      throw new RE(e, "Exception [%s] while pausing Task [%s]", 
e.getMessage(), id);
     }
   }
 
diff --git 
a/java-util/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriExtractor.java
 
b/java-util/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriExtractor.java
index 68baeff8664..9dcde242b87 100644
--- 
a/java-util/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriExtractor.java
+++ 
b/java-util/src/main/java/org/apache/druid/java/util/emitter/core/ParametrizedUriExtractor.java
@@ -19,6 +19,7 @@
 
 package org.apache.druid.java.util.emitter.core;
 
+import org.apache.druid.java.util.common.IAE;
 import org.apache.druid.java.util.common.StringUtils;
 
 import java.net.URI;
@@ -57,12 +58,12 @@ public URI apply(Event event) throws URISyntaxException
     for (String key : params) {
       Object paramValue = eventMap.get(key);
       if (paramValue == null) {
-        throw new IllegalArgumentException(StringUtils.format(
+        throw new IAE(
             "ParametrizedUriExtractor with pattern %s requires %s to be set in 
event, but found %s",
             uriPattern,
             key,
             eventMap
-        ));
+        );
       }
       processedUri = processedUri.replace(StringUtils.format("{%s}", key), 
paramValue.toString());
     }
diff --git 
a/java-util/src/main/java/org/apache/druid/java/util/http/client/NettyHttpClient.java
 
b/java-util/src/main/java/org/apache/druid/java/util/http/client/NettyHttpClient.java
index 4603a33ba31..ea41e7d26d3 100644
--- 
a/java-util/src/main/java/org/apache/druid/java/util/http/client/NettyHttpClient.java
+++ 
b/java-util/src/main/java/org/apache/druid/java/util/http/client/NettyHttpClient.java
@@ -253,7 +253,7 @@ public void messageReceived(ChannelHandlerContext ctx, 
MessageEvent e)
                   possiblySuspendReads(response);
                 }
               } else {
-                throw new IllegalStateException(StringUtils.format("Unknown 
message type[%s]", msg.getClass()));
+                throw new ISE("Unknown message type[%s]", msg.getClass());
               }
             }
             catch (Exception ex) {
diff --git 
a/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java 
b/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java
index e24699d61a2..07c0a03fb7e 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/schema/SystemSchema.java
@@ -47,6 +47,7 @@
 import org.apache.druid.client.indexing.IndexingService;
 import org.apache.druid.discovery.DruidLeaderClient;
 import org.apache.druid.indexer.TaskStatusPlus;
+import org.apache.druid.java.util.common.RE;
 import org.apache.druid.java.util.common.StringUtils;
 import org.apache.druid.java.util.common.parsers.CloseableIterator;
 import org.apache.druid.java.util.http.client.Request;
@@ -252,10 +253,7 @@ public TableType getJdbcTableType()
               };
             }
             catch (JsonProcessingException e) {
-              throw new RuntimeException(StringUtils.format(
-                  "Error getting segment payload for segment %s",
-                  val.getIdentifier()
-              ), e);
+              throw new RE(e, "Error getting segment payload for segment %s", 
val.getIdentifier());
             }
           });
 
@@ -287,15 +285,13 @@ public TableType getJdbcTableType()
               };
             }
             catch (JsonProcessingException e) {
-              throw new RuntimeException(StringUtils.format(
-                  "Error getting segment payload for segment %s",
-                  val.getKey().getIdentifier()
-              ), e);
+              throw new RE(e, "Error getting segment payload for segment %s", 
val.getKey().getIdentifier());
             }
           });
 
       final Iterable<Object[]> allSegments = Iterables.unmodifiableIterable(
-          Iterables.concat(publishedSegments, availableSegments));
+          Iterables.concat(publishedSegments, availableSegments)
+      );
 
       return Linq4j.asEnumerable(allSegments).where(t -> t != null);
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to