private static class LockTableUpdater.UpdateWorker extends java.lang.Object implements LockTableUpdaterStatMBean
Note that some analysis of the lock event has to occur in the user session in which the lock event occurred, but as much of the work as possible is deferred until the separate thread processes the events.
Modifier and Type | Class and Description |
---|---|
static class |
LockTableUpdater.UpdateWorker.Empty
Dummy empty class to be used as the super class for proxy.
|
private static class |
LockTableUpdater.UpdateWorker.Handler
Invocation handler which delegates calls to the
LockTableUpdater.MinimalLock proxy methods to the
backing DMO instance. |
private class |
LockTableUpdater.UpdateWorker.LockRecId
Lock record id
|
private class |
LockTableUpdater.UpdateWorker.MinimalLockImpl
In-memory holder for the _Lock VST data
|
Modifier and Type | Field and Description |
---|---|
private static int |
CHAIN_OFFSET
The offset between a table and its surrogate chain id.
|
private java.util.concurrent.atomic.AtomicLong |
databaseVersion
Meta table vesrion
|
private static java.util.concurrent.atomic.AtomicLong |
deletesFromVST
Number of VST records deleted not in batch.
|
private static java.lang.Class<? extends Record> |
dmoClass
MetaLock DMO implementation class
|
private java.util.concurrent.Executor |
executor
Executor for operations with VST
|
private java.util.concurrent.locks.ReentrantReadWriteLock |
guard
Locks' map guard
|
private LockTableUpdater.UpdateWorker.Handler |
handler
Invocation handler which maps proxy method calls to underlying DMO methods
|
private static java.lang.String |
LOCK_TABLE
Metadata lock table name
|
private static java.util.concurrent.atomic.AtomicLong |
lockEvents
Number of processed lock events.
|
private java.util.concurrent.ConcurrentMap<LockTableUpdater.UpdateWorker.LockRecId,LockTableUpdater.UpdateWorker.MinimalLockImpl> |
locks
Locks' map
|
private java.util.concurrent.atomic.AtomicLong |
mapVersion
Map version
|
private static java.util.Map<java.lang.reflect.Method,java.lang.reflect.Method> |
methodMap
Map of
MinimalLock methods to MetaLockImpl methods |
private java.util.concurrent.atomic.AtomicLong |
nextPrimaryKey
Next available primary key for a new lock metadata record
|
private static java.util.concurrent.atomic.AtomicLong |
persistCalls
Number of 'persist' calls
|
private static java.util.concurrent.atomic.AtomicLong |
persistedLocks
Number of records in VST.
|
private static java.util.concurrent.atomic.AtomicLong |
persistedLocks_
Temporary holder of the number of records in VST - before commit/rollback.
|
private Persistence |
persistence
Persistence helper object for metadata database
|
private Database |
primary
database name
|
private LockTableUpdater.MinimalLock |
proxy
Proxy object for the current metadata lock DMO
|
private static java.lang.String |
SQL_LOCK
SQL query to find a lock record by PK
|
Constructor and Description |
---|
UpdateWorker(Persistence persistence,
Database primary)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
addEvent(RecordLockEvent event)
Add a record lock event to the queue, locking out other write and read operations until
the queue is updated.
|
void |
doPersist()
Persist locks to the meta database
|
void |
flush()
Force 'persist' call
|
long |
getActiveLocks()
Get number of active locks
|
long |
getDeletesFromVST()
Get number of VST records deleted not in batch.
|
private java.lang.Integer |
getFileNum(RecordLockEvent event)
Get the file number associated with a lock event.
|
long |
getLockEvents()
Get number of processed lock events.
|
long |
getLockRecordID(RecordLockEvent event)
Extract an integral lock record ID from the lock event.
|
long |
getPersistCalls()
Get number of 'persist' calls.
|
long |
getPersistedLocks()
Get number of locks in VST.
|
void |
persist()
Submit persisting locks task to the meta database and wait for end
|
private static final java.lang.String LOCK_TABLE
private static final java.lang.String SQL_LOCK
private static final int CHAIN_OFFSET
private static final java.lang.Class<? extends Record> dmoClass
private static final java.util.Map<java.lang.reflect.Method,java.lang.reflect.Method> methodMap
MinimalLock
methods to MetaLockImpl
methodsprivate static final java.util.concurrent.atomic.AtomicLong lockEvents
private static final java.util.concurrent.atomic.AtomicLong persistedLocks
private static final java.util.concurrent.atomic.AtomicLong persistedLocks_
private static final java.util.concurrent.atomic.AtomicLong deletesFromVST
private static final java.util.concurrent.atomic.AtomicLong persistCalls
private final java.util.concurrent.Executor executor
private final java.util.concurrent.ConcurrentMap<LockTableUpdater.UpdateWorker.LockRecId,LockTableUpdater.UpdateWorker.MinimalLockImpl> locks
private final java.util.concurrent.atomic.AtomicLong mapVersion
private final java.util.concurrent.atomic.AtomicLong databaseVersion
private final java.util.concurrent.locks.ReentrantReadWriteLock guard
private final Database primary
private final Persistence persistence
private final LockTableUpdater.MinimalLock proxy
private final LockTableUpdater.UpdateWorker.Handler handler
private java.util.concurrent.atomic.AtomicLong nextPrimaryKey
UpdateWorker(Persistence persistence, Database primary)
persistence
- Persistence helper object for metadata database.public void persist()
public void doPersist()
void addEvent(RecordLockEvent event)
event
- Record lock event to be added.public long getLockRecordID(RecordLockEvent event)
event
- A record lock event.private java.lang.Integer getFileNum(RecordLockEvent event)
event
- Record lock event.public long getLockEvents()
getLockEvents
in interface LockTableUpdaterStatMBean
public long getActiveLocks()
getActiveLocks
in interface LockTableUpdaterStatMBean
public long getPersistedLocks()
getPersistedLocks
in interface LockTableUpdaterStatMBean
public long getDeletesFromVST()
getDeletesFromVST
in interface LockTableUpdaterStatMBean
public long getPersistCalls()
getPersistCalls
in interface LockTableUpdaterStatMBean
public void flush()
flush
in interface LockTableUpdaterStatMBean