Package org.eclipse.rdf4j.sail.helpers
Class AbstractSail
- java.lang.Object
-
- org.eclipse.rdf4j.sail.helpers.AbstractSail
-
- All Implemented Interfaces:
Sail
- Direct Known Subclasses:
AbstractNotifyingSail,FedX,FedXConnection.SailBaseDefaultImpl
public abstract class AbstractSail extends Object implements Sail
An abstract Sail implementation that takes care of common sail tasks, including proper closing of active connections and a grace period for active connections during shutdown of the store.- Author:
- Herko ter Horst, jeen, Arjohn Kampman
-
-
Field Summary
Fields Modifier and Type Field Description protected longconnectionTimeOutConnection timeout on shutdown (in ms).protected static longDEFAULT_CONNECTION_TIMEOUTDefault connection timeout on shutdown: 20,000 milliseconds.protected static longDEFAULT_ITERATION_SYNC_THRESHOLDdefault value for the Iteration item sync thresholdprotected ReentrantReadWriteLockinitializationLockLock used to synchronize the initialization state of a sail.
-
Constructor Summary
Constructors Constructor Description AbstractSail()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidaddSupportedIsolationLevel(IsolationLevels level)Appends the providedIsolationLevelsto the SAIL's list of supported isolation levels.protected voidconnectionClosed(SailConnection connection)Signals to the store that the supplied connection has been closed; called byAbstractSailConnection.close().protected static booleandebugEnabled()SailConnectiongetConnection()Opens a connection on the Sail which can be used to query and update data.protected abstract SailConnectiongetConnectionInternal()Returns a store-specific SailConnection object.FilegetDataDir()Gets the Sail's data directory.IsolationLevelgetDefaultIsolationLevel()Retrieves the defaultIsolationLevellevel on which transactions in this Sail operate.QueryEvaluationModegetDefaultQueryEvaluationMode()longgetIterationCacheSyncThreshold()Retrieves the currently configured threshold for syncing query evaluation iteration caches to disk.List<IsolationLevel>getSupportedIsolationLevels()Retrieve theIsolationLevels supported by this SAIL, ordered by increasing complexity.voidinit()Initializes the Sail.protected voidinitializeInternal()Do store-specific operations to initialize the store.protected booleanisInitialized()Checks whether the Sail has been initialized.booleanisTrackResultSize()Returns the status of the result size tracking for the query plan.protected voidremoveSupportedIsolationLevel(IsolationLevel level)Removes all occurrences of the providedIsolationLevelsin the list of supported Isolation levels.voidsetConnectionTimeOut(long connectionTimeOut)Set connection timeout on shutdown (in ms).voidsetDataDir(File dataDir)Sets the data directory for the Sail.voidsetDefaultIsolationLevel(IsolationLevel defaultIsolationLevel)Sets the defaultIsolationLevelon which transactions in this Sail operate.voidsetDefaultQueryEvaluationMode(QueryEvaluationMode defaultQueryEvaluationMode)voidsetIterationCacheSyncThreshold(long iterationCacheSyncThreshold)Set the threshold for syncing query evaluation iteration caches to disk.protected voidsetSupportedIsolationLevels(List<IsolationLevel> supportedIsolationLevels)Sets the list of supportedIsolationLevelss for this SAIL.protected voidsetSupportedIsolationLevels(IsolationLevel... supportedIsolationLevels)Sets the list of supportedIsolationLevelss for this SAIL.voidsetTrackResultSize(boolean trackResultSize)Enable or disable results size tracking for the query plan.voidshutDown()Shuts down the Sail, giving it the opportunity to synchronize any stale data.protected abstract voidshutDownInternal()Do store-specific operations to ensure proper shutdown of the store.StringtoString()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.sail.Sail
getCollectionFactory, getValueFactory, isWritable
-
-
-
-
Field Detail
-
DEFAULT_CONNECTION_TIMEOUT
protected static final long DEFAULT_CONNECTION_TIMEOUT
Default connection timeout on shutdown: 20,000 milliseconds.- See Also:
- Constant Field Values
-
DEFAULT_ITERATION_SYNC_THRESHOLD
protected static final long DEFAULT_ITERATION_SYNC_THRESHOLD
default value for the Iteration item sync threshold- See Also:
- Constant Field Values
-
initializationLock
protected final ReentrantReadWriteLock initializationLock
Lock used to synchronize the initialization state of a sail.- write lock: initialize(), shutDown()
- read lock: getConnection()
-
connectionTimeOut
protected volatile long connectionTimeOut
Connection timeout on shutdown (in ms). Defaults toDEFAULT_CONNECTION_TIMEOUT.
-
-
Method Detail
-
debugEnabled
protected static boolean debugEnabled()
-
setConnectionTimeOut
public void setConnectionTimeOut(long connectionTimeOut)
Set connection timeout on shutdown (in ms).- Parameters:
connectionTimeOut- timeout (in ms)
-
setDataDir
public void setDataDir(File dataDir)
Description copied from interface:SailSets the data directory for the Sail. The Sail can use this directory for storage of data, parameters, etc. This directory must be set before the Sail isinitialized.- Specified by:
setDataDirin interfaceSail
-
getDataDir
public File getDataDir()
Description copied from interface:SailGets the Sail's data directory.- Specified by:
getDataDirin interfaceSail- See Also:
Sail.setDataDir(File)
-
isInitialized
protected boolean isInitialized()
Checks whether the Sail has been initialized. Sails are initialized frominitializationuntilshutdown.- Returns:
- true if the Sail has been initialized, false otherwise.
-
init
public void init() throws SailExceptionDescription copied from interface:SailInitializes the Sail. Care should be taken that required initialization parameters have been set before this method is called. Please consult the specific Sail implementation for information about the relevant parameters.- Specified by:
initin interfaceSail- Throws:
SailException- If the Sail could not be initialized.
-
initializeInternal
protected void initializeInternal() throws SailExceptionDo store-specific operations to initialize the store. The default implementation of this method does nothing.- Throws:
SailException
-
shutDown
public void shutDown() throws SailExceptionDescription copied from interface:SailShuts down the Sail, giving it the opportunity to synchronize any stale data. Care should be taken that all initialized Sails are being shut down before an application exits to avoid potential loss of data. Once shut down, a Sail can no longer be used until it is re-initialized.- Specified by:
shutDownin interfaceSail- Throws:
SailException- If the Sail object encountered an error or unexpected situation internally.
-
shutDownInternal
protected abstract void shutDownInternal() throws SailExceptionDo store-specific operations to ensure proper shutdown of the store.- Throws:
SailException
-
getConnection
public SailConnection getConnection() throws SailException
Description copied from interface:SailOpens a connection on the Sail which can be used to query and update data. Depending on how the implementation handles concurrent access, a call to this method might block when there is another open connection on this Sail.- Specified by:
getConnectionin interfaceSail- Throws:
SailException- If no transaction could be started, for example because the Sail is not writable.
-
getConnectionInternal
protected abstract SailConnection getConnectionInternal() throws SailException
Returns a store-specific SailConnection object.- Returns:
- A connection to the store.
- Throws:
SailException
-
connectionClosed
protected void connectionClosed(SailConnection connection)
Signals to the store that the supplied connection has been closed; called byAbstractSailConnection.close().- Parameters:
connection- The connection that has been closed.
-
addSupportedIsolationLevel
protected void addSupportedIsolationLevel(IsolationLevels level)
Appends the providedIsolationLevelsto the SAIL's list of supported isolation levels.- Parameters:
level- a supported IsolationLevel.
-
removeSupportedIsolationLevel
protected void removeSupportedIsolationLevel(IsolationLevel level)
Removes all occurrences of the providedIsolationLevelsin the list of supported Isolation levels.- Parameters:
level- the isolation level to remove.
-
setSupportedIsolationLevels
protected void setSupportedIsolationLevels(List<IsolationLevel> supportedIsolationLevels)
Sets the list of supportedIsolationLevelss for this SAIL. The list is expected to be ordered in increasing complexity.- Parameters:
supportedIsolationLevels- a list of supported isolation levels.
-
setSupportedIsolationLevels
protected void setSupportedIsolationLevels(IsolationLevel... supportedIsolationLevels)
Sets the list of supportedIsolationLevelss for this SAIL. The list is expected to be ordered in increasing complexity.- Parameters:
supportedIsolationLevels- a list of supported isolation levels.
-
getSupportedIsolationLevels
public List<IsolationLevel> getSupportedIsolationLevels()
Description copied from interface:SailRetrieve theIsolationLevels supported by this SAIL, ordered by increasing complexity.- Specified by:
getSupportedIsolationLevelsin interfaceSail- Returns:
- a non-empty List of supported Isolation Levels, in order of increasing complexity. Every SAIL supports at
least one
IsolationLevel.
-
getDefaultIsolationLevel
public IsolationLevel getDefaultIsolationLevel()
Description copied from interface:SailRetrieves the defaultIsolationLevellevel on which transactions in this Sail operate.- Specified by:
getDefaultIsolationLevelin interfaceSail- Returns:
- the
IsolationLevelthat will be used withSailConnection.begin(), for SAIL connections returned bySail.getConnection().
-
setDefaultIsolationLevel
public void setDefaultIsolationLevel(IsolationLevel defaultIsolationLevel)
Sets the defaultIsolationLevelon which transactions in this Sail operate.- Parameters:
defaultIsolationLevel- The defaultIsolationLevel to set.
-
getIterationCacheSyncThreshold
public long getIterationCacheSyncThreshold()
Retrieves the currently configured threshold for syncing query evaluation iteration caches to disk.- Returns:
- Returns the iterationCacheSyncThreshold.
-
setIterationCacheSyncThreshold
public void setIterationCacheSyncThreshold(long iterationCacheSyncThreshold)
Set the threshold for syncing query evaluation iteration caches to disk.- Parameters:
iterationCacheSyncThreshold- The iterationCacheSyncThreshold to set.
-
isTrackResultSize
public boolean isTrackResultSize()
Returns the status of the result size tracking for the query plan. Useful to determine which parts of a query plan generated the most data.- Returns:
- true if result size tracking is enabled.
-
setTrackResultSize
public void setTrackResultSize(boolean trackResultSize)
Enable or disable results size tracking for the query plan. Useful to determine which parts of a query plan generated the most data.- Parameters:
trackResultSize- true to enable tracking.
-
getDefaultQueryEvaluationMode
public QueryEvaluationMode getDefaultQueryEvaluationMode()
- Returns:
- the defaultQueryEvaluationMode
-
setDefaultQueryEvaluationMode
public void setDefaultQueryEvaluationMode(QueryEvaluationMode defaultQueryEvaluationMode)
- Parameters:
defaultQueryEvaluationMode- the defaultQueryEvaluationMode to set
-
-