You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@river.apache.org by Apache Jenkins Server <je...@builds.apache.org> on 2014/01/03 04:51:01 UTC

Build failed in Jenkins: river-qa-refactor-win #41

See <https://builds.apache.org/job/river-qa-refactor-win/41/>

------------------------------------------
Started by an SCM change
Building remotely on windows1 in workspace <https://builds.apache.org/job/river-qa-refactor-win/ws/>
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Archiving artifacts

Build failed in Jenkins: river-qa-refactor-win #48

Posted by Apache Jenkins Server <je...@builds.apache.org>.
See <https://builds.apache.org/job/river-qa-refactor-win/48/>

------------------------------------------
Started by user peter_firmstone
Building remotely on windows1 in workspace <https://builds.apache.org/job/river-qa-refactor-win/ws/>
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Archiving artifacts

Build failed in Jenkins: river-qa-refactor-win #47

Posted by Apache Jenkins Server <je...@builds.apache.org>.
See <https://builds.apache.org/job/river-qa-refactor-win/47/>

------------------------------------------
Started by an SCM change
Building remotely on windows1 in workspace <https://builds.apache.org/job/river-qa-refactor-win/ws/>
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Archiving artifacts

Build failed in Jenkins: river-qa-refactor-win #46

Posted by Apache Jenkins Server <je...@builds.apache.org>.
See <https://builds.apache.org/job/river-qa-refactor-win/46/>

------------------------------------------
Started by an SCM change
Building remotely on windows1 in workspace <https://builds.apache.org/job/river-qa-refactor-win/ws/>
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Archiving artifacts

Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Peter Firmstone <ji...@zeus.net.au>.
On 4/01/2014 3:40 PM, Greg Trasuk wrote:
> I accidentally deleted something from the top of that message...
>
> I checked out the qa_refactor branch, and compared the 2.2 implementation of com.sun.jini.RegistrarImpl with the qa_refactor implementation.
> In the 2.2 branch, Reggie uses an instance of TaskManager that is looked up through a Configuration instance.  In the qa_refactor branch, you’ve replaced that with two separate hard-coded instances of ThreadPoolExecutor.
>
> In the 2.2 implementation, it was possible to have Reggie share a TaskManager with other services, or with one or more ServiceDiscoveryManagers, by creating the appropriate configuration file.  That’s no longer possible.

Have a look at Mahalo, it shows an ExecutorService set by configuration, 
but with a wrapper class to bolt on required functionality.

That's how Reggie will look when it's finished.

> Further, in a container scenario, we’d like to move away from having individual services creating their own threads, towards a shared work manager.  Ideally, we would have Reggie and all other services use a shared work manager rather than creating their own threads, as they currently do.  That way, the container can manage and prioritize executions appropriately (e.g app A’s tasks take priority over app B’s), and they can all share a thread pool.  Removing the TaskManager usage moves us further from that goal.  I suspect that TaskManager might have to be extended to do this properly, and I certainly would prefer that it were an interface rather than a concrete class, but it’s a decent starting point.

We'll be able to do something similar with ExecutorService, most of the 
threads have been converted to Runnable's that are passed as an argument 
to Thread's constructor (instead of extending Thread), they could be 
passed to an executor instead.

However it's also worth noting that there are cases where it isn't 
recommended for certain tasks to share an Executor.

The other issue is shutdown, if you shutdown one service and it share's 
a TaskManager or ExecutorService with another service, then the other 
service will have a terminated TaskManager or ExecutorService.

We really do need to dump TaskManager, it can't hold a candle to Doug 
Lee's Executor framework.

I read somewhere the Jini development team had planned to replace 
TaskManager due to issues with Task.runAfter?

When I profile the stress tests now, the hotspot's are Socket's and 
there's very little monitor contention.

Regards,

Peter.
> On Jan 4, 2014, at 12:18 AM, Greg Trasuk<tr...@stratuscom.com>  wrote:
>
>> I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.  If real usage never requires a large task queue, then scalability isn’t an issue, and we don’t know whether it ever needs a large task queue.
>>
>> In any case, removing TaskManager and replacing it with hard-coded ThreadPoolExecutors moves us farther away from having the capability of a shared work queue.  So I’m not in favour of this change.  I haven’t looked at the other services or utility classes, but if the changes are similar, I’m also not in favour.  You’re introducing changes that introduce test failures (which is why you’re asking for help) without a good reason.  You’re never going to ship this code unless you stop modifying it.
>>
>> Also, when you say below,
>>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
>> …be careful!  You’re getting into the same difficult area as transactional semantics around messaging.  Will you need to provide a “dead task” queue?  Do you need to set a limit on how many times a task get retried?  What happens when that limit is exceeded?  Do all tasks have the same limit?  Should a task get notified when it’s exceeded the retry limit?  How long should you wait between retries?  Is that number the same for all tasks.  Is there some kind of alarm or notification when tasks end up being retried, or when the dead task queue becomes full?
>>
>> Sometimes it’s best not to try to abstract-away all complexity.
>>
>> Greg.
>>
>> On Jan 3, 2014, at 10:43 PM, Peter Firmstone<ji...@zeus.net.au>  wrote:
>>
>>> ServiceDiscoveryManager is now the only class that utilises TaskManager and RetryTask.  JoinManager still uses TaskManager but not RetryTask.  See River-344 for an explanation of the problem.
>>>
>>> Most instances of TaskManager in qa-refactor have been replaced with ExecutorService, RetryTask now implements RunnableFuture and can be cancelled by Future.cancel from the ExecutorService.
>>>
>>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
>>>
>>> Can anyone spare time to review, suggest alternatives, or improvements?
>>>
>>> Thanks in advance,
>>>
>>> Peter.
>>>
>>> Failed com_sun_jini_test_impl_servicediscovery_event_DiscardDownReDiscover.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceDown.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceUp.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_LookupTaskRace.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_ReRegisterBadEquals.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed com_sun_jini_test_impl_servicediscovery_event_ReRegisterGoodEquals.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed com_sun_jini_test_impl_servicediscovery_event_ServiceDiscardCacheTerminate.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheDiscard.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheLookup.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_Lookup.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMax.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 2 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMaxFilter.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMinEqualsMax.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed com_sun_jini_test_spec_servicediscovery_lookup_LookupMinMaxNoBlockFilter.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWait.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitFilter.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>>>
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitNoBlock.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>>
>>>
>>>
>>> On 4/01/2014 10:27 AM, Apache Jenkins Server wrote:
>>>> See<https://builds.apache.org/job/river-qa-refactor-win/45/>
>>>>
>>>> ------------------------------------------
>>>> [...truncated 15733 lines...]
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsWaitTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeNO_WAITTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeReadTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeWaitTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseANYTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseFOREVERTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteNegativeLeaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsNotifyTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeNotifyTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseANYTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseFOREVERTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteNegativeLeaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/AdminIFShutdownTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/AdminIFTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseExpireCancelTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseExpireRenewTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseMapTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/MahaloCreateShutdownTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/MahaloIFTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/MahaloImplReadyStateTest.td
>>>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mercury.ActivatableMercuryVerifier com.sun.jini.qa.harness.SkipConfigTestVerifier
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/NestableServerTransactionCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/NestableTransactionCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest2.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest3.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest4.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest5.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/RandomStressTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/ServerTransactionEqualityTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/ServerTransactionToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TransactionCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TransactionManagerCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullActivationConfigEntries.td
>>>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullConfigEntries.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullRecoveredLocators.td
>>>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrProxyEqualityTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnCommitTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnPrepareTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/CommitExpiredTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/CommitTimeoutTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/GetStateTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/JoinIdempotentTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/JoinWhileActiveTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/ManyParticipantsTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/PrepareTimeoutTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/RollBackErrorTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/RollForwardErrorTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/TwoPhaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java]
>>>>      [java] # of tests started   = 1406
>>>>      [java] # of tests completed = 1406
>>>>      [java] # of tests skipped   = 52
>>>>      [java] # of tests passed    = 1388
>>>>      [java] # of tests failed    = 18
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java]
>>>>      [java]    Date finished:
>>>>      [java]       Fri Jan 03 16:27:03 PST 2014
>>>>      [java]    Time elapsed:
>>>>      [java]       59325 seconds
>>>>      [java]
>>>>      [java] Java Result: 1
>>>>
>>>> collect-result:
>>>>      [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>>      [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>>       [zip] Building zip:<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result\qaresults-amd64-Windows>   Server 2008 R2-1.7.0.zip
>>>>
>>>> BUILD FAILED
>>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\build.xml>:2109: The following error occurred while executing this line:
>>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:406: The following error occurred while executing this line:
>>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:380: condition satisfied
>>>>
>>>> Total time: 996 minutes 9 seconds
>>>> Build step 'Invoke Ant' marked build as failure
>>>> Archiving artifacts


Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Greg Trasuk <tr...@stratuscom.com>.
I accidentally deleted something from the top of that message...

I checked out the qa_refactor branch, and compared the 2.2 implementation of com.sun.jini.RegistrarImpl with the qa_refactor implementation.  

In the 2.2 branch, Reggie uses an instance of TaskManager that is looked up through a Configuration instance.  In the qa_refactor branch, you’ve replaced that with two separate hard-coded instances of ThreadPoolExecutor.

In the 2.2 implementation, it was possible to have Reggie share a TaskManager with other services, or with one or more ServiceDiscoveryManagers, by creating the appropriate configuration file.  That’s no longer possible.

Further, in a container scenario, we’d like to move away from having individual services creating their own threads, towards a shared work manager.  Ideally, we would have Reggie and all other services use a shared work manager rather than creating their own threads, as they currently do.  That way, the container can manage and prioritize executions appropriately (e.g app A’s tasks take priority over app B’s), and they can all share a thread pool.  Removing the TaskManager usage moves us further from that goal.  I suspect that TaskManager might have to be extended to do this properly, and I certainly would prefer that it were an interface rather than a concrete class, but it’s a decent starting point.

On Jan 4, 2014, at 12:18 AM, Greg Trasuk <tr...@stratuscom.com> wrote:

> I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.  If real usage never requires a large task queue, then scalability isn’t an issue, and we don’t know whether it ever needs a large task queue.
> 
> In any case, removing TaskManager and replacing it with hard-coded ThreadPoolExecutors moves us farther away from having the capability of a shared work queue.  So I’m not in favour of this change.  I haven’t looked at the other services or utility classes, but if the changes are similar, I’m also not in favour.  You’re introducing changes that introduce test failures (which is why you’re asking for help) without a good reason.  You’re never going to ship this code unless you stop modifying it.
> 
> Also, when you say below, 
>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
> …be careful!  You’re getting into the same difficult area as transactional semantics around messaging.  Will you need to provide a “dead task” queue?  Do you need to set a limit on how many times a task get retried?  What happens when that limit is exceeded?  Do all tasks have the same limit?  Should a task get notified when it’s exceeded the retry limit?  How long should you wait between retries?  Is that number the same for all tasks.  Is there some kind of alarm or notification when tasks end up being retried, or when the dead task queue becomes full?
> 
> Sometimes it’s best not to try to abstract-away all complexity.
> 
> Greg.
> 
> On Jan 3, 2014, at 10:43 PM, Peter Firmstone <ji...@zeus.net.au> wrote:
> 
>> ServiceDiscoveryManager is now the only class that utilises TaskManager and RetryTask.  JoinManager still uses TaskManager but not RetryTask.  See River-344 for an explanation of the problem.
>> 
>> Most instances of TaskManager in qa-refactor have been replaced with ExecutorService, RetryTask now implements RunnableFuture and can be cancelled by Future.cancel from the ExecutorService.
>> 
>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
>> 
>> Can anyone spare time to review, suggest alternatives, or improvements?
>> 
>> Thanks in advance,
>> 
>> Peter.
>> 
>> Failed com_sun_jini_test_impl_servicediscovery_event_DiscardDownReDiscover.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceDown.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceUp.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_LookupTaskRace.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_ReRegisterBadEquals.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed com_sun_jini_test_impl_servicediscovery_event_ReRegisterGoodEquals.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed com_sun_jini_test_impl_servicediscovery_event_ServiceDiscardCacheTerminate.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheDiscard.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheLookup.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_Lookup.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMax.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 2 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMaxFilter.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMinEqualsMax.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed com_sun_jini_test_spec_servicediscovery_lookup_LookupMinMaxNoBlockFilter.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWait.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitFilter.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>> 
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitNoBlock.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>> 
>> 
>> 
>> On 4/01/2014 10:27 AM, Apache Jenkins Server wrote:
>>> See<https://builds.apache.org/job/river-qa-refactor-win/45/>
>>> 
>>> ------------------------------------------
>>> [...truncated 15733 lines...]
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsWaitTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeNO_WAITTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeReadTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeWaitTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseANYTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseFOREVERTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteNegativeLeaseTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsNotifyTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeNotifyTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseANYTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseFOREVERTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteNegativeLeaseTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/AdminIFShutdownTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/AdminIFTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/LeaseExpireCancelTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/LeaseExpireRenewTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/LeaseMapTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/LeaseTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/MahaloCreateShutdownTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/MahaloIFTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/MahaloImplReadyStateTest.td
>>>     [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mercury.ActivatableMercuryVerifier com.sun.jini.qa.harness.SkipConfigTestVerifier
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/NestableServerTransactionCreatedToStringTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/NestableTransactionCreatedToStringTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest2.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest3.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest4.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest5.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/RandomStressTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/ServerTransactionEqualityTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/ServerTransactionToStringTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/TransactionCreatedToStringTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/TransactionManagerCreatedToStringTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullActivationConfigEntries.td
>>>     [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullConfigEntries.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullRecoveredLocators.td
>>>     [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/impl/mahalo/TxnMgrProxyEqualityTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnCommitTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnPrepareTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/CommitExpiredTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/CommitTimeoutTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/GetStateTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/JoinIdempotentTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/JoinWhileActiveTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/ManyParticipantsTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/PrepareTimeoutTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/RollBackErrorTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/RollForwardErrorTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java] com/sun/jini/test/spec/txnmanager/TwoPhaseTest.td
>>>     [java] Test Passed: OK
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java]
>>>     [java] # of tests started   = 1406
>>>     [java] # of tests completed = 1406
>>>     [java] # of tests skipped   = 52
>>>     [java] # of tests passed    = 1388
>>>     [java] # of tests failed    = 18
>>>     [java]
>>>     [java] -----------------------------------------
>>>     [java]
>>>     [java]    Date finished:
>>>     [java]       Fri Jan 03 16:27:03 PST 2014
>>>     [java]    Time elapsed:
>>>     [java]       59325 seconds
>>>     [java]
>>>     [java] Java Result: 1
>>> 
>>> collect-result:
>>>     [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>     [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>      [zip] Building zip:<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result\qaresults-amd64-Windows>  Server 2008 R2-1.7.0.zip
>>> 
>>> BUILD FAILED
>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\build.xml>:2109: The following error occurred while executing this line:
>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:406: The following error occurred while executing this line:
>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:380: condition satisfied
>>> 
>>> Total time: 996 minutes 9 seconds
>>> Build step 'Invoke Ant' marked build as failure
>>> Archiving artifacts
>> 
> 


Re: Development Process - Experimental Testing, Theoretical analysis; code auditing and Static Analysis

Posted by Peter <ji...@zeus.net.au>.
To clarify the number of test failures by platform:

JDK6 Linux x64 - no test failures.
JDK7 Linux ARM - no test failures.
JDK7 Linux x64 - 1 occassional test failure.
JDK7 Windows Server 2008 x64 - 18 test failures, all but 1 related to SDM.
JDK7 Windows 7 x64 - no test failures
JDK7 Solaris x64 - 2 test failures.

Concurrency bugs are harder to flush out than Greg's comments suggest, I haven't experienced them recently on my hardware, nor have I been able to reproduce them despite my best attempts, does that mean they don't exist?

I really do wish it was as simple as, I fix this bug, now I have 35 test failures to debug.

Regards,

Peter.

----- Original message -----
> ----- Original message -----
> > 
> > @Patricia - I understand your interpretation, and I think I’ve misled
> > you by including the words “concrete, observable” in my question.    I’m
> > not talking about concurrency bugs here.    I’m perfectly OK with making
> > changes based on analysis that shows a possible race condition.
> > However, I spent most of yesterday reading the Java Language
> > Specification and I’m now more convinced than ever that statements like
> > “we’re using final variables, therefore all our code has to change”
> > (paraphrasing) are no substitute for reasoned analysis.  
> 
> You don't agree that final field usage should comply with the JMM?
> 
> Please also read the Java Memory Model.
> 
>   Basically, I’m
> > asserting the very common professional view that changes to existing
> > code should be traceable to a requirement or a problem.    Further,
> > those changes should be carefully considered and designed to minimize
> > the chance of breaking anything else.    I don’t find the argument that
> > “I fixed a concurrency problem, so it’s expected to have 35 other
> > failures” convincing.    From the outside, that looks a lot like
> > introducing failures in an attempt to fix a poorly understood or
> > poorly stated problem.
> 
> You're misinterpreting my development effort, I haven't yet fixed
> ServiceDiscoveryManager, but I have fixed other classes, until only a
> few commits ago ServiceDiscoveryManager was not failing (at least not
> often).   Although ServiceDiscoveryManager hasn't changed since then, it
> is now causing multiple test failures.
> 
> So while the other classes that use ExecutorService aren't failing,
> ServiceDiscoveryManager is failing precisely because we're using
> TaskManager's fundamentally broken runAfter method.
> 
> We have previously focused on the problem that runAfter was designed to
> address and found this was not a good solution to the original problem.
> 
> 
> > 
> > I teach programming.    I see this all the time.    When people make
> > changes based on what they “think” “might” be happening, it’s always a
> > disaster.
> 
> You're assuming FindBugs,   JMM non-compliance and common issues
> described by Concurrency in Practise, when clearly and easily identified
> fall into the same category as someone who's learning to code for the
> first time?
> 
> You're advocating a completely experimental driven approach, like
> someone who's learning to program experiences.   It is very good approach
> for learning...
> 
> Do you not teach your students how to safely use final fields?
> 
> > 
> > @Peter - You’re asking the wrong question.    The right question is
> > whether we should have a review-then-commit policy for existing code
> > that traces a well-defined (and ideally limited) package of changes to
> > a JIRA issue, 
> 
> This would prevent a move from experimental to include a more
> theoretical development approach.   Test cases are still required to pass
> with a theoretical approach.
> 
> and includes the community in decisions around how to fix
> > the problem that is stated. 
> 
> And when a simple discussion about a simple issue veers off topic with
> heated arguments, what then?   You propose I stop committing to skunk,
> until each change is discussed at length on the list?   But we can't even
> agree on final field usage?
> 
> We need to make a decision whether to include theoretical driven
> development that includes compliance to standards like the JMM.
> 
> Code has been committed to skunk, for people to review, in public, they
> might misinterpret my suggestions on the mail list, but they will have a
> better understanding after reading the code, I welcome their
> participation.
> 
> I am open to other solutions, but I don't like the suggestion that non
> compliant code is preferred until a test case that proves failure can be
> found.   What happens when the test case only fails on one platform, but
> is not easily repeatable?   What if the fix just changes timing to mask
> the original problem?   
> 
> Testing doesn't prove the absence of errors?   Reducing errors further
> requires additonal tools like FindBugs and public open peer review.
> 
> Trunk development was halted because of unrelated test failures.
> 
> If you try to fix those test failures it will cause a cascading effect
> of additional new test failures.   I am still fixing those bugs in
> qa-refactor.
> 
> If the outcome of this discussion is to exclude theoretical driven
> development (FindBugs, JMM compliance), then the only option will be to
> revert trunk and exclude code that causes unrelated test failures.
> 
> The java platform is also undergoing development, this too will cause
> timing changes resulting in test failures.   What do we do then when we
> can't fix them because each fix causes other unrelated test failures?
> 
> On that note, Java 7 support is not well tested, 2.2 has only been
> tested on Linux x64, no results for the jtreg tests have been posted and
> I have previously seen discovery event related test failures in the 2.2
> branch.
> 
> The qa-refactor branch is relatively stable on Linux x64.
> 
> The test failures we're discussing occur on Windows x64, perhaps they
> also occur with 2.2 on windows, should we test 2.2 on windows too?
> 
> If 2.2 fails on windows that gives us a provable test case doesn't it?   
> The test failures are then proven to be only indirectly related to
> changes in qa-refactor?
> 
> Regards,
> 
> Peter.
> 
>     And I will suggest pre-emptively that a
> > JIRA issue that says “concurrency problems exist” is not specific
> > enough to drive development.
> > 
> > Greg.
> > 
> > On Jan 4, 2014, at 4:59 AM, Peter Firmstone <ji...@zeus.net.au> wrote:
> > 
> > > Please provide your thoughts on the following:
> > > 
> > > How do we develop code for River?
> > > 
> > > Do we only use experimental based development, or do we also allow
> > > theoretical development also? Do we only fix bugs that can be
> > > demonstrated with a test case, or do we fix bugs identified by
> > > FindBugs and manual code auditing as well?
> > > 
> > > Should we allow theoretical development based on standards like the
> > > Java Memory Model with visual auditing and static analysis with
> > > FindBugs, or should we prohibit fixing bugs that don't include a test
> > > case demonstrating the failure?
> > > 
> > > Regards,
> > > 
> > > Peter.
> > > 
> > > 
> > > On 4/01/2014 6:58 PM, Patricia Shanahan wrote:
> > > > Just before Christmas, you were discussing whether to fix
> > > > concurrency problems based on theoretical analysis, or to only fix
> > > > those problems for which there is experimental evidence.
> > > > 
> > > > I believe the PMC will be at cross-purposes until you resolve that
> > > > issue, and strongly advise discussing and voting on it.
> > > > 
> > > > This is an example of a question whose answer would be obvious and
> > > > non-controversial if you had agreement, either way, on that general
> > > > issue. "When do you claim that this happens?    And what currently
> > > > happens now that is unacceptable?    What is the concrete,
> > > > observable problem that you’re trying to solve, that justifies
> > > > introducing failures that require further work?" is a valid, and
> > > > important, set of questions if you are only going to fix
> > > > concurrency bugs for which there is experimental evidence. It is
> > > > irrelevant if you are going to fix concurrency bugs based on
> > > > theoretical analysis.
> > > > 
> > > > Patricia
> > > > 
> > > > On 1/3/2014 10:14 PM, Greg Trasuk wrote:
> > > > > 
> > > > > On Jan 4, 2014, at 12:52 AM, Peter Firmstone <ji...@zeus.net.au>
> > > > > wrote:
> > > > > 
> > > > > > On 4/01/2014 3:18 PM, Greg Trasuk wrote:
> > > > > > > I’ll also point out Patricia’s recent statement that
> > > > > > > TaskManager should be reasonably efficient for small task
> > > > > > > queues, but less efficient for larger task queues.    We don’t
> > > > > > > have solid evidence that the task queues ever get large. 
> > > > > > > Hence, the assertion that “TaskManager doesn’t scale” is
> > > > > > > meaningless.
> > > > > > 
> > > > > > No, it's not about scalability, it's about the window of time
> > > > > > when a task is removed from the queue in TaskManager for
> > > > > > execution but fails and needs to be retried later. 
> > > > > > Task.runAfter doesn't contain the task that "should have
> > > > > > executed" so dependant tasks proceed before their depenencies.
> > > > > > 
> > > > > > This code comment from ServiceDiscoveryManager might help:
> > > > > > 
> > > > > > /** This task class, when executed, first registers to receive
> > > > > > *    ServiceEvents from the given ServiceRegistrar. If the
> > > > > > registration *    process succeeds (no RemoteExceptions), it
> > > > > > then executes the *    LookupTask to query the given
> > > > > > ServiceRegistrar for a "snapshot" *    of its current state
> > > > > > with respect to services that match the *    given template.
> > > > > > *
> > > > > > *    Note that the order of execution of the two tasks is
> > > > > > important. *    That is, the LookupTask must be executed only
> > > > > > after registration *    for events has completed. This is
> > > > > > because when an entity registers *    with the event mechanism
> > > > > > of a ServiceRegistrar, the entity will *    only receive
> > > > > > notification of events that occur "in the future", *    after
> > > > > > the registration is made. The entity will not receive events *
> > > > > >     about changes to the state of the ServiceRegistrar that may
> > > > > > have *    occurred before or during the registration process. *
> > > > > > *    Thus, if the order of these tasks were reversed and the
> > > > > > LookupTask *    were to be executed prior to the
> > > > > > RegisterListenerTask, then the *    possibility exists for the
> > > > > > occurrence of a change in the *    ServiceRegistrar's state
> > > > > > between the time the LookupTask retrieves *    a snapshot of
> > > > > > that state, and the time the event registration *    process has
> > > > > > completed, resulting in an incorrect view of the *    current
> > > > > > state of the ServiceRegistrar.
> > > > > > 
> > > > > 
> > > > > When do you claim that this happens?    And what currently happens
> > > > > now that is unacceptable?    What is the concrete, observable
> > > > > problem that you’re trying to solve, that justifies introducing
> > > > > failures that require further work?
> > > > 
> > > > 
> > > 
> > 
> 


RE CONCERNS: [WAS] Re: Development Process - Experimental Theoretical

Posted by Peter Firmstone <ji...@zeus.net.au>.
Rather than distract the questions posed in the previous thread, I've 
created a new one to discuss concerns.

>
>> As I’ve said before, my concern is not theoretical vs experimental.
>> It’s “what is this change, why was it made, what are the effects, and
>> are its effects justifiable?”

Example 1: Startable

What is this change?
     An interface for service implementations to implement to export and 
start threads after construction.
Why was it made?
     So service implementations with final fields can freeze their final 
fields before the services reference is shared.
What are the effects?
     Service implementations can delay exporting and starting threads 
until after their constructor completes.
     Ensures that other threads see the fully constructed state of final 
fields and their referents and not the default initialisation value.
Are its effects justifiable?
     Considering the minimal effort required to implement, it allows 
correct and safe use of final in services, this is a big win in my opinion.


Example 2: Replace TaskManager with ExecutorService

What is this change?
     Replace TaskManager with ExecutorService
Why was it made?
     Task.runAfter(List tasks, int position) is fundamentally broken.
     ExecutorService implementations have far superior throughput.
     ExecutorService implementations are maintained by others, reducing 
our maintenance burden.
What are the effects?
     RandomStressTest only uses 188 threads instead of 1000 and APPEARS 
to increase throughput by 270 times (although other changes to the 
codebase may also be contributing).
     Customers can fine tune and change the ExecutorService 
implementations to best suit their environment if they so choose.
Are its effects justifiable?
     Ooh yeah.

There are many more changes of course and that's your main concern.

>>> Code has been committed to skunk, for people to review, in public,
>>> they might misinterpret my suggestions on the mail list, but they will
>>> have a better understanding after reading the code, I welcome their
>>> participation.
>>>
>> There are 1557 files modified between 2.2.2 and qa_refactor.   62
>> deleted.   214 added.   How practical is it to review?

Hmm, four years work, when was the last time you reviewed Linux before 
you used it?  Don't get me wrong, I want you to review the code, if we 
divide review among 5 people, it's only 300 files each.

The problem with incremental change & release is we would have to 
release with known failures, rather than with the most stable build 
possible, this process is not something I want, it is something I'm 
forced to do until the build stabilises.  Releasing with known failures 
risks exposing more bugs than we can handle in deployment.


>>> I am open to other solutions, but I don't like the suggestion that non
>>> compliant code is preferred until a test case that proves failure can
>>> be found.   What happens when the test case only fails on one platform,
>>> but is not easily repeatable?   What if the fix just changes timing to
>>> mask the original problem? 
>>>
>>> Testing doesn't prove the absence of errors?   Reducing errors further
>>> requires additonal tools like FindBugs and public open peer review.
>>>
>>> Trunk development was halted because of unrelated test failures.
>> It was halted because the community got nervous and started asking for
>> review-then-commit, so you moved over to qa_refactor.

No, it was halted because River is riddled with concurrency bugs (some 
won't acknowledge) and the build was starting to experience failures 
because of those bugs.  Prior to that event, the majority of changes 
were made in skunk and merged with trunk after successful testing in 
skunk.  Until the most minor of changes caused test failures the 
community was working together, developing.  Once these bugs are fixed 
we won't face the development destabilisation challenges they present.

Those bugs are obvious if you diff qa refactor's files while browsing svn.

The 2.2 branch has numerous bugs, its test suite just experienced 47 
failures on Windows and I haven't seen any jtreg test results, it hasn't 
been tested properly on Java 7 prior to release.  Don't get me wrong 
your release efforts are definitely appreciated, I think you need to cut 
me some slack and show me the same patience as I've shown you.

The qa refactoring build has had 1000's of test runs, been tested on as 
many different OS and CPU arch as possible to deliberately expose bugs 
and fix them.  There isn't even a beta release candidate yet.

Please start new threads for your issues as I have done here, yes your 
view and opinions are valid and must be given due consideration, but try 
to make any corporate procedure requests achievable for volunteers, we 
are not a corporation with deep pockets and endless resources.

>>     From 2.2.2 to
>> trunk - 1225 files modified, 32 deleted, 186 added.   Same problem, which
>> we discussed last year.
>>
>> Related email threads:
>>
>> http://mail-archives.apache.org/mod_mbox/river-dev/201211.mbox/%3C50B49395.30408%40qcg.nl%3E
>> http://mail-archives.apache.org/mod_mbox/river-dev/201211.mbox/%3CCAMPUXz9z%2Bk1XBgzfCONmRXh8y5yBtMjJNeUeTR03YEepe-60Zg%40mail.gmail.com%3E
>>
>> In the end, you’re right - qa_refactor is a skunk branch, so you can go
>> ahead and make all the changes you want. I just think that if your
>> intention is to get at least two other people to sign off on it as a
>> release, you’d do well to make it easy to review, and possibly even
>> include the community in the decision-making along the way.

The possiblity of failure exists in every project, it's how we overcome 
challenges that makes the difference.  If customers see an improvement 
in stability and scalability, adoption will increase.  I won't be making 
a beta release until the build has stabilised, so there's plenty of time 
for people to review the code in the mean time.

Get of your bums people, lets review the code, find mistakes I've made, 
help me fix them.  You can't eat an Elephant with one bite, pick off 
something you know and review it.

Regards,

Peter

>> Regards,
>>
>> Greg.
>>
>>
>>
>>
>


Re: Development Process - Experimental Testing, Theoretical analysis; code auditing and Static Analysis

Posted by Peter <ji...@zeus.net.au>.
You have no objections to Theoretical analysis?

Now you've had a chance to review the JMM, has it changed your thoughts on Startable?

Regards,

Peter.

----- Original message -----
>
> On Jan 4, 2014, at 6:15 PM, Peter <ji...@zeus.net.au> wrote:
>
> > >
> > > “we’re using final variables, therefore all our code has to change”
> > > (paraphrasing) are no substitute for reasoned analysis.   
> >
> > You don't agree that final field usage should comply with the JMM?
> >
> > Please also read the Java Memory Model.
> >
>
> JMM is part of the JLS now. I read it.   I read with particular interest
> the parts about the many possibilities for when the values of final
> variables are frozen.
>
> > >
> > > I teach programming.     I see this all the time.     When people make
> > > changes based on what they “think” “might” be happening, it’s always
> > > a disaster.
> >
> > You're assuming FindBugs,   JMM non-compliance and common issues
> > described by Concurrency in Practise, when clearly and easily
> > identified fall into the same category as someone who's learning to
> > code for the first time?
> >
> > You're advocating a completely experimental driven approach, like
> > someone who's learning to program experiences.   It is very good
> > approach for learning…
> >
>
> Please don’t put words in my mouth.   I’m not talking about experimental
> vs theoretical.   I’m talking about diagnostic techniques.   You need to
> have a theory about what a problem is, gather information to support or
> disprove that theory (that could be either analysis or experiments), and
> only then make changes to the code.   Then gather information that proves
> your fix actually made a difference (again, could be analysis or
> experiments).
>
> >
> > This would prevent a move from experimental to include a more
> > theoretical development approach.   Test cases are still required to
> > pass with a theoretical approach.
> >
>
> Not at all.   “Findbugs reports a possible data race in TaskManager” is a
> perfectly good JIRA issue that is specific enough to be actionable and
> should be limited enough in scope that peers can review the solution.
>
> > and includes the community in decisions around how to fix
> > > the problem that is stated.
> >
> > And when a simple discussion about a simple issue veers off topic with
> > heated arguments, what then?   You propose I stop committing to skunk,
> > until each change is discussed at length on the list?   But we can't
> > even agree on final field usage?
> >
> > We need to make a decision whether to include theoretical driven
> > development that includes compliance to standards like the JMM.
> >
>
> As I’ve said before, my concern is not theoretical vs experimental.
> It’s “what is this change, why was it made, what are the effects, and
> are its effects justifiable?”
>
> > Code has been committed to skunk, for people to review, in public,
> > they might misinterpret my suggestions on the mail list, but they will
> > have a better understanding after reading the code, I welcome their
> > participation.
> >
>
> There are 1557 files modified between 2.2.2 and qa_refactor.   62
> deleted.   214 added.   How practical is it to review?
>
> > I am open to other solutions, but I don't like the suggestion that non
> > compliant code is preferred until a test case that proves failure can
> > be found.   What happens when the test case only fails on one platform,
> > but is not easily repeatable?   What if the fix just changes timing to
> > mask the original problem?   
> >
> > Testing doesn't prove the absence of errors?   Reducing errors further
> > requires additonal tools like FindBugs and public open peer review.
> >
> > Trunk development was halted because of unrelated test failures.
>
> It was halted because the community got nervous and started asking for
> review-then-commit, so you moved over to qa_refactor.   From 2.2.2 to
> trunk - 1225 files modified, 32 deleted, 186 added.   Same problem, which
> we discussed last year.
>
> Related email threads:
>
> http://mail-archives.apache.org/mod_mbox/river-dev/201211.mbox/%3C50B49395.30408%40qcg.nl%3E
> http://mail-archives.apache.org/mod_mbox/river-dev/201211.mbox/%3CCAMPUXz9z%2Bk1XBgzfCONmRXh8y5yBtMjJNeUeTR03YEepe-60Zg%40mail.gmail.com%3E
>
> In the end, you’re right - qa_refactor is a skunk branch, so you can go
> ahead and make all the changes you want. I just think that if your
> intention is to get at least two other people to sign off on it as a
> release, you’d do well to make it easy to review, and possibly even
> include the community in the decision-making along the way.
>
> Regards,
>
> Greg.
>
>
>
>


Re: Development Process - Experimental Testing, Theoretical analysis; code auditing and Static Analysis

Posted by Greg Trasuk <tr...@stratuscom.com>.
On Jan 4, 2014, at 6:15 PM, Peter <ji...@zeus.net.au> wrote:

>> 
>> “we’re using final variables, therefore all our code has to change”
>> (paraphrasing) are no substitute for reasoned analysis.  
> 
> You don't agree that final field usage should comply with the JMM?
> 
> Please also read the Java Memory Model.
> 

JMM is part of the JLS now. I read it.  I read with particular interest the parts about the many possibilities for when the values of final variables are frozen.

>> 
>> I teach programming.   I see this all the time.   When people make changes
>> based on what they “think” “might” be happening, it’s always a disaster.
> 
> You're assuming FindBugs,  JMM non-compliance and common issues described by Concurrency in Practise, when clearly and easily identified fall into the same category as someone who's learning to code for the first time?
> 
> You're advocating a completely experimental driven approach, like someone who's learning to program experiences.  It is very good approach for learning…
> 

Please don’t put words in my mouth.  I’m not talking about experimental vs theoretical.  I’m talking about diagnostic techniques.  You need to have a theory about what a problem is, gather information to support or disprove that theory (that could be either analysis or experiments), and only then make changes to the code.  Then gather information that proves your fix actually made a difference (again, could be analysis or experiments).

> 
> This would prevent a move from experimental to include a more theoretical development approach.  Test cases are still required to pass with a theoretical approach.
> 

Not at all.  “Findbugs reports a possible data race in TaskManager” is a perfectly good JIRA issue that is specific enough to be actionable and should be limited enough in scope that peers can review the solution.

> and includes the community in decisions around how to fix
>> the problem that is stated. 
> 
> And when a simple discussion about a simple issue veers off topic with heated arguments, what then?  You propose I stop committing to skunk, until each change is discussed at length on the list?  But we can't even agree on final field usage?
> 
> We need to make a decision whether to include theoretical driven development that includes compliance to standards like the JMM.
> 

As I’ve said before, my concern is not theoretical vs experimental.  It’s “what is this change, why was it made, what are the effects, and are its effects justifiable?”

> Code has been committed to skunk, for people to review, in public, they might misinterpret my suggestions on the mail list, but they will have a better understanding after reading the code, I welcome their participation.
> 

There are 1557 files modified between 2.2.2 and qa_refactor.  62 deleted.  214 added.  How practical is it to review?

> I am open to other solutions, but I don't like the suggestion that non compliant code is preferred until a test case that proves failure can be found.  What happens when the test case only fails on one platform, but is not easily repeatable?  What if the fix just changes timing to mask the original problem?  
> 
> Testing doesn't prove the absence of errors?  Reducing errors further requires additonal tools like FindBugs and public open peer review.
> 
> Trunk development was halted because of unrelated test failures.

It was halted because the community got nervous and started asking for review-then-commit, so you moved over to qa_refactor.  From 2.2.2 to trunk - 1225 files modified, 32 deleted, 186 added.  Same problem, which we discussed last year.

Related email threads: 

http://mail-archives.apache.org/mod_mbox/river-dev/201211.mbox/%3C50B49395.30408%40qcg.nl%3E
http://mail-archives.apache.org/mod_mbox/river-dev/201211.mbox/%3CCAMPUXz9z%2Bk1XBgzfCONmRXh8y5yBtMjJNeUeTR03YEepe-60Zg%40mail.gmail.com%3E

In the end, you’re right - qa_refactor is a skunk branch, so you can go ahead and make all the changes you want. I just think that if your intention is to get at least two other people to sign off on it as a release, you’d do well to make it easy to review, and possibly even include the community in the decision-making along the way.

Regards,

Greg.





Re: Development Process - Experimental Testing, Theoretical analysis; code auditing and Static Analysis

Posted by Peter <ji...@zeus.net.au>.
----- Original message -----
> 
> @Patricia - I understand your interpretation, and I think I’ve misled
> you by including the words “concrete, observable” in my question.   I’m
> not talking about concurrency bugs here.   I’m perfectly OK with making
> changes based on analysis that shows a possible race condition.
> However, I spent most of yesterday reading the Java Language
> Specification and I’m now more convinced than ever that statements like
> “we’re using final variables, therefore all our code has to change”
> (paraphrasing) are no substitute for reasoned analysis.  

You don't agree that final field usage should comply with the JMM?

Please also read the Java Memory Model.

 Basically, I’m
> asserting the very common professional view that changes to existing
> code should be traceable to a requirement or a problem.   Further, those
> changes should be carefully considered and designed to minimize the
> chance of breaking anything else.   I don’t find the argument that “I
> fixed a concurrency problem, so it’s expected to have 35 other failures”
> convincing.   From the outside, that looks a lot like introducing
> failures in an attempt to fix a poorly understood or poorly stated
> problem.

You're misinterpreting my development effort, I haven't yet fixed ServiceDiscoveryManager, but I have fixed other classes, until only a few commits ago ServiceDiscoveryManager was not failing (at least not often).  Although ServiceDiscoveryManager hasn't changed since then, it is now causing multiple test failures.

So while the other classes that use ExecutorService aren't failing, ServiceDiscoveryManager is failing precisely because we're using TaskManager's fundamentally broken runAfter method.

We have previously focused on the problem that runAfter was designed to address and found this was not a good solution to the original problem.


> 
> I teach programming.   I see this all the time.   When people make changes
> based on what they “think” “might” be happening, it’s always a disaster.

You're assuming FindBugs,  JMM non-compliance and common issues described by Concurrency in Practise, when clearly and easily identified fall into the same category as someone who's learning to code for the first time?

You're advocating a completely experimental driven approach, like someone who's learning to program experiences.  It is very good approach for learning...

Do you not teach your students how to safely use final fields?

> 
> @Peter - You’re asking the wrong question.   The right question is
> whether we should have a review-then-commit policy for existing code
> that traces a well-defined (and ideally limited) package of changes to a
> JIRA issue, 

This would prevent a move from experimental to include a more theoretical development approach.  Test cases are still required to pass with a theoretical approach.

and includes the community in decisions around how to fix
> the problem that is stated. 

And when a simple discussion about a simple issue veers off topic with heated arguments, what then?  You propose I stop committing to skunk, until each change is discussed at length on the list?  But we can't even agree on final field usage?

We need to make a decision whether to include theoretical driven development that includes compliance to standards like the JMM.

Code has been committed to skunk, for people to review, in public, they might misinterpret my suggestions on the mail list, but they will have a better understanding after reading the code, I welcome their participation.

I am open to other solutions, but I don't like the suggestion that non compliant code is preferred until a test case that proves failure can be found.  What happens when the test case only fails on one platform, but is not easily repeatable?  What if the fix just changes timing to mask the original problem?  

Testing doesn't prove the absence of errors?  Reducing errors further requires additonal tools like FindBugs and public open peer review.

Trunk development was halted because of unrelated test failures.

If you try to fix those test failures it will cause a cascading effect of additional new test failures.  I am still fixing those bugs in qa-refactor.

If the outcome of this discussion is to exclude theoretical driven development (FindBugs, JMM compliance), then the only option will be to revert trunk and exclude code that causes unrelated test failures.

The java platform is also undergoing development, this too will cause timing changes resulting in test failures.  What do we do then when we can't fix them because each fix causes other unrelated test failures?

On that note, Java 7 support is not well tested, 2.2 has only been tested on Linux x64, no results for the jtreg tests have been posted and I have previously seen discovery event related test failures in the 2.2 branch.

The qa-refactor branch is relatively stable on Linux x64.

The test failures we're discussing occur on Windows x64, perhaps they also occur with 2.2 on windows, should we test 2.2 on windows too?

If 2.2 fails on windows that gives us a provable test case doesn't it?   The test failures are then proven to be only indirectly related to changes in qa-refactor?

Regards,

Peter.

  And I will suggest pre-emptively that a
> JIRA issue that says “concurrency problems exist” is not specific enough
> to drive development.
> 
> Greg.
> 
> On Jan 4, 2014, at 4:59 AM, Peter Firmstone <ji...@zeus.net.au> wrote:
> 
> > Please provide your thoughts on the following:
> > 
> > How do we develop code for River?
> > 
> > Do we only use experimental based development, or do we also allow
> > theoretical development also? Do we only fix bugs that can be
> > demonstrated with a test case, or do we fix bugs identified by
> > FindBugs and manual code auditing as well?
> > 
> > Should we allow theoretical development based on standards like the
> > Java Memory Model with visual auditing and static analysis with
> > FindBugs, or should we prohibit fixing bugs that don't include a test
> > case demonstrating the failure?
> > 
> > Regards,
> > 
> > Peter.
> > 
> > 
> > On 4/01/2014 6:58 PM, Patricia Shanahan wrote:
> > > Just before Christmas, you were discussing whether to fix
> > > concurrency problems based on theoretical analysis, or to only fix
> > > those problems for which there is experimental evidence.
> > > 
> > > I believe the PMC will be at cross-purposes until you resolve that
> > > issue, and strongly advise discussing and voting on it.
> > > 
> > > This is an example of a question whose answer would be obvious and
> > > non-controversial if you had agreement, either way, on that general
> > > issue. "When do you claim that this happens?   And what currently
> > > happens now that is unacceptable?   What is the concrete, observable
> > > problem that you’re trying to solve, that justifies introducing
> > > failures that require further work?" is a valid, and important, set
> > > of questions if you are only going to fix concurrency bugs for which
> > > there is experimental evidence. It is irrelevant if you are going to
> > > fix concurrency bugs based on theoretical analysis.
> > > 
> > > Patricia
> > > 
> > > On 1/3/2014 10:14 PM, Greg Trasuk wrote:
> > > > 
> > > > On Jan 4, 2014, at 12:52 AM, Peter Firmstone <ji...@zeus.net.au>
> > > > wrote:
> > > > 
> > > > > On 4/01/2014 3:18 PM, Greg Trasuk wrote:
> > > > > > I’ll also point out Patricia’s recent statement that
> > > > > > TaskManager should be reasonably efficient for small task
> > > > > > queues, but less efficient for larger task queues.   We don’t
> > > > > > have solid evidence that the task queues ever get large. 
> > > > > > Hence, the assertion that “TaskManager doesn’t scale” is
> > > > > > meaningless.
> > > > > 
> > > > > No, it's not about scalability, it's about the window of time
> > > > > when a task is removed from the queue in TaskManager for
> > > > > execution but fails and needs to be retried later. 
> > > > > Task.runAfter doesn't contain the task that "should have
> > > > > executed" so dependant tasks proceed before their depenencies.
> > > > > 
> > > > > This code comment from ServiceDiscoveryManager might help:
> > > > > 
> > > > > /** This task class, when executed, first registers to receive
> > > > > *   ServiceEvents from the given ServiceRegistrar. If the
> > > > > registration *   process succeeds (no RemoteExceptions), it then
> > > > > executes the *   LookupTask to query the given ServiceRegistrar
> > > > > for a "snapshot" *   of its current state with respect to
> > > > > services that match the *   given template.
> > > > > *
> > > > > *   Note that the order of execution of the two tasks is
> > > > > important. *   That is, the LookupTask must be executed only
> > > > > after registration *   for events has completed. This is because
> > > > > when an entity registers *   with the event mechanism of a
> > > > > ServiceRegistrar, the entity will *   only receive notification
> > > > > of events that occur "in the future", *   after the registration
> > > > > is made. The entity will not receive events *   about changes to
> > > > > the state of the ServiceRegistrar that may have *   occurred
> > > > > before or during the registration process. *
> > > > > *   Thus, if the order of these tasks were reversed and the
> > > > > LookupTask *   were to be executed prior to the
> > > > > RegisterListenerTask, then the *   possibility exists for the
> > > > > occurrence of a change in the *   ServiceRegistrar's state
> > > > > between the time the LookupTask retrieves *   a snapshot of that
> > > > > state, and the time the event registration *   process has
> > > > > completed, resulting in an incorrect view of the *   current
> > > > > state of the ServiceRegistrar.
> > > > > 
> > > > 
> > > > When do you claim that this happens?   And what currently happens
> > > > now that is unacceptable?   What is the concrete, observable
> > > > problem that you’re trying to solve, that justifies introducing
> > > > failures that require further work?
> > > 
> > > 
> > 
> 


Re: Development Process - Experimental Testing, Theoretical analysis; code auditing and Static Analysis

Posted by Greg Trasuk <tr...@stratuscom.com>.
@Patricia - I understand your interpretation, and I think I’ve misled you by including the words “concrete, observable” in my question.  I’m not talking about concurrency bugs here.  I’m perfectly OK with making changes based on analysis that shows a possible race condition.  However, I spent most of yesterday reading the Java Language Specification and I’m now more convinced than ever that statements like “we’re using final variables, therefore all our code has to change” (paraphrasing) are no substitute for reasoned analysis.  Basically, I’m asserting the very common professional view that changes to existing code should be traceable to a requirement or a problem.  Further, those changes should be carefully considered and designed to minimize the chance of breaking anything else.  I don’t find the argument that “I fixed a concurrency problem, so it’s expected to have 35 other failures” convincing.  From the outside, that looks a lot like introducing failures in an attempt to fix a poorly understood or poorly stated problem.

I teach programming.  I see this all the time.  When people make changes based on what they “think” “might” be happening, it’s always a disaster.

@Peter - You’re asking the wrong question.  The right question is whether we should have a review-then-commit policy for existing code that traces a well-defined (and ideally limited) package of changes to a JIRA issue, and includes the community in decisions around how to fix the problem that is stated.  And I will suggest pre-emptively that a JIRA issue that says “concurrency problems exist” is not specific enough to drive development.

Greg.

On Jan 4, 2014, at 4:59 AM, Peter Firmstone <ji...@zeus.net.au> wrote:

> Please provide your thoughts on the following:
> 
> How do we develop code for River?
> 
> Do we only use experimental based development, or do we also allow theoretical development also?
> Do we only fix bugs that can be demonstrated with a test case, or do we fix bugs identified by FindBugs and manual code auditing as well?
> 
> Should we allow theoretical development based on standards like the Java Memory Model with visual auditing and static analysis with FindBugs, or should we prohibit fixing bugs that don't include a test case demonstrating the failure?
> 
> Regards,
> 
> Peter.
> 
> 
> On 4/01/2014 6:58 PM, Patricia Shanahan wrote:
>> Just before Christmas, you were discussing whether to fix concurrency problems based on theoretical analysis, or to only fix those problems for which there is experimental evidence.
>> 
>> I believe the PMC will be at cross-purposes until you resolve that issue, and strongly advise discussing and voting on it.
>> 
>> This is an example of a question whose answer would be obvious and non-controversial if you had agreement, either way, on that general issue. "When do you claim that this happens?  And what currently happens now that is unacceptable?  What is the concrete, observable problem that you’re trying to solve, that justifies introducing failures that require further work?" is a valid, and important, set of questions if you are only going to fix concurrency bugs for which there is experimental evidence. It is irrelevant if you are going to fix concurrency bugs based on theoretical analysis.
>> 
>> Patricia
>> 
>> On 1/3/2014 10:14 PM, Greg Trasuk wrote:
>>> 
>>> On Jan 4, 2014, at 12:52 AM, Peter Firmstone <ji...@zeus.net.au> wrote:
>>> 
>>>> On 4/01/2014 3:18 PM, Greg Trasuk wrote:
>>>>> I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.
>>>> 
>>>> No, it's not about scalability, it's about the window of time when a task is removed from the queue in TaskManager for execution but fails and needs to be retried later.  Task.runAfter doesn't contain the task that "should have executed" so dependant tasks proceed before their depenencies.
>>>> 
>>>> This code comment from ServiceDiscoveryManager might help:
>>>> 
>>>>       /** This task class, when executed, first registers to receive
>>>>         *  ServiceEvents from the given ServiceRegistrar. If the registration
>>>>         *  process succeeds (no RemoteExceptions), it then executes the
>>>>         *  LookupTask to query the given ServiceRegistrar for a "snapshot"
>>>>         *  of its current state with respect to services that match the
>>>>         *  given template.
>>>>         *
>>>>         *  Note that the order of execution of the two tasks is important.
>>>>         *  That is, the LookupTask must be executed only after registration
>>>>         *  for events has completed. This is because when an entity registers
>>>>         *  with the event mechanism of a ServiceRegistrar, the entity will
>>>>         *  only receive notification of events that occur "in the future",
>>>>         *  after the registration is made. The entity will not receive events
>>>>         *  about changes to the state of the ServiceRegistrar that may have
>>>>         *  occurred before or during the registration process.
>>>>         *
>>>>         *  Thus, if the order of these tasks were reversed and the LookupTask
>>>>         *  were to be executed prior to the RegisterListenerTask, then the
>>>>         *  possibility exists for the occurrence of a change in the
>>>>         *  ServiceRegistrar's state between the time the LookupTask retrieves
>>>>         *  a snapshot of that state, and the time the event registration
>>>>         *  process has completed, resulting in an incorrect view of the
>>>>         *  current state of the ServiceRegistrar.
>>>> 
>>> 
>>> When do you claim that this happens?  And what currently happens now that is unacceptable?  What is the concrete, observable problem that you’re trying to solve, that justifies introducing failures that require further work?
>> 
>> 
> 


Development Process - Experimental Testing, Theoretical analysis; code auditing and Static Analysis

Posted by Peter Firmstone <ji...@zeus.net.au>.
Please provide your thoughts on the following:

How do we develop code for River?

Do we only use experimental based development, or do we also allow 
theoretical development also?
Do we only fix bugs that can be demonstrated with a test case, or do we 
fix bugs identified by FindBugs and manual code auditing as well?

Should we allow theoretical development based on standards like the Java 
Memory Model with visual auditing and static analysis with FindBugs, or 
should we prohibit fixing bugs that don't include a test case 
demonstrating the failure?

Regards,

Peter.


On 4/01/2014 6:58 PM, Patricia Shanahan wrote:
> Just before Christmas, you were discussing whether to fix concurrency 
> problems based on theoretical analysis, or to only fix those problems 
> for which there is experimental evidence.
>
> I believe the PMC will be at cross-purposes until you resolve that 
> issue, and strongly advise discussing and voting on it.
>
> This is an example of a question whose answer would be obvious and 
> non-controversial if you had agreement, either way, on that general 
> issue. "When do you claim that this happens?  And what currently 
> happens now that is unacceptable?  What is the concrete, observable 
> problem that you’re trying to solve, that justifies introducing 
> failures that require further work?" is a valid, and important, set of 
> questions if you are only going to fix concurrency bugs for which 
> there is experimental evidence. It is irrelevant if you are going to 
> fix concurrency bugs based on theoretical analysis.
>
> Patricia
>
> On 1/3/2014 10:14 PM, Greg Trasuk wrote:
>>
>> On Jan 4, 2014, at 12:52 AM, Peter Firmstone <ji...@zeus.net.au> wrote:
>>
>>> On 4/01/2014 3:18 PM, Greg Trasuk wrote:
>>>> I’ll also point out Patricia’s recent statement that TaskManager 
>>>> should be reasonably efficient for small task queues, but less 
>>>> efficient for larger task queues.  We don’t have solid evidence 
>>>> that the task queues ever get large.  Hence, the assertion that 
>>>> “TaskManager doesn’t scale” is meaningless.
>>>
>>> No, it's not about scalability, it's about the window of time when a 
>>> task is removed from the queue in TaskManager for execution but 
>>> fails and needs to be retried later.  Task.runAfter doesn't contain 
>>> the task that "should have executed" so dependant tasks proceed 
>>> before their depenencies.
>>>
>>> This code comment from ServiceDiscoveryManager might help:
>>>
>>>        /** This task class, when executed, first registers to receive
>>>          *  ServiceEvents from the given ServiceRegistrar. If the 
>>> registration
>>>          *  process succeeds (no RemoteExceptions), it then executes 
>>> the
>>>          *  LookupTask to query the given ServiceRegistrar for a 
>>> "snapshot"
>>>          *  of its current state with respect to services that match 
>>> the
>>>          *  given template.
>>>          *
>>>          *  Note that the order of execution of the two tasks is 
>>> important.
>>>          *  That is, the LookupTask must be executed only after 
>>> registration
>>>          *  for events has completed. This is because when an entity 
>>> registers
>>>          *  with the event mechanism of a ServiceRegistrar, the 
>>> entity will
>>>          *  only receive notification of events that occur "in the 
>>> future",
>>>          *  after the registration is made. The entity will not 
>>> receive events
>>>          *  about changes to the state of the ServiceRegistrar that 
>>> may have
>>>          *  occurred before or during the registration process.
>>>          *
>>>          *  Thus, if the order of these tasks were reversed and the 
>>> LookupTask
>>>          *  were to be executed prior to the RegisterListenerTask, 
>>> then the
>>>          *  possibility exists for the occurrence of a change in the
>>>          *  ServiceRegistrar's state between the time the LookupTask 
>>> retrieves
>>>          *  a snapshot of that state, and the time the event 
>>> registration
>>>          *  process has completed, resulting in an incorrect view of 
>>> the
>>>          *  current state of the ServiceRegistrar.
>>>
>>
>> When do you claim that this happens?  And what currently happens now 
>> that is unacceptable?  What is the concrete, observable problem that 
>> you’re trying to solve, that justifies introducing failures that 
>> require further work?
>
>


Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Patricia Shanahan <pa...@acm.org>.
Just before Christmas, you were discussing whether to fix concurrency 
problems based on theoretical analysis, or to only fix those problems 
for which there is experimental evidence.

I believe the PMC will be at cross-purposes until you resolve that 
issue, and strongly advise discussing and voting on it.

This is an example of a question whose answer would be obvious and 
non-controversial if you had agreement, either way, on that general 
issue. "When do you claim that this happens?  And what currently happens 
now that is unacceptable?  What is the concrete, observable problem that 
you’re trying to solve, that justifies introducing failures that require 
further work?" is a valid, and important, set of questions if you are 
only going to fix concurrency bugs for which there is experimental 
evidence. It is irrelevant if you are going to fix concurrency bugs 
based on theoretical analysis.

Patricia

On 1/3/2014 10:14 PM, Greg Trasuk wrote:
>
> On Jan 4, 2014, at 12:52 AM, Peter Firmstone <ji...@zeus.net.au> wrote:
>
>> On 4/01/2014 3:18 PM, Greg Trasuk wrote:
>>> I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.
>>
>> No, it's not about scalability, it's about the window of time when a task is removed from the queue in TaskManager for execution but fails and needs to be retried later.  Task.runAfter doesn't contain the task that "should have executed" so dependant tasks proceed before their depenencies.
>>
>> This code comment from ServiceDiscoveryManager might help:
>>
>>        /** This task class, when executed, first registers to receive
>>          *  ServiceEvents from the given ServiceRegistrar. If the registration
>>          *  process succeeds (no RemoteExceptions), it then executes the
>>          *  LookupTask to query the given ServiceRegistrar for a "snapshot"
>>          *  of its current state with respect to services that match the
>>          *  given template.
>>          *
>>          *  Note that the order of execution of the two tasks is important.
>>          *  That is, the LookupTask must be executed only after registration
>>          *  for events has completed. This is because when an entity registers
>>          *  with the event mechanism of a ServiceRegistrar, the entity will
>>          *  only receive notification of events that occur "in the future",
>>          *  after the registration is made. The entity will not receive events
>>          *  about changes to the state of the ServiceRegistrar that may have
>>          *  occurred before or during the registration process.
>>          *
>>          *  Thus, if the order of these tasks were reversed and the LookupTask
>>          *  were to be executed prior to the RegisterListenerTask, then the
>>          *  possibility exists for the occurrence of a change in the
>>          *  ServiceRegistrar's state between the time the LookupTask retrieves
>>          *  a snapshot of that state, and the time the event registration
>>          *  process has completed, resulting in an incorrect view of the
>>          *  current state of the ServiceRegistrar.
>>
>
> When do you claim that this happens?  And what currently happens now that is unacceptable?  What is the concrete, observable problem that you’re trying to solve, that justifies introducing failures that require further work?



Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Peter Firmstone <ji...@zeus.net.au>.
On 4/01/2014 4:14 PM, Greg Trasuk wrote:
> On Jan 4, 2014, at 12:52 AM, Peter Firmstone<ji...@zeus.net.au>  wrote:
>
>> On 4/01/2014 3:18 PM, Greg Trasuk wrote:
>>> I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.
>> No, it's not about scalability, it's about the window of time when a task is removed from the queue in TaskManager for execution but fails and needs to be retried later.  Task.runAfter doesn't contain the task that "should have executed" so dependant tasks proceed before their depenencies.
>>
>> This code comment from ServiceDiscoveryManager might help:
>>
>>        /** This task class, when executed, first registers to receive
>>          *  ServiceEvents from the given ServiceRegistrar. If the registration
>>          *  process succeeds (no RemoteExceptions), it then executes the
>>          *  LookupTask to query the given ServiceRegistrar for a "snapshot"
>>          *  of its current state with respect to services that match the
>>          *  given template.
>>          *
>>          *  Note that the order of execution of the two tasks is important.
>>          *  That is, the LookupTask must be executed only after registration
>>          *  for events has completed. This is because when an entity registers
>>          *  with the event mechanism of a ServiceRegistrar, the entity will
>>          *  only receive notification of events that occur "in the future",
>>          *  after the registration is made. The entity will not receive events
>>          *  about changes to the state of the ServiceRegistrar that may have
>>          *  occurred before or during the registration process.
>>          *
>>          *  Thus, if the order of these tasks were reversed and the LookupTask
>>          *  were to be executed prior to the RegisterListenerTask, then the
>>          *  possibility exists for the occurrence of a change in the
>>          *  ServiceRegistrar's state between the time the LookupTask retrieves
>>          *  a snapshot of that state, and the time the event registration
>>          *  process has completed, resulting in an incorrect view of the
>>          *  current state of the ServiceRegistrar.
>>
> When do you claim that this happens?  And what currently happens now that is unacceptable?

It causes test failures caused by missing events for qa-refactor.

>    What is the concrete, observable problem that you’re trying to solve, that justifies introducing failures that require further work?
>

The 2.2 codebase in it's current form is very brittle, small changes 
create unrelated failures due to unfortunate timing.  For that reason, 
it's very difficult to develop with.  For example, Sim made some 
straightforward changes that caused the trunk build to fail, the 
failures were not caused by Sim's code, but by changes in timing.

So when you try to fix that, it causes another failure, and so on, it's 
a snowball effect.

Realising I didn't have a wide enough test base to confirm stability 
(even though tests have been run on Solaris Sparc, Solaris x64, Win x64, 
Win 32, Linux x64, Linux ARM and OSX x64) I turned to static analysis 
(FindBugs) and manual code review to suppliment testing.

So when something looks susceptible to breaking, rather than wait for it 
to fail, or if FindBugs locates a race condition, I fix it, this doesn't 
change the functionality of the code when it's behaving as expected.

>>>   If real usage never requires a large task queue, then scalability isn’t an issue, and we don’t know whether it ever needs a large task queue.
>>>
>>> In any case, removing TaskManager and replacing it with hard-coded ThreadPoolExecutors moves us farther away from having the capability of a shared work queue.
>>>    So I’m not in favour of this change.  I haven’t looked at the other services or utility classes, but if the changes are similar, I’m also not in favour.
>> No TaskManager instances have been replaced by ExecutorService, which is set via configuration.  The hard coded part is how to order tasks through the configuration provided ExecutorService.
>>
> In the 2.2 branch implementation of com.sun.jini.reggie.RegistrarImpl there’s a variable called ‘tasker’ that is not present in the qa_refactor branch’s implementation.

Yes, tasker has been replaced by two Executors, one for event 
notifications, the other for discovery responses, at present these are 
hardcoded.

307 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/reggie/RegistrarImpl.java?annotate=1552606&diff_format=h#l307> 
	     private JoinManager joiner; 	     private volatile JoinManager 
joiner; // accessed without lock from DestroyThread
308 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/reggie/RegistrarImpl.java?annotate=1552606&diff_format=h#l308> 
	     /** Task manager for sending events and discovery responses */ 	  
    /** Executors for sending events and discovery responses */
309 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/reggie/RegistrarImpl.java?annotate=1552606&diff_format=h#l309> 
	     private TaskManager tasker; 	     private final ThreadPoolExecutor 
eventNotifierExec;
310 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/reggie/RegistrarImpl.java?annotate=1552606&diff_format=h#l310> 
		     private final ThreadPoolExecutor discoveryResponseExec;
311 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/reggie/RegistrarImpl.java?annotate=1552606&diff_format=h#l311> 
	


This is how Mahalo does it:

205 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l205> 
	         settlerpool = (TaskManager) Config.getNonNullEntry(config, 
TxnManager.MAHALO, "settlerPool", TaskManager.class, new 
TaskManager(settlerthreads, settlertimeout, settlerload)); 	        
  settlerpool = Config.getNonNullEntry(
206 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l206> 
	         taskpool = (TaskManager) Config.getNonNullEntry(config, 
TxnManager.MAHALO, "taskPool", TaskManager.class, new 
TaskManager(taskthreads, tasktimeout, taskload)); 	                 config,
207 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l207> 
		                 TxnManager.MAHALO,
208 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l208> 
		                 "settlerPool",
209 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l209> 
		                 ExecutorService.class,
210 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l210> 
		                 new ThreadPoolExecutor(
211 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l211> 
		                     1,
212 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l212> 
		                     settlerthreads,
213 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l213> 
		                     settlertimeout,
214 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l214> 
		                     TimeUnit.MILLISECONDS,
215 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l215> 
		                     new LinkedBlockingQueue<Runnable>(),
216 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l216> 
		                     new NamedThreadFactory("TxnMgr settlerPool", false)
217 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l217> 
		                 )
218 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l218> 
		         );
219 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l219> 
		         taskpool = Config.getNonNullEntry(
220 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l220> 
		                 config,
221 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l221> 
		                 TxnManager.MAHALO,
222 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l222> 
		                 "taskPool",
223 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l223> 
		                 ExecutorService.class,
224 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l224> 
		                 new ThreadPoolExecutor(
225 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l225> 
		                         1,
226 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l226> 
		                         taskthreads,
227 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l227> 
		                         tasktimeout,
228 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l228> 
		                         TimeUnit.MILLISECONDS,
229 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l229> 
		                         new LinkedBlockingQueue<Runnable>(),
230 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l230> 
		                         new NamedThreadFactory("TxnMgr taskPool", false)
231 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l231> 
		                 )
232 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l232> 
		         );
233 
<http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/TxnManagerImplInitializer.java?annotate=1555061&diff_format=h#l233> 




>> One option is to stop worrying about event order at the sender, and figure out a way of ordering at the recepient.
>>
>>
> I don’t understand what you’re saying here.

Task.runAfter dependencies are performed at the sender, even if ordered 
correctly in TaskManager, there's no telling which thread from the pool 
will be scheduled by the operating system, this can alter task 
processing order, network latency can also dictate out of order arrival 
at the recepient.

>>>    You’re introducing changes that introduce test failures (which is why you’re asking for help) without a good reason.
>> The reason is to expose synchronization bugs so they can be observed and fixed.
> Randomly changing code is not a rational diagnostic technique.

Which changes do you feel are random?  Feel free to ask about why I've 
made a particular change, but try to keep questions short, so they're 
managable for me.

>>>   You’re never going to ship this code unless you stop modifying it.
>> It is a considerable undertaking, but I'm not in any hurry, it's not yet ready for release.  I understand you're concerned about the considerable number of changes; there will be plenty of time for compatibility testing.
>>
>>> Also, when you say below,
>>>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
>>> …be careful!  You’re getting into the same difficult area as transactional semantics around messaging.  Will you need to provide a “dead task” queue?  Do you need to set a limit on how many times a task get retried?  What happens when that limit is exceeded?  Do all tasks have the same limit?  Should a task get notified when it’s exceeded the retry limit?  How long should you wait between retries?  Is that number the same for all tasks.  Is there some kind of alarm or notification when tasks end up being retried, or when the dead task queue becomes full?
>> Since most dependencies appear to be based on who the recipient is, if that recepient is not contactable in spite of considerable effort, we should abandon futher attempts to do so.   At present RetryTask will continue to attempt to make contact every 5 minutes.
>>
> I don’t understand what you’re saying here.

RetryTask is required because of unreliable network connections, if we 
send a sequence of events to a remote host, we are currently trying to 
send them in order.  If one task fails briefly, then the events will 
likely arrive out of order at the recipient when the failed task is 
later retried.

>> Regards,
>>
>> Peter.
>>


Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Greg Trasuk <tr...@stratuscom.com>.
On Jan 4, 2014, at 12:52 AM, Peter Firmstone <ji...@zeus.net.au> wrote:

> On 4/01/2014 3:18 PM, Greg Trasuk wrote:
>> I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.
> 
> No, it's not about scalability, it's about the window of time when a task is removed from the queue in TaskManager for execution but fails and needs to be retried later.  Task.runAfter doesn't contain the task that "should have executed" so dependant tasks proceed before their depenencies.
> 
> This code comment from ServiceDiscoveryManager might help:
> 
>       /** This task class, when executed, first registers to receive
>         *  ServiceEvents from the given ServiceRegistrar. If the registration
>         *  process succeeds (no RemoteExceptions), it then executes the
>         *  LookupTask to query the given ServiceRegistrar for a "snapshot"
>         *  of its current state with respect to services that match the
>         *  given template.
>         *
>         *  Note that the order of execution of the two tasks is important.
>         *  That is, the LookupTask must be executed only after registration
>         *  for events has completed. This is because when an entity registers
>         *  with the event mechanism of a ServiceRegistrar, the entity will
>         *  only receive notification of events that occur "in the future",
>         *  after the registration is made. The entity will not receive events
>         *  about changes to the state of the ServiceRegistrar that may have
>         *  occurred before or during the registration process.
>         *
>         *  Thus, if the order of these tasks were reversed and the LookupTask
>         *  were to be executed prior to the RegisterListenerTask, then the
>         *  possibility exists for the occurrence of a change in the
>         *  ServiceRegistrar's state between the time the LookupTask retrieves
>         *  a snapshot of that state, and the time the event registration
>         *  process has completed, resulting in an incorrect view of the
>         *  current state of the ServiceRegistrar.
> 

When do you claim that this happens?  And what currently happens now that is unacceptable?  What is the concrete, observable problem that you’re trying to solve, that justifies introducing failures that require further work?

>>  If real usage never requires a large task queue, then scalability isn’t an issue, and we don’t know whether it ever needs a large task queue.
>> 
>> In any case, removing TaskManager and replacing it with hard-coded ThreadPoolExecutors moves us farther away from having the capability of a shared work queue.
>>   So I’m not in favour of this change.  I haven’t looked at the other services or utility classes, but if the changes are similar, I’m also not in favour.
> 
> No TaskManager instances have been replaced by ExecutorService, which is set via configuration.  The hard coded part is how to order tasks through the configuration provided ExecutorService.
> 

In the 2.2 branch implementation of com.sun.jini.reggie.RegistrarImpl there’s a variable called ‘tasker’ that is not present in the qa_refactor branch’s implementation.

> One option is to stop worrying about event order at the sender, and figure out a way of ordering at the recepient.
> 
> 

I don’t understand what you’re saying here.

> 
>>   You’re introducing changes that introduce test failures (which is why you’re asking for help) without a good reason.
> 
> The reason is to expose synchronization bugs so they can be observed and fixed.

Randomly changing code is not a rational diagnostic technique.

> 
>>  You’re never going to ship this code unless you stop modifying it.
> 
> It is a considerable undertaking, but I'm not in any hurry, it's not yet ready for release.  I understand you're concerned about the considerable number of changes; there will be plenty of time for compatibility testing.
> 
>> Also, when you say below,
>>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
>> …be careful!  You’re getting into the same difficult area as transactional semantics around messaging.  Will you need to provide a “dead task” queue?  Do you need to set a limit on how many times a task get retried?  What happens when that limit is exceeded?  Do all tasks have the same limit?  Should a task get notified when it’s exceeded the retry limit?  How long should you wait between retries?  Is that number the same for all tasks.  Is there some kind of alarm or notification when tasks end up being retried, or when the dead task queue becomes full?
> 
> Since most dependencies appear to be based on who the reciepient is, if that recepient is not contactable in spite of considerable effort, we should abandon futher attempts to do so.   At present RetryTask will continue to attempt to make contact every 5 minutes.
> 

I don’t understand what you’re saying here.

> Regards,
> 
> Peter.
> 
>> Sometimes it’s best not to try to abstract-away all complexity.
>> 
>> Greg.
>> 
>> On Jan 3, 2014, at 10:43 PM, Peter Firmstone<ji...@zeus.net.au>  wrote:
>> 
>>> ServiceDiscoveryManager is now the only class that utilises TaskManager and RetryTask.  JoinManager still uses TaskManager but not RetryTask.  See River-344 for an explanation of the problem.
>>> 
>>> Most instances of TaskManager in qa-refactor have been replaced with ExecutorService, RetryTask now implements RunnableFuture and can be cancelled by Future.cancel from the ExecutorService.
>>> 
>>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
>>> 
>>> Can anyone spare time to review, suggest alternatives, or improvements?
>>> 
>>> Thanks in advance,
>>> 
>>> Peter.
>>> 
>>> Failed com_sun_jini_test_impl_servicediscovery_event_DiscardDownReDiscover.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceDown.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceUp.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_LookupTaskRace.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_impl_servicediscovery_event_ReRegisterBadEquals.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed com_sun_jini_test_impl_servicediscovery_event_ReRegisterGoodEquals.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed com_sun_jini_test_impl_servicediscovery_event_ServiceDiscardCacheTerminate.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheDiscard.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheLookup.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_Lookup.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMax.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 2 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMaxFilter.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMinEqualsMax.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed com_sun_jini_test_spec_servicediscovery_lookup_LookupMinMaxNoBlockFilter.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWait.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitFilter.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>>> 
>>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitNoBlock.td
>>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>> 
>>> 
>>> 
>>> On 4/01/2014 10:27 AM, Apache Jenkins Server wrote:
>>>> See<https://builds.apache.org/job/river-qa-refactor-win/45/>
>>>> 
>>>> ------------------------------------------
>>>> [...truncated 15733 lines...]
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsWaitTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeNO_WAITTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeReadTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeWaitTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseANYTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseFOREVERTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteNegativeLeaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsNotifyTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeNotifyTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseANYTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseFOREVERTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteNegativeLeaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/AdminIFShutdownTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/AdminIFTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseExpireCancelTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseExpireRenewTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseMapTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/LeaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/MahaloCreateShutdownTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/MahaloIFTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/MahaloImplReadyStateTest.td
>>>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mercury.ActivatableMercuryVerifier com.sun.jini.qa.harness.SkipConfigTestVerifier
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/NestableServerTransactionCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/NestableTransactionCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest2.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest3.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest4.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest5.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/RandomStressTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/ServerTransactionEqualityTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/ServerTransactionToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TransactionCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TransactionManagerCreatedToStringTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullActivationConfigEntries.td
>>>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullConfigEntries.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullRecoveredLocators.td
>>>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrProxyEqualityTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnCommitTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnPrepareTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/CommitExpiredTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/CommitTimeoutTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/GetStateTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/JoinIdempotentTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/JoinWhileActiveTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/ManyParticipantsTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/PrepareTimeoutTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/RollBackErrorTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/RollForwardErrorTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java] com/sun/jini/test/spec/txnmanager/TwoPhaseTest.td
>>>>      [java] Test Passed: OK
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java]
>>>>      [java] # of tests started   = 1406
>>>>      [java] # of tests completed = 1406
>>>>      [java] # of tests skipped   = 52
>>>>      [java] # of tests passed    = 1388
>>>>      [java] # of tests failed    = 18
>>>>      [java]
>>>>      [java] -----------------------------------------
>>>>      [java]
>>>>      [java]    Date finished:
>>>>      [java]       Fri Jan 03 16:27:03 PST 2014
>>>>      [java]    Time elapsed:
>>>>      [java]       59325 seconds
>>>>      [java]
>>>>      [java] Java Result: 1
>>>> 
>>>> collect-result:
>>>>      [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>>      [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>>       [zip] Building zip:<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result\qaresults-amd64-Windows>   Server 2008 R2-1.7.0.zip
>>>> 
>>>> BUILD FAILED
>>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\build.xml>:2109: The following error occurred while executing this line:
>>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:406: The following error occurred while executing this line:
>>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:380: condition satisfied
>>>> 
>>>> Total time: 996 minutes 9 seconds
>>>> Build step 'Invoke Ant' marked build as failure
>>>> Archiving artifacts
> 


Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Peter Firmstone <ji...@zeus.net.au>.
On 4/01/2014 3:18 PM, Greg Trasuk wrote:
> I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.

No, it's not about scalability, it's about the window of time when a 
task is removed from the queue in TaskManager for execution but fails 
and needs to be retried later.  Task.runAfter doesn't contain the task 
that "should have executed" so dependant tasks proceed before their 
depenencies.

This code comment from ServiceDiscoveryManager might help:

        /** This task class, when executed, first registers to receive
          *  ServiceEvents from the given ServiceRegistrar. If the 
registration
          *  process succeeds (no RemoteExceptions), it then executes the
          *  LookupTask to query the given ServiceRegistrar for a "snapshot"
          *  of its current state with respect to services that match the
          *  given template.
          *
          *  Note that the order of execution of the two tasks is important.
          *  That is, the LookupTask must be executed only after 
registration
          *  for events has completed. This is because when an entity 
registers
          *  with the event mechanism of a ServiceRegistrar, the entity will
          *  only receive notification of events that occur "in the future",
          *  after the registration is made. The entity will not receive 
events
          *  about changes to the state of the ServiceRegistrar that may 
have
          *  occurred before or during the registration process.
          *
          *  Thus, if the order of these tasks were reversed and the 
LookupTask
          *  were to be executed prior to the RegisterListenerTask, then the
          *  possibility exists for the occurrence of a change in the
          *  ServiceRegistrar's state between the time the LookupTask 
retrieves
          *  a snapshot of that state, and the time the event registration
          *  process has completed, resulting in an incorrect view of the
          *  current state of the ServiceRegistrar.

>   If real usage never requires a large task queue, then scalability isn’t an issue, and we don’t know whether it ever needs a large task queue.
>
> In any case, removing TaskManager and replacing it with hard-coded ThreadPoolExecutors moves us farther away from having the capability of a shared work queue.
>    So I’m not in favour of this change.  I haven’t looked at the other services or utility classes, but if the changes are similar, I’m also not in favour.

No TaskManager instances have been replaced by ExecutorService, which is 
set via configuration.  The hard coded part is how to order tasks 
through the configuration provided ExecutorService.

One option is to stop worrying about event order at the sender, and 
figure out a way of ordering at the recepient.



>    You’re introducing changes that introduce test failures (which is why you’re asking for help) without a good reason.

The reason is to expose synchronization bugs so they can be observed and 
fixed.

>   You’re never going to ship this code unless you stop modifying it.

It is a considerable undertaking, but I'm not in any hurry, it's not yet 
ready for release.  I understand you're concerned about the considerable 
number of changes; there will be plenty of time for compatibility testing.

> Also, when you say below,
>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
> …be careful!  You’re getting into the same difficult area as transactional semantics around messaging.  Will you need to provide a “dead task” queue?  Do you need to set a limit on how many times a task get retried?  What happens when that limit is exceeded?  Do all tasks have the same limit?  Should a task get notified when it’s exceeded the retry limit?  How long should you wait between retries?  Is that number the same for all tasks.  Is there some kind of alarm or notification when tasks end up being retried, or when the dead task queue becomes full?

Since most dependencies appear to be based on who the reciepient is, if 
that recepient is not contactable in spite of considerable effort, we 
should abandon futher attempts to do so.   At present RetryTask will 
continue to attempt to make contact every 5 minutes.

Regards,

Peter.

> Sometimes it’s best not to try to abstract-away all complexity.
>
> Greg.
>
> On Jan 3, 2014, at 10:43 PM, Peter Firmstone<ji...@zeus.net.au>  wrote:
>
>> ServiceDiscoveryManager is now the only class that utilises TaskManager and RetryTask.  JoinManager still uses TaskManager but not RetryTask.  See River-344 for an explanation of the problem.
>>
>> Most instances of TaskManager in qa-refactor have been replaced with ExecutorService, RetryTask now implements RunnableFuture and can be cancelled by Future.cancel from the ExecutorService.
>>
>> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
>>
>> Can anyone spare time to review, suggest alternatives, or improvements?
>>
>> Thanks in advance,
>>
>> Peter.
>>
>> Failed com_sun_jini_test_impl_servicediscovery_event_DiscardDownReDiscover.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceDown.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceUp.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_LookupTaskRace.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_impl_servicediscovery_event_ReRegisterBadEquals.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed com_sun_jini_test_impl_servicediscovery_event_ReRegisterGoodEquals.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed com_sun_jini_test_impl_servicediscovery_event_ServiceDiscardCacheTerminate.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheDiscard.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheLookup.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_Lookup.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMax.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 2 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMaxFilter.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMinEqualsMax.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed com_sun_jini_test_spec_servicediscovery_lookup_LookupMinMaxNoBlockFilter.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWait.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitFilter.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
>>
>> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitNoBlock.td
>> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
>>
>>
>>
>> On 4/01/2014 10:27 AM, Apache Jenkins Server wrote:
>>> See<https://builds.apache.org/job/river-qa-refactor-win/45/>
>>>
>>> ------------------------------------------
>>> [...truncated 15733 lines...]
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsWaitTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeNO_WAITTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeReadTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeWaitTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseANYTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseFOREVERTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteNegativeLeaseTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsNotifyTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeNotifyTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseANYTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseFOREVERTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteNegativeLeaseTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/AdminIFShutdownTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/AdminIFTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/LeaseExpireCancelTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/LeaseExpireRenewTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/LeaseMapTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/LeaseTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/MahaloCreateShutdownTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/MahaloIFTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/MahaloImplReadyStateTest.td
>>>       [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mercury.ActivatableMercuryVerifier com.sun.jini.qa.harness.SkipConfigTestVerifier
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/NestableServerTransactionCreatedToStringTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/NestableTransactionCreatedToStringTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest2.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest3.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest4.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest5.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/RandomStressTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/ServerTransactionEqualityTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/ServerTransactionToStringTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/TransactionCreatedToStringTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/TransactionManagerCreatedToStringTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullActivationConfigEntries.td
>>>       [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullConfigEntries.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullRecoveredLocators.td
>>>       [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/impl/mahalo/TxnMgrProxyEqualityTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnCommitTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnPrepareTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/CommitExpiredTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/CommitTimeoutTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/GetStateTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/JoinIdempotentTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/JoinWhileActiveTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/ManyParticipantsTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/PrepareTimeoutTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/RollBackErrorTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/RollForwardErrorTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java] com/sun/jini/test/spec/txnmanager/TwoPhaseTest.td
>>>       [java] Test Passed: OK
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java]
>>>       [java] # of tests started   = 1406
>>>       [java] # of tests completed = 1406
>>>       [java] # of tests skipped   = 52
>>>       [java] # of tests passed    = 1388
>>>       [java] # of tests failed    = 18
>>>       [java]
>>>       [java] -----------------------------------------
>>>       [java]
>>>       [java]    Date finished:
>>>       [java]       Fri Jan 03 16:27:03 PST 2014
>>>       [java]    Time elapsed:
>>>       [java]       59325 seconds
>>>       [java]
>>>       [java] Java Result: 1
>>>
>>> collect-result:
>>>       [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>       [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>>        [zip] Building zip:<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result\qaresults-amd64-Windows>   Server 2008 R2-1.7.0.zip
>>>
>>> BUILD FAILED
>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\build.xml>:2109: The following error occurred while executing this line:
>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:406: The following error occurred while executing this line:
>>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:380: condition satisfied
>>>
>>> Total time: 996 minutes 9 seconds
>>> Build step 'Invoke Ant' marked build as failure
>>> Archiving artifacts


Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Greg Trasuk <tr...@stratuscom.com>.
I’ll also point out Patricia’s recent statement that TaskManager should be reasonably efficient for small task queues, but less efficient for larger task queues.  We don’t have solid evidence that the task queues ever get large.  Hence, the assertion that “TaskManager doesn’t scale” is meaningless.  If real usage never requires a large task queue, then scalability isn’t an issue, and we don’t know whether it ever needs a large task queue.

In any case, removing TaskManager and replacing it with hard-coded ThreadPoolExecutors moves us farther away from having the capability of a shared work queue.  So I’m not in favour of this change.  I haven’t looked at the other services or utility classes, but if the changes are similar, I’m also not in favour.  You’re introducing changes that introduce test failures (which is why you’re asking for help) without a good reason.  You’re never going to ship this code unless you stop modifying it.

Also, when you say below, 
> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
…be careful!  You’re getting into the same difficult area as transactional semantics around messaging.  Will you need to provide a “dead task” queue?  Do you need to set a limit on how many times a task get retried?  What happens when that limit is exceeded?  Do all tasks have the same limit?  Should a task get notified when it’s exceeded the retry limit?  How long should you wait between retries?  Is that number the same for all tasks.  Is there some kind of alarm or notification when tasks end up being retried, or when the dead task queue becomes full?

Sometimes it’s best not to try to abstract-away all complexity.

Greg.

On Jan 3, 2014, at 10:43 PM, Peter Firmstone <ji...@zeus.net.au> wrote:

> ServiceDiscoveryManager is now the only class that utilises TaskManager and RetryTask.  JoinManager still uses TaskManager but not RetryTask.  See River-344 for an explanation of the problem.
> 
> Most instances of TaskManager in qa-refactor have been replaced with ExecutorService, RetryTask now implements RunnableFuture and can be cancelled by Future.cancel from the ExecutorService.
> 
> I'm developing an ExecutorService wrapper that retry's failed tasks in org.apache.river.impl.thread.SerialExecutorService, by not removing a task from it's queue until it completes successfully, it prevents any dependant tasks from running, I would like to use this as a replacement for TaskManager and RetryTask.
> 
> Can anyone spare time to review, suggest alternatives, or improvements?
> 
> Thanks in advance,
> 
> Peter.
> 
> Failed com_sun_jini_test_impl_servicediscovery_event_DiscardDownReDiscover.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
> 
> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceDown.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceUp.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_impl_servicediscovery_event_LookupTaskRace.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_impl_servicediscovery_event_ReRegisterBadEquals.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed com_sun_jini_test_impl_servicediscovery_event_ReRegisterGoodEquals.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed com_sun_jini_test_impl_servicediscovery_event_ServiceDiscardCacheTerminate.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheDiscard.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheLookup.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_Lookup.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMax.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 2 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMaxFilter.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMinEqualsMax.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed com_sun_jini_test_spec_servicediscovery_lookup_LookupMinMaxNoBlockFilter.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWait.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitFilter.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 discovery event(s) received
> 
> Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitNoBlock.td
> Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 discovery event(s) received
> 
> 
> 
> On 4/01/2014 10:27 AM, Apache Jenkins Server wrote:
>> See<https://builds.apache.org/job/river-qa-refactor-win/45/>
>> 
>> ------------------------------------------
>> [...truncated 15733 lines...]
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsWaitTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeNO_WAITTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeReadTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeWaitTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseANYTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseFOREVERTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteNegativeLeaseTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsNotifyTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeNotifyTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseANYTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseFOREVERTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteNegativeLeaseTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/AdminIFShutdownTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/AdminIFTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/LeaseExpireCancelTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/LeaseExpireRenewTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/LeaseMapTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/LeaseTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/MahaloCreateShutdownTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/MahaloIFTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/MahaloImplReadyStateTest.td
>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mercury.ActivatableMercuryVerifier com.sun.jini.qa.harness.SkipConfigTestVerifier
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/NestableServerTransactionCreatedToStringTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/NestableTransactionCreatedToStringTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest2.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest3.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest4.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest5.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/RandomStressTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/ServerTransactionEqualityTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/ServerTransactionToStringTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/TransactionCreatedToStringTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/TransactionManagerCreatedToStringTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullActivationConfigEntries.td
>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullConfigEntries.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullRecoveredLocators.td
>>      [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/impl/mahalo/TxnMgrProxyEqualityTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnCommitTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnPrepareTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/CommitExpiredTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/CommitTimeoutTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/GetStateTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/JoinIdempotentTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/JoinWhileActiveTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/ManyParticipantsTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/PrepareTimeoutTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/RollBackErrorTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/RollForwardErrorTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java] com/sun/jini/test/spec/txnmanager/TwoPhaseTest.td
>>      [java] Test Passed: OK
>>      [java]
>>      [java] -----------------------------------------
>>      [java]
>>      [java] # of tests started   = 1406
>>      [java] # of tests completed = 1406
>>      [java] # of tests skipped   = 52
>>      [java] # of tests passed    = 1388
>>      [java] # of tests failed    = 18
>>      [java]
>>      [java] -----------------------------------------
>>      [java]
>>      [java]    Date finished:
>>      [java]       Fri Jan 03 16:27:03 PST 2014
>>      [java]    Time elapsed:
>>      [java]       59325 seconds
>>      [java]
>>      [java] Java Result: 1
>> 
>> collect-result:
>>      [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>      [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>>       [zip] Building zip:<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result\qaresults-amd64-Windows>  Server 2008 R2-1.7.0.zip
>> 
>> BUILD FAILED
>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\build.xml>:2109: The following error occurred while executing this line:
>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:406: The following error occurred while executing this line:
>> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:380: condition satisfied
>> 
>> Total time: 996 minutes 9 seconds
>> Build step 'Invoke Ant' marked build as failure
>> Archiving artifacts
> 


Re: Build failed in Jenkins: river-qa-refactor-win #45

Posted by Peter Firmstone <ji...@zeus.net.au>.
ServiceDiscoveryManager is now the only class that utilises TaskManager 
and RetryTask.  JoinManager still uses TaskManager but not RetryTask.  
See River-344 for an explanation of the problem.

Most instances of TaskManager in qa-refactor have been replaced with 
ExecutorService, RetryTask now implements RunnableFuture and can be 
cancelled by Future.cancel from the ExecutorService.

I'm developing an ExecutorService wrapper that retry's failed tasks in 
org.apache.river.impl.thread.SerialExecutorService, by not removing a 
task from it's queue until it completes successfully, it prevents any 
dependant tasks from running, I would like to use this as a replacement 
for TaskManager and RetryTask.

Can anyone spare time to review, suggest alternatives, or improvements?

Thanks in advance,

Peter.

Failed 
com_sun_jini_test_impl_servicediscovery_event_DiscardDownReDiscover.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 
discovery event(s) received

Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceDown.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_impl_servicediscovery_event_DiscardServiceUp.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_impl_servicediscovery_event_LookupTaskRace.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_impl_servicediscovery_event_ReRegisterBadEquals.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 
discovery event(s) received

Failed 
com_sun_jini_test_impl_servicediscovery_event_ReRegisterGoodEquals.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 
discovery event(s) received

Failed 
com_sun_jini_test_impl_servicediscovery_event_ServiceDiscardCacheTerminate.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 4 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheDiscard.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_cache_CacheLookup.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_lookup_Lookup.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMax.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 2 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMaxFilter.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupMinEqualsMax.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 
discovery event(s) received

Failed 
com_sun_jini_test_spec_servicediscovery_lookup_LookupMinMaxNoBlockFilter.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 3 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWait.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitFilter.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 1 
discovery event(s) received

Failed 	com_sun_jini_test_spec_servicediscovery_lookup_LookupWaitNoBlock.td
Test Failed: com.sun.jini.qa.harness.TestException: discovery failed -- 
waited 30 seconds (0 minutes) -- 2 discovery event(s) expected, 0 
discovery event(s) received



On 4/01/2014 10:27 AM, Apache Jenkins Server wrote:
> See<https://builds.apache.org/job/river-qa-refactor-win/45/>
>
> ------------------------------------------
> [...truncated 15733 lines...]
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsWaitTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeNO_WAITTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeReadTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeWaitTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseANYTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseFOREVERTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteNegativeLeaseTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsNotifyTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeNotifyTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseANYTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseFOREVERTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteNegativeLeaseTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/AdminIFShutdownTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/AdminIFTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/LeaseExpireCancelTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/LeaseExpireRenewTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/LeaseMapTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/LeaseTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/MahaloCreateShutdownTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/MahaloIFTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/MahaloImplReadyStateTest.td
>       [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mercury.ActivatableMercuryVerifier com.sun.jini.qa.harness.SkipConfigTestVerifier
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/NestableServerTransactionCreatedToStringTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/NestableTransactionCreatedToStringTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest2.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest3.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest4.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest5.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/RandomStressTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/ServerTransactionEqualityTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/ServerTransactionToStringTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/TransactionCreatedToStringTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/TransactionManagerCreatedToStringTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullActivationConfigEntries.td
>       [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullConfigEntries.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullRecoveredLocators.td
>       [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/impl/mahalo/TxnMgrProxyEqualityTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnCommitTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnPrepareTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/CommitExpiredTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/CommitTimeoutTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/GetStateTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/JoinIdempotentTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/JoinWhileActiveTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/ManyParticipantsTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/PrepareTimeoutTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/RollBackErrorTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/RollForwardErrorTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java] com/sun/jini/test/spec/txnmanager/TwoPhaseTest.td
>       [java] Test Passed: OK
>       [java]
>       [java] -----------------------------------------
>       [java]
>       [java] # of tests started   = 1406
>       [java] # of tests completed = 1406
>       [java] # of tests skipped   = 52
>       [java] # of tests passed    = 1388
>       [java] # of tests failed    = 18
>       [java]
>       [java] -----------------------------------------
>       [java]
>       [java]    Date finished:
>       [java]       Fri Jan 03 16:27:03 PST 2014
>       [java]    Time elapsed:
>       [java]       59325 seconds
>       [java]
>       [java] Java Result: 1
>
> collect-result:
>       [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>       [copy] Copying 1 file to<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
>        [zip] Building zip:<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result\qaresults-amd64-Windows>  Server 2008 R2-1.7.0.zip
>
> BUILD FAILED
> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\build.xml>:2109: The following error occurred while executing this line:
> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:406: The following error occurred while executing this line:
> <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:380: condition satisfied
>
> Total time: 996 minutes 9 seconds
> Build step 'Invoke Ant' marked build as failure
> Archiving artifacts


Build failed in Jenkins: river-qa-refactor-win #45

Posted by Apache Jenkins Server <je...@builds.apache.org>.
See <https://builds.apache.org/job/river-qa-refactor-win/45/>

------------------------------------------
[...truncated 15733 lines...]
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeIfExistsWaitTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeNO_WAITTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeReadTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionTakeWaitTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseANYTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteLeaseFOREVERTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteNegativeLeaseTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsNotifyTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeIfExistsTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeNotifyTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTakeTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionWriteTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseANYTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteLeaseFOREVERTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteNegativeLeaseTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotWriteTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/AdminIFShutdownTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/AdminIFTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/LeaseExpireCancelTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/LeaseExpireRenewTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/LeaseMapTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/LeaseTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/MahaloCreateShutdownTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/MahaloIFTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/MahaloImplReadyStateTest.td
     [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mercury.ActivatableMercuryVerifier com.sun.jini.qa.harness.SkipConfigTestVerifier
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/NestableServerTransactionCreatedToStringTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/NestableTransactionCreatedToStringTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest2.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest3.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest4.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/PrepareAndCommitExceptionTest5.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/RandomStressTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/ServerTransactionEqualityTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/ServerTransactionToStringTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/TransactionCreatedToStringTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/TransactionManagerCreatedToStringTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullActivationConfigEntries.td
     [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullConfigEntries.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/TxnMgrImplNullRecoveredLocators.td
     [java] Test Skipped: verifiers are: com.sun.jini.test.impl.mahalo.ActivatableMahaloVerifier
     [java] -----------------------------------------
     [java] com/sun/jini/test/impl/mahalo/TxnMgrProxyEqualityTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnCommitTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/AsynchAbortOnPrepareTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/CommitExpiredTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/CommitTimeoutTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/GetStateTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/JoinIdempotentTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/JoinWhileActiveTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/ManyParticipantsTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/PrepareTimeoutTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/RollBackErrorTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/RollForwardErrorTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] com/sun/jini/test/spec/txnmanager/TwoPhaseTest.td
     [java] Test Passed: OK
     [java] 
     [java] -----------------------------------------
     [java] 
     [java] # of tests started   = 1406
     [java] # of tests completed = 1406
     [java] # of tests skipped   = 52
     [java] # of tests passed    = 1388
     [java] # of tests failed    = 18
     [java] 
     [java] -----------------------------------------
     [java] 
     [java]    Date finished:
     [java]       Fri Jan 03 16:27:03 PST 2014
     [java]    Time elapsed:
     [java]       59325 seconds
     [java] 
     [java] Java Result: 1

collect-result:
     [copy] Copying 1 file to <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
     [copy] Copying 1 file to <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result>
      [zip] Building zip: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\result\qaresults-amd64-Windows> Server 2008 R2-1.7.0.zip

BUILD FAILED
<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\build.xml>:2109: The following error occurred while executing this line:
<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:406: The following error occurred while executing this line:
<https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\qa\build.xml>:380: condition satisfied

Total time: 996 minutes 9 seconds
Build step 'Invoke Ant' marked build as failure
Archiving artifacts

Build failed in Jenkins: river-qa-refactor-win #44

Posted by Apache Jenkins Server <je...@builds.apache.org>.
See <https://builds.apache.org/job/river-qa-refactor-win/44/>

------------------------------------------
Started by an SCM change
Building remotely on windows1 in workspace <https://builds.apache.org/job/river-qa-refactor-win/ws/>
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Archiving artifacts

Build failed in Jenkins: river-qa-refactor-win #43

Posted by Apache Jenkins Server <je...@builds.apache.org>.
See <https://builds.apache.org/job/river-qa-refactor-win/43/>

------------------------------------------
Started by an SCM change
Building remotely on windows1 in workspace <https://builds.apache.org/job/river-qa-refactor-win/ws/>
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Archiving artifacts

Build failed in Jenkins: river-qa-refactor-win #42

Posted by Apache Jenkins Server <je...@builds.apache.org>.
See <https://builds.apache.org/job/river-qa-refactor-win/42/>

------------------------------------------
Started by an SCM change
Building remotely on windows1 in workspace <https://builds.apache.org/job/river-qa-refactor-win/ws/>
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Retrying after 10 seconds
Cleaning local Directory trunk
java.io.IOException: remote file operation failed: <https://builds.apache.org/job/river-qa-refactor-win/ws/> at hudson.remoting.Channel@5bdc9a79:windows1
	at hudson.FilePath.act(FilePath.java:910)
	at hudson.FilePath.act(FilePath.java:887)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:848)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:786)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1414)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:561)
	at hudson.model.Run.execute(Run.java:1678)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:231)
Caused by: java.nio.file.FileSystemException: <https://builds.apache.org/job/river-qa-refactor-win/ws/trunk\lib\custard-apple-1.0.3.jar>: The process cannot access the file because it is being used by another process.

	at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
	at java.nio.file.Files.delete(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor75.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at hudson.Util.deleteFile(Util.java:238)
	at hudson.Util.deleteRecursive(Util.java:301)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.Util.deleteRecursive(Util.java:292)
	at hudson.Util.deleteContentsRecursive(Util.java:203)
	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:75)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:161)
	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:908)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:889)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:872)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2461)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:328)
	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at hudson.remoting.Engine$1$1.run(Engine.java:63)
	at java.lang.Thread.run(Unknown Source)
Archiving artifacts