Bug 1052292 - Task that is already picked up by the client can be cancelled via API.
Summary: Task that is already picked up by the client can be cancelled via API.
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite 5
Classification: Red Hat
Component: API
Version: 560
Hardware: Unspecified
OS: Unspecified
low
low
Target Milestone: ---
Assignee: Jiří Dostál
QA Contact: Radovan Drazny
URL:
Whiteboard:
Depends On:
Blocks: sat58-nth
TreeView+ depends on / blocked
 
Reported: 2014-01-13 15:10 UTC by Dimitar Yordanov
Modified: 2018-03-06 15:46 UTC (History)
5 users (show)

Fixed In Version: spacewalk-java-2.5.14-109-sat
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-03-06 15:46:27 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 844874 1 None None None 2021-01-20 06:05:38 UTC
Red Hat Product Errata RHBA-2018:0393 0 normal SHIPPED_LIVE Red Hat Satellite 5.8.0 bug fix update 2018-03-06 20:47:01 UTC

Internal Links: 844874

Description Dimitar Yordanov 2014-01-13 15:10:07 UTC
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.

Comment 1 Xixi 2014-01-13 19:47:00 UTC
Could this be a duplicate of Bug 844874 "Satellite should not allow to cancel task that are already picked up by the client"?

Comment 2 Dimitar Yordanov 2014-01-14 08:58:49 UTC
This bug was actually found during the verification of BZ 844874 and was decided the problem to be tracked in a separate bugzilla.

Comment 5 Jiří Dostál 2018-01-17 12:35:08 UTC
spacewalk ac01717c7244f158ddb6688e7aae64485f64a2b1

Comment 8 Radovan Drazny 2018-02-16 18:41:06 UTC
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

Comment 11 errata-xmlrpc 2018-03-06 15:46:27 UTC
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


Note You need to log in before you can comment on or make changes to this bug.