aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hao Zhong (JIRA)" <j...@apache.org>
Subject [jira] [Created] (ARIES-1748) Resouce leak in Subsystems
Date Thu, 12 Oct 2017 01:18:00 GMT
Hao Zhong created ARIES-1748:
--------------------------------

             Summary: Resouce leak in Subsystems
                 Key: ARIES-1748
                 URL: https://issues.apache.org/jira/browse/ARIES-1748
             Project: Aries
          Issue Type: Bug
            Reporter: Hao Zhong


The Subsystems_getRootSubsystem method has the following code:
{code:java}
try {
					root = new BasicSubsystem(resource);
					// TODO This initialization is a bit brittle. The root subsystem
					// must be gotten before anything else will be able to use the
					// graph. At the very least, throw IllegalStateException where
					// appropriate.
					graph = new SubsystemGraph(root);
					ResourceInstaller.newInstance(coordination, root, root).install();
					populateRootSubsystem(root, coordination);
				} catch (Exception e) {
					coordination.fail(e);
				} finally {
					coordination.end();
				}
{code}
Here, coordination.end() can fail to clean up resources. Indeed, ARIES-1187 fixed a similar
problem. The fixed code handles the problem more seriously:
{code:java}
	public BasicSubsystem run() {
          ...
         finally {
			try {
				coordination.end();
			}
			catch (CoordinationException e) {
				Throwable t = e.getCause();
				if (t instanceof SubsystemException)
					throw (SubsystemException)t;
				if (t instanceof SecurityException)
					throw (SecurityException)t;
				throw new SubsystemException(t);
			}
			finally {
				closeContentIfIClosable();
			}
		}
		closeContentIfIClosable();
...
}
private void closeContentIfIClosable() {
		//clean up temp file
		if (content instanceof ICloseableDirectory) {
			try{
				((ICloseableDirectory) content).close();
			}
			catch (IOException ioex) {
				logger.info("Exception calling close for content {}. Exception {}", 
						content, ioex);					
			}
		} 
	}
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message