diff --git a/internal/proxy/task_query.go b/internal/proxy/task_query.go index 77fada477e..71046a51ca 100644 --- a/internal/proxy/task_query.go +++ b/internal/proxy/task_query.go @@ -482,9 +482,13 @@ func (t *queryTask) PreExecute(ctx context.Context) error { t.GuaranteeTimestamp = t.request.GetGuaranteeTimestamp() } if collectionInfo.collectionTTL != 0 { - physicalTime, _ := tsoutil.ParseTS(guaranteeTs) + physicalTime := tsoutil.PhysicalTime(t.GetBase().GetTimestamp()) expireTime := physicalTime.Add(-time.Duration(collectionInfo.collectionTTL)) t.CollectionTtlTimestamps = tsoutil.ComposeTSByTime(expireTime, 0) + // preventing overflow, abort ttl timestamp + if t.CollectionTtlTimestamps > t.GetBase().GetTimestamp() { + t.CollectionTtlTimestamps = 0 + } } deadline, ok := t.TraceCtx().Deadline() if ok { diff --git a/internal/proxy/task_search.go b/internal/proxy/task_search.go index fc544a700a..f8818eb568 100644 --- a/internal/proxy/task_search.go +++ b/internal/proxy/task_search.go @@ -265,9 +265,13 @@ func (t *searchTask) PreExecute(ctx context.Context) error { } if collectionInfo.collectionTTL != 0 { - physicalTime, _ := tsoutil.ParseTS(guaranteeTs) + physicalTime := tsoutil.PhysicalTime(t.GetBase().GetTimestamp()) expireTime := physicalTime.Add(-time.Duration(collectionInfo.collectionTTL)) t.CollectionTtlTimestamps = tsoutil.ComposeTSByTime(expireTime, 0) + // preventing overflow, abort ttl timestamp + if t.CollectionTtlTimestamps > t.GetBase().GetTimestamp() { + t.CollectionTtlTimestamps = 0 + } } t.resultBuf = typeutil.NewConcurrentSet[*internalpb.SearchResults]()