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