@@ -2900,12 +2900,17 @@ public void nack(long sleep) {
2900
2900
"nack() can only be called on the consumer thread" );
2901
2901
Assert .isTrue (sleep >= 0 , "sleep cannot be negative" );
2902
2902
ListenerConsumer .this .nackSleep = sleep ;
2903
- ListenerConsumer .this .deferredOffsets .forEach ((part , recs ) -> recs .clear ());
2903
+ synchronized (ListenerConsumer .this ) {
2904
+ if (ListenerConsumer .this .offsetsInThisBatch != null ) {
2905
+ ListenerConsumer .this .offsetsInThisBatch .forEach ((part , recs ) -> recs .clear ());
2906
+ ListenerConsumer .this .deferredOffsets .forEach ((part , recs ) -> recs .clear ());
2907
+ }
2908
+ }
2904
2909
}
2905
2910
2906
2911
@ Override
2907
2912
public String toString () {
2908
- return "Acknowledgment for " + this .record ;
2913
+ return "Acknowledgment for " + ListenerUtils . recordToString ( this .record , true ) ;
2909
2914
}
2910
2915
2911
2916
}
@@ -2944,6 +2949,12 @@ public void nack(int index, long sleep) {
2944
2949
Assert .isTrue (index >= 0 && index < this .records .count (), "index out of bounds" );
2945
2950
ListenerConsumer .this .nackIndex = index ;
2946
2951
ListenerConsumer .this .nackSleep = sleep ;
2952
+ synchronized (ListenerConsumer .this ) {
2953
+ if (ListenerConsumer .this .offsetsInThisBatch != null ) {
2954
+ ListenerConsumer .this .offsetsInThisBatch .forEach ((part , recs ) -> recs .clear ());
2955
+ ListenerConsumer .this .deferredOffsets .forEach ((part , recs ) -> recs .clear ());
2956
+ }
2957
+ }
2947
2958
}
2948
2959
2949
2960
@ Override
0 commit comments