Kuali Rice Development
  1. Kuali Rice Development
  2. KULRICE-6702

OptimisticLockException during KSB service publishing

    Details

    • Type: Bug Fix Bug Fix
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Backlog
    • Component/s: Performance
    • Security Level: Public (Public: Anyone can view)
    • Labels:
    • Similar issues:
      KULRICE-5964KSB republishing services
      KULRICE-4800KSB attempting to deploy SOAP services multiple times
      KULRICE-1753KSB service configurations are not getting cleared on KSB shutdown
      KULRICE-6601WorkflowDocumentService not currently getting published on the service bus
      KULRICE-6509Synchronize with remote services on KSB startup
      KULRICE-6771KSB integration tests throw exceptions during tearDown
      KULRICE-2812Review services we are publishing as SOAP services, ensure we have everything we need published
      KULRICE-4649Add support for publishing services with a pre-existing wsdl
      KULRICE-11592Remove version/optimistic locking from KSB service registry
      KULRICE-12269KSB deadlock on application startup
    • Rice Module:
      Rice Core
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required

      Description

      2012-02-13 17:44:27,882 [http-bio-8082-exec-12] u:/d: WARN  org.apache.cxf.phase.PhaseInterceptorChain - Application {http://rice.kuali.org/ksb/v2_0}serviceRegistry#{http://rice.kuali.org/ksb/v2_0}removeAndPublish has thrown exception, unwinding now
      org.apache.cxf.interceptor.Fault: OJB operation failed; nested exception is org.apache.ojb.broker.OptimisticLockException: Object has been modified by someone else: org.kuali.rice.ksb.impl.registry.ServiceInfoBo@81998f
      	at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
      	at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
      	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
      	at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:61)
      	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
      	at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
      	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      	at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
      	at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
      	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
      	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
      	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
      	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
      	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
      	at org.kuali.rice.ksb.messaging.servlet.CXFServletControllerAdapter.handleRequest(CXFServletControllerAdapter.java:47)
      	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
      	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
      	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
      	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
      	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
      	at org.kuali.rice.ksb.messaging.servlet.KSBDispatcherServlet.service(KSBDispatcherServlet.java:138)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:69)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:193)
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:157)
      	at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:131)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
      	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
      	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
      	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
      	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
      	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
      	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:662)
      Caused by: org.springmodules.orm.ojb.OjbOperationException: OJB operation failed; nested exception is org.apache.ojb.broker.OptimisticLockException: Object has been modified by someone else: org.kuali.rice.ksb.impl.registry.ServiceInfoBo@81998f
      	at org.springmodules.orm.ojb.OjbAccessor.convertOjbAccessException(OjbAccessor.java:92)
      	at org.springmodules.orm.ojb.PersistenceBrokerTemplate.execute(PersistenceBrokerTemplate.java:144)
      	at org.springmodules.orm.ojb.PersistenceBrokerTemplate.store(PersistenceBrokerTemplate.java:244)
      	at org.kuali.rice.ksb.impl.registry.ServiceRegistryDaoOjb.saveServiceInfo(ServiceRegistryDaoOjb.java:97)
      	at org.kuali.rice.ksb.impl.registry.ServiceRegistryImpl.publishService(ServiceRegistryImpl.java:127)
      	at org.kuali.rice.ksb.impl.registry.ServiceRegistryImpl.publishServices(ServiceRegistryImpl.java:142)
      	at org.kuali.rice.ksb.impl.registry.ServiceRegistryImpl.removeAndPublish(ServiceRegistryImpl.java:187)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
      	at $Proxy23.removeAndPublish(Unknown Source)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
      	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
      	... 49 more
      Caused by: org.apache.ojb.broker.OptimisticLockException: Object has been modified by someone else: org.kuali.rice.ksb.impl.registry.ServiceInfoBo@81998f
      	at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeUpdate(Unknown Source)
      	at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Unknown Source)
      	at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown Source)
      	at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown Source)
      	at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown Source)
      	at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unknown Source)
      	at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unknown Source)
      	at org.springmodules.orm.ojb.PersistenceBrokerTemplate$9.doInPersistenceBroker(PersistenceBrokerTemplate.java:246)
      	at org.springmodules.orm.ojb.PersistenceBrokerTemplate.execute(PersistenceBrokerTemplate.java:141)
      	... 71 more
      2012-02-13 17:44:27,914 [http-bio-8082-exec-12] u:/d: INFO  org.kuali.rice.core.RequestLoggingFilter - After request [uri=/remoting/soap/ksb/v2_0/serviceRegistry] 76 ms.
      2012-02-13 17:44:27,914 [http-bio-8082-exec-12] u:/d: INFO  monitoring - remoteAddr = 10.209.103.40, request = /remoting/soap/ksb/v2_0/serviceRegistry POST: 77 ms, erreur, 1 Ko

        Issue Links

          Activity

          Hide
          Eric Westfall added a comment -

          Here's the error from the "client-side" which is the rice-remote-test-client application:

          2012-02-16 05:03:59,224 [KSB-Scheduled-pool-1-thread-1] INFO org.kuali.rice.ksb.impl.bus.ServiceBusImpl - Found service changes during synchronization: remoteNewServices=0, remoteRemovedServices=0, localServicesToPublish=2, localServicesToUpdate=0, localServicesToRemove=0
          2012-02-16 05:03:59,280 [KSB-Scheduled-pool-1-thread-1] ERROR org.kuali.rice.ksb.impl.bus.ServiceBusImpl - Failed to execute background service bus synchronization.
          javax.xml.ws.soap.SOAPFaultException: OJB operation failed; nested exception is org.apache.ojb.broker.OptimisticLockException: Object has been modified by someone else: org.kuali.rice.ksb.impl.registry.ServiceInfoBo@18fcfe9
          	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
          	at $Proxy54.removeAndPublish(Unknown Source)
          	at org.kuali.rice.ksb.impl.bus.LazyRemoteServiceRegistryConnector.removeAndPublish(LazyRemoteServiceRegistryConnector.java:125)
          	at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.processLocalServiceDiff(ServiceBusImpl.java:514)
          	at org.kuali.rice.ksb.impl.bus.ServiceBusImpl$2.sync(ServiceBusImpl.java:426)
          	at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronizeAndProcess(ServiceBusImpl.java:413)
          	at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronize(ServiceBusImpl.java:420)
          	at org.kuali.rice.ksb.impl.bus.ServiceBusImpl$1.run(ServiceBusImpl.java:121)
          	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
          	at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
          	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
          	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
          	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
          	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
          	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:662)
          Caused by: org.apache.cxf.binding.soap.SoapFault: OJB operation failed; nested exception is org.apache.ojb.broker.OptimisticLockException: Object has been modified by someone else: org.kuali.rice.ksb.impl.registry.ServiceInfoBo@18fcfe9
          	at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
          	at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
          	at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
          	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
          	at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:99)
          	at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
          	at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
          	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
          	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:795)
          	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2407)
          	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2241)
          	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2084)
          	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
          	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:732)
          	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
          	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
          	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:544)
          	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:341)
          	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:294)
          	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
          	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
          	... 16 more
          

          It looks like what is happening here is that the rice-remote-test-client reads the registry and then thinks it needs to publish it's services for some reason. But they are already published so it gets that optimistic lock exception when trying to publish the service. So it must be some kind of logic issue with the diff calculator I imagine?

          I restarted the rice-remote-test-client and that causes the issue to go away because it appears to be resynching properly with the registry after that. Unfortunately I was dumb and didn't dump the contents of the KRSB_SVC_DEF_T table before I did that So I'm not sure what was in the database for those services such that it couldn't figure out that they were already published.

          Show
          Eric Westfall added a comment - Here's the error from the "client-side" which is the rice-remote-test-client application: 2012-02-16 05:03:59,224 [KSB-Scheduled-pool-1-thread-1] INFO org.kuali.rice.ksb.impl.bus.ServiceBusImpl - Found service changes during synchronization: remoteNewServices=0, remoteRemovedServices=0, localServicesToPublish=2, localServicesToUpdate=0, localServicesToRemove=0 2012-02-16 05:03:59,280 [KSB-Scheduled-pool-1-thread-1] ERROR org.kuali.rice.ksb.impl.bus.ServiceBusImpl - Failed to execute background service bus synchronization. javax.xml.ws.soap.SOAPFaultException: OJB operation failed; nested exception is org.apache.ojb.broker.OptimisticLockException: Object has been modified by someone else : org.kuali.rice.ksb.impl.registry.ServiceInfoBo@18fcfe9 at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146) at $Proxy54.removeAndPublish(Unknown Source) at org.kuali.rice.ksb.impl.bus.LazyRemoteServiceRegistryConnector.removeAndPublish(LazyRemoteServiceRegistryConnector.java:125) at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.processLocalServiceDiff(ServiceBusImpl.java:514) at org.kuali.rice.ksb.impl.bus.ServiceBusImpl$2.sync(ServiceBusImpl.java:426) at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronizeAndProcess(ServiceBusImpl.java:413) at org.kuali.rice.ksb.impl.bus.ServiceBusImpl.synchronize(ServiceBusImpl.java:420) at org.kuali.rice.ksb.impl.bus.ServiceBusImpl$1.run(ServiceBusImpl.java:121) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 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:662) Caused by: org.apache.cxf.binding.soap.SoapFault: OJB operation failed; nested exception is org.apache.ojb.broker.OptimisticLockException: Object has been modified by someone else : org.kuali.rice.ksb.impl.registry.ServiceInfoBo@18fcfe9 at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:99) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:795) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2407) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2241) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2084) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:732) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:544) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:341) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:294) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) ... 16 more It looks like what is happening here is that the rice-remote-test-client reads the registry and then thinks it needs to publish it's services for some reason. But they are already published so it gets that optimistic lock exception when trying to publish the service. So it must be some kind of logic issue with the diff calculator I imagine? I restarted the rice-remote-test-client and that causes the issue to go away because it appears to be resynching properly with the registry after that. Unfortunately I was dumb and didn't dump the contents of the KRSB_SVC_DEF_T table before I did that So I'm not sure what was in the database for those services such that it couldn't figure out that they were already published.
          Hide
          Eric Westfall added a comment -

          I'm wondering if what's happening here is that the dev2 database was rebuilt which reset the sequence values on the table. So in memory in rice-remote-test-client we had services which had been successfully published originally sitting in our list of local services and they had a hard-coded id associated with them (because they had previously been published). Then when we try to republish them it sends an id which is already there in the database.

          One thing we can do combat such situations would be to clear out the id of the ServiceInfo before we publish it.

          Either way, this is the kind of thing which would never be a problem in a production environment, so I'm going to push it to 2.1 so it can be dealt with there.

          Show
          Eric Westfall added a comment - I'm wondering if what's happening here is that the dev2 database was rebuilt which reset the sequence values on the table. So in memory in rice-remote-test-client we had services which had been successfully published originally sitting in our list of local services and they had a hard-coded id associated with them (because they had previously been published). Then when we try to republish them it sends an id which is already there in the database. One thing we can do combat such situations would be to clear out the id of the ServiceInfo before we publish it. Either way, this is the kind of thing which would never be a problem in a production environment, so I'm going to push it to 2.1 so it can be dealt with there.

            People

            • Assignee:
              Unassigned
              Reporter:
              Matt Sargent
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:

                Time Tracking

                Estimated:
                Original Estimate - 3 days
                3d
                Remaining:
                Remaining Estimate - 3 days
                3d
                Logged:
                Time Spent - Not Specified
                Not Specified

                  Structure Helper Panel