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
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
Modifier and TypeFieldDescriptionprotected long
Connection timeout on shutdown (in ms).protected static final long
Default connection timeout on shutdown: 20,000 milliseconds.protected static final long
default value for the Iteration item sync thresholdprotected final ReentrantReadWriteLock
Lock used to synchronize the initialization state of a sail. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
Appends the providedIsolationLevels
to the SAIL's list of supported isolation levels.protected void
connectionClosed
(SailConnection connection) Signals to the store that the supplied connection has been closed; called byAbstractSailConnection.close()
.protected static boolean
Opens a connection on the Sail which can be used to query and update data.protected abstract SailConnection
Returns a store-specific SailConnection object.Gets the Sail's data directory.Retrieves the defaultIsolationLevel
level on which transactions in this Sail operate.long
Retrieves the currently configured threshold for syncing query evaluation iteration caches to disk.Retrieve theIsolationLevel
s supported by this SAIL, ordered by increasing complexity.void
init()
Initializes the Sail.protected void
Do store-specific operations to initialize the store.protected boolean
Checks whether the Sail has been initialized.boolean
Returns the status of the result size tracking for the query plan.protected void
Removes all occurrences of the providedIsolationLevels
in the list of supported Isolation levels.void
setConnectionTimeOut
(long connectionTimeOut) Set connection timeout on shutdown (in ms).void
setDataDir
(File dataDir) Sets the data directory for the Sail.void
setDefaultIsolationLevel
(IsolationLevel defaultIsolationLevel) Sets the defaultIsolationLevel
on which transactions in this Sail operate.void
setDefaultQueryEvaluationMode
(QueryEvaluationMode defaultQueryEvaluationMode) void
setIterationCacheSyncThreshold
(long iterationCacheSyncThreshold) Set the threshold for syncing query evaluation iteration caches to disk.protected void
setSupportedIsolationLevels
(List<IsolationLevel> supportedIsolationLevels) Sets the list of supportedIsolationLevels
s for this SAIL.protected void
setSupportedIsolationLevels
(IsolationLevel... supportedIsolationLevels) Sets the list of supportedIsolationLevels
s for this SAIL.void
setTrackResultSize
(boolean trackResultSize) Enable or disable results size tracking for the query plan.void
shutDown()
Shuts down the Sail, giving it the opportunity to synchronize any stale data.protected abstract void
Do store-specific operations to ensure proper shutdown of the store.toString()
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 Details
-
DEFAULT_CONNECTION_TIMEOUT
protected static final long DEFAULT_CONNECTION_TIMEOUTDefault connection timeout on shutdown: 20,000 milliseconds.- See Also:
-
DEFAULT_ITERATION_SYNC_THRESHOLD
protected static final long DEFAULT_ITERATION_SYNC_THRESHOLDdefault value for the Iteration item sync threshold- See Also:
-
initializationLock
Lock used to synchronize the initialization state of a sail.- write lock: initialize(), shutDown()
- read lock: getConnection()
-
connectionTimeOut
protected volatile long connectionTimeOutConnection timeout on shutdown (in ms). Defaults toDEFAULT_CONNECTION_TIMEOUT
.
-
-
Constructor Details
-
AbstractSail
public AbstractSail()
-
-
Method Details
-
debugEnabled
protected static boolean debugEnabled() -
setConnectionTimeOut
public void setConnectionTimeOut(long connectionTimeOut) Set connection timeout on shutdown (in ms).- Parameters:
connectionTimeOut
- timeout (in ms)
-
setDataDir
Description copied from interface:Sail
Sets 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 isinvalid reference
initialized
- Specified by:
setDataDir
in interfaceSail
-
getDataDir
Description copied from interface:Sail
Gets the Sail's data directory.- Specified by:
getDataDir
in interfaceSail
- See Also:
-
toString
-
isInitialized
protected boolean isInitialized()Checks whether the Sail has been initialized. Sails are initialized frominitialization
untilshutdown
.- Returns:
- true if the Sail has been initialized, false otherwise.
-
init
Description copied from interface:Sail
Initializes 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:
init
in interfaceSail
- Throws:
SailException
- If the Sail could not be initialized.
-
initializeInternal
Do store-specific operations to initialize the store. The default implementation of this method does nothing.- Throws:
SailException
-
shutDown
Description copied from interface:Sail
Shuts 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:
shutDown
in interfaceSail
- Throws:
SailException
- If the Sail object encountered an error or unexpected situation internally.
-
shutDownInternal
Do store-specific operations to ensure proper shutdown of the store.- Throws:
SailException
-
getConnection
Description copied from interface:Sail
Opens 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:
getConnection
in interfaceSail
- Throws:
SailException
- If no transaction could be started, for example because the Sail is not writable.
-
getConnectionInternal
Returns a store-specific SailConnection object.- Returns:
- A connection to the store.
- Throws:
SailException
-
connectionClosed
Signals to the store that the supplied connection has been closed; called byAbstractSailConnection.close()
.- Parameters:
connection
- The connection that has been closed.
-
addSupportedIsolationLevel
Appends the providedIsolationLevels
to the SAIL's list of supported isolation levels.- Parameters:
level
- a supported IsolationLevel.
-
removeSupportedIsolationLevel
Removes all occurrences of the providedIsolationLevels
in the list of supported Isolation levels.- Parameters:
level
- the isolation level to remove.
-
setSupportedIsolationLevels
Sets the list of supportedIsolationLevels
s for this SAIL. The list is expected to be ordered in increasing complexity.- Parameters:
supportedIsolationLevels
- a list of supported isolation levels.
-
setSupportedIsolationLevels
Sets the list of supportedIsolationLevels
s for this SAIL. The list is expected to be ordered in increasing complexity.- Parameters:
supportedIsolationLevels
- a list of supported isolation levels.
-
getSupportedIsolationLevels
Description copied from interface:Sail
Retrieve theIsolationLevel
s supported by this SAIL, ordered by increasing complexity.- Specified by:
getSupportedIsolationLevels
in interfaceSail
- Returns:
- a non-empty List of supported Isolation Levels, in order of increasing complexity. Every SAIL supports at
least one
IsolationLevel
.
-
getDefaultIsolationLevel
Description copied from interface:Sail
Retrieves the defaultIsolationLevel
level on which transactions in this Sail operate.- Specified by:
getDefaultIsolationLevel
in interfaceSail
- Returns:
- the
IsolationLevel
that will be used withSailConnection.begin()
, for SAIL connections returned bySail.getConnection()
.
-
setDefaultIsolationLevel
Sets the defaultIsolationLevel
on 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
- Returns:
- the defaultQueryEvaluationMode
-
setDefaultQueryEvaluationMode
- Parameters:
defaultQueryEvaluationMode
- the defaultQueryEvaluationMode to set
-