Jackie-Jiang commented on code in PR #15388:
URL: https://github.com/apache/pinot/pull/15388#discussion_r2074260352


##########
pinot-core/src/main/java/org/apache/pinot/core/transport/ImplicitHybridTableRouteInfo.java:
##########
@@ -0,0 +1,370 @@
+/**
+ * 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.pinot.core.transport;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Nullable;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.pinot.common.request.BrokerRequest;
+import org.apache.pinot.common.request.InstanceRequest;
+import org.apache.pinot.core.routing.ServerRouteInfo;
+import org.apache.pinot.core.routing.TimeBoundaryInfo;
+import org.apache.pinot.spi.config.table.TableConfig;
+import org.apache.pinot.spi.config.table.TableType;
+import org.apache.pinot.spi.query.QueryThreadContext;
+import org.apache.pinot.spi.utils.CommonConstants;
+
+
+public class ImplicitHybridTableRouteInfo implements TableRouteInfo {
+  private String _offlineTableName = null;
+  private boolean _isOfflineRouteExists;
+  private TableConfig _offlineTableConfig;
+  private boolean _isOfflineTableDisabled;
+
+  private String _realtimeTableName = null;
+  private boolean _isRealtimeRouteExists;
+  private TableConfig _realtimeTableConfig;
+  private boolean _isRealtimeTableDisabled;
+
+  private TimeBoundaryInfo _timeBoundaryInfo;
+
+  private List<String> _unavailableSegments;
+  private int _numPrunedSegmentsTotal;
+
+  private BrokerRequest _offlineBrokerRequest;
+  private BrokerRequest _realtimeBrokerRequest;
+  private Map<ServerInstance, ServerRouteInfo> _offlineRoutingTable;
+  private Map<ServerInstance, ServerRouteInfo> _realtimeRoutingTable;
+
+  public ImplicitHybridTableRouteInfo() {
+  }
+
+  public ImplicitHybridTableRouteInfo(BrokerRequest offlineBrokerRequest, 
BrokerRequest realtimeBrokerRequest,

Review Comment:
   Annotate all arguments as `@Nullable`. 



##########
pinot-core/src/main/java/org/apache/pinot/core/transport/ImplicitHybridTableRouteInfo.java:
##########
@@ -0,0 +1,370 @@
+/**
+ * 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.pinot.core.transport;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Nullable;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.pinot.common.request.BrokerRequest;
+import org.apache.pinot.common.request.InstanceRequest;
+import org.apache.pinot.core.routing.ServerRouteInfo;
+import org.apache.pinot.core.routing.TimeBoundaryInfo;
+import org.apache.pinot.spi.config.table.TableConfig;
+import org.apache.pinot.spi.config.table.TableType;
+import org.apache.pinot.spi.query.QueryThreadContext;
+import org.apache.pinot.spi.utils.CommonConstants;
+
+
+public class ImplicitHybridTableRouteInfo implements TableRouteInfo {
+  private String _offlineTableName = null;
+  private boolean _isOfflineRouteExists;
+  private TableConfig _offlineTableConfig;
+  private boolean _isOfflineTableDisabled;
+
+  private String _realtimeTableName = null;
+  private boolean _isRealtimeRouteExists;
+  private TableConfig _realtimeTableConfig;
+  private boolean _isRealtimeTableDisabled;
+
+  private TimeBoundaryInfo _timeBoundaryInfo;
+
+  private List<String> _unavailableSegments;
+  private int _numPrunedSegmentsTotal;
+
+  private BrokerRequest _offlineBrokerRequest;
+  private BrokerRequest _realtimeBrokerRequest;
+  private Map<ServerInstance, ServerRouteInfo> _offlineRoutingTable;
+  private Map<ServerInstance, ServerRouteInfo> _realtimeRoutingTable;
+
+  public ImplicitHybridTableRouteInfo() {

Review Comment:
   Is it possible to remove the empty constructor and always construct this 
class with all necessary info? Ideally we want to make all fields `final` and 
not allow modification of the route info. Currently we have a lot of setters 
and getters, and if I use the second constructor (with arguments), a lot of 
info are still not set. This makes this class hard to use or maintain



##########
pinot-core/src/main/java/org/apache/pinot/core/transport/ImplicitHybridTableRouteInfo.java:
##########
@@ -0,0 +1,370 @@
+/**
+ * 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.pinot.core.transport;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Nullable;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.pinot.common.request.BrokerRequest;
+import org.apache.pinot.common.request.InstanceRequest;
+import org.apache.pinot.core.routing.ServerRouteInfo;
+import org.apache.pinot.core.routing.TimeBoundaryInfo;
+import org.apache.pinot.spi.config.table.TableConfig;
+import org.apache.pinot.spi.config.table.TableType;
+import org.apache.pinot.spi.query.QueryThreadContext;
+import org.apache.pinot.spi.utils.CommonConstants;
+
+
+public class ImplicitHybridTableRouteInfo implements TableRouteInfo {
+  private String _offlineTableName = null;
+  private boolean _isOfflineRouteExists;
+  private TableConfig _offlineTableConfig;
+  private boolean _isOfflineTableDisabled;
+
+  private String _realtimeTableName = null;
+  private boolean _isRealtimeRouteExists;
+  private TableConfig _realtimeTableConfig;
+  private boolean _isRealtimeTableDisabled;
+
+  private TimeBoundaryInfo _timeBoundaryInfo;
+
+  private List<String> _unavailableSegments;
+  private int _numPrunedSegmentsTotal;
+
+  private BrokerRequest _offlineBrokerRequest;
+  private BrokerRequest _realtimeBrokerRequest;
+  private Map<ServerInstance, ServerRouteInfo> _offlineRoutingTable;
+  private Map<ServerInstance, ServerRouteInfo> _realtimeRoutingTable;
+
+  public ImplicitHybridTableRouteInfo() {
+  }
+
+  public ImplicitHybridTableRouteInfo(BrokerRequest offlineBrokerRequest, 
BrokerRequest realtimeBrokerRequest,

Review Comment:
   Is this constructor for testing purpose only?



##########
pinot-core/src/main/java/org/apache/pinot/core/transport/QueryRouter.java:
##########
@@ -92,6 +88,16 @@ public AsyncQueryResponse submitQuery(long requestId, String 
rawTableName,
       @Nullable Map<ServerInstance, ServerRouteInfo> offlineRoutingTable,
       @Nullable BrokerRequest realtimeBrokerRequest,
       @Nullable Map<ServerInstance, ServerRouteInfo> realtimeRoutingTable, 
long timeoutMs) {
+    TableRouteInfo tableRouteInfo = new 
ImplicitHybridTableRouteInfo(offlineBrokerRequest, realtimeBrokerRequest,

Review Comment:
   Is this method only for testing purpose? If so, let's refactor the test to 
use the one used in production code



-- 
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: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to