LakshSingla commented on code in PR #14527:
URL: https://github.com/apache/druid/pull/14527#discussion_r1254328242


##########
processing/src/main/java/org/apache/druid/storage/NilStorageConnector.java:
##########
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.druid.storage;
+
+import org.apache.druid.java.util.common.UOE;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+
+public class NilStorageConnector implements StorageConnector
+{
+  private static final NilStorageConnector NIL_STORAGE_CONNECTOR = new 
NilStorageConnector();
+
+  private NilStorageConnector()
+  {
+
+  }
+
+  public static NilStorageConnector getInstance()
+  {
+    return NIL_STORAGE_CONNECTOR;
+  }
+
+  @Override
+  public boolean pathExists(String path)
+  {
+    throw new UOE("Please configure durable storage.");

Review Comment:
   We can refactor this into a method and call that method from everywhere
   ```suggestion
   private void throwError()
   {
       throw new UOE("Please configure durable storage.");
   }
   ```



##########
extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/MSQTasks.java:
##########
@@ -155,7 +156,11 @@ static String getHostFromSelfNode(@Nullable final 
DruidNode selfNode)
   static StorageConnector makeStorageConnector(final Injector injector)
   {
     try {
-      return injector.getInstance(Key.get(StorageConnector.class, 
MultiStageQuery.class));
+      StorageConnector storageConnector = 
injector.getInstance(Key.get(StorageConnector.class, MultiStageQuery.class));
+      if (storageConnector instanceof NilStorageConnector) {
+        throw new Exception("Storage connector not configured.");

Review Comment:
   Once we selectively bind the `NilStorageConnector` to Broker nodes only, 
this check won't be required right? 



##########
processing/src/main/java/org/apache/druid/storage/NilStorageConnector.java:
##########


Review Comment:
   Please add a javadoc for this class explaining the necessity of this



##########
processing/src/main/java/org/apache/druid/storage/NilStorageConnector.java:
##########
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.druid.storage;
+
+import org.apache.druid.java.util.common.UOE;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+
+public class NilStorageConnector implements StorageConnector
+{
+  private static final NilStorageConnector NIL_STORAGE_CONNECTOR = new 
NilStorageConnector();
+
+  private NilStorageConnector()
+  {
+
+  }
+
+  public static NilStorageConnector getInstance()
+  {
+    return NIL_STORAGE_CONNECTOR;
+  }
+
+  @Override
+  public boolean pathExists(String path)
+  {
+    throw new UOE("Please configure durable storage.");

Review Comment:
   Also, we should be replacing UOE with a DruidException, and the category 
should be defensive since we don't expect these methods to be called under 
normal circumstances. The top-level code should detect if the implementation is 
a NilStorageConnector, and then not call the method



##########
extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/indexing/MSQDestination.java:
##########
@@ -21,11 +21,15 @@
 
 import com.fasterxml.jackson.annotation.JsonSubTypes;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import org.apache.druid.msq.indexing.destination.DataSourceMSQDestination;
+import org.apache.druid.msq.indexing.destination.DurableStorageDestination;
+import org.apache.druid.msq.indexing.destination.TaskReportMSQDestination;
 
 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
 @JsonSubTypes(value = {
     @JsonSubTypes.Type(name = DataSourceMSQDestination.TYPE, value = 
DataSourceMSQDestination.class),
-    @JsonSubTypes.Type(name = TaskReportMSQDestination.TYPE, value = 
TaskReportMSQDestination.class)
+    @JsonSubTypes.Type(name = TaskReportMSQDestination.TYPE, value = 
TaskReportMSQDestination.class),
+    @JsonSubTypes.Type(name = DurableStorageDestination.TYPE, value = 
DurableStorageDestination.class)

Review Comment:
   ```suggestion
       @JsonSubTypes.Type(name = DurableStorageMSQDestination.TYPE, value = 
DurableStorageDestination.class)
   ```
   
   nit: For consistency with the other two names, this class could be renamed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to