@@ -743,6 +743,9 @@ func (r *RedisServer) resolveListMeta(ctx context.Context, key []byte, readTS ui
743743 return d .LenDelta , errors .WithStack (unmarshalErr )
744744 })
745745 if err != nil {
746+ if errors .Is (err , ErrDeltaScanTruncated ) {
747+ r .triggerUrgentCompaction ("list" , key )
748+ }
746749 return store.ListMeta {}, false , err
747750 }
748751 baseMeta .Len += lenSum
@@ -798,7 +801,7 @@ func (r *RedisServer) resolveCollectionLen(
798801
799802// resolveHashMeta aggregates the base hash metadata with all uncompacted Delta keys.
800803func (r * RedisServer ) resolveHashMeta (ctx context.Context , key []byte , readTS uint64 ) (int64 , bool , error ) {
801- return r .resolveCollectionLen (
804+ n , exists , err := r .resolveCollectionLen (
802805 ctx , key , readTS ,
803806 store .HashMetaKey (key ),
804807 store .HashMetaDeltaScanPrefix (key ),
@@ -812,11 +815,15 @@ func (r *RedisServer) resolveHashMeta(ctx context.Context, key []byte, readTS ui
812815 },
813816 "resolveHashMeta: clamping negative Len to 0" ,
814817 )
818+ if errors .Is (err , ErrDeltaScanTruncated ) {
819+ r .triggerUrgentCompaction ("hash" , key )
820+ }
821+ return n , exists , err
815822}
816823
817824// resolveSetMeta aggregates the base set metadata with all uncompacted Delta keys.
818825func (r * RedisServer ) resolveSetMeta (ctx context.Context , key []byte , readTS uint64 ) (int64 , bool , error ) {
819- return r .resolveCollectionLen (
826+ n , exists , err := r .resolveCollectionLen (
820827 ctx , key , readTS ,
821828 store .SetMetaKey (key ),
822829 store .SetMetaDeltaScanPrefix (key ),
@@ -830,11 +837,15 @@ func (r *RedisServer) resolveSetMeta(ctx context.Context, key []byte, readTS uin
830837 },
831838 "resolveSetMeta: clamping negative Len to 0" ,
832839 )
840+ if errors .Is (err , ErrDeltaScanTruncated ) {
841+ r .triggerUrgentCompaction ("set" , key )
842+ }
843+ return n , exists , err
833844}
834845
835846// resolveZSetMeta aggregates the base sorted set metadata with all uncompacted Delta keys.
836847func (r * RedisServer ) resolveZSetMeta (ctx context.Context , key []byte , readTS uint64 ) (int64 , bool , error ) {
837- return r .resolveCollectionLen (
848+ n , exists , err := r .resolveCollectionLen (
838849 ctx , key , readTS ,
839850 store .ZSetMetaKey (key ),
840851 store .ZSetMetaDeltaScanPrefix (key ),
@@ -848,4 +859,8 @@ func (r *RedisServer) resolveZSetMeta(ctx context.Context, key []byte, readTS ui
848859 },
849860 "resolveZSetMeta: clamping negative Len to 0" ,
850861 )
862+ if errors .Is (err , ErrDeltaScanTruncated ) {
863+ r .triggerUrgentCompaction ("zset" , key )
864+ }
865+ return n , exists , err
851866}
0 commit comments