History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: CIB-2006
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: 3 3
Assignee: jason
Reporter: Rohan McGovern
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Pulse

`Smart Clone' fails with `Invalid path: path is empty'

Created: 14/Jun/09 11:23 PM   Updated: 16/Jun/09 09:22 PM
Component/s: None
Affects Version/s: 2.0.31
Fix Version/s: 2.1.4, 2.0.33

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown


 Description  « Hide
I have a rule which I am trying to convert into a template with Smart Clone.

The hierarchy is:
global project template
 -> Qt - All Platforms
  -> Qt 4.5 arthur tests trial

Doing a Smart Clone of `Qt 4.5 arthur tests trial', with the smart clone fields left as default, fails with the message "Invalid path: path is empty". The following message appears in the server log:

6/15/09 1:07:44 PM EST (11 mins 2 secs ago) failure severe count :: 1 com.zutubi.pulse.master.xwork.interceptor.ConfigErrorHandlingInterceptor :: intercept
Invalid path: path is empty
java.lang.IllegalArgumentException: Invalid path: path is empty
at com.zutubi.tove.config.ConfigurationPersistenceManager.isPersistent(ConfigurationPersistenceManager.java:365)
at com.zutubi.tove.config.ConfigurationTemplateManager.checkPersistent(ConfigurationTemplateManager.java:67)
at com.zutubi.tove.config.ConfigurationTemplateManager.getRecord(ConfigurationTemplateManager.java:85)
at com.zutubi.tove.config.ConfigurationReferenceManager.getReferenceHandleForPath(ConfigurationReferenceManager.java:104)
at com.zutubi.tove.config.ConfigurationRefactoringManager$PullUpReferencesFunction.pullUp(ConfigurationRefactoringManager.java:1096)
at com.zutubi.tove.config.ConfigurationRefactoringManager$PullUpReferencesFunction.handleReference(ConfigurationRefactoringManager.java:1077)
at com.zutubi.tove.config.ConfigurationRefactoringManager$ReferenceWalkingFunction.process(ConfigurationRefactoringManager.java:1025)
at com.zutubi.tove.config.ConfigurationRefactoringManager$PullUpReferencesFunction.process(ConfigurationRefactoringManager.java:1067)
at com.zutubi.tove.config.ConfigurationRefactoringManager$TypeAwareFunction.process(ConfigurationRefactoringManager.java:988)
at com.zutubi.tove.config.ConfigurationRefactoringManager$TypeAwareFunction.process(ConfigurationRefactoringManager.java:965)
at com.zutubi.tove.type.record.AbstractRecord.forEach(AbstractRecord.java:171)
at com.zutubi.tove.type.record.AbstractRecord.forEach(AbstractRecord.java:175)
at com.zutubi.tove.type.record.AbstractRecord.forEach(AbstractRecord.java:175)
at com.zutubi.tove.config.ConfigurationRefactoringManager$ExtractParentTemplateAction.execute(ConfigurationRefactoringManager.java:615)
at com.zutubi.tove.config.ConfigurationRefactoringManager$ExtractParentTemplateAction.execute(ConfigurationRefactoringManager.java:533)
at com.zutubi.tove.config.ConfigurationTemplateManager.executeInsideTransaction(ConfigurationTemplateManager.java:298)
at com.zutubi.tove.config.ConfigurationRefactoringManager.extractParentTemplate(ConfigurationRefactoringManager.java:187)
at com.zutubi.tove.config.ConfigurationRefactoringManager$SmartCloneAction.execute(ConfigurationRefactoringManager.java:526)
at com.zutubi.tove.config.ConfigurationRefactoringManager$SmartCloneAction.execute(ConfigurationRefactoringManager.java:504)
at com.zutubi.tove.config.ConfigurationTemplateManager.executeInsideTransaction(ConfigurationTemplateManager.java:298)
at com.zutubi.tove.config.ConfigurationRefactoringManager.smartClone(ConfigurationRefactoringManager.java:233)
at com.zutubi.pulse.master.tove.webwork.CloneAction.execute(CloneAction.java:124)
at sun.reflect.GeneratedMethodAccessor4207.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:358)
at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:218)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:192)
at com.zutubi.pulse.master.xwork.interceptor.ConfigErrorHandlingInterceptor.intercept(ConfigErrorHandlingInterceptor.java:27)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.zutubi.pulse.master.xwork.interceptor.ErrorHandlingInterceptor.intercept(ErrorHandlingInterceptor.java:33)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.zutubi.pulse.master.xwork.interceptor.ErrorHandlingInterceptor.intercept(ErrorHandlingInterceptor.java:33)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:175)
at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.zutubi.pulse.master.xwork.interceptor.CancelWorkflowInterceptor.intercept(CancelWorkflowInterceptor.java:38)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:174)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.zutubi.pulse.master.xwork.interceptor.HibernateSessionInterceptor.intercept(HibernateSessionInterceptor.java:37)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:190)
at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:273)
at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:181)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:216)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:90)
at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39)
at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:195)
at com.zutubi.pulse.servercore.spring.FilterWrapper.doFilter(FilterWrapper.java:46)
at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
)

 All   Comments   Work Log   Change History      Sort Order:
Rohan McGovern - 14/Jun/09 11:35 PM
I tried to use XML-RPC to pull out the config to work around the problem, but that fails.

getRawConfig on 'projects/Qt 4.5 arthur tests trial' simply gives me `java.lang.Exception: java.lang.NullPointerException' with nothing in the server logs.

jason - 15/Jun/09 08:47 PM
Hi Rohan,

Thanks for the report. Simple tests so far cannot reproduce this issue: I think it might be something to do with references pointing within the same project, but haven't cracked it yet. Is there any chance you could send a zip of your $PULSE_DATA/records/snapshot to support@zutubi.com?

Rohan McGovern - 15/Jun/09 10:56 PM
Mail has been sent.

jason - 16/Jun/09 09:14 AM
Hi Rohan,

Thanks for the data. The clone problem was actually related to empty references that are not inherited. The NullPointerException via the remote API was also related to this. Both problems have been fixed. Refer to change 6026.

jason - 16/Jun/09 09:22 PM
Merged to trunk in change 6028.