Questions & Answers

m_Schlenz
I'm new here

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

0 Kudos
7 Replies
Peter_Jodeleit
Crownpeak employee

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.

Peter
0 Kudos

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.

0 Kudos

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

0 Kudos

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)

0 Kudos

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.

Peter
0 Kudos

Hallo,

wie komme ich an der ScheduleStorage?

0 Kudos

Hallo,

รผber...

/* pseudocode */

AdminService as = connection.getService(AdminService.class);

ScheduleStorage ss = as.getScheduleStorage();

0 Kudos

Type a product name