jackrabbit-oak-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gardner Buchanan <gbuch...@adobe.com>
Subject Hung thread in OAK CRX -- maybe a bug to look into
Date Mon, 14 Jan 2013 13:50:05 GMT
Hi all,

I've been experimenting a bit with Oak and ran into something I thought I would share, in
case there is a worthwhile bug to investigate.  I have com.adobe.granite.quickstart-2012.22-SNAPSHOT.jar,
which is rather old now, but looks to be the latest CRX build that hangs together.  The test
case involves a number of concurrent threads, creating different parts of a node hierarchy
concurrently, via curl POSTs, such as:

command=/usr/bin/curl -sSo /dev/null -u admin:admin -F jcr:primaryType=nt:folder "http://chartis_a.ottperflab.corp.adobe.com:4502/content/folder/84/32"
command=/usr/bin/curl -sSo /dev/null -u admin:admin -F jcr:primaryType=nt:folder "http://chartis_a.ottperflab.corp.adobe.com:4502/content/folder/84/32/25"
command=/usr/bin/curl -sSo /dev/null -u admin:admin -F jcr:primaryType=nt:folder "http://chartis_a.ottperflab.corp.adobe.com:4502/content/folder/84/32/25/72"
command=/usr/bin/curl -sSo /dev/null -u admin:admin -F jcr:primaryType=nt:folder "http://chartis_a.ottperflab.corp.adobe.com:4502/content/folder/84/32/25/72/6"
command=/usr/bin/curl -sSo /dev/null -u admin:admin -F jcr:primaryType=nt:folder "http://chartis_a.ottperflab.corp.adobe.com:4502/content/folder/86"
command=/usr/bin/curl -sSo /dev/null -u admin:admin -F jcr:primaryType=nt:folder "http://chartis_a.ottperflab.corp.adobe.com:4502/content/folder/86/00"

What happened in my test case is that one of the threads hung whilst creating /content/folder/86/00.
 You can see the progress of the various threads here:

[cid:image001.png@01CDF234.26111F90]

This thread is not blocked however, but seems to be stuck in a loop, and it is constantly
running doing something.

If you care to look, there's a Yourkit profiling snapshot with this stuck thread here:

\\ottfs01\users_g\gbuchana\MyTransfer\com.adobe.granite.quickstart-2012.22-SNAPSHOT-2013-01-11(2).snapshot<file:///\\ottfs01\users_g\gbuchana\MyTransfer\com.adobe.granite.quickstart-2012.22-SNAPSHOT-2013-01-11(2).snapshot>

>From the profiler snapshot I captured, it appears to be stuck in:  org.apache.sling.servlets.post.impl.operations.AbstractCreateOperation.deepGetOrCreateNode()
Where it is making a whole slew of repeated calls to various things

[cid:image002.png@01CDF234.26111F90]

Looking at the source code for deepGetOrCreateNode(), it would appear to be stuck in this
loop:

478    Resource startingResource = null;
479    while (startingResource == null) {
480      if (startingResourcePath.equals("/")) {
481        startingResource = resolver.getResource("/");
482      } else if (resolver.getResource(startingResourcePath) != null) {
483        startingResource = resolver.getResource(startingResourcePath);
484        updateNodeType(resolver, startingResourcePath, reqProperties, changes, versioningConfiguration);
485        updateMixins(resolver, startingResourcePath, reqProperties, changes, versioningConfiguration);
486      } else {
487        int pos = startingResourcePath.lastIndexOf('/');
488        if (pos > 0) {
489          startingResourcePath = startingResourcePath.substring(0, pos);
490        } else {
491          startingResourcePath = "/";
492        }
493      }
494    }



Gardner Buchanan
Adobe Systems Canada
Office: +1 613 940 3842
Mobile: +1 613 884 7940


Mime
  • Unnamed multipart/related (inline, None, 0 bytes)
View raw message