gianm commented on a change in pull request #10660: URL: https://github.com/apache/druid/pull/10660#discussion_r540496147
########## File path: sql/src/main/java/org/apache/druid/sql/calcite/schema/DruidSchema.java ########## @@ -448,25 +449,27 @@ void removeServerSegment(final DruidServerMetadata server, final DataSegment seg { synchronized (lock) { log.debug("Segment[%s] is gone from server[%s]", segment.getId(), server.getName()); - if (server.getType().equals(ServerType.BROKER)) { - // a segment on a broker means a broadcast datasource, skip metadata because we'll also see this segment on the - // historical, however mark the datasource for refresh because it might no longer be broadcast or something - dataSourcesNeedingRebuild.add(segment.getDataSource()); - } else { - final Map<SegmentId, AvailableSegmentMetadata> knownSegments = segmentMetadataInfo.get(segment.getDataSource()); - final AvailableSegmentMetadata segmentMetadata = knownSegments.get(segment.getId()); - final Set<DruidServerMetadata> segmentServers = segmentMetadata.getReplicas(); - final ImmutableSet<DruidServerMetadata> servers = FluentIterable - .from(segmentServers) - .filter(Predicates.not(Predicates.equalTo(server))) - .toSet(); - - final AvailableSegmentMetadata metadataWithNumReplicas = AvailableSegmentMetadata - .from(segmentMetadata) - .withReplicas(servers) - .withRealtime(recomputeIsRealtime(servers)) - .build(); - knownSegments.put(segment.getId(), metadataWithNumReplicas); + final Map<SegmentId, AvailableSegmentMetadata> knownSegments = segmentMetadataInfo.get(segment.getDataSource()); + if (knownSegments != null && !knownSegments.isEmpty()) { Review comment: Oh, I see. I was assuming that segments get added to `segmentMetadataInfo` no matter where they're served from. Do you know why that's not the case? I mean, why not add segments served by Brokers to `segmentMetadataInfo`? At any rate, if it's not the case, then I think `knownSegments` _could_ be null here if it's dropped from historicals before the broker, so it makes sense to check for it. There should be a comment about why this can happen. ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org For additional commands, e-mail: commits-h...@druid.apache.org