mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Fix for AR-501. Added shutdown flag to the file state expiry daemon thread with shutdown request called during
the closing of the filesystem context. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2943 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -226,4 +226,24 @@ public class ContentContext extends DiskDeviceContext
|
|||||||
{
|
{
|
||||||
m_urlFileName = urlFileName;
|
m_urlFileName = urlFileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the filesystem context
|
||||||
|
*/
|
||||||
|
public void CloseContext() {
|
||||||
|
|
||||||
|
// Check if file states are enabled
|
||||||
|
|
||||||
|
if ( hasStateTable())
|
||||||
|
{
|
||||||
|
// Shutdown the file state checker thread
|
||||||
|
|
||||||
|
getStateTable().shutdownRequest();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call the base class
|
||||||
|
|
||||||
|
super.CloseContext();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -50,6 +50,14 @@ public class FileStateTable implements Runnable
|
|||||||
|
|
||||||
private long m_cacheTimer = 2 * 60000L; // 2 minutes default
|
private long m_cacheTimer = 2 * 60000L; // 2 minutes default
|
||||||
|
|
||||||
|
// File state checker thread
|
||||||
|
|
||||||
|
private Thread m_thread;
|
||||||
|
|
||||||
|
// Shutdown request flag
|
||||||
|
|
||||||
|
private boolean m_shutdown;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor
|
* Class constructor
|
||||||
*/
|
*/
|
||||||
@@ -59,10 +67,10 @@ public class FileStateTable implements Runnable
|
|||||||
|
|
||||||
// Start the expired file state checker thread
|
// Start the expired file state checker thread
|
||||||
|
|
||||||
Thread th = new Thread(this);
|
m_thread = new Thread(this);
|
||||||
th.setDaemon(true);
|
m_thread.setDaemon(true);
|
||||||
th.setName("FileStateExpire");
|
m_thread.setName("FileStateExpire");
|
||||||
th.start();
|
m_thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -366,7 +374,9 @@ public class FileStateTable implements Runnable
|
|||||||
|
|
||||||
// Loop forever
|
// Loop forever
|
||||||
|
|
||||||
while (true)
|
m_shutdown = false;
|
||||||
|
|
||||||
|
while ( m_shutdown == false)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Sleep for the required interval
|
// Sleep for the required interval
|
||||||
@@ -379,6 +389,18 @@ public class FileStateTable implements Runnable
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for shutdown
|
||||||
|
|
||||||
|
if ( m_shutdown == true)
|
||||||
|
{
|
||||||
|
// Debug
|
||||||
|
|
||||||
|
if ( logger.isDebugEnabled())
|
||||||
|
logger.debug("FileStateExpire thread closing");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -401,6 +423,22 @@ public class FileStateTable implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request the file state checker thread to shutdown
|
||||||
|
*/
|
||||||
|
public final void shutdownRequest() {
|
||||||
|
m_shutdown = true;
|
||||||
|
|
||||||
|
if ( m_thread != null)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
m_thread.interrupt();
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dump the state cache entries to the specified stream
|
* Dump the state cache entries to the specified stream
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user