Skip to content

Commit

Permalink
chimera: Fix IllegalStateException in inode cache
Browse files Browse the repository at this point in the history
Motivation:

11 Aug 2016 22:45:02 (PnfsManager) [A+Q:12038615:srm2:ls:-1996682928:-1996682927 SRM-madhatter PnfsListDirectory] java.lang.IllegalStateException: Optional.get() cannot be called on an absent value
java.lang.IllegalStateException: Optional.get() cannot be called on an absent value
at com.google.common.base.Absent.get(Absent.java:49) ~[guava-19.0.jar:na]
at org.dcache.chimera.namespace.ExtendedInode.getParent(ExtendedInode.java:142) ~[dcache-chimera-2.15.10.jar:2.15.10]
at org.dcache.chimera.namespace.ChimeraOsmStorageInfoExtractor.getDirStorageInfo(ChimeraOsmStorageInfoExtractor.java:76) ~[dcache-chimera-2.15.10.jar:2.15.10]
at org.dcache.chimera.namespace.ChimeraOsmStorageInfoExtractor.getFileStorageInfo(ChimeraOsmStorageInfoExtractor.java:45) ~[dcache-chimera-2.15.10.jar:2.15.10]
at org.dcache.chimera.namespace.ChimeraHsmStorageInfoExtractor.getStorageInfo(ChimeraHsmStorageInfoExtractor.java:163) ~[dcache-chimera-2.15.10.jar:2.15.10]
at org.dcache.chimera.namespace.ChimeraNameSpaceProvider.getFileAttributes(ChimeraNameSpaceProvider.java:844) ~[dcache-chimera-2.15.10.jar:2.15.10]
at org.dcache.chimera.namespace.ChimeraNameSpaceProvider.list(ChimeraNameSpaceProvider.java:1053) ~[dcache-chimera-2.15.10.jar:2.15.10]
at diskCacheV111.namespace.PnfsManagerV3.listDirectory(PnfsManagerV3.java:1545) [dcache-core-2.15.10.jar:2.15.10]
at diskCacheV111.namespace.PnfsManagerV3.processMessageTransactionally_aroundBody16(PnfsManagerV3.java:1743) [dcache-core-2.15.10.jar:2.15.10]
at diskCacheV111.namespace.PnfsManagerV3$AjcClosure17.run(PnfsManagerV3.java:1) [dcache-core-2.15.10.jar:2.15.10]
at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96cproceed(AbstractTransactionAspect.aj:66) [spring-aspects-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.transaction.aspectj.AbstractTransactionAspect$AbstractTransactionAspect$1.proceedWithInvocation(AbstractTransactionAspect.aj:72) [spring-aspects-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) [spring-tx-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$around$org_springframework_transaction_aspectj_AbstractTransactionAspect$1$2a73e96c(AbstractTransactionAspect.aj:70) [spring-aspects-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at diskCacheV111.namespace.PnfsManagerV3.processMessageTransactionally(PnfsManagerV3.java:1710) [dcache-core-2.15.10.jar:2.15.10]
at diskCacheV111.namespace.PnfsManagerV3.processPnfsMessage(PnfsManagerV3.java:1681) [dcache-core-2.15.10.jar:2.15.10]
at diskCacheV111.namespace.PnfsManagerV3$ProcessThread.run(PnfsManagerV3.java:1591) [dcache-core-2.15.10.jar:2.15.10]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]

Modification:

Propagate the null parent (i.e. when calling getParent on the root inode).

Result:

Fixed an IllegalStateException in Chimera.

Target: trunk
Ticket: http://rt.dcache.org/Ticket/Display.html?id=9035
Require-notes: yes
Require-book: no
Request: 2.16
Request: 2.15
Request: 2.14
Request: 2.13
Acked-by: Paul Millar <paul.millar@desy.de>

Reviewed at https://rb.dcache.org/r/9670/

(cherry picked from commit ef5ff6a)
  • Loading branch information
gbehrmann committed Aug 23, 2016
1 parent 08823f2 commit 726b7a8
Showing 1 changed file with 1 addition and 1 deletion.
Expand Up @@ -148,7 +148,7 @@ public ExtendedInode getParent()
FsInode actualParent = super.getParent();
parent = Optional.fromNullable(actualParent != null ? new ExtendedInode(getFs(), actualParent) : null);
}
return parent.get();
return parent.orNull();
}

public ImmutableMap<String,byte[]> getTags() throws ChimeraFsException
Expand Down

0 comments on commit 726b7a8

Please sign in to comment.