I don't expect accessing the files at the same time to be a problem. It just happens to be the way I needed to generate two reports overnight.
2014-05-02 16:51:31,660 ERROR [Ljava.lang.StackTraceElement;@bcda40
java.lang.OutOfMemoryError: Java heap space
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays$CacheTransformer.transform(CachedByteArrays.java:106)
at org.apache.commons.collections.map.LazyMap.get(LazyMap.java:158)
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays.readByte(CachedByteArrays.java:126)
at net.domesdaybook.matcher.sequence.searcher.BoyerMooreHorspoolSearcher.searchForwards(BoyerMooreHorspoolSearcher.java:93)
at uk.gov.nationalarchives.droid.core.signature.droid6.SubSequence.findSequenceFromPosition(SubSequence.java:719)
at uk.gov.nationalarchives.droid.core.signature.droid6.ByteSequence.matches(ByteSequence.java:424)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignature.matches(InternalSignature.java:399)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignatureCollection.getMatchingSignatures(InternalSignatureCollection.java:99)
at uk.gov.nationalarchives.droid.core.signature.droid6.FFSignatureFile.runFileIdentification(FFSignatureFile.java:495)
at uk.gov.nationalarchives.droid.core.BinarySignatureIdentifier.matchBinarySignatures(BinarySignatureIdentifier.java:103)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:123)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:119)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at uk.gov.nationalarchives.droid.core.interfaces.BlockingThreadPoolExecutorFactory$CallerRunsUnlessPoolShutdownPolicy.rejectedExecution(BlockingThreadPoolExecutorFactory.java:86)
at java.util.concurrent.ThreadPoolExecutor.reject(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.execute(Unknown Source)
at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway.submit(SubmissionGateway.java:129)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$$FastClassByCGLIB$$441edb4e.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:160)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$$EnhancerByCGLIB$$985fb67d.submit(<generated>)
2014-05-02 16:51:31,660 ERROR [Ljava.lang.StackTraceElement;@e850c4
java.lang.OutOfMemoryError: Java heap space
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays$CacheTransformer.transform(CachedByteArrays.java:106)
at org.apache.commons.collections.map.LazyMap.get(LazyMap.java:158)
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays.readByte(CachedByteArrays.java:126)
at net.domesdaybook.matcher.sequence.searcher.BoyerMooreHorspoolSearcher.searchForwards(BoyerMooreHorspoolSearcher.java:93)
at uk.gov.nationalarchives.droid.core.signature.droid6.SubSequence.findSequenceFromPosition(SubSequence.java:719)
at uk.gov.nationalarchives.droid.core.signature.droid6.ByteSequence.matches(ByteSequence.java:424)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignature.matches(InternalSignature.java:399)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignatureCollection.getMatchingSignatures(InternalSignatureCollection.java:99)
at uk.gov.nationalarchives.droid.core.signature.droid6.FFSignatureFile.runFileIdentification(FFSignatureFile.java:495)
at uk.gov.nationalarchives.droid.core.BinarySignatureIdentifier.matchBinarySignatures(BinarySignatureIdentifier.java:103)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:123)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:119)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
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 java.lang.Thread.run(Unknown Source)
2014-05-02 16:51:31,660 ERROR [Ljava.lang.StackTraceElement;@1c07c92
java.lang.OutOfMemoryError: Java heap space
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays$CacheTransformer.transform(CachedByteArrays.java:106)
at org.apache.commons.collections.map.LazyMap.get(LazyMap.java:158)
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays.readByte(CachedByteArrays.java:126)
at net.domesdaybook.matcher.sequence.searcher.BoyerMooreHorspoolSearcher.searchForwards(BoyerMooreHorspoolSearcher.java:93)
at uk.gov.nationalarchives.droid.core.signature.droid6.SubSequence.findSequenceFromPosition(SubSequence.java:719)
at uk.gov.nationalarchives.droid.core.signature.droid6.ByteSequence.matches(ByteSequence.java:424)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignature.matches(InternalSignature.java:399)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignatureCollection.getMatchingSignatures(InternalSignatureCollection.java:99)
at uk.gov.nationalarchives.droid.core.signature.droid6.FFSignatureFile.runFileIdentification(FFSignatureFile.java:495)
at uk.gov.nationalarchives.droid.core.BinarySignatureIdentifier.matchBinarySignatures(BinarySignatureIdentifier.java:103)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:123)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:119)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
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 java.lang.Thread.run(Unknown Source)
2014-05-02 16:51:31,660 ERROR [Ljava.lang.StackTraceElement;@43180f
java.lang.OutOfMemoryError: Java heap space
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays$CacheTransformer.transform(CachedByteArrays.java:106)
at org.apache.commons.collections.map.LazyMap.get(LazyMap.java:158)
at uk.gov.nationalarchives.droid.core.interfaces.resource.CachedByteArrays.readByte(CachedByteArrays.java:126)
at net.domesdaybook.matcher.sequence.searcher.BoyerMooreHorspoolSearcher.searchForwards(BoyerMooreHorspoolSearcher.java:93)
at uk.gov.nationalarchives.droid.core.signature.droid6.SubSequence.findSequenceFromPosition(SubSequence.java:719)
at uk.gov.nationalarchives.droid.core.signature.droid6.ByteSequence.matches(ByteSequence.java:424)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignature.matches(InternalSignature.java:399)
at uk.gov.nationalarchives.droid.core.signature.droid6.InternalSignatureCollection.getMatchingSignatures(InternalSignatureCollection.java:99)
at uk.gov.nationalarchives.droid.core.signature.droid6.FFSignatureFile.runFileIdentification(FFSignatureFile.java:495)
at uk.gov.nationalarchives.droid.core.BinarySignatureIdentifier.matchBinarySignatures(BinarySignatureIdentifier.java:103)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:123)
at uk.gov.nationalarchives.droid.submitter.SubmissionGateway$1.call(SubmissionGateway.java:119)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
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 java.lang.Thread.run(Unknown Source)
The concern is that if this is a memory issue of some sort, and DROID can't report on it, then I have no way of knowing whether DROID ran truly successfully.
I noticed the error running DROID across this set of files, twice, and a second set of 21,800 files, and this resulted in different counts of. 168904 and 196276 and I've no way of telling there was a problem via the user interface.
I could probably do with a hand verifying this issue and what some of the logging above means, before this is reported on GitHub.
If useful, I can create two more copies of these files for me to run the same test on and observe what happens, although, as mentioned I'd be surprised if concurrent access was an issue. And if it was, perhaps reporting on that is important too.
Hope this helps. Let me know if I can provide any more information.