Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jgroups.protocols
Class CENTRAL_LOCK

    java.lang.Object
      org.jgroups.stack.Protocol
          org.jgroups.protocols.Locking
              org.jgroups.protocols.CENTRAL_LOCK

All Implemented Interfaces:
  LockNotification

    public class CENTRAL_LOCK

extends Locking
implements LockNotification

Implementation of a locking protocol which acquires locks by contacting the coordinator.

Because the coordinator maintains all locks, no total order configuration is required.

CENTRAL_LOCK has all members send lock and unlock requests to a central coordinator. The coordinator has a queue for incoming requests, and grants locks based on order of arrival. To prevent all acquired locks from being forgotten when the coordinator crashes, setting num_backups lets the coordinator backup lock information to a number of backup nodes. Valid values for num_backups are 0 (no backup) to N-1, e.g. in a cluster of 4, we can have only 3 backup nodes.

Say we have a cluster of {A,B,C,D,E} and num_backups=1. A is the coordinator, and A updates all locks (and released locks) in B as well. When A crashes, everybody falls over to B for sending lock and unlock requests. B in turn copies all existing locks over to C and - when locks are acquired or released - forwards this information to C as well.

An alternative is also the `PEER_LOCK` protocol.

Since:
  2.12
Author:
  Bela Ban
See Also:
  `Locking`, `PEER_LOCK`

Nested Class Summary

Nested classes/interfaces inherited from class org.jgroups.protocols.Locking
`Locking.ClientCondition, Locking.ClientLock, Locking.LockingHeader, Locking.Request, Locking.ServerCondition, Locking.ServerLock, Locking.Type`

Field Summary
`protected java.util.List<Address>` | `backups`
`protected Address` | `coord`
`protected boolean` | `is_coord`
`protected int` | `num_backups`

Fields inherited from class org.jgroups.protocols.Locking
`bypass_bundling, client_locks, local_addr, lock_listeners, server_locks, view`

Fields inherited from class org.jgroups.stack.Protocol
`down_prot, ergonomics, id, log, name, stack, stats, up_prot`

Constructor Summary
`CENTRAL_LOCK()`

Method Summary
`void` | `awaited(java.lang.String lock_name, Owner owner)`
`void` | `awaiting(java.lang.String lock_name, Owner owner)`
`protected void` | `copyLocksTo(java.util.List<Address> new_joiners)`
`java.lang.String` | `getBackups()`
`Address` | `getCoord()`
`java.lang.String` | `getCoordinator()`
`int` | `getNumberOfBackups()`
`void` | `handleView(View view)`
`boolean` | `isCoord()`
`void` | `lockCreated(java.lang.String name)`
`void` | `lockDeleted(java.lang.String name)`
`void` | `locked(java.lang.String lock_name, Owner owner)`
`protected void` | `sendAwaitConditionRequest(java.lang.String lock_name, Owner owner)`
`protected void` | `sendCreateLockRequest(Address dest, java.lang.String lock_name, Owner owner)`
`protected void` | `sendDeleteAwaitConditionRequest(java.lang.String lock_name, Owner owner)`
`protected void` | `sendDeleteLockRequest(Address dest, java.lang.String lock_name)`
`protected void` | `sendGrantLockRequest(java.lang.String lock_name, Owner owner, long timeout, boolean is_trylock)`
`protected void` | `sendReleaseLockRequest(java.lang.String lock_name, Owner owner)`
`protected void` | `sendSignalConditionRequest(java.lang.String lock_name, boolean all)`
`void` | `setNumberOfBackups(int num_backups)`
`void` | `unlocked(java.lang.String lock_name, Owner owner)`
`protected void` | `updateBackups(Locking.Type type, java.lang.String lock_name, Owner owner)`

Methods inherited from class org.jgroups.protocols.Locking
`addLockListener, createLock, down, getAddress, getBypassBundling, getLock, getLock, getLock, getOwner, getView, handleAwaitRequest, handleCreateAwaitingRequest, handleCreateLockRequest, handleDeleteAwaitingRequest, handleDeleteAwaitRequest, handleDeleteLockRequest, handleLockDeniedResponse, handleLockGrantedResponse, handleLockRequest, handleSignalRequest, handleSignalResponse, notifyAwaited, notifyAwaiting, notifyLockCreated, notifyLockDeleted, notifyLocked, notifyUnlocked, printLocks, removeClientLock, removeLockListener, sendLockResponse, sendRequest, sendSignalResponse, setBypassBundling, unlockAll, up`

Methods inherited from class org.jgroups.stack.Protocol
`destroy, downThreadEnabled, dumpStats, enableStats, getConfigurableObjects, getDownProtocol, getId, getLevel, getName, getProperties, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getValue, init, isErgonomics, printStats, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStats, setDownProtocol, setErgonomics, setId, setLevel, setProperties, setPropertiesInternal, setProperty, setProtocolStack, setSocketFactory, setUpProtocol, setValue, setValues, start, statsEnabled, stop, upThreadEnabled`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### num_backups

    protected int num_backups

### coord

    protected Address coord

### is_coord

    protected boolean is_coord

### backups

    protected final java.util.List<Address> backups

Constructor Detail

### CENTRAL_LOCK

    public CENTRAL_LOCK()

Method Detail

### getCoord

    public Address getCoord()

### isCoord

    public boolean isCoord()

### getCoordinator

    public java.lang.String getCoordinator()

### getNumberOfBackups

    public int getNumberOfBackups()

### setNumberOfBackups

    public void setNumberOfBackups(int num_backups)

### getBackups

    public java.lang.String getBackups()

### sendGrantLockRequest

    protected void sendGrantLockRequest(java.lang.String lock_name,
                                        Owner owner,
                                        long timeout,
                                        boolean is_trylock)

  Specified by:
    `sendGrantLockRequest` in class `Locking`

### sendReleaseLockRequest

    protected void sendReleaseLockRequest(java.lang.String lock_name,
                                          Owner owner)

  Specified by:
    `sendReleaseLockRequest` in class `Locking`

### sendCreateLockRequest

    protected void sendCreateLockRequest(Address dest,
                                         java.lang.String lock_name,
                                         Owner owner)

### sendDeleteLockRequest

    protected void sendDeleteLockRequest(Address dest,
                                         java.lang.String lock_name)

### sendAwaitConditionRequest

    protected void sendAwaitConditionRequest(java.lang.String lock_name,
                                             Owner owner)

  Specified by:
    `sendAwaitConditionRequest` in class `Locking`

### sendSignalConditionRequest

    protected void sendSignalConditionRequest(java.lang.String lock_name,
                                              boolean all)

  Specified by:
    `sendSignalConditionRequest` in class `Locking`

### sendDeleteAwaitConditionRequest

    protected void sendDeleteAwaitConditionRequest(java.lang.String lock_name,
                                                   Owner owner)

  Specified by:
    `sendDeleteAwaitConditionRequest` in class `Locking`

### handleView

    public void handleView(View view)

  Overrides:
    `handleView` in class `Locking`

### lockCreated

    public void lockCreated(java.lang.String name)

  Specified by:
    `lockCreated` in interface `LockNotification`

### lockDeleted

    public void lockDeleted(java.lang.String name)

  Specified by:
    `lockDeleted` in interface `LockNotification`

### locked

    public void locked(java.lang.String lock_name,
                       Owner owner)

  Specified by:
    `locked` in interface `LockNotification`

### unlocked

    public void unlocked(java.lang.String lock_name,
                         Owner owner)

  Specified by:
    `unlocked` in interface `LockNotification`

### awaiting

    public void awaiting(java.lang.String lock_name,
                         Owner owner)

  Specified by:
    `awaiting` in interface `LockNotification`

### awaited

    public void awaited(java.lang.String lock_name,
                        Owner owner)

  Specified by:
    `awaited` in interface `LockNotification`

### updateBackups

    protected void updateBackups(Locking.Type type,
                                 java.lang.String lock_name,
                                 Owner owner)

### copyLocksTo

    protected void copyLocksTo(java.util.List<Address> new_joiners)

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.