To reproduce this bug, three configurations are needed:
config-A and config-B both depend on config-C and use it as a quickbuild repository, which is checked out in the first step. When config-A and config-B get triggered contemporaneously (by a cron-like schedule), one of the configurations fails with the following exception:
{noformat}
2008-03-26 00:30:03,869 [Thread-13656] ERROR - Failed to trigger configuration.
java.lang.RuntimeException: ognl.OgnlException: effectingRepositoriesModified [com.pmease.quickbuild.QuickBuildRemoteException: java.lang.RuntimeException(java.io.FileNotFoundException: D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))
Cause: java.io.FileNotFoundException(D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))]
at com.pmease.quickbuild.model.Configuration.evaluateBooleanExpression(Configuration.java:883)
at com.pmease.quickbuild.model.Configuration.trigger(Configuration.java:1052)
at com.pmease.quickbuild.triggeringinstance.ScheduledTriggeringInstance.execute(ScheduledTriggeringInstance.java:38)
at com.pmease.quickbuild.model.Queue$BuildRunner.run(Queue.java:225)
at java.lang.Thread.run(Thread.java:619)
Caused by: ognl.OgnlException: effectingRepositoriesModified [com.pmease.quickbuild.QuickBuildRemoteException: java.lang.RuntimeException(java.io.FileNotFoundException: D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))
Cause: java.io.FileNotFoundException(D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))]
at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:908)
at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:54)
at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:122)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
at ognl.ASTProperty.getValueBody(ASTProperty.java:96)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.ASTOr.getValueBody(ASTOr.java:56)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.Ognl.getValue(Ognl.java:333)
at com.pmease.quickbuild.model.Configuration.evaluateBooleanExpression(Configuration.java:876)
... 4 more
{noformat}
Description
To reproduce this bug, three configurations are needed:
config-A and config-B both depend on config-C and use it as a quickbuild repository, which is checked out in the first step. When config-A and config-B get triggered contemporaneously (by a cron-like schedule), one of the configurations fails with the following exception:
{noformat}
2008-03-26 00:30:03,869 [Thread-13656] ERROR - Failed to trigger configuration.
java.lang.RuntimeException: ognl.OgnlException: effectingRepositoriesModified [com.pmease.quickbuild.QuickBuildRemoteException: java.lang.RuntimeException(java.io.FileNotFoundException: D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))
Cause: java.io.FileNotFoundException(D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))]
at com.pmease.quickbuild.model.Configuration.evaluateBooleanExpression(Configuration.java:883)
at com.pmease.quickbuild.model.Configuration.trigger(Configuration.java:1052)
at com.pmease.quickbuild.triggeringinstance.ScheduledTriggeringInstance.execute(ScheduledTriggeringInstance.java:38)
at com.pmease.quickbuild.model.Queue$BuildRunner.run(Queue.java:225)
at java.lang.Thread.run(Thread.java:619)
Caused by: ognl.OgnlException: effectingRepositoriesModified [com.pmease.quickbuild.QuickBuildRemoteException: java.lang.RuntimeException(java.io.FileNotFoundException: D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))
Cause: java.io.FileNotFoundException(D:\qb\build\config-C\configuration_log.txt (The process cannot access the file because it is being used by another process))]
at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:908)
at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:54)
at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:122)
at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1616)
at ognl.ASTProperty.getValueBody(ASTProperty.java:96)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.ASTOr.getValueBody(ASTOr.java:56)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at ognl.SimpleNode.getValue(SimpleNode.java:210)
at ognl.Ognl.getValue(Ognl.java:333)
at com.pmease.quickbuild.model.Configuration.evaluateBooleanExpression(Configuration.java:876)
... 4 more
{noformat}