- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
PermissionService und parallele Generierung
Wird im PermissionService eine zyklische Gruppen xml erstellt kommt es bei einer zeitgleichen Generierung zu folgendem Fehler:
Auszug (fs-schedule.xyz.log)
(de.espirit.firstspirit.generate.SiteProduction): java.util.ConcurrentModificationException
Alle Rechte Abfragen die zum Zeitpunkt des PermissionService reloads gemacht werden laufen dann ins leere. Dem zur Folge kann es dann auch vorkommen, dass die daraus generierten Seiten keine Berechtigungsprรผfung vornehmen.
Kann das die Aktualisierung im Falle einer laufenden Generierung aussetzen?
Entweder vom Skript des PermissionService aus (Hier habe ich aber leider das Problem an eine Connection zu kommen. Der Context des Services scheint dies nicht vorzusehen.)
oder aber รผber ein Skript welches vor jeder Generierung ausgefรผhrt werden muss.
Grรผรe
m.Schlenz
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dieses Problem sollten Sie auf jeden Fall auch an den Helpdesk melden. Wenn vorhanden mit dem kompletten Trace der Meldung und der genauen Versionsinformation Ihrer FS-Installation.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Der Helpdesk kennt das Problem ([Help #Help-20101102-630]). Und hatte mich erst auf den zusammenhang zwischen den Beiden (PermissionService und Generierung) gebracht.
Der Fehler tritt soweit mir bekannt in Version 4.1.49 und auch in 4.2_BETA.409.41069 auf.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Schlenz
kรถnnten Sie bitte innerhalb der jeweiligen Seitenvorlagen den Debug aktivieren und den kompletten Stackttrace posten.
$CMS_SET(#global.debugMode, true)$
Besten Dank
Gerrit Bรถsebeck
Nachricht geรคndert durch Gerrit Bรถsebeck
Der korrekte Paramenter ist true und nicht 1
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hier ist der Stackttrace:
03.12.2010 12:52:50.403 INFO (de.espirit.firstspirit.generate.PreviewProduction): generating 'men' (id=283403, html, DE), content processor
de.espirit.firstspirit.generate.EmptyContentProcessor@6e826e82
03.12.2010 12:52:53.998 ERROR ($CMS_IF( ! perm.allowed("").isEmpty && ! perm.allowed("").contains("*") )$ at 32, 4): java.util.ConcurrentModificationException
inside of: Template 'XML Menรผ' (id=283546)
inside of: $CMS_TRIM(level:2)$ - at 54, 1
inside of: $CMS_VALUE(fr_menu)$ - at 55, 1
inside of: $CMS_IF( ! perm.allowed("").isEmpty && ! perm.allowed("").contains("*") )$ - at 32, 4
Caused by java.util.ConcurrentModificationException
at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
at de.espirit.firstspirit.service.permission.groups.GroupImpl.getAllChildren(GroupImpl.java:201)
at de.espirit.firstspirit.service.permission.groups.GroupImpl.getAllChilds(GroupImpl.java:194)
at de.espirit.firstspirit.service.permission.PermissionUtil.normalize(PermissionUtil.java:44)
at de.espirit.firstspirit.access.editor.value.PermissionsImpl.getPermissions(PermissionsImpl.java:230)
at de.espirit.firstspirit.access.editor.value.PermissionsImpl.getAllowed(PermissionsImpl.java:216)
at PermissionsImpl_getAllowed_String_1736.invoke(Unknown Source)
at de.espirit.firstspirit.parser.eval.Invoker$MethodWrapperImpl.invoke(Invoker.java:948)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:469)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:401)
at de.espirit.firstspirit.parser.eval.Invoker.evalMethod(Invoker.java:213)
at de.espirit.firstspirit.parser.EvaluatorImpl.invokeMethod(EvaluatorImpl.java:180)
at de.espirit.firstspirit.parser.impl.MethodImpl.eval(MethodImpl.java:74)
at de.espirit.firstspirit.parser.impl.DottedExpression.eval(DottedExpression.java:72)
at de.espirit.firstspirit.parser.impl.NotExpression.eval(NotExpression.java:23)
at de.espirit.firstspirit.parser.impl.CombinedExpression.eval(CombinedExpression.java:208)
at de.espirit.firstspirit.parser.impl.CmsIfImpl.print(CmsIfImpl.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:79)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$NodeContext.render(NavigationFunctionImpl.java:761)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:932)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1052)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1052)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1062)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1062)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:920)
at de.espirit.firstspirit.parser.eval.PrintableEnhancer.print(PrintableEnhancer.java:25)
at PrintableEnhancer_print_Printable_128.invoke(Unknown Source)
at de.espirit.firstspirit.parser.eval.Invoker$MethodWrapperImpl.invoke(Invoker.java:948)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:469)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:401)
at de.espirit.firstspirit.parser.eval.Invoker.evalMethod(Invoker.java:213)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:201)
at de.espirit.firstspirit.parser.impl.CmsValueImpl.print(CmsValueImpl.java:69)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:79)
at de.espirit.firstspirit.parser.impl.CmsTrimImpl.print(CmsTrimImpl.java:165)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:79)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.generate.PreviewProduction.calculate(PreviewProduction.java:169)
at de.espirit.firstspirit.generate.AbstractPreviewManager.getLog(AbstractPreviewManager.java:140)
at de.espirit.firstspirit.io.servlet.PreviewServlet.deliverPreview(PreviewServlet.java:296)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doPost(PreviewServlet.java:215)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doGet(PreviewServlet.java:164)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doChain(WebAuthentication.java:604)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:469)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:143)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at de.espirit.firstspirit.server.jetty.JettyManagerImpl$FailSafeWebAppContext.handle(JettyManagerImpl.java:764)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:736)
03.12.2010 12:52:50.403 INFO (de.espirit.firstspirit.generate.PreviewProduction): generating 'men' (id=283403, html, DE), content processor de.espirit.firstspirit.generate.EmptyContentProcessor@6e826e82
03.12.2010 12:52:53.998 ERROR ($CMS_IF( ! perm.allowed("").isEmpty && ! perm.allowed("").contains("*") )$ at 32, 4): java.util.ConcurrentModificationException
inside of: Template 'XML Menรผ' (id=283546)
inside of: $CMS_TRIM(level:2)$ - at 54, 1
inside of: $CMS_VALUE(fr_menu)$ - at 55, 1
inside of: $CMS_IF( ! perm.allowed("").isEmpty && ! perm.allowed("").contains("*") )$ - at 32, 4
Caused by java.util.ConcurrentModificationException
at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
at de.espirit.firstspirit.service.permission.groups.GroupImpl.getAllChildren(GroupImpl.java:201)
at de.espirit.firstspirit.service.permission.groups.GroupImpl.getAllChilds(GroupImpl.java:194)
at de.espirit.firstspirit.service.permission.PermissionUtil.normalize(PermissionUtil.java:44)
at de.espirit.firstspirit.access.editor.value.PermissionsImpl.getPermissions(PermissionsImpl.java:230)
at de.espirit.firstspirit.access.editor.value.PermissionsImpl.getAllowed(PermissionsImpl.java:216)
at PermissionsImpl_getAllowed_String_1736.invoke(Unknown Source)
at de.espirit.firstspirit.parser.eval.Invoker$MethodWrapperImpl.invoke(Invoker.java:948)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:469)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:401)
at de.espirit.firstspirit.parser.eval.Invoker.evalMethod(Invoker.java:213)
at de.espirit.firstspirit.parser.EvaluatorImpl.invokeMethod(EvaluatorImpl.java:180)
at de.espirit.firstspirit.parser.impl.MethodImpl.eval(MethodImpl.java:74)
at de.espirit.firstspirit.parser.impl.DottedExpression.eval(DottedExpression.java:72)
at de.espirit.firstspirit.parser.impl.NotExpression.eval(NotExpression.java:23)
at de.espirit.firstspirit.parser.impl.CombinedExpression.eval(CombinedExpression.java:208)
at de.espirit.firstspirit.parser.impl.CmsIfImpl.print(CmsIfImpl.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:79)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$NodeContext.render(NavigationFunctionImpl.java:761)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:932)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1052)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1052)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1062)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.renderFolders(NavigationFunctionImpl.java:1062)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:977)
at de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation.print(NavigationFunctionImpl.java:920)
at de.espirit.firstspirit.parser.eval.PrintableEnhancer.print(PrintableEnhancer.java:25)
at PrintableEnhancer_print_Printable_128.invoke(Unknown Source)
at de.espirit.firstspirit.parser.eval.Invoker$MethodWrapperImpl.invoke(Invoker.java:948)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:469)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:401)
at de.espirit.firstspirit.parser.eval.Invoker.evalMethod(Invoker.java:213)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:201)
at de.espirit.firstspirit.parser.impl.CmsValueImpl.print(CmsValueImpl.java:69)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:79)
at de.espirit.firstspirit.parser.impl.CmsTrimImpl.print(CmsTrimImpl.java:165)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:79)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:450)
at de.espirit.firstspirit.generate.PreviewProduction.calculate(PreviewProduction.java:169)
at de.espirit.firstspirit.generate.AbstractPreviewManager.getLog(AbstractPreviewManager.java:140)
at de.espirit.firstspirit.io.servlet.PreviewServlet.deliverPreview(PreviewServlet.java:296)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doPost(PreviewServlet.java:215)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doGet(PreviewServlet.java:164)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doChain(WebAuthentication.java:604)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:469)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:143)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at de.espirit.firstspirit.server.jetty.JettyManagerImpl$FailSafeWebAppContext.handle(JettyManagerImpl.java:764)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:736)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vielen Dank, ich habe dafรผr intern die Ticket-ID #91639 vergeben.
Um die Skripte, die aus dem PermissionService heraus aufgerufen werden, mit den Generierungsauftrรคgen zu synchronisieren mรผsste man รผber de.espirit.firstspirit.access.schedule.ScheduleStorage gehen und so sicherstellen, das keine parallele Generierung lรคuft.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
wie komme ich an der ScheduleStorage?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
รผber...
/* pseudocode */
AdminService as = connection.getService(AdminService.class);
ScheduleStorage ss = as.getScheduleStorage();