Concurrency Control: Lockserver (LS)

Infinite Graph provides concurrent multiuser access to data. To ensure
that data remains consistent, database access is controlled through
locks granted by a lock server.

The lock server manages concurrent access to persistent objects by
granting or refusing locks to requesting transactions. When a
transaction requests data from a federated database, Infinite Graph
locates the lock server that services the federated database and then
contacts the lock server to obtain a lock on the requested data. The
lock is granted only if it is compatible with existing locks.
Obtaining a lock prevents multiple concurrent transactions from
performing incompatible operations on the same data, whether these
transactions belong to different applications or to different threads
of the same application.

Lock-Server Host:

A lock server is identified by its location—that is, by the
workstation, or lock-server host, on which it is running. Every
federated database stores the name of a lock-server host as a
property. This is set in the Infinite Graph properties files.

Properties file excerpt:

# graph database properties file

# Graph Database Instance
InfiniteGraph.Test.InstanceId=3353
InfiniteGraph.Test.BootFilePath=.
InfiniteGraph.Test.LockServerHost=myLockServerHostName

Port:

The LS server listens to requests on port 6780. If you are using a
firewall, please provide an exception so that port 6780 is open to
ensure remote systems can communicate with the LS.

Command Line Tools

There are three command line tools associated with the LS.  They are
listed below.  They can be used both on Windows and Unix operating
systems:

To start the Lockserver service:

  • oolockserver

To stop the AMS service:

  • ookillls

To check if the AMS is already running:

  • oocheckls

To listing current locks:

  • oolockmon bootfileName

The oocheckls can be run remotely as well.  For example if you want to
check to see if a Lockserver is running on a remote host called
myserver.test.com, simply run it with a hostname as an argument:

Logging and Environment Variables

On Windows, the LS logs messages to the Application Log which can be
viewed with the Windows Event Viewer.

On Unix, the default location for the log is /usr/spool/obj.  You can
use the OO_SERVER_LOG_DIR environment variable to change this
location.  For example, to change the log directory to
/var/log/infinitegraph in bash:

  • export OO_SERVER_LOG_DIR=/var/log/infinitegraph

Windows Service

On Windows operating systems, the InfiniteGraph installer will add a
lockserver service, so that the lockserver will start automatically at
Windows startup.  The name of the service is “ools-13″.

One Trackback/Pingback

  1. […] am referencing the InfiniteGraph jars as an external filesystem dependency. Make sure you have the distributed lockserver running in advance and source the IGConfg script. If you are new to Maven, it might be easier to […]

Post a Comment

Required fields are marked *
*
*

%d bloggers like this: