diff --git a/source/java/org/alfresco/repo/avm/AVMCrawlTest.java b/source/java/org/alfresco/repo/avm/AVMCrawlTest.java index 1d3916b56e..9a7ef0525b 100644 --- a/source/java/org/alfresco/repo/avm/AVMCrawlTest.java +++ b/source/java/org/alfresco/repo/avm/AVMCrawlTest.java @@ -35,8 +35,8 @@ public class AVMCrawlTest extends AVMServiceTestBase */ public void testCrawl() { - int n = 2; // Number of Threads. - int m = 4; // How many multiples of content to start with. + int n = 8; // Number of Threads. + int m = 16; // How many multiples of content to start with. long runTime = 1200000; // Ten minutes fService.purgeRepository("main"); fReaper.setInactiveBaseSleep(60000); diff --git a/source/java/org/alfresco/repo/avm/AVMCrawler.java b/source/java/org/alfresco/repo/avm/AVMCrawler.java index 2785a53a1f..12dfe2b4ce 100644 --- a/source/java/org/alfresco/repo/avm/AVMCrawler.java +++ b/source/java/org/alfresco/repo/avm/AVMCrawler.java @@ -127,6 +127,7 @@ class AVMCrawler implements Runnable } } AVMNodeDescriptor dir = dirs.get(fRandom.nextInt(dirs.size())); + int depth = 1; while (dir != null) { Map listing = fService.getDirectoryListing(-1, dir.getPath()); @@ -168,17 +169,16 @@ class AVMCrawler implements Runnable fOpCount++; } } - // Create some files. - for (int i = 0; i < 1; i++) + if (fRandom.nextInt(depth) < depth - 1) { - String name = randomName(); - fService.createFile(dir.getPath(), name, + // Create some files. + for (int i = 0; i < 1; i++) + { + String name = randomName(); + fService.createFile(dir.getPath(), name, new ByteArrayInputStream(("I am " + name).getBytes())); - fOpCount++; -// PrintStream out = new PrintStream(fService.createFile(dir.getPath(), name)); -// fOpCount++; -// out.println("I am " + name); -// out.close(); + fOpCount++; + } } // 1 in 100 times create a directory. if (fRandom.nextInt(100) == 0) @@ -206,6 +206,7 @@ class AVMCrawler implements Runnable { dir = null; } + depth++; } if (fRandom.nextInt(16) == 0) { @@ -221,7 +222,8 @@ class AVMCrawler implements Runnable return; } e.printStackTrace(System.err); - throw new AVMException("Failure", e); + return; +// throw new AVMException("Failure", e); } } diff --git a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java index 1186f392d1..48bad4e5d2 100644 --- a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java @@ -190,6 +190,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory if (existing != null) { existing.setChild(node); + sess.flush(); // TODO Should we or shouldn't we? } else { diff --git a/source/java/org/alfresco/repo/avm/SuperRepository.java b/source/java/org/alfresco/repo/avm/SuperRepository.java index c23326c77c..aee0193c31 100644 --- a/source/java/org/alfresco/repo/avm/SuperRepository.java +++ b/source/java/org/alfresco/repo/avm/SuperRepository.java @@ -721,10 +721,10 @@ class SuperRepository { throw new AVMNotFoundException("Repository not found: " + name); } - if (write && !rep.getRoot().getIsNew()) - { - fSession.get().lock(rep, LockMode.UPGRADE); - } +// if (write && !rep.getRoot().getIsNew()) +// { +// fSession.get().lock(rep, LockMode.UPGRADE); +// } return rep; } diff --git a/source/java/org/alfresco/repo/avm/hibernate/HibernateTxn.java b/source/java/org/alfresco/repo/avm/hibernate/HibernateTxn.java index c9537a46be..fd1d74f762 100644 --- a/source/java/org/alfresco/repo/avm/hibernate/HibernateTxn.java +++ b/source/java/org/alfresco/repo/avm/hibernate/HibernateTxn.java @@ -66,7 +66,7 @@ public class HibernateTxn extends HibernateTemplate } /** - * Perform a set of operations under a single Hibernate transaction. + * Perform a set of operations under a single transaction. * Keep trying if the operation fails because of a concurrency issue. * @param callback The worker. * @param write Whether this is a write operation.