Class DatabaseFactory.EnvironmentHolder
- java.lang.Object
-
- com.tangosol.io.bdb.DatabaseFactory.EnvironmentHolder
-
- All Implemented Interfaces:
Runnable
- Enclosing class:
- DatabaseFactory
protected static class DatabaseFactory.EnvironmentHolder extends Object implements Runnable
Holder for Berkeley DB Environment and its Databases.The Environment and Databases will be automatically flushed upon JVM shutdown or GC of the associated DatabaseFactory. For temporary Environments, the data will also be deleted. These operations are accomplished by registering this class as a JVM shutdown hook.
This logic is maintained externally from DatabaseFactory to allow for the Factory to be GC'd. If the Factory acted as the shutdown hook then it would never be GC'd as the Runtime would always hold a reference to it via the registered shutdown hook.
- Author:
- mf 2005.10.04
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
DatabaseFactory.EnvironmentHolder.DirectoryLock
Directory based lock.
-
Field Summary
Fields Modifier and Type Field Description static String
ENVIRONMENT_NAME_PREFIX
Prefix for temporary environment names.static String
JE_PROPERTY_PREFIX
Prefix for all Berkeley DB JE configuration settings.protected Collection
m_colRegisteredDbs
Databases to close prior to deleting the Environment.protected File
m_dirEnv
Environment directory.protected DatabaseFactory.EnvironmentHolder.DirectoryLock
m_dirLock
Lock held on the directory associated with the Environment.protected File
m_dirParent
Configuration setting for parent directory.protected com.sleepycat.je.Environment
m_env
Berkeley DB Environment for managing Databases.protected com.sleepycat.je.EnvironmentConfig
m_envConfig
Berkeley DB Environment Configuration.protected boolean
m_fTemporary
Flag indicating if this is a temporary environment.protected Thread
m_threadShutdownHook
Shutdown hook for closing environment.protected XmlElement
m_xmlConfig
Configuration.static String
SLEEPYCAT_JE_PROPERTY_PREFIX
Another prefix for Berkeley DB JE configuration settings.static String
SUB_DIR_NAME
Default directory name for berkeley db environments.static String
TEMP_FILE_NAME_PREFIX
Prefix for temporary file names.
-
Constructor Summary
Constructors Constructor Description EnvironmentHolder(BerkeleyDBBinaryStoreManager bdbManager)
Construct a EnvironmentHolder for a given Berkeley DB Environment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
closeEnvironment(boolean fDeregister)
Close an Environment.protected File
computeTmpDir()
compute the system's temp directory.protected void
configure(BerkeleyDBBinaryStoreManager bdbManager)
Configure the new Environment.protected void
createPersistentEnvironment()
Create a persistent Environment.protected void
createTemporaryEnvironment()
Create a temporary Environment.void
forgetDatabase(com.sleepycat.je.Database db)
Remove a database handle from the cleanup list.protected String
generateEnvironmentName()
Generate a potentially unique Environment name.File
getDirEnv()
Get the Environment Directory.DatabaseFactory.EnvironmentHolder.DirectoryLock
getDirLock()
Get the DirectoryLock held on a temporary Environment.File
getDirParent()
Get the Parent Directory.com.sleepycat.je.EnvironmentConfig
getEnvConfig()
Get the Environment Configuration.com.sleepycat.je.Environment
getEnvironment()
Get underlying Berkeley DB Environment.Collection
getRegisteredDbs()
Get the registered Databases.XmlElement
getXmlConfig()
Get the XML Configuration.boolean
isTemporary()
Return true if this is a temporary environment.void
run()
Shutdown hook runnable method.String
toString()
Return a human readable description of the EnvironmentHolder.void
trackDatabase(com.sleepycat.je.Database db)
Add a database handle to the tracking list.
-
-
-
Field Detail
-
SUB_DIR_NAME
public static final String SUB_DIR_NAME
Default directory name for berkeley db environments.
-
ENVIRONMENT_NAME_PREFIX
public static final String ENVIRONMENT_NAME_PREFIX
Prefix for temporary environment names.- See Also:
- Constant Field Values
-
TEMP_FILE_NAME_PREFIX
public static final String TEMP_FILE_NAME_PREFIX
Prefix for temporary file names.- See Also:
- Constant Field Values
-
JE_PROPERTY_PREFIX
public static final String JE_PROPERTY_PREFIX
Prefix for all Berkeley DB JE configuration settings.- See Also:
- Constant Field Values
-
SLEEPYCAT_JE_PROPERTY_PREFIX
public static final String SLEEPYCAT_JE_PROPERTY_PREFIX
Another prefix for Berkeley DB JE configuration settings.- See Also:
- Constant Field Values
-
m_xmlConfig
protected XmlElement m_xmlConfig
Configuration.
-
m_dirParent
protected File m_dirParent
Configuration setting for parent directory.
-
m_dirEnv
protected File m_dirEnv
Environment directory.
-
m_envConfig
protected com.sleepycat.je.EnvironmentConfig m_envConfig
Berkeley DB Environment Configuration.
-
m_env
protected com.sleepycat.je.Environment m_env
Berkeley DB Environment for managing Databases.
-
m_colRegisteredDbs
protected Collection m_colRegisteredDbs
Databases to close prior to deleting the Environment.
-
m_dirLock
protected DatabaseFactory.EnvironmentHolder.DirectoryLock m_dirLock
Lock held on the directory associated with the Environment.
-
m_fTemporary
protected boolean m_fTemporary
Flag indicating if this is a temporary environment.
-
m_threadShutdownHook
protected Thread m_threadShutdownHook
Shutdown hook for closing environment.
-
-
Constructor Detail
-
EnvironmentHolder
public EnvironmentHolder(BerkeleyDBBinaryStoreManager bdbManager) throws com.sleepycat.je.DatabaseException
Construct a EnvironmentHolder for a given Berkeley DB Environment.Berkeley DB Environments are bound to a single directory. Java File locking is used to ensure that only one JVM uses the Environment. The new environment will be created in a unique sub directory of the specified parent directory.
- Parameters:
bdbManager
- the BinaryStoreManager to create an environment for- Throws:
com.sleepycat.je.DatabaseException
- if the Berkeley DB Environment could not be created
-
-
Method Detail
-
toString
public String toString()
Return a human readable description of the EnvironmentHolder.
-
forgetDatabase
public void forgetDatabase(com.sleepycat.je.Database db)
Remove a database handle from the cleanup list.Databases which are closed externally may be removed from tracking.
- Parameters:
db
- the Database to remove from list
-
run
public void run()
Shutdown hook runnable method.This is responsible for cleaning up the databases and associated directories when the JVM exits.
-
closeEnvironment
public void closeEnvironment(boolean fDeregister)
Close an Environment.This includes closing the environment and databases, and if temporary deleting the associated files.
- Parameters:
fDeregister
- indicates if the shutdown hook should be deregistered
-
trackDatabase
public void trackDatabase(com.sleepycat.je.Database db)
Add a database handle to the tracking list.Databases for the environment must be tracked so that they may be closed prior to closing the environment.
- Parameters:
db
- the Database to add to the list
-
configure
protected void configure(BerkeleyDBBinaryStoreManager bdbManager)
Configure the new Environment.- Parameters:
bdbManager
- the BinaryStoreManager to create an environment for
-
computeTmpDir
protected File computeTmpDir()
compute the system's temp directory.- Returns:
- the system temp directory, or
null
if it could not be determined
-
createTemporaryEnvironment
protected void createTemporaryEnvironment() throws com.sleepycat.je.DatabaseException
Create a temporary Environment.- Throws:
com.sleepycat.je.DatabaseException
- if environment creation fails
-
createPersistentEnvironment
protected void createPersistentEnvironment() throws com.sleepycat.je.DatabaseException
Create a persistent Environment.- Throws:
com.sleepycat.je.DatabaseException
- if environment creation fails
-
generateEnvironmentName
protected String generateEnvironmentName()
Generate a potentially unique Environment name.- Returns:
- an environment name
-
getEnvironment
public com.sleepycat.je.Environment getEnvironment() throws com.sleepycat.je.DatabaseException
Get underlying Berkeley DB Environment.- Returns:
- the Berkeley DB Environment held by this EnvironmentHolder
- Throws:
com.sleepycat.je.DatabaseException
-
getXmlConfig
public XmlElement getXmlConfig()
Get the XML Configuration.- Returns:
- the XML Configuration for this Environments.
-
getDirParent
public File getDirParent()
Get the Parent Directory.- Returns:
- the Environment's parent directory
-
getDirEnv
public File getDirEnv()
Get the Environment Directory.- Returns:
- the Environment's directory
-
getEnvConfig
public com.sleepycat.je.EnvironmentConfig getEnvConfig()
Get the Environment Configuration.- Returns:
- the Environment's configuration
-
getRegisteredDbs
public Collection getRegisteredDbs()
Get the registered Databases.- Returns:
- a collection of open Databases from this Environment
-
getDirLock
public DatabaseFactory.EnvironmentHolder.DirectoryLock getDirLock()
Get the DirectoryLock held on a temporary Environment.- Returns:
- the DirectoryLock held on the temporary Environment
-
isTemporary
public boolean isTemporary()
Return true if this is a temporary environment.- Returns:
- true if this is a temporary environment
-
-