public class DbTree extends java.lang.Object implements Loggable
Modifier and Type | Class and Description |
---|---|
(package private) static interface |
DbTree.GetRepContext
Used by lockNameLN to get the rep context, which is needed for calling
checkReplicaWrite.
|
static class |
DbTree.TruncateDbResult |
Modifier and Type | Field and Description |
---|---|
static DatabaseId |
ID_DB_ID |
static DatabaseId |
NAME_DB_ID |
static long |
NEG_DB_ID_START |
Constructor and Description |
---|
DbTree()
Create a dbTree from the log.
|
DbTree(EnvironmentImpl env,
boolean replicationIntended,
boolean preserveVLSN)
Create a new dbTree for a new environment.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Release resources and update memory budget.
|
DatabaseImpl |
createDb(Locker locker,
java.lang.String databaseName,
DatabaseConfig dbConfig,
HandleLocker handleLocker)
Creates a new database object given a database name.
|
DatabaseImpl |
createInternalDb(Locker locker,
java.lang.String databaseName,
DatabaseConfig dbConfig)
Create a database for internal use.
|
DatabaseImpl |
createReplicaDb(Locker locker,
java.lang.String databaseName,
DatabaseConfig dbConfig,
NameLN replicatedLN,
ReplicationContext repContext)
Create a replicated database on this client node.
|
DatabaseImpl |
dbRemove(Locker locker,
java.lang.String databaseName,
DatabaseId checkId)
Stand alone and Master invocations.
|
DatabaseImpl |
dbRename(Locker locker,
java.lang.String databaseName,
java.lang.String newName)
Stand alone and Master invocations.
|
(package private) void |
deleteMapLN(DatabaseId id) |
DbTree.TruncateDbResult |
doTruncateDb(Locker locker,
java.lang.String databaseName,
boolean returnCount,
NameLN replicatedLN,
DbOpReplicationContext repContext)
To truncate, remove the database named by databaseName and
create a new database in its place.
|
void |
dump()
For debugging.
|
void |
dumpLog(java.lang.StringBuilder sb,
boolean verbose)
Write the object into the string buffer for log dumping.
|
(package private) java.lang.String |
dumpString(int nSpaces) |
DatabaseImpl |
getDb(DatabaseId dbId)
Get a database object based on an id only.
|
DatabaseImpl |
getDb(DatabaseId dbId,
long lockTimeout)
Get a database object based on an id only.
|
DatabaseImpl |
getDb(DatabaseId dbId,
long lockTimeout,
java.util.Map<DatabaseId,DatabaseImpl> dbCache)
Get a database object based on an id only, caching the id-db mapping in
the given map.
|
DatabaseImpl |
getDb(DatabaseId dbId,
long lockTimeout,
java.lang.String dbNameIfAvailable)
Get a database object based on an id only.
|
DatabaseImpl |
getDb(Locker nameLocker,
java.lang.String databaseName,
HandleLocker handleLocker)
Get a database object given a database name.
|
java.lang.String |
getDbName(DatabaseId id)
Return the database name for a given db.
|
java.util.List<java.lang.String> |
getDbNames() |
java.util.Map<DatabaseId,java.lang.String> |
getDbNamesAndIds() |
(package private) boolean |
getDupsConverted() |
int |
getHighestLevel() |
int |
getHighestLevel(DatabaseImpl dbImpl) |
DatabaseImpl |
getIdDatabaseImpl() |
java.util.List<java.lang.String> |
getInternalNoLookupDbNames()
Return a list of the names of internally used databases that
don't get looked up through the naming tree.
|
java.util.List<java.lang.String> |
getInternalNoRepDbNames()
Return a list of the names of internally used databases for all
environment types.
|
java.util.List<java.lang.String> |
getInternalRepDbNames()
Return a list of the names of internally used databases for replication
only.
|
long |
getLastLocalDbId()
The last allocated local and replicated db ids are used for ckpts.
|
long |
getLastReplicatedDbId() |
int |
getLogSize() |
long |
getTransactionId() |
(package private) long |
getTreeAdminMemory() |
(package private) void |
initExistingEnvironment(EnvironmentImpl eImpl)
Initialize the db tree during recovery, after instantiating the tree
from the log.
|
(package private) boolean |
isRepConverted() |
(package private) boolean |
isReplicated() |
static boolean |
isReservedDbName(java.lang.String name)
Returns true if the name is a reserved JE database name.
|
boolean |
logicalEquals(Loggable other) |
void |
modifyDbRoot(DatabaseImpl db)
Write the MapLN to disk.
|
void |
modifyDbRoot(DatabaseImpl db,
long ifBeforeLsn,
boolean mustExist)
Write a MapLN to the log in order to:
- propagate a root change
- save per-db utilization information
- save database config information.
|
void |
optionalModifyDbRoot(DatabaseImpl db)
Check deferred write settings before writing the MapLN.
|
void |
readFromLog(java.nio.ByteBuffer itemBuffer,
int entryVersion)
Initialize this object from the data in itemBuf.
|
void |
rebuildINListMapDb()
Rebuild the IN list after recovery.
|
void |
releaseDb(DatabaseImpl db)
Decrements the use count of the given DB, allowing it to be evicted if
the use count reaches zero.
|
void |
releaseDbs(java.util.Map<DatabaseId,DatabaseImpl> dbCache)
Calls releaseDb for all DBs in the given map of DatabaseId to
DatabaseImpl.
|
void |
removeReplicaDb(Locker locker,
java.lang.String databaseName,
DatabaseId checkId,
DbOpReplicationContext repContext)
Replica invocations.
|
DatabaseImpl |
renameReplicaDb(Locker locker,
java.lang.String databaseName,
java.lang.String newName,
NameLN replicatedLN,
DbOpReplicationContext repContext)
Replica invocations.
|
(package private) void |
setDupsConverted() |
(package private) void |
setIsRepConverted() |
(package private) void |
setIsReplicated() |
void |
setLastDbId(long lastReplicatedDbId,
long lastLocalDbId)
Initialize the db ids, from recovery.
|
java.lang.String |
toString() |
DbTree.TruncateDbResult |
truncate(Locker locker,
java.lang.String databaseName,
boolean returnCount) |
DbTree.TruncateDbResult |
truncateReplicaDb(Locker locker,
java.lang.String databaseName,
boolean returnCount,
NameLN replicatedLN,
DbOpReplicationContext repContext) |
static DbType |
typeForDbName(java.lang.String dbName)
Returns the DbType for a given DB name.
|
void |
updateFromReplay(DatabaseId replayDbId) |
void |
updateNameLN(Locker locker,
java.lang.String dbName,
DbOpReplicationContext repContext)
Update the NameLN for the DatabaseImpl when the DatabaseConfig changes.
|
boolean |
verify(VerifyConfig config,
java.io.PrintStream out) |
void |
writeToLog(java.nio.ByteBuffer logBuffer)
This log entry type is configured to perform marshaling (getLogSize and
writeToLog) under the write log mutex.
|
public static final DatabaseId ID_DB_ID
public static final DatabaseId NAME_DB_ID
public static final long NEG_DB_ID_START
public DbTree()
public DbTree(EnvironmentImpl env, boolean replicationIntended, boolean preserveVLSN) throws DatabaseException
DatabaseException
public static DbType typeForDbName(java.lang.String dbName)
public long getLastLocalDbId()
public long getLastReplicatedDbId()
public void setLastDbId(long lastReplicatedDbId, long lastLocalDbId)
public void updateFromReplay(DatabaseId replayDbId)
void initExistingEnvironment(EnvironmentImpl eImpl) throws DatabaseException
DatabaseException
public DatabaseImpl createDb(Locker locker, java.lang.String databaseName, DatabaseConfig dbConfig, HandleLocker handleLocker) throws DatabaseException
DatabaseException
public DatabaseImpl createInternalDb(Locker locker, java.lang.String databaseName, DatabaseConfig dbConfig) throws DatabaseException
DatabaseException
public DatabaseImpl createReplicaDb(Locker locker, java.lang.String databaseName, DatabaseConfig dbConfig, NameLN replicatedLN, ReplicationContext repContext) throws DatabaseException
DatabaseException
public void optionalModifyDbRoot(DatabaseImpl db) throws DatabaseException
db
- the database represented by this MapLNDatabaseException
public void modifyDbRoot(DatabaseImpl db) throws DatabaseException
db
- the database represented by this MapLNDatabaseException
public void modifyDbRoot(DatabaseImpl db, long ifBeforeLsn, boolean mustExist) throws DatabaseException
db
- the database whose root is held by this MapLNifBeforeLsn
- if argument is not NULL_LSN, only do the write if
this MapLN's current LSN is before isBeforeLSN.mustExist
- if true, throw DatabaseException if the DB does not
exist; if false, silently do nothing.DatabaseException
public void updateNameLN(Locker locker, java.lang.String dbName, DbOpReplicationContext repContext) throws LockConflictException
locker
- the locker used to update the NameLNdbName
- the name of the database whose corresponding NameLN needs
to be updatedrepContext
- information used while replaying a NameLNLogEntry on
the replicas, it's null on masterLockConflictException
public DatabaseImpl dbRename(Locker locker, java.lang.String databaseName, java.lang.String newName) throws DatabaseNotFoundException
public DatabaseImpl renameReplicaDb(Locker locker, java.lang.String databaseName, java.lang.String newName, NameLN replicatedLN, DbOpReplicationContext repContext) throws DatabaseNotFoundException
public DatabaseImpl dbRemove(Locker locker, java.lang.String databaseName, DatabaseId checkId) throws DatabaseNotFoundException
public void removeReplicaDb(Locker locker, java.lang.String databaseName, DatabaseId checkId, DbOpReplicationContext repContext) throws DatabaseNotFoundException
public DbTree.TruncateDbResult doTruncateDb(Locker locker, java.lang.String databaseName, boolean returnCount, NameLN replicatedLN, DbOpReplicationContext repContext) throws DatabaseNotFoundException
returnCount
- if true, must return the count of records in the
database, which can be an expensive option.DatabaseNotFoundException
- if the operation fails because the
given DB name is not found.public DbTree.TruncateDbResult truncate(Locker locker, java.lang.String databaseName, boolean returnCount) throws DatabaseNotFoundException
public DbTree.TruncateDbResult truncateReplicaDb(Locker locker, java.lang.String databaseName, boolean returnCount, NameLN replicatedLN, DbOpReplicationContext repContext) throws DatabaseNotFoundException
void deleteMapLN(DatabaseId id) throws DatabaseException
DatabaseException
public DatabaseImpl getDb(Locker nameLocker, java.lang.String databaseName, HandleLocker handleLocker) throws DatabaseException
nameLocker
- is used to access the NameLN. As always, a NullTxn
is used to access the MapLN.databaseName
- target databaseDatabaseException
public DatabaseImpl getDb(DatabaseId dbId) throws DatabaseException
DatabaseException
public DatabaseImpl getDb(DatabaseId dbId, long lockTimeout) throws DatabaseException
DatabaseException
public DatabaseImpl getDb(DatabaseId dbId, long lockTimeout, java.util.Map<DatabaseId,DatabaseImpl> dbCache) throws DatabaseException
DatabaseException
public DatabaseImpl getDb(DatabaseId dbId, long lockTimeout, java.lang.String dbNameIfAvailable) throws DatabaseException
DatabaseException
public void releaseDb(DatabaseImpl db)
public void releaseDbs(java.util.Map<DatabaseId,DatabaseImpl> dbCache)
public void rebuildINListMapDb() throws DatabaseException
DatabaseException
public boolean verify(VerifyConfig config, java.io.PrintStream out) throws DatabaseException
DatabaseException
public java.lang.String getDbName(DatabaseId id) throws DatabaseException
DatabaseException
public java.util.Map<DatabaseId,java.lang.String> getDbNamesAndIds() throws DatabaseException
DatabaseException
public java.util.List<java.lang.String> getDbNames() throws DatabaseException
DatabaseException
public java.util.List<java.lang.String> getInternalNoLookupDbNames()
public java.util.List<java.lang.String> getInternalNoRepDbNames()
public java.util.List<java.lang.String> getInternalRepDbNames()
public static boolean isReservedDbName(java.lang.String name)
public int getHighestLevel() throws DatabaseException
DatabaseException
public int getHighestLevel(DatabaseImpl dbImpl) throws DatabaseException
DatabaseException
boolean isReplicated()
void setIsReplicated()
boolean isRepConverted()
void setIsRepConverted()
public DatabaseImpl getIdDatabaseImpl()
boolean getDupsConverted()
void setDupsConverted()
public void close()
long getTreeAdminMemory()
public int getLogSize()
getLogSize
in interface Loggable
Loggable.getLogSize()
public void writeToLog(java.nio.ByteBuffer logBuffer)
writeToLog
in interface Loggable
logBuffer
- is the destination bufferLoggable.writeToLog(java.nio.ByteBuffer)
public void readFromLog(java.nio.ByteBuffer itemBuffer, int entryVersion)
Loggable
readFromLog
in interface Loggable
Loggable.readFromLog(java.nio.ByteBuffer, int)
public void dumpLog(java.lang.StringBuilder sb, boolean verbose)
Loggable
dumpLog
in interface Loggable
sb
- destination string bufferverbose
- if true, dump the full, verbose versionLoggable.dumpLog(java.lang.StringBuilder, boolean)
public long getTransactionId()
getTransactionId
in interface Loggable
Loggable.getTransactionId()
public boolean logicalEquals(Loggable other)
logicalEquals
in interface Loggable
Always return false, this item should never be compared.
java.lang.String dumpString(int nSpaces)
public java.lang.String toString()
toString
in class java.lang.Object
public void dump()
Copyright (c) 2004-2012 Oracle. All rights reserved.