Description of problem: Task that is already picked up by the client can be cancelled via API. Version-Release number of selected component (if applicable): spacewalk-java-2.0.2-50 How reproducible: 100% Steps to Reproduce: 1. Register system to Satellite. 2. Set Provisioning entitlement to the system. 3. Schedule the following "Remote Command": #!/bin/sh sleep 120 4. On the client: rhn_check -vv 5. Cancel the action via API using the following list of APIs: client.schedule.listAllActions(key) client.schedule.cancelActions(key,[task_id]) Actual results: The Remote Command is cancelled while was executing on the client. Expected results: It should not be possible to cancel a Remote Command that has been already picked up by the client via API. Additional info: On WebUI is not possible to cancel Remote Commands that has been picked up already.
Could this be a duplicate of Bug 844874 "Satellite should not allow to cancel task that are already picked up by the client"?
This bug was actually found during the verification of BZ 844874 and was decided the problem to be tracked in a separate bugzilla.
spacewalk ac01717c7244f158ddb6688e7aae64485f64a2b1
Reproduced on spacewalk-java-2.5.14-108 using the reproducer from the initial report. Cancelling a picked-up action using the schedule.cancelActions(key, [id]) ended with th return code 1 meaning success, but the action wasn't actually cancelled. After update to spacewalk-java-2.5.14-110 and attempting to cancel a picked-up action, the action wasn't canceled, and the API call returned following traceback: $ client.schedule.cancelActions(key, 22) --------------------------------------------------------------------------- Fault Traceback (most recent call last) <ipython-input-37-d066faa6d74b> in <module>() ----> 1 client.schedule.cancelActions(key, 22) /usr/lib64/python2.7/xmlrpclib.pyc in __call__(self, *args) 1241 return _Method(self.__send, "%s.%s" % (self.__name, name)) 1242 def __call__(self, *args): -> 1243 return self.__send(self.__name, args) 1244 1245 ## /usr/lib64/python2.7/xmlrpclib.pyc in __request(self, methodname, params) 1600 self.__handler, 1601 request, -> 1602 verbose=self.__verbose 1603 ) 1604 /usr/lib64/python2.7/xmlrpclib.pyc in request(self, host, handler, request_body, verbose) 1281 for i in (0, 1): 1282 try: -> 1283 return self.single_request(host, handler, request_body, verbose) 1284 except socket.error, e: 1285 if i or e.errno not in (errno.ECONNRESET, errno.ECONNABORTED, errno.EPIPE): /usr/lib64/python2.7/xmlrpclib.pyc in single_request(self, host, handler, request_body, verbose) 1314 if response.status == 200: 1315 self.verbose = verbose -> 1316 return self.parse_response(response) 1317 except Fault: 1318 raise /usr/lib64/python2.7/xmlrpclib.pyc in parse_response(self, response) 1491 p.close() 1492 -> 1493 return u.close() 1494 1495 ## /usr/lib64/python2.7/xmlrpclib.pyc in close(self) 798 raise ResponseError() 799 if self._type == "fault": --> 800 raise Fault(**self._stack[0]) 801 return tuple(self._stack) 802 Fault: <Fault -1: 'redstone.xmlrpc.XmlRpcFault: unhandled internal exception: Cannot cancel actions in PICKED UP state, aborting...'> There is followin traceback in the catalina.out: 2018-02-16 13:38:35,783 [TP-Processor2] ERROR com.redhat.rhn.frontend.xmlrpc.BaseHandler - Error calling method: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:508) at com.redhat.rhn.frontend.xmlrpc.BaseHandler.invoke(BaseHandler.java:174) at redstone.xmlrpc.XmlRpcDispatcher.dispatch(XmlRpcDispatcher.java:123) at com.redhat.rhn.frontend.xmlrpc.RhnXmlRpcServer.execute(RhnXmlRpcServer.java:54) at com.redhat.rhn.frontend.xmlrpc.XmlRpcServlet.doPost(XmlRpcServlet.java:162) at javax.servlet.http.HttpServlet.service(HttpServlet.java:643) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:67) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:57) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:97) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:299) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Thread.java:811) Caused by: com.redhat.rhn.manager.action.ActionIsPickedUpException: Cannot cancel actions in PICKED UP state, aborting... at com.redhat.rhn.frontend.xmlrpc.schedule.ScheduleHandler.cancelActions(ScheduleHandler.java:63) ... 41 more 2018-02-16 13:38:35,785 [TP-Processor2] ERROR com.redhat.rhn.frontend.xmlrpc.BaseHandler - Caused by: com.redhat.rhn.manager.action.ActionIsPickedUpException: Cannot cancel actions in PICKED UP state, aborting... at com.redhat.rhn.frontend.xmlrpc.schedule.ScheduleHandler.cancelActions(ScheduleHandler.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:508) at com.redhat.rhn.frontend.xmlrpc.BaseHandler.invoke(BaseHandler.java:174) at redstone.xmlrpc.XmlRpcDispatcher.dispatch(XmlRpcDispatcher.java:123) at com.redhat.rhn.frontend.xmlrpc.RhnXmlRpcServer.execute(RhnXmlRpcServer.java:54) at com.redhat.rhn.frontend.xmlrpc.XmlRpcServlet.doPost(XmlRpcServlet.java:162) at javax.servlet.http.HttpServlet.service(HttpServlet.java:643) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:67) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:101) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:57) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:97) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:299) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Thread.java:811) 2018-02-16 13:38:35,786 [TP-Processor2] ERROR com.redhat.rhn.frontend.xmlrpc.BaseHandler - Rolling back transaction Feb 16, 2018 1:38:35 PM redstone.xmlrpc.XmlRpcDispatcher writeError WARNING: redstone.xmlrpc.XmlRpcFault: unhandled internal exception: Cannot cancel actions in PICKED UP state, aborting... The action was finished succesfully. VERIFIED
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2018:0393