#3603: Torrents not erroring as expected in libtorrent 2.0.9
-------------------+---------------------
 Reporter:  Cas    |      Owner:
     Type:  bug    |     Status:  new
 Priority:  major  |  Milestone:  2.1.2
Component:  Core   |    Version:  develop
 Keywords:         |
-------------------+---------------------
 Our test suite started failing with latest libtorrent 2.0.9 in the tests
 related to setting a torrent to error state if files on disk are missing.
 This was implemented to resolve #1032 in Deluge.

 This will require investigation as to expected libtorrent alerts and state
 and how Deluge should react to these scenarios.

 The problem stems from a read_piece fix:
 https://github.com/arvidn/libtorrent/pull/7359

 Related commits:

 https://github.com/deluge-torrent/deluge/commit/0ab7ebd0177f281e
 https://github.com/deluge-
 torrent/deluge/commit/4ae43c5f2a697c6a5e546b416c081ae7b0839587


 A quick script to identify the differences between libtorrent versions


 {{{#!python
 import time
 from pathlib import Path
 import libtorrent as lt
 from pprint import pprint

 print('libtorrent: ', lt.__version__)
 filename = 'deluge/tests/data/test_torrent.file.torrent'
 filedump = Path(filename).read_bytes()
 ti = lt.torrent_info(lt.bdecode(filedump))
 atp = lt.add_torrent_params()
 atp.save_path = '.'
 atp.flags |= lt.torrent_flags.seed_mode
 atp.ti = ti
 sess = lt.session()
 print('# Add torrent')
 h = sess.add_torrent(atp)


 def print_alerts(alerts):
     if not alerts:
         return
     alerts = [alert.what() for alert in alerts]
     print('[alerts] ', ', '.join(alerts))


 state = ''
 prev_state = ''
 while str(state) != 'downloading':
     state = h.status().state
     if str(state) != str(prev_state):
         print('[state ] ', state)
         prev_state = state
     print_alerts(sess.pop_alerts())
     time.sleep(0.1)

 print('# Read piece')
 h.read_piece(0)
 time.sleep(0.5)
 print('[state ] ', h.status().state)
 print_alerts(sess.pop_alerts())
 }}}

 Results:

 {{{
 libtorrent:  2.0.7.0
 # Add torrent
 [state ]  checking_resume_data
 [alerts]  add_torrent
 [state ]  checking_files
 [alerts]  fastresume_rejected
 [state ]  downloading
 # Read piece
 [state ]  downloading
 [alerts]  file_error, torrent_error, file_error, torrent_error, read_piece
 }}}

 {{{
 libtorrent:  2.0.9.0
 # Add torrent
 [state ]  checking_resume_data
 [alerts]  add_torrent
 [state ]  checking_files
 [alerts]  fastresume_rejected
 [state ]  downloading
 # Read piece
 [state ]  downloading
 [alerts]  read_piece
 }}}

--
Ticket URL: <https://dev.deluge-torrent.org/ticket/3603>
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/042.d02b6856119bee3f6bedc9252f58e125%40deluge-torrent.org.

Reply via email to