-
Type:
Bug
-
Status: Closed
-
Resolution: Fixed
-
Affects Version/s: 6.2.X EE
-
Fix Version/s: 6.2.X EE
-
Component/s: Comments, Subscription Manager, ~ [Archived] Collaboration
-
Branch Version/s:6.2.x
-
Backported to Branch:Committed
-
Story Points:1.25
-
Fix Priority:3
-
Git Pull Request:
NoSuchGroupException is thrown in SubscriptionSender.notifySubscriber and email is not sent when comments are deactivated in portal.properties
- More info about how to deactivate comments: see
LPE-758andLPS-2864 - This bug is reproduced with blogs and webcontents.
Steps to reproduce - Blogs
- Configure in portal-ext.properties following property: blogs.entry.comments.enabled=false
- Create a page and add a blog portlet
- Click in "subscribe" link in order to subscribe to blog modifications
- Create a new blog entry
- Wrong behaviour: Following exception is thrown and no email is sent:
12:30:40,456 ERROR [liferay/subscription_sender-1][StagingPermissionImpl:63] com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347624 com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347624 at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8504) at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8522) at com.liferay.portal.service.impl.GroupLocalServiceImpl.getGroup(GroupLocalServiceImpl.java:1203) at sun.reflect.GeneratedMethodAccessor531.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115) at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62) at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175) at com.sun.proxy.$Proxy32.getGroup(Unknown Source) at com.liferay.portal.service.GroupLocalServiceUtil.getGroup(GroupLocalServiceUtil.java:216) at com.liferay.portal.staging.permission.StagingPermissionImpl.hasPermission(StagingPermissionImpl.java:56) at com.liferay.portal.kernel.staging.permission.StagingPermissionUtil.hasPermission(StagingPermissionUtil.java:45) at com.liferay.portlet.blogs.service.permission.BlogsPermission.contains(BlogsPermission.java:42) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.hasPermission(SubscriptionPermissionImpl.java:177) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.contains(SubscriptionPermissionImpl.java:111) at com.liferay.portal.service.permission.SubscriptionPermissionUtil.contains(SubscriptionPermissionUtil.java:83) at com.liferay.portal.util.SubscriptionSender.hasPermission(SubscriptionSender.java:413) at com.liferay.portal.util.SubscriptionSender.notifySubscriber(SubscriptionSender.java:486) at com.liferay.portal.util.SubscriptionSender.flushNotifications(SubscriptionSender.java:146) at com.liferay.portal.messaging.SubscriptionSenderMessageListener.doReceive(SubscriptionSenderMessageListener.java:46) at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26) at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:72) at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:71) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593) at java.lang.Thread.run(Thread.java:745) 12:30:40,461 ERROR [liferay/subscription_sender-1][AdvancedPermissionChecker:603] com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347624 com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347624 at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8504) at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8522) at com.liferay.portal.service.impl.GroupLocalServiceImpl.getGroup(GroupLocalServiceImpl.java:1203) at sun.reflect.GeneratedMethodAccessor531.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115) at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62) at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175) at com.sun.proxy.$Proxy32.getGroup(Unknown Source) at com.liferay.portal.service.GroupLocalServiceUtil.getGroup(GroupLocalServiceUtil.java:216) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermission(AdvancedPermissionChecker.java:559) at com.liferay.portal.security.permission.BasePermissionChecker.hasPermission(BasePermissionChecker.java:100) at com.liferay.portlet.blogs.service.permission.BlogsPermission.contains(BlogsPermission.java:50) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.hasPermission(SubscriptionPermissionImpl.java:177) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.contains(SubscriptionPermissionImpl.java:111) at com.liferay.portal.service.permission.SubscriptionPermissionUtil.contains(SubscriptionPermissionUtil.java:83) at com.liferay.portal.util.SubscriptionSender.hasPermission(SubscriptionSender.java:413) at com.liferay.portal.util.SubscriptionSender.notifySubscriber(SubscriptionSender.java:486) at com.liferay.portal.util.SubscriptionSender.flushNotifications(SubscriptionSender.java:146) at com.liferay.portal.messaging.SubscriptionSenderMessageListener.doReceive(SubscriptionSenderMessageListener.java:46) at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26) at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:72) at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:71) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593) at java.lang.Thread.run(Thread.java:745) 12:30:40,463 ERROR [liferay/subscription_sender-1][AdvancedPermissionChecker:1020] com.liferay.portal.NoSuchResourceActionException: com.liferay.portlet.blogs#VIEW com.liferay.portal.NoSuchResourceActionException: com.liferay.portlet.blogs#VIEW at com.liferay.portal.security.permission.ResourceActionsImpl.checkAction(ResourceActionsImpl.java:134) at com.liferay.portal.security.permission.ResourceActionsUtil.checkAction(ResourceActionsUtil.java:65) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasGuestPermission(AdvancedPermissionChecker.java:934) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermissionImpl(AdvancedPermissionChecker.java:1009) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermission(AdvancedPermissionChecker.java:622) at com.liferay.portal.security.permission.BasePermissionChecker.hasPermission(BasePermissionChecker.java:100) at com.liferay.portlet.blogs.service.permission.BlogsPermission.contains(BlogsPermission.java:50) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.hasPermission(SubscriptionPermissionImpl.java:177) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.contains(SubscriptionPermissionImpl.java:111) at com.liferay.portal.service.permission.SubscriptionPermissionUtil.contains(SubscriptionPermissionUtil.java:83) at com.liferay.portal.util.SubscriptionSender.hasPermission(SubscriptionSender.java:413) at com.liferay.portal.util.SubscriptionSender.notifySubscriber(SubscriptionSender.java:486) at com.liferay.portal.util.SubscriptionSender.flushNotifications(SubscriptionSender.java:146) at com.liferay.portal.messaging.SubscriptionSenderMessageListener.doReceive(SubscriptionSenderMessageListener.java:46) at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26) at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:72) at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:71) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593) at java.lang.Thread.run(Thread.java:745)
- Expected behaviour: No exception is thrown and subscription email is sent:
- Wrong behaviour: Following exception is thrown and no email is sent:
Steps to reproduce - Web content
- Configure in portal-ext.properties following property: journal.article.comments.enabled=false
- Create a page and add a webcontent inside a webcontent display portlet
- Execute following groovy script in order to subscribe to webcontent:
def userId = <userId to be notified> def groupId = <groupId of journalArticle> def resourcePrimKey = <resourcePrimKey of journalArticle> com.liferay.portal.service.SubscriptionLocalServiceUtil.addSubscription( userId, groupId, com.liferay.portlet.journal.model.JournalArticle.class.getName(), resourcePrimKey);
- Create a new version of webcontent
- Wrong behaviour: Following exception is thrown and no email is sent:
12:49:22,075 ERROR [liferay/subscription_sender-1][StagingPermissionImpl:63] com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347726 com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347726 at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8504) at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8522) at com.liferay.portal.service.impl.GroupLocalServiceImpl.getGroup(GroupLocalServiceImpl.java:1203) at sun.reflect.GeneratedMethodAccessor531.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115) at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62) at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175) at com.sun.proxy.$Proxy32.getGroup(Unknown Source) at com.liferay.portal.service.GroupLocalServiceUtil.getGroup(GroupLocalServiceUtil.java:216) at com.liferay.portal.staging.permission.StagingPermissionImpl.hasPermission(StagingPermissionImpl.java:56) at com.liferay.portal.kernel.staging.permission.StagingPermissionUtil.hasPermission(StagingPermissionUtil.java:45) at com.liferay.portlet.journal.service.permission.JournalPermission.contains(JournalPermission.java:47) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.hasPermission(SubscriptionPermissionImpl.java:189) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.contains(SubscriptionPermissionImpl.java:120) at com.liferay.portal.service.permission.SubscriptionPermissionUtil.contains(SubscriptionPermissionUtil.java:83) at com.liferay.portal.util.SubscriptionSender.hasPermission(SubscriptionSender.java:413) at com.liferay.portal.util.SubscriptionSender.notifySubscriber(SubscriptionSender.java:486) at com.liferay.portal.util.SubscriptionSender.flushNotifications(SubscriptionSender.java:146) at com.liferay.portal.messaging.SubscriptionSenderMessageListener.doReceive(SubscriptionSenderMessageListener.java:46) at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26) at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:72) at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:71) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593) at java.lang.Thread.run(Thread.java:745) 12:49:22,088 ERROR [liferay/subscription_sender-1][AdvancedPermissionChecker:603] com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347726 com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347726 at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8504) at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8522) at com.liferay.portal.service.impl.GroupLocalServiceImpl.getGroup(GroupLocalServiceImpl.java:1203) at sun.reflect.GeneratedMethodAccessor531.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115) at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62) at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175) at com.sun.proxy.$Proxy32.getGroup(Unknown Source) at com.liferay.portal.service.GroupLocalServiceUtil.getGroup(GroupLocalServiceUtil.java:216) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermission(AdvancedPermissionChecker.java:559) at com.liferay.portal.security.permission.BasePermissionChecker.hasPermission(BasePermissionChecker.java:100) at com.liferay.portlet.journal.service.permission.JournalPermission.contains(JournalPermission.java:74) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.hasPermission(SubscriptionPermissionImpl.java:189) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.contains(SubscriptionPermissionImpl.java:120) at com.liferay.portal.service.permission.SubscriptionPermissionUtil.contains(SubscriptionPermissionUtil.java:83) at com.liferay.portal.util.SubscriptionSender.hasPermission(SubscriptionSender.java:413) at com.liferay.portal.util.SubscriptionSender.notifySubscriber(SubscriptionSender.java:486) at com.liferay.portal.util.SubscriptionSender.flushNotifications(SubscriptionSender.java:146) at com.liferay.portal.messaging.SubscriptionSenderMessageListener.doReceive(SubscriptionSenderMessageListener.java:46) at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26) at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:72) at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:71) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593) at java.lang.Thread.run(Thread.java:745) 12:49:22,089 ERROR [liferay/subscription_sender-1][AdvancedPermissionChecker:655] com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347726 com.liferay.portal.NoSuchGroupException: No Group exists with the primary key 347726 at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8504) at com.liferay.portal.service.persistence.GroupPersistenceImpl.findByPrimaryKey(GroupPersistenceImpl.java:8522) at com.liferay.portal.service.impl.GroupLocalServiceImpl.getGroup(GroupLocalServiceImpl.java:1203) at sun.reflect.GeneratedMethodAccessor531.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:115) at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:62) at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:51) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:56) at com.liferay.portal.spring.aop.ServiceBeanMethodInvocation.proceed(ServiceBeanMethodInvocation.java:111) at com.liferay.portal.spring.aop.ServiceBeanAopProxy.invoke(ServiceBeanAopProxy.java:175) at com.sun.proxy.$Proxy32.getGroup(Unknown Source) at com.liferay.portal.service.GroupLocalServiceUtil.getGroup(GroupLocalServiceUtil.java:216) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasUserPermissionImpl(AdvancedPermissionChecker.java:1038) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasUserPermission(AdvancedPermissionChecker.java:651) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermissionImpl(AdvancedPermissionChecker.java:1013) at com.liferay.portal.security.permission.AdvancedPermissionChecker.hasPermission(AdvancedPermissionChecker.java:622) at com.liferay.portal.security.permission.BasePermissionChecker.hasPermission(BasePermissionChecker.java:100) at com.liferay.portlet.journal.service.permission.JournalPermission.contains(JournalPermission.java:74) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.hasPermission(SubscriptionPermissionImpl.java:189) at com.liferay.portal.service.permission.SubscriptionPermissionImpl.contains(SubscriptionPermissionImpl.java:120) at com.liferay.portal.service.permission.SubscriptionPermissionUtil.contains(SubscriptionPermissionUtil.java:83) at com.liferay.portal.util.SubscriptionSender.hasPermission(SubscriptionSender.java:413) at com.liferay.portal.util.SubscriptionSender.notifySubscriber(SubscriptionSender.java:486) at com.liferay.portal.util.SubscriptionSender.flushNotifications(SubscriptionSender.java:146) at com.liferay.portal.messaging.SubscriptionSenderMessageListener.doReceive(SubscriptionSenderMessageListener.java:46) at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26) at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:72) at com.liferay.portal.kernel.messaging.ParallelDestination$1.run(ParallelDestination.java:71) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682) at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593) at java.lang.Thread.run(Thread.java:745)
- Expected behaviour: No exception is thrown and subscription email is sent:
- Wrong behaviour: Following exception is thrown and no email is sent:
This issue is not reproduced in master nor 7.0.x:
- Method SubscriptionSender.hasPermission(Subscription subscription, String inferredClassName, long inferredClassPK, User user) was completely rewritten in
LPS-51280 - I cannot reproduce the issue with master new implementation
- A partial backport of
LPS-51280was done to 6.2.x, but rewritten method was not backported as it was risky
- Discovered while testing
-
LPS-66133 Comment thread objects (MBDiscussion, MBThread and root MBMessage) are created during asset creation, but that it is not necessary as CommentManager also handle it
- Closed
- relates
-
LPE-15139 NoSuchGroupException is thrown and email is not sent when comments are deactivated in portal.properties
-
- Closed
-