Oracle Fusion Middleware
Oracle WebLogic Server API Reference
11g Release 1 (10.3.3)

Part Number E13941-03

weblogic.cluster.singleton
Class SimpleLeasingBasis

java.lang.Object
  extended by weblogic.cluster.singleton.SimpleLeasingBasis
All Implemented Interfaces:
LeasingBasis
Direct Known Subclasses:
ReplicatedLeasingBasis

public class SimpleLeasingBasis
extends Object
implements LeasingBasis

Dumb LeasingBasis that holds leases in-memory. Should only be used in conjunction with replication or for testing purposes.


Nested Class Summary
static class SimpleLeasingBasis.LeaseEntry
           
 
Constructor Summary
SimpleLeasingBasis()
           
SimpleLeasingBasis(Map leaseTable)
           
 
Method Summary
 boolean acquire(String leaseName, String owner, int leaseTimeout)
          Attempts to claim immediate ownership of a lease for this server.
 String[] findExpiredLeases(int gracePeriod)
          Returns a list of the servers that have consistently missed sending heartbeats in a timely manner, and failed to do so for longer than their grace period.
 String findOwner(String leaseName)
          Returns the identity of the server that currently owns the lease.
 String findPreviousOwner(String leaseName)
           
protected  Map getLeaseTable()
           
 void release(String leaseName, String owner)
          If the lease is owned by this server, attempts to give up ownership.
 int renewAllLeases(int healthCheckPeriod, String owner)
          Attempts to send a heartbeat to prove the health of the server.
 int renewLeases(String owner, Set leases, int healthCheckPeriod)
          Attempts to renew all the currently held leases.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleLeasingBasis

public SimpleLeasingBasis()

SimpleLeasingBasis

public SimpleLeasingBasis(Map leaseTable)
Method Detail

getLeaseTable

protected Map getLeaseTable()

acquire

public boolean acquire(String leaseName,
                       String owner,
                       int leaseTimeout)
Description copied from interface: LeasingBasis
Attempts to claim immediate ownership of a lease for this server. Returns true if the lease was successfully claimed or if it is already owned by the server. Returns false if the lease is owned by another server. Throws a LeasingException if there were infrastructure problems trying to get ownership. The leaseTimeout specifies how long the lease will last.

Specified by:
acquire in interface LeasingBasis
leaseTimeout - in milliseconds
Returns:
true if the lease was aquired

release

public void release(String leaseName,
                    String owner)
             throws IOException
Description copied from interface: LeasingBasis
If the lease is owned by this server, attempts to give up ownership. Otherwise does nothing. Throws a LeasingException if infrastructure problems make it impossible to access the lease.

Specified by:
release in interface LeasingBasis
Throws:
IOException

findOwner

public String findOwner(String leaseName)
Description copied from interface: LeasingBasis
Returns the identity of the server that currently owns the lease. Returns null if the lease is not owned. The lease is not considered to be owned if it has been claimed by a server that has missed heartbeats. This is a best-effort result in that the answer may change after the value is returned. Throws a LeasingException if infrastructure problems make it impossible to determine who owns the lease.

Specified by:
findOwner in interface LeasingBasis
Returns:
name of the owner

findPreviousOwner

public String findPreviousOwner(String leaseName)
Specified by:
findPreviousOwner in interface LeasingBasis

renewAllLeases

public int renewAllLeases(int healthCheckPeriod,
                          String owner)
                   throws MissedHeartbeatException
Description copied from interface: LeasingBasis
Attempts to send a heartbeat to prove the health of the server. Determines whether or not the heartbeat was sent in a timely manner. This determination should ideally be precise. If it is not, then it has to err on the safe side, i.e., it is better to falsely indicate that a Heartbeat was missed than to fail to indicate that a Heartbeat was missed. The heartbeat is sent for the next period even if the last one was missed. This minimizes the chances of damage while the system is signaling for corrective action. This is semantically equivalent to renewing all of the outstanding leases.

Specified by:
renewAllLeases in interface LeasingBasis
Parameters:
healthCheckPeriod - in milliseconds
Returns:
number of owned leases
Throws:
MissedHeartbeatException

renewLeases

public int renewLeases(String owner,
                       Set leases,
                       int healthCheckPeriod)
                throws MissedHeartbeatException
Description copied from interface: LeasingBasis
Attempts to renew all the currently held leases.

Specified by:
renewLeases in interface LeasingBasis
leases - to be renewed
healthCheckPeriod - in milliseconds
Returns:
number of leases renewed
Throws:
MissedHeartbeatException

findExpiredLeases

public String[] findExpiredLeases(int gracePeriod)
Description copied from interface: LeasingBasis
Returns a list of the servers that have consistently missed sending heartbeats in a timely manner, and failed to do so for longer than their grace period. INVARIANT: If a server stops heartbeating PERMANENTLY, then it will EVENTUALLY be returned in this list, although there is no guarantee as to how long that will take.

Specified by:
findExpiredLeases in interface LeasingBasis
Parameters:
gracePeriod - in milliseconds

Copyright 1996, 2010, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Oracle Fusion Middleware
Oracle WebLogic Server 10.3.3 API Reference
11g Release 1 (10.3.3)

Part Number E13941-03