[infinispan-issues] [JBoss JIRA] Commented: (ISPN-635) NPE on acquire lock LockManagerImpl.lockAndRecord
Sanne Grinovero (JIRA)
jira-events at lists.jboss.org
Fri Sep 10 19:55:49 EDT 2010
[ https://jira.jboss.org/browse/ISPN-635?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12550308#action_12550308 ]
Sanne Grinovero commented on ISPN-635:
--------------------------------------
tested your latest patch, it's great it appears to solve all problems.
Just one detail, as the initialization is not concurrent anymore, could you avoid using caches.putIfAbstent in the createCache method, so that the first thing this method should do is check if the cache was already built and then quickly return without having to clone configurations and create cache instances which aren't used.
I tried with the attached patch and it was quite quicker in booting, apparently I have many concurrent requests.
> NPE on acquire lock LockManagerImpl.lockAndRecord
> -------------------------------------------------
>
> Key: ISPN-635
> URL: https://jira.jboss.org/browse/ISPN-635
> Project: Infinispan
> Issue Type: Bug
> Components: Locking and Concurrency
> Affects Versions: 4.1.0.Final
> Reporter: Sanne Grinovero
> Assignee: Galder Zamarreño
> Fix For: 4.2.0.BETA1
>
> Attachments: Avoid_a_halfway_started_cache_being_returned.patch, ConcurrentCacheStartupTest.java, More_sophisticated_fix_with_lock_per_cache_name.patch, Too_restrictive_fix.patch
>
>
> I've seen this happening only once, still it's quite puzzling. Maybe proper visiblity of the variables is not guaranteed?
> java.lang.NullPointerException
> at org.infinispan.util.concurrent.locks.LockManagerImpl.lockAndRecord(LockManagerImpl.java:83)
> at org.infinispan.container.EntryFactoryImpl.acquireLock(EntryFactoryImpl.java:210)
> at org.infinispan.container.EntryFactoryImpl.wrapEntryForWriting(EntryFactoryImpl.java:153)
> at org.infinispan.container.EntryFactoryImpl.wrapEntryForWriting(EntryFactoryImpl.java:106)
> at org.infinispan.interceptors.LockingInterceptor.visitPutKeyValueCommand(LockingInterceptor.java:197)
> at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:76)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)
> at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:57)
> at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:76)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:183)
> at org.infinispan.interceptors.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:132)
> at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:76)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> at org.infinispan.interceptors.CacheMgmtInterceptor.visitPutKeyValueCommand(CacheMgmtInterceptor.java:113)
> at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:76)
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:57)
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:38)
> at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:57)
> at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:76)
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:273)
> at org.infinispan.CacheDelegate.put(CacheDelegate.java:429)
> at org.infinispan.CacheSupport.put(CacheSupport.java:28)
> at com.atlassian.jira.propertyset.PropertySetCache.setObject(PropertySetCache.java:205)
> at com.atlassian.jira.propertyset.JiraCachingPropertySet.getString(JiraCachingPropertySet.java:647)
> at com.opensymphony.user.User.getFullName(User.java:86)
> at com.atlassian.jira.user.util.UserUtilImpl.getDisplayableNameSafely(UserUtilImpl.java:573)
> at com.atlassian.jira.plugin.profile.ProfileLinkUserFormat.getInitialParams(ProfileLinkUserFormat.java:47)
> at com.atlassian.jira.plugin.profile.ProfileLinkUserFormat.format(ProfileLinkUserFormat.java:32)
> at com.atlassian.jira.plugin.profile.DefaultUserFormatManager.formatUser(DefaultUserFormatManager.java:62)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the infinispan-issues
mailing list