Package org.rrd4j.core
Class RrdNioBackendFactory
- java.lang.Object
-
- org.rrd4j.core.RrdBackendFactory
-
- org.rrd4j.core.RrdFileBackendFactory
-
- org.rrd4j.core.RrdNioBackendFactory
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
@RrdBackendAnnotation(name="NIO", shouldValidateHeader=true) public class RrdNioBackendFactory extends RrdFileBackendFactory
Factory class which creates actualRrdNioBackend
objects. This is the default factory since 1.4.0 version.Managing the thread pool
Each RrdNioBackendFactory is optionally backed by a
RrdSyncThreadPool
, which it uses to sync the memory-mapped files to disk. In order to avoid having these threads live longer than they should, it is recommended that clients create and destroy thread pools at the appropriate time in their application's life time. Failure to manage thread pools appropriately may lead to the thread pool hanging around longer than necessary, which in turn may cause memory leaks.if sync period is negative, no sync thread will be launched
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_SYNC_CORE_POOL_SIZE
The core pool size for the sync executor.static int
DEFAULT_SYNC_PERIOD
Period in seconds between consecutive synchronizations when sync-mode is set to SYNC_BACKGROUND.-
Fields inherited from class org.rrd4j.core.RrdBackendFactory
cachingAllowed, DEFAULTFACTORY, name, scheme, validateHeader
-
-
Constructor Summary
Constructors Constructor Description RrdNioBackendFactory()
Creates a new RrdNioBackendFactory with default settings.RrdNioBackendFactory(int syncPeriod)
Creates a new RrdNioBackendFactory, using a defaultRrdSyncThreadPool
.RrdNioBackendFactory(int syncPeriod, int syncPoolSize)
Creates a new RrdNioBackendFactory.RrdNioBackendFactory(int syncPeriod, ScheduledExecutorService syncThreadPool)
Creates a new RrdNioBackendFactory.RrdNioBackendFactory(int syncPeriod, RrdSyncThreadPool syncThreadPool)
Creates a new RrdNioBackendFactory.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
close()
A generic close handle, default implementation does nothing.static int
getSyncPeriod()
Returns time between two consecutive background synchronizations.static int
getSyncPoolSize()
Returns the number of synchronizing threads.RrdSyncThreadPool
getSyncThreadPool()
protected RrdBackend
open(String path, boolean readOnly)
Creates RrdNioBackend object for the given file path.static void
setSyncPeriod(int syncPeriod)
Sets time between consecutive background synchronizations.static void
setSyncPoolSize(int syncPoolSize)
Sets the number of synchronizing threads.void
setSyncThreadPool(ScheduledExecutorService syncThreadPool)
Deprecated.Create a custom instance insteadvoid
setSyncThreadPool(RrdSyncThreadPool syncThreadPool)
Deprecated.Create a custom instance instead-
Methods inherited from class org.rrd4j.core.RrdFileBackendFactory
canStore, exists, getCanonicalUri, getPath, getUri
-
Methods inherited from class org.rrd4j.core.RrdBackendFactory
addActiveFactories, addFactories, buildGenericUri, checkClosing, exists, findFactory, getActiveFactories, getBackend, getBackend, getDefaultFactory, getFactory, getName, getRootUri, getScheme, registerAndSetAsDefaultFactory, registerFactory, resolve, setActiveFactories, setDefaultFactory, shouldValidateHeader, shouldValidateHeader
-
-
-
-
Field Detail
-
DEFAULT_SYNC_PERIOD
public static final int DEFAULT_SYNC_PERIOD
Period in seconds between consecutive synchronizations when sync-mode is set to SYNC_BACKGROUND. By default in-memory cache will be transferred to the disc every 300 seconds (5 minutes). Default value can be changed viasetSyncPeriod(int)
method.- See Also:
- Constant Field Values
-
DEFAULT_SYNC_CORE_POOL_SIZE
public static final int DEFAULT_SYNC_CORE_POOL_SIZE
The core pool size for the sync executor. Defaults to 6.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
RrdNioBackendFactory
public RrdNioBackendFactory()
Creates a new RrdNioBackendFactory with default settings.
-
RrdNioBackendFactory
public RrdNioBackendFactory(int syncPeriod)
Creates a new RrdNioBackendFactory, using a defaultRrdSyncThreadPool
.- Parameters:
syncPeriod
- the sync period, in seconds. If negative or 0, sync threads are disabled.
-
RrdNioBackendFactory
public RrdNioBackendFactory(int syncPeriod, int syncPoolSize)
Creates a new RrdNioBackendFactory.- Parameters:
syncPeriod
- the sync period, in seconds.syncPoolSize
- The number of threads to use to sync the mapped file to disk, if negative or 0, sync threads are disabled.
-
RrdNioBackendFactory
public RrdNioBackendFactory(int syncPeriod, ScheduledExecutorService syncThreadPool)
Creates a new RrdNioBackendFactory.- Parameters:
syncPeriod
- the sync period, in seconds.syncThreadPool
- If null, disable background sync threads
-
RrdNioBackendFactory
public RrdNioBackendFactory(int syncPeriod, RrdSyncThreadPool syncThreadPool)
Creates a new RrdNioBackendFactory.- Parameters:
syncPeriod
- the sync period, in seconds.syncThreadPool
- If null, disable background sync threads
-
-
Method Detail
-
getSyncPeriod
public static int getSyncPeriod()
Returns time between two consecutive background synchronizations. If not changed viasetSyncPeriod(int)
method call, defaults toDEFAULT_SYNC_PERIOD
. SeesetSyncPeriod(int)
for more information.- Returns:
- Time in seconds between consecutive background synchronizations.
-
setSyncPeriod
public static void setSyncPeriod(int syncPeriod)
Sets time between consecutive background synchronizations. If negative, it will disabling syncing for all NIO backend factory.- Parameters:
syncPeriod
- Time in seconds between consecutive background synchronizations.
-
getSyncPoolSize
public static int getSyncPoolSize()
Returns the number of synchronizing threads. If not changed viasetSyncPoolSize(int)
method call, defaults toDEFAULT_SYNC_CORE_POOL_SIZE
. SeesetSyncPoolSize(int)
for more information.- Returns:
- Number of synchronizing threads.
-
setSyncPoolSize
public static void setSyncPoolSize(int syncPoolSize)
Sets the number of synchronizing threads. It must be set before the first use of this factory. It will not have any effect afterward.- Parameters:
syncPoolSize
- Number of synchronizing threads.
-
setSyncThreadPool
@Deprecated public void setSyncThreadPool(RrdSyncThreadPool syncThreadPool)
Deprecated.Create a custom instance insteadSetter for the field
syncThreadPool
.- Parameters:
syncThreadPool
- the RrdSyncThreadPool to use to sync the memory-mapped files.
-
setSyncThreadPool
@Deprecated public void setSyncThreadPool(ScheduledExecutorService syncThreadPool)
Deprecated.Create a custom instance insteadSetter for the field
syncThreadPool
.- Parameters:
syncThreadPool
- the ScheduledExecutorService that will back the RrdSyncThreadPool used to sync the memory-mapped files.
-
open
protected RrdBackend open(String path, boolean readOnly) throws IOException
Creates RrdNioBackend object for the given file path.- Specified by:
open
in classRrdBackendFactory
- Throws:
IOException
-
getSyncThreadPool
public RrdSyncThreadPool getSyncThreadPool()
- Returns:
- The
RrdSyncThreadPool
or null if syncing is disabled
-
close
public void close() throws IOException
Description copied from class:RrdBackendFactory
A generic close handle, default implementation does nothing.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classRrdBackendFactory
- Throws:
IOException
- if the close fails
-
-