File tree Expand file tree Collapse file tree 2 files changed +6
-4
lines changed
ratis-common/src/main/java/org/apache/ratis/util
ratis-server/src/main/java/org/apache/ratis/server/leader Expand file tree Collapse file tree 2 files changed +6
-4
lines changed Original file line number Diff line number Diff line change @@ -271,7 +271,7 @@ static class TraceInfo {
271271 }
272272
273273 static <T > int findFirstUnequalFromTail (T [] current , T [] previous ) {
274- int c = current .length - 1 ;
274+ int c = current .length == 0 ? 0 : current . length - 1 ;
275275 for (int p = previous .length - 1 ; p >= 0 ; p --, c --) {
276276 if (!previous [p ].equals (current [c ])) {
277277 return c ;
Original file line number Diff line number Diff line change @@ -261,7 +261,7 @@ protected ReferenceCountedObject<AppendEntriesRequestProto> nextAppendEntriesReq
261261 final long halfMs = heartbeatWaitTimeMs /2 ;
262262 final Map <Long , ReferenceCountedObject <EntryWithData >> offered = new HashMap <>();
263263 for (long next = followerNext ; leaderNext > next && getHeartbeatWaitTimeMs () - halfMs > 0 ; next ++) {
264- ReferenceCountedObject <EntryWithData > entryWithData = null ;
264+ final ReferenceCountedObject <EntryWithData > entryWithData ;
265265 try {
266266 entryWithData = getRaftLog ().retainEntryWithData (next );
267267 if (!buffer .offer (entryWithData .get ())) {
@@ -270,9 +270,11 @@ protected ReferenceCountedObject<AppendEntriesRequestProto> nextAppendEntriesReq
270270 }
271271 offered .put (next , entryWithData );
272272 } catch (Exception e ){
273- if ( entryWithData != null ) {
274- entryWithData .release ();
273+ for ( ReferenceCountedObject < EntryWithData > ref : offered . values () ) {
274+ ref .release ();
275275 }
276+ offered .clear ();
277+ throw e ;
276278 }
277279 }
278280 if (buffer .isEmpty ()) {
You can’t perform that action at this time.
0 commit comments