private void remove( NavigableMap<Interval, TimelineEntry> timeline, Interval interval, TimelineEntry entry, boolean incompleteOk ) { List<Interval> intervalsToRemove = Lists.newArrayList(); TimelineEntry removed = timeline.get(interval); if (removed == null) { Iterator<Map.Entry<Interval, TimelineEntry>> iter = timeline.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<Interval, TimelineEntry> timelineEntry = iter.next(); if (timelineEntry.getValue() == entry) { intervalsToRemove.add(timelineEntry.getKey()); } } } else { intervalsToRemove.add(interval); } for (Interval i : intervalsToRemove) { remove(timeline, i, incompleteOk); } }
public PartitionChunk<ObjectType> remove(Interval interval, VersionType version, PartitionChunk<ObjectType> chunk) { try { lock.writeLock().lock(); Map<VersionType, TimelineEntry> versionEntries = allTimelineEntries.get(interval); if (versionEntries == null) { return null; } TimelineEntry entry = versionEntries.get(version); if (entry == null) { return null; } PartitionChunk<ObjectType> retVal = entry.getPartitionHolder().remove(chunk); if (entry.getPartitionHolder().isEmpty()) { versionEntries.remove(version); if (versionEntries.isEmpty()) { allTimelineEntries.remove(interval); } remove(incompletePartitionsTimeline, interval, entry, true); } remove(completePartitionsTimeline, interval, entry, false); return retVal; } finally { lock.writeLock().unlock(); } }
segmentLoadInfos.remove(segmentId); final PartitionChunk<SegmentLoadInfo> removedPartition = timeline.remove( segment.getInterval(), segment.getVersion(), segment.getShardSpec().createChunk( new SegmentLoadInfo(
selectors.remove(segmentId); final PartitionChunk<ServerSelector> removedPartition = timeline.remove( segment.getInterval(), segment.getVersion(), segment.getShardSpec().createChunk(selector) );
/** * Unannounces a given sink and removes all local references to it. */ protected void abandonSegment(final long truncatedTime, final Sink sink) { try { segmentAnnouncer.unannounceSegment(sink.getSegment()); FileUtils.deleteDirectory(computePersistDir(schema, sink.getInterval())); log.info("Removing sinkKey %d for segment %s", truncatedTime, sink.getSegment().getIdentifier()); sinks.remove(truncatedTime); sinkTimeline.remove( sink.getInterval(), sink.getVersion(), new SingleElementPartitionChunk<>(sink) ); synchronized (handoffCondition) { handoffCondition.notifyAll(); } } catch (IOException e) { log.makeAlert(e, "Unable to abandon old segment for dataSource[%s]", schema.getDataSource()) .addData("interval", sink.getInterval()) .emit(); } }
metrics.setSinkCount(sinks.size()); droppingSinks.remove(identifier); sinkTimeline.remove( sink.getInterval(), sink.getVersion(),
selectors.remove(segmentId); final PartitionChunk<ServerSelector> removedPartition = timeline.remove( segment.getInterval(), segment.getVersion(), segment.getShardSpec().createChunk(selector) );
sinks.remove(truncatedTime); metrics.setSinkCount(sinks.size()); sinkTimeline.remove( sink.getInterval(), sink.getVersion(),
PartitionChunk<ReferenceCountingSegment> removed = loadedIntervals.remove( segment.getInterval(), segment.getVersion(),
dataSourceState.getTimeline(); final PartitionChunk<ReferenceCountingSegment> removed = loadedIntervals.remove( segment.getInterval(), segment.getVersion(),