apache/druid · warning
Asked to remove timeline entry
Error message
Asked to remove timeline entry[interval: %s, version: %s] that doesn't exist
What it means
serverRemovedSegment removes the segment's partition from the VersionedIntervalTimeline; when the timeline lookup returns null (entry for that interval/version already absent), it logs this warning. The removal is a no-op and no serverSegmentRemoved callback fires.
Solutions
- Treat transient occurrences as benign noise; confirm they are not correlated with incorrect replica counts
- Ensure the segment add event was processed first (check server inventory sync logs)
- Check for double-registered server inventory views or replayed ZK watch events
- If persistent, restart the affected coordinator/broker to rebuild the timeline from scratch
Defensive patterns
Strategy: validation
Validate before calling
// only remove if the timeline still lists the segment
if (timeline.findEntry(segment.getInterval(), segment.getVersion()) == null) { skip(); } Prevention
- Preserve add-before-remove ordering of inventory events
- Deduplicate segment removal notifications
- Rebuild timeline state via restart if warnings persist
- Monitor coordinator/historical restart correlation with these warnings
When it happens
Trigger: serverRemovedSegment called for a segment whose (interval, version) partition was already removed from the timeline, or never added, on this DruidServer.
Common situations: Duplicate removal events, out-of-order inventory updates during historical restart or coordinator failover, segments overshadowed and pruned before removal notification arrives.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- Told to remove non-existant segment
- Asked to add data segment that already exists!? server
- Asked to remove data segment from a data source that…
- Asked to remove data segment that doesn't exist!? server
- key must be an instance of Interval
AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07).
Data as JSON: /api/errors/cc50d342e24bbb1b.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/main/java/org/apache/druid/client/CoordinatorServerView.java:253
if (segmentLoadInfo.removeServer(server)) {
// server segment removed notification
runTimelineCallbacks(callback -> callback.serverSegmentRemoved(server, segment));
}
if (segmentLoadInfo.isEmpty()) {
VersionedIntervalTimeline<String, SegmentLoadInfo> timeline = timelines.get(segment.getDataSource());
segmentLoadInfos.remove(segmentId);
final PartitionChunk<SegmentLoadInfo> removedPartition = timeline.remove(
segment.getInterval(), segment.getVersion(), segment.getShardSpec().createChunk(
new SegmentLoadInfo(
segment
)
)
);
if (removedPartition == null) {
log.warn(
"Asked to remove timeline entry[interval: %s, version: %s] that doesn't exist",
segment.getInterval(),
segment.getVersion()
);
} else {
// segment removed notification
runTimelineCallbacks(callback -> callback.segmentRemoved(segment));
}
}
}
}
public void registerTimelineCallback(final Executor exec, final TimelineCallback callback)
{
timelineCallbacks.put(callback, exec);
}
private void runTimelineCallbacks(final Function<TimelineCallback, ServerView.CallbackAction> function)View on GitHub (pinned to 9b90983fd2)