Class Lease<T>


  • public class Lease<T>
    extends java.lang.Object
    Describes a time-based availability of a Lease. Purpose is to avoid accumulation of instances in AbstractInstanceRegistry as result of ungraceful shutdowns that is not uncommon in AWS environments. If a lease elapses without renewals, it will eventually expire consequently marking the associated Lease for immediate eviction - this is similar to an explicit cancellation except that there is no communication between the Lease and LeaseManager.
    • Constructor Summary

      Constructors 
      Constructor Description
      Lease​(T r, int durationInSecs)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void cancel()
      Cancels the lease by updating the eviction time.
      long getEvictionTimestamp()
      Gets the milliseconds since epoch when the lease was evicted.
      T getHolder()
      Returns the holder of the lease.
      long getLastRenewalTimestamp()
      Gets the milliseconds since epoch when the lease was last renewed.
      long getRegistrationTimestamp()
      Gets the milliseconds since epoch when the lease was registered.
      long getServiceUpTimestamp()
      Gets the milliseconds since epoch when the service for the lease was marked as up.
      boolean isExpired()
      Checks if the lease of a given InstanceInfo has expired or not.
      boolean isExpired​(long additionalLeaseMs)
      Checks if the lease of a given InstanceInfo has expired or not.
      void renew()
      Renew the lease, use renewal duration if it was specified by the associated Lease during registration, otherwise default duration is DEFAULT_DURATION_IN_SECS.
      void serviceUp()
      Mark the service as up.
      void setServiceUpTimestamp​(long serviceUpTimestamp)
      Set the leases service UP timestamp.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_DURATION_IN_SECS

        public static final int DEFAULT_DURATION_IN_SECS
        See Also:
        Constant Field Values
    • Constructor Detail

      • Lease

        public Lease​(T r,
                     int durationInSecs)
    • Method Detail

      • renew

        public void renew()
        Renew the lease, use renewal duration if it was specified by the associated Lease during registration, otherwise default duration is DEFAULT_DURATION_IN_SECS.
      • cancel

        public void cancel()
        Cancels the lease by updating the eviction time.
      • serviceUp

        public void serviceUp()
        Mark the service as up. This will only take affect the first time called, subsequent calls will be ignored.
      • setServiceUpTimestamp

        public void setServiceUpTimestamp​(long serviceUpTimestamp)
        Set the leases service UP timestamp.
      • isExpired

        public boolean isExpired()
        Checks if the lease of a given InstanceInfo has expired or not.
      • isExpired

        public boolean isExpired​(long additionalLeaseMs)
        Checks if the lease of a given InstanceInfo has expired or not. Note that due to renew() doing the 'wrong" thing and setting lastUpdateTimestamp to +duration more than what it should be, the expiry will actually be 2 * duration. This is a minor bug and should only affect instances that ungracefully shutdown. Due to possible wide ranging impact to existing usage, this will not be fixed.
        Parameters:
        additionalLeaseMs - any additional lease time to add to the lease evaluation in ms.
      • getRegistrationTimestamp

        public long getRegistrationTimestamp()
        Gets the milliseconds since epoch when the lease was registered.
        Returns:
        the milliseconds since epoch when the lease was registered.
      • getLastRenewalTimestamp

        public long getLastRenewalTimestamp()
        Gets the milliseconds since epoch when the lease was last renewed. Note that the value returned here is actually not the last lease renewal time but the renewal + duration.
        Returns:
        the milliseconds since epoch when the lease was last renewed.
      • getEvictionTimestamp

        public long getEvictionTimestamp()
        Gets the milliseconds since epoch when the lease was evicted.
        Returns:
        the milliseconds since epoch when the lease was evicted.
      • getServiceUpTimestamp

        public long getServiceUpTimestamp()
        Gets the milliseconds since epoch when the service for the lease was marked as up.
        Returns:
        the milliseconds since epoch when the service for the lease was marked as up.
      • getHolder

        public T getHolder()
        Returns the holder of the lease.