Skip to content

Commit fb01037

Browse files
committed
Lift synchronized
1 parent c6f8af7 commit fb01037

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

server/src/main/java/org/elasticsearch/index/seqno/ReplicationTracker.java

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -194,30 +194,26 @@ public RetentionLeases getRetentionLeases() {
194194
*
195195
* @return a tuple indicating whether or not any retention leases were expired, and the non-expired retention leases
196196
*/
197-
public Tuple<Boolean, RetentionLeases> getRetentionLeases(final boolean expireLeases) {
198-
final RetentionLeases nonExpiredRetentionLeases;
199-
synchronized (this) {
200-
if (expireLeases == false) {
201-
return Tuple.tuple(false, retentionLeases);
202-
}
203-
assert primaryMode;
204-
// the primary calculates the non-expired retention leases and syncs them to replicas
205-
final long currentTimeMillis = currentTimeMillisSupplier.getAsLong();
206-
final long retentionLeaseMillis = indexSettings.getRetentionLeaseMillis();
207-
final Map<Boolean, List<RetentionLease>> partitionByExpiration = retentionLeases
208-
.leases()
209-
.stream()
210-
.collect(Collectors.groupingBy(lease -> currentTimeMillis - lease.timestamp() > retentionLeaseMillis));
211-
if (partitionByExpiration.get(true) == null) {
212-
// early out as no retention leases have expired
213-
return Tuple.tuple(false, retentionLeases);
214-
}
215-
final Collection<RetentionLease> nonExpiredLeases =
216-
partitionByExpiration.get(false) != null ? partitionByExpiration.get(false) : Collections.emptyList();
217-
retentionLeases = new RetentionLeases(operationPrimaryTerm, retentionLeases.version() + 1, nonExpiredLeases);
218-
nonExpiredRetentionLeases = retentionLeases;
197+
public synchronized Tuple<Boolean, RetentionLeases> getRetentionLeases(final boolean expireLeases) {
198+
if (expireLeases == false) {
199+
return Tuple.tuple(false, retentionLeases);
200+
}
201+
assert primaryMode;
202+
// the primary calculates the non-expired retention leases and syncs them to replicas
203+
final long currentTimeMillis = currentTimeMillisSupplier.getAsLong();
204+
final long retentionLeaseMillis = indexSettings.getRetentionLeaseMillis();
205+
final Map<Boolean, List<RetentionLease>> partitionByExpiration = retentionLeases
206+
.leases()
207+
.stream()
208+
.collect(Collectors.groupingBy(lease -> currentTimeMillis - lease.timestamp() > retentionLeaseMillis));
209+
if (partitionByExpiration.get(true) == null) {
210+
// early out as no retention leases have expired
211+
return Tuple.tuple(false, retentionLeases);
219212
}
220-
return Tuple.tuple(true, nonExpiredRetentionLeases);
213+
final Collection<RetentionLease> nonExpiredLeases =
214+
partitionByExpiration.get(false) != null ? partitionByExpiration.get(false) : Collections.emptyList();
215+
retentionLeases = new RetentionLeases(operationPrimaryTerm, retentionLeases.version() + 1, nonExpiredLeases);
216+
return Tuple.tuple(true, retentionLeases);
221217
}
222218

223219
/**

0 commit comments

Comments
 (0)