headwirecom / peregrine-cms

an api first, head optional cms with based on vuejs and apache sling
Apache License 2.0
52 stars 31 forks source link

Cannot remove all items from single collection or checklist #254

Closed dna113p closed 3 years ago

dna113p commented 5 years ago

See http://localhost:8080/content/admin/objects.html/path:/content/objects/example

Try to remove all of the items in the single collection and click okay. The payload sent to the server shows the items successfully removed, but are re added in the response.

flx-sta commented 4 years ago

image

this issue is not fixed

flx-sta commented 4 years ago

@reusr1 @bkheadwire

reusr1 commented 4 years ago

@Felix-Puetz if you get a couple of minutes - could you please check this out in the issues/93 branch for me? This should now work better

flx-sta commented 4 years ago

I've emptied the single-collection example and no error in the console

just some warning: image

reusr1 commented 3 years ago

would be great to have some e2e tests on this issue first so we know when we really fixed this

flx-sta commented 3 years ago

@reusr1

trying to manually reproduce it I was able to consistently hit a HTTP-500 error

Reproduction Steps

Response

{
  "code" : -124,
  "message" : "Failed with IO exception",
  "exception" : [
    "org.apache.sling.api.resource.PersistenceException: Unable to commit changes to session.",
    "\tat org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.commit(JcrResourceProvider.java:516)",
    "\tat org.apache.sling.resourceresolver.impl.providers.stateful.AuthenticatedResourceProvider.commit(AuthenticatedResourceProvider.java:215)",
    "\tat org.apache.sling.resourceresolver.impl.helper.ResourceResolverControl.commit(ResourceResolverControl.java:424)",
    "\tat org.apache.sling.resourceresolver.impl.ResourceResolverImpl.commit(ResourceResolverImpl.java:997)",
    "\tat com.peregrine.admin.servlets.UpdateResourceServlet.handleRequest(UpdateResourceServlet.java:94)",
    "\tat com.peregrine.commons.servlets.AbstractBaseServlet.doRequest(AbstractBaseServlet.java:90)",
    "\tat com.peregrine.commons.servlets.AbstractBaseServlet.doPost(AbstractBaseServlet.java:84)",
    "\tat org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:146)",
    "\tat org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:342)",
    "\tat org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:374)",
    "\tat org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:552)",
    "\tat org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:44)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:82)",
    "\tat org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:283)",
    "\tat org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:49)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:82)",
    "\tat com.peregrine.versions.VersioningRequestFilter.doFilter(VersioningRequestFilter.java:51)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72)",
    "\tat org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:110)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72)",
    "\tat org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:131)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:72)",
    "\tat org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:78)",
    "\tat org.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(SlingRequestProcessorImpl.java:151)",
    "\tat org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:250)",
    "\tat org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:123)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:86)",
    "\tat org.apache.sling.junit.impl.servlet.TestLogServlet$TestNameLoggingFilter.doFilter(TestLogServlet.java:257)",
    "\tat org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81)",
    "\tat org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:131)",
    "\tat org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81)",
    "\tat org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75)",
    "\tat org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81)",
    "\tat org.apache.sling.engine.impl.parameters.RequestParameterSupportConfigurer.doFilter(RequestParameterSupportConfigurer.java:67)",
    "\tat org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:142)",
    "\tat org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:81)",
    "\tat org.apache.felix.http.base.internal.dispatch.Dispatcher$1.doFilter(Dispatcher.java:146)",
    "\tat org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1002)",
    "\tat org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:97)",
    "\tat org.apache.felix.http.base.internal.handler.PreprocessorHandler.handle(PreprocessorHandler.java:136)",
    "\tat org.apache.felix.http.base.internal.whiteboard.WhiteboardManager$2.doFilter(WhiteboardManager.java:1008)",
    "\tat org.apache.felix.http.base.internal.whiteboard.WhiteboardManager.invokePreprocessors(WhiteboardManager.java:1012)",
    "\tat org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:91)",
    "\tat org.apache.felix.http.base.internal.dispatch.DispatcherServlet.service(DispatcherServlet.java:49)",
    "\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:725)",
    "\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)",
    "\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:551)",
    "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)",
    "\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)",
    "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)",
    "\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1363)",
    "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)",
    "\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:489)",
    "\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)",
    "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)",
    "\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1278)",
    "\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
    "\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221)",
    "\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
    "\tat org.eclipse.jetty.server.Server.handle(Server.java:500)",
    "\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)",
    "\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547)",
    "\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)",
    "\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)",
    "\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)",
    "\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)",
    "\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)",
    "\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)",
    "\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)",
    "\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)",
    "\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)",
    "\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)",
    "\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)",
    "\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)",
    "\tat java.base/java.lang.Thread.run(Thread.java:834)",
    "Caused by: javax.jcr.InvalidItemStateException: OakState0001: Unresolved conflicts in /content/example/objects/my-collection",
    "\tat org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:238)",
    "\tat org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:213)",
    "\tat org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.newRepositoryException(SessionDelegate.java:669)",
    "\tat org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:495)",
    "\tat org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.performVoid(SessionImpl.java:424)",
    "\tat org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performVoid(SessionDelegate.java:273)",
    "\tat org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:421)",
    "\tat org.apache.sling.jcr.oak.server.internal.TcclWrappingJackrabbitSession.save(TcclWrappingJackrabbitSession.java:212)",
    "\tat org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.commit(JcrResourceProvider.java:514)",
    "\t... 77 more",
    "Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakState0001: Unresolved conflicts in /content/example/objects/my-collection",
    "\tat org.apache.jackrabbit.oak.plugins.commit.ConflictValidator.failOnMergeConflict(ConflictValidator.java:115)",
    "\tat org.apache.jackrabbit.oak.plugins.commit.ConflictValidator.propertyAdded(ConflictValidator.java:84)",
    "\tat org.apache.jackrabbit.oak.spi.commit.CompositeEditor.propertyAdded(CompositeEditor.java:82)",
    "\tat org.apache.jackrabbit.oak.spi.commit.EditorDiff.propertyAdded(EditorDiff.java:81)",
    "\tat org.apache.jackrabbit.oak.segment.SegmentNodeState.compareProperties(SegmentNodeState.java:660)",
    "\tat org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:523)",
    "\tat org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:147)",
    "\tat org.apache.jackrabbit.oak.segment.MapRecord.compare(MapRecord.java:444)",
    "\tat org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:651)",
    "\tat org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:147)",
    "\tat org.apache.jackrabbit.oak.segment.MapRecord.compare(MapRecord.java:444)",
    "\tat org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:651)",
    "\tat org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:147)",
    "\tat org.apache.jackrabbit.oak.segment.MapRecord.compare(MapRecord.java:444)",
    "\tat org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:651)",
    "\tat org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:147)",
    "\tat org.apache.jackrabbit.oak.segment.MapRecord.compare(MapRecord.java:444)",
    "\tat org.apache.jackrabbit.oak.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:651)",
    "\tat org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:51)",
    "\tat org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:54)",
    "\tat org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60)",
    "\tat org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60)",
    "\tat org.apache.jackrabbit.oak.segment.scheduler.Commit.apply(Commit.java:105)",
    "\tat org.apache.jackrabbit.oak.segment.scheduler.LockBasedScheduler.execute(LockBasedScheduler.java:299)",
    "\tat org.apache.jackrabbit.oak.segment.scheduler.LockBasedScheduler.schedule(LockBasedScheduler.java:270)",
    "\tat org.apache.jackrabbit.oak.segment.SegmentNodeStore.merge(SegmentNodeStore.java:211)",
    "\tat org.apache.jackrabbit.oak.core.MutableRoot.commit(MutableRoot.java:251)",
    "\tat org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:346)",
    "\tat org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:493)",
    "\t... 82 more"
  ]
}
reggie7 commented 3 years ago

@Felix-Puetz we have inconsistent dialog here btw: Zrzut ekranu 2021-02-24 o 16 13 04

flx-sta commented 3 years ago

Yeah I'll address that afterwards 👍

reggie7 commented 3 years ago
  1. Add collection object
  2. Don't set anything in the first list
Zrzut ekranu 2021-02-25 o 00 00 59
  1. Try adding it later, on edit

Zrzut ekranu 2021-02-25 o 00 01 13

reggie7 commented 3 years ago

@KWoloszczuk http://localhost:8080/content/admin/pages/objects.html/path:/content/example/objects is the develop-sling12 link.

ehdatheadwire commented 3 years ago

@reggie7 and @KWoloszczuk -- As this is still actively being worked on, can we assume it's required for 1.0.0 release? And if so, can we close out on it if it's been addressed/fixed? I can't tell if it's been fixed in my local instance. Thanks!

reggie7 commented 3 years ago

@ehdatheadwire I guess it's fixed as #769 got merged. But the question goes to @Felix-Puetz more than us. @KWoloszczuk - maybe you could check the latest develop-sling12 to confirm that stuff got fixed.

flx-sta commented 3 years ago

@KWoloszczuk if you can confirm on develop-sling12 please close the issue

reggie7 commented 3 years ago

We have still this:

@reggie7 I resolved the selection issue, but the loss of data doesn't seem to be a frontend issue. The data is sent, but somehow lost in the BE. I'd say thats a new issue

as I see now. It's a bug. Up to @reusr1 to decide if I should look into it. Up to you @ehdatheadwire to decide if it's enhancement project or not. Video here.

ghost commented 3 years ago

@Felix-Puetz Can you explain this behavior for me please?

https://user-images.githubusercontent.com/1230506/111462086-4b7a3180-871e-11eb-9874-020e0d1f8f2f.mp4

reusr1 commented 3 years ago

@Felix-Puetz I did some more testing on this and realized the same type of collection is not working in the site template either (where we manage the js/css includes, etc). There are some frontend bugs like

admin.js:61897 TypeError: Cannot read property 'path' of undefined
    at admin.js:46935
    at Proxy.renderList (vue.js:2637)
    at Proxy.__vue_render__ (admin.js:46932)
    at VueComponent.Vue._render (vue.js:3545)
    at VueComponent.updateComponent (vue.js:4061)
    at Watcher.get (vue.js:4472)
    at Watcher.run (vue.js:4547)
    at flushSchedulerQueue (vue.js:4305)
    at Array.<anonymous> (vue.js:1989)
    at flushCallbacks (vue.js:1915)

can you please track down all locations of the collections and see that the frontend code for all of them works? thank you

reusr1 commented 3 years ago

closing as per @reggie7 's request :-)