@@ -85,7 +85,7 @@ void assignResult(TaskAssignmentResult result) {
85
85
};
86
86
private final ActiveVmGroups activeVmGroups ;
87
87
private String activeVmGroupAttributeName =null ;
88
- private final List <String > unknownLeaseIdsToExpire = new ArrayList <>();
88
+ private final BlockingQueue <String > unknownLeaseIdsToExpire = new LinkedBlockingQueue <>();
89
89
90
90
AssignableVMs (TaskTracker taskTracker , Action1 <VirtualMachineLease > leaseRejectAction ,
91
91
long leaseOfferExpirySecs , int maxOffersToReject ,
@@ -181,7 +181,8 @@ private int addLeases(List<VirtualMachineLease> leases) {
181
181
void expireLease (String leaseId ) {
182
182
final String hostname = leaseIdToHostnameMap .get (leaseId );
183
183
if (hostname ==null ) {
184
- unknownLeaseIdsToExpire .add (leaseId );
184
+ logger .debug ("Received expiry request for an unknown lease: {}" , leaseId );
185
+ unknownLeaseIdsToExpire .offer (leaseId );
185
186
return ;
186
187
}
187
188
internalExpireLease (leaseId , hostname );
@@ -253,13 +254,12 @@ private boolean isInActiveVmGroup(String attrValue) {
253
254
}
254
255
255
256
private void expireAnyUnknownLeaseIds () {
256
- if (!unknownLeaseIdsToExpire .isEmpty ()) {
257
- for (String leaseId : unknownLeaseIdsToExpire ) {
258
- final String hostname = leaseIdToHostnameMap .get (leaseId );
259
- if (hostname !=null )
260
- internalExpireLease (leaseId , hostname );
261
- }
262
- unknownLeaseIdsToExpire .clear ();
257
+ List <String > unknownExpiredLeases = new ArrayList <>();
258
+ unknownLeaseIdsToExpire .drainTo (unknownExpiredLeases );
259
+ for (String leaseId : unknownExpiredLeases ) {
260
+ final String hostname = leaseIdToHostnameMap .get (leaseId );
261
+ if (hostname !=null )
262
+ internalExpireLease (leaseId , hostname );
263
263
}
264
264
}
265
265
0 commit comments