#3366: WebApi.add_torrents(): deferred RPC failure results are not propagated
----------------------------+------------------------------------
 Reporter:  lalbornoz       |       Type:  bug
   Status:  new             |   Priority:  minor
Milestone:  needs verified  |  Component:  Web UI
  Version:  2.0.3           |   Keywords:  add_torrents duplicate
----------------------------+------------------------------------
 Failure results in response to deferred RPC requests issued by
 '''!WebApi.add_torrents()''' are not propagated, culminating in an
 exception leak:

 {{{
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: 18:22:52 [ERROR
 ][deluge.ui.client           :169 ] RPCError Message Received!
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 
--------------------------------------------------------------------------------
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: RPCRequest:
 core.add_torrent_file_async(tmplxdf2alp.torrent, b'[ ... ]
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 
--------------------------------------------------------------------------------
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: Traceback (most recent call
 last):
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:   File "/usr/lib/python3
 /dist-packages/deluge/core/rpcserver.py", line 326, in dispatch
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:     ret =
 self.factory.methods[method](*args, **kwargs)
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:   File "/usr/lib/python3
 /dist-packages/deluge/core/core.py", line 430, in add_torrent_file_async
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:     save_state=save_state,
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:   File "/usr/lib/python3
 /dist-packages/deluge/core/torrentmanager.py", line 602, in add_async
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:     torrent_info, magnet,
 options, resume_data
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:   File "/usr/lib/python3
 /dist-packages/deluge/core/torrentmanager.py", line 446, in
 _build_torrent_params
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:     raise
 AddTorrentError('Torrent already in session (%s).' % torrent_id)
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 deluge.error.AddTorrentError: Torrent already in session ([REDACTED]).
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: AddTorrentError: Torrent
 already in session ([REDACTED]).
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 
--------------------------------------------------------------------------------
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: 18:22:52 [ERROR
 ][deluge.ui.web.json_api     :185 ] [Failure instance: Traceback: <class
 'TypeError'>: Object of type 'Failure' is not JSON serializable
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:653:_runCallbacks
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:1117:_cbDeferred
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:459:callback
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:567:_startRunCallbacks
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: --- <exception caught here>
 ---
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:653:_runCallbacks
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/deluge/ui/web/json_api.py:179:_on_rpc_request_finished
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/deluge/ui/web/json_api.py:232:_send_response
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/__init__.py:231:dumps
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/encoder.py:199:encode
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/encoder.py:257:iterencode
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/encoder.py:180:default
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: ]
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: Unhandled error in Deferred:
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: 18:22:52 [CRITICAL][twisted
 :154 ] Unhandled error in Deferred:
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: 18:22:52
 [CRITICAL][deluge.log                 :93  ] twisted.internet.defer
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: [Failure instance:
 Traceback: <class 'TypeError'>: Object of type 'Failure' is not JSON
 serializable
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:653:_runCallbacks
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:1117:_cbDeferred
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:459:callback
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:567:_startRunCallbacks
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: --- <exception caught here>
 ---
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/twisted/internet/defer.py:653:_runCallbacks
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/deluge/ui/web/json_api.py:190:_on_rpc_request_failed
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: /usr/lib/python3/dist-
 packages/deluge/ui/web/json_api.py:232:_send_response
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/__init__.py:231:dumps
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/encoder.py:199:encode
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/encoder.py:257:iterencode
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]:
 /usr/lib/python3.6/json/encoder.py:180:default
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: ]
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: Unhandled error in Deferred:
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: 18:22:52 [CRITICAL][twisted
 :154 ] Unhandled error in Deferred:
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: 18:22:52
 [CRITICAL][deluge.log                 :93  ] twisted.internet.defer
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: [Failure instance: Traceback
 (failure with no frames): <class 'deluge.error.AddTorrentError'>: Torrent
 already in session ([REDACTED]).
 Mar 20 18:22:52 [REDACTED] deluge-web[24012]: ]
 }}}

 The patch enclosed passes ''consumeErrors=True'' and
 ''fireOnOneErrback=True'' to the '''!DeferredList()''' constructor in
 '''!WebApi.add_torrents()''' in order to ensure that the
 '''!DeferredList()''' will both fire on failure and halt further
 propagation past '''JSON._on_rpc_request_failed()'''.

--
Ticket URL: <https://dev.deluge-torrent.org/ticket/3366>
Deluge <https://deluge-torrent.org/>
Deluge Project

-- 
You received this message because you are subscribed to the Google Groups 
"Deluge Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/deluge-dev/048.c2f949409369d3e1e48be5aa8c427426%40deluge-torrent.org.

Reply via email to