Hi Pierre, Just so I am clear, does"Entity A -> Composition Relationship -> Entity B" mean that B or A is the container?
If B is the container then - you should be able to delete A. You are saying that B can be deleted and leaves its part A. If this is the case then I would suggest that the code could be enhanced to either stop this sort of deletion or delete it and all of its composed parts. I suggest this is not a stopper for v1.0, as you have a circumvention where you manually delete each entity. If this is an issue - I suggest looking at AtlasEntityStoreV1 deleteById to add some checking around composition relationships prior to deletion, all the best, David. From: Pierre Padovani <pierre.padov...@civitaslearning.com> To: dev@atlas.apache.org Date: 31/05/2018 17:47 Subject: Re: Problem deleting edges with 1.0.0 - pre rc Sorry for the spam... One last data point. It looks like the deletion of B is the issue. I can delete A, but this doesn't delete B. On Thu, May 31, 2018 at 11:21 AM, Pierre Padovani < pierre.padov...@civitaslearning.com> wrote: > The level we are using is a few weeks old, but I didn't see an issue that > fixed this in the interim. > > Problem: > > Entity A -> Composition Relationship -> Entity B > > Delete Entity A and Entity B > > I get the following exception trace: > > java.lang.IllegalArgumentException: Invalid edge label > r:DiscoveryPackTables: expected 2 or 3 label components but found 1 at > org.apache.atlas.repository.graph.AtlasEdgeLabel.<init>(AtlasEdgeLabel.java:37) > at org.apache.atlas.repository.store.graph.v1.DeleteHandlerV1. > getAttributeForEdge(DeleteHandlerV1.java:722) at > org.apache.atlas.repository.store.graph.v1.DeleteHandlerV1.deleteVertex(DeleteHandlerV1.java:865) > at org.apache.atlas.repository.store.graph.v1.DeleteHandlerV1. > deleteTypeVertex(DeleteHandlerV1.java:718) at org.apache.atlas.repository. > store.graph.v1.DeleteHandlerV1.deleteEntities(DeleteHandlerV1.java:140) > at org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1. > deleteVertices(AtlasEntityStoreV1.java:704) at > org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1.deleteById(AtlasEntityStoreV1.java:297) > at org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1$$ > FastClassBySpringCGLIB$$80c00649.invoke(<generated>) at > org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) > at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation. > invokeJoinpoint(CglibAopProxy.java:738) at org.springframework.aop. > framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) > at org.apache.atlas.GraphTransactionInterceptor.invoke( > GraphTransactionInterceptor.java:75) at org.springframework.aop.framework. > ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) > at org.springframework.aop.framework.CglibAopProxy$ > DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) at > org.apache.atlas.repository.store.graph.v1.AtlasEntityStoreV1$$ > EnhancerBySpringCGLIB$$2072786c.deleteById(<generated>) at > org.apache.atlas.web.rest.EntityREST.deleteByGuid(EntityREST.java:327) at > sun.reflect.GeneratedMethodAccessor231.invoke(Unknown Source) at > sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) > at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke( > JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl. > model.method.dispatch.AbstractResourceMethodDispatch > Provider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) > at com.sun.jersey.server.impl.model.method.dispatch. > ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) > at com.sun.jersey.server.impl.uri.rules.HttpMethodRule. > accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl. > uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at > com.sun.jersey.server.impl.uri.rules.ResourceClassRule. > accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl. > uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at > com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept( > RootResourceClassesRule.java:84) at com.sun.jersey.server.impl. > application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) > at com.sun.jersey.server.impl.application.WebApplicationImpl._ > handleRequest(WebApplicationImpl.java:1473) at com.sun.jersey.server.impl. > application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) > at com.sun.jersey.server.impl.application.WebApplicationImpl. > handleRequest(WebApplicationImpl.java:1409) at > com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) > at com.sun.jersey.spi.container.servlet.ServletContainer. > service(ServletContainer.java:558) at com.sun.jersey.spi.container. > servlet.ServletContainer.service(ServletContainer.java:733) at > javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:845) at > org.eclipse.jetty.servlet.ServletHandler$CachedChain. > doFilter(ServletHandler.java:1712) at org.apache.atlas.web.filters. > AuditFilter.doFilter(AuditFilter.java:80) at org.eclipse.jetty.servlet. > ServletHandler$CachedChain.doFilter(ServletHandler.java:1699) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:317) at > org.springframework.security.web.access.intercept. > FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) at > org.springframework.security.web.access.intercept. > FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.access.ExceptionTranslationFilter. > doFilter(ExceptionTranslationFilter.java:114) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.session.SessionManagementFilter.doFilter( > SessionManagementFilter.java:137) at org.springframework.security. > web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > at org.springframework.security.web.authentication. > AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) > at org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.apache.atlas.web.filters.AtlasCSRFPreventionFilter$ > ServletFilterHttpInteraction.proceed(AtlasCSRFPreventionFilter.java:235) > at org.apache.atlas.web.filters.AtlasCSRFPreventionFilter. > handleHttpInteraction(AtlasCSRFPreventionFilter.java:177) at > org.apache.atlas.web.filters.AtlasCSRFPreventionFilter.doFilter( > AtlasCSRFPreventionFilter.java:190) at org.springframework.security. > web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > at org.apache.atlas.web.filters.AtlasAuthenticationFilter.doFilter( > AtlasAuthenticationFilter.java:370) at org.springframework.security. > web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > at org.springframework.security.web.servletapi. > SecurityContextHolderAwareRequestFilter.doFilter( > SecurityContextHolderAwareRequestFilter.java:170) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.savedrequest.RequestCacheAwareFilter. > doFilter(RequestCacheAwareFilter.java:63) at org.springframework.security. > web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > at org.apache.atlas.web.filters.StaleTransactionCleanupFilter.doFilter( > StaleTransactionCleanupFilter.java:55) at org.springframework.security. > web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > at org.springframework.security.web.authentication.www. > BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:215) > at org.springframework.web.filter.OncePerRequestFilter. > doFilter(OncePerRequestFilter.java:107) at org.springframework.security. > web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) > at org.apache.atlas.web.filters.AtlasKnoxSSOAuthenticationFilter.doFilter( > AtlasKnoxSSOAuthenticationFilter.java:146) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.authentication. > AbstractAuthenticationProcessingFilter.doFilter( > AbstractAuthenticationProcessingFilter.java:200) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.authentication.logout. > LogoutFilter.doFilter(LogoutFilter.java:116) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.context.SecurityContextPersistenceFilt > er.doFilter(SecurityContextPersistenceFilter.java:105) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.context.request.async. > WebAsyncManagerIntegrationFilter.doFilterInternal( > WebAsyncManagerIntegrationFilter.java:56) at org.springframework.web. > filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at > org.springframework.security.web.FilterChainProxy$ > VirtualFilterChain.doFilter(FilterChainProxy.java:331) at > org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) > at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) > at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate( > DelegatingFilterProxy.java:346) at org.springframework.web. > filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at > org.eclipse.jetty.servlet.ServletHandler$CachedChain. > doFilter(ServletHandler.java:1691) at org.eclipse.jetty.servlet. > ServletHandler.doHandle(ServletHandler.java:582) at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > at org.eclipse.jetty.server.session.SessionHandler. > doHandle(SessionHandler.java:226) at org.eclipse.jetty.server. > handler.ContextHandler.doHandle(ContextHandler.java:1180) at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) > at org.eclipse.jetty.server.session.SessionHandler. > doScope(SessionHandler.java:185) at org.eclipse.jetty.server. > handler.ContextHandler.doScope(ContextHandler.java:1112) at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) > at org.eclipse.jetty.server.Server.handle(Server.java:534) at > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) > at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at > org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) > at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume. > executeProduceConsume(ExecuteProduceConsume.java:303) at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume. > produceConsume(ExecuteProduceConsume.java:148) at > org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run( > ExecuteProduceConsume.java:136) at java.util.concurrent. > ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU