I’m stuck on Stage #JV8 with a timeout error. This may be similar to the following posts:
JV8 timing out when downloading a file,
#jv8: Cannot get it to work when running tests in codecrafters,
Execution time out on test #JV8.
I believe my download is asynchronous across multiple peers. I have also been minded to send cancel messages for a block received to all other peers after having received that block from one peer. It seems I still get stuck after Piece 7 (0-based), though, whether the test has 10 or 12 pieces in total. And for the test where there are only 4 pieces, the client isn’t downloading anything at all. This seems to suggest I am having trouble with the final two to four pieces. But I do not know what is stopping them from downloading the way the first 8 pieces download.
Here are my logs:
remote: [tester::#JV8] Running tests for Stage #JV8 (Download the whole file)
remote: [tester::#JV8] Running ./your_program.sh download -o /tmp/torrents1002386082/itsworking.gif /tmp/torrents1002386082/itsworking.gif.torrent
remote: [your_program] There are 10 pieces in total.
remote: [your_program] Piece 0 has 16 blocks.
remote: [your_program] Piece 1 has 16 blocks.
remote: [your_program] Piece 2 has 16 blocks.
remote: [your_program] Piece 3 has 16 blocks.
remote: [your_program] Piece 4 has 16 blocks.
remote: [your_program] Piece 5 has 16 blocks.
remote: [your_program] Piece 6 has 16 blocks.
remote: [your_program] Piece 7 has 16 blocks.
remote: [your_program] Piece 8 has 16 blocks.
remote: [your_program] Piece 9 has 12 blocks.
remote: [your_program] *********************************
remote: [your_program] Piece 0, Block 0 incoming.
remote: [your_program] Piece 0 has block 0.
remote: [your_program] Piece 0, Block 1 incoming.
remote: [your_program] Piece 0 has block 1.
remote: [your_program] Piece 0, Block 2 incoming.
remote: [your_program] Piece 0 has block 2.
remote: [your_program] Piece 0, Block 3 incoming.
remote: [your_program] Piece 0 has block 3.
remote: [your_program] Piece 0, Block 4 incoming.
remote: [your_program] Piece 0 has block 4.
remote: [your_program] Piece 0, Block 5 incoming.
remote: [your_program] Piece 0 has block 5.
remote: [your_program] Piece 0, Block 6 incoming.
remote: [your_program] Piece 0 has block 6.
remote: [your_program] Piece 0, Block 7 incoming.
remote: [your_program] Piece 0 has block 7.
remote: [your_program] Piece 0, Block 8 incoming.
remote: [your_program] Piece 0 has block 8.
remote: [your_program] Piece 0, Block 9 incoming.
remote: [your_program] Piece 0 has block 9.
remote: [your_program] Piece 0, Block 10 incoming.
remote: [your_program] Piece 0 has block 10.
remote: [your_program] Piece 0, Block 11 incoming.
remote: [your_program] Piece 0 has block 11.
remote: [your_program] Piece 0, Block 12 incoming.
remote: [your_program] Piece 0 has block 12.
remote: [your_program] Piece 0, Block 13 incoming.
remote: [your_program] Piece 0 has block 13.
remote: [your_program] Piece 0, Block 14 incoming.
remote: [your_program] Piece 0 has block 14.
remote: [your_program] Piece 0, Block 15 incoming.
remote: [your_program] Piece 0 has block 15.
remote: [your_program] Piece 1, Block 0 incoming.
remote: [your_program] Piece 1 has block 0.
remote: [your_program] Piece 1, Block 1 incoming.
remote: [your_program] Piece 1 has block 1.
remote: [your_program] Piece 1, Block 2 incoming.
remote: [your_program] Piece 1 has block 2.
remote: [your_program] Piece 1, Block 3 incoming.
remote: [your_program] Piece 1 has block 3.
remote: [your_program] Piece 1, Block 4 incoming.
remote: [your_program] Piece 1 has block 4.
remote: [your_program] Piece 1, Block 5 incoming.
remote: [your_program] Piece 1 has block 5.
remote: [your_program] Piece 1, Block 6 incoming.
remote: [your_program] Piece 1 has block 6.
remote: [your_program] Piece 1, Block 7 incoming.
remote: [your_program] Piece 1 has block 7.
remote: [your_program] Piece 1, Block 8 incoming.
remote: [your_program] Piece 1 has block 8.
remote: [your_program] Piece 1, Block 9 incoming.
remote: [your_program] Piece 1 has block 9.
remote: [your_program] Piece 1, Block 10 incoming.
remote: [your_program] Piece 1 has block 10.
remote: [your_program] Piece 1, Block 11 incoming.
remote: [your_program] Piece 1 has block 11.
remote: [your_program] Piece 1, Block 12 incoming.
remote: [your_program] Piece 1 has block 12.
remote: [your_program] Piece 1, Block 13 incoming.
remote: [your_program] Piece 1 has block 13.
remote: [your_program] Piece 1, Block 14 incoming.
remote: [your_program] Piece 1 has block 14.
remote: [your_program] Piece 1, Block 15 incoming.
remote: [your_program] Piece 1 has block 15.
remote: [your_program] Piece 2, Block 0 incoming.
remote: [your_program] Piece 2 has block 0.
remote: [your_program] Piece 2, Block 1 incoming.
remote: [your_program] Piece 2 has block 1.
remote: [your_program] Piece 2, Block 2 incoming.
remote: [your_program] Piece 2 has block 2.
remote: [your_program] Piece 2, Block 3 incoming.
remote: [your_program] Piece 2 has block 3.
remote: [your_program] Piece 2, Block 4 incoming.
remote: [your_program] Piece 2 has block 4.
remote: [your_program] Piece 2, Block 5 incoming.
remote: [your_program] Piece 2 has block 5.
remote: [your_program] Piece 2, Block 6 incoming.
remote: [your_program] Piece 2 has block 6.
remote: [your_program] Piece 2, Block 7 incoming.
remote: [your_program] Piece 2 has block 7.
remote: [your_program] Piece 2, Block 8 incoming.
remote: [your_program] Piece 2 has block 8.
remote: [your_program] Piece 2, Block 9 incoming.
remote: [your_program] Piece 2 has block 9.
remote: [your_program] Piece 2, Block 10 incoming.
remote: [your_program] Piece 2 has block 10.
remote: [your_program] Piece 2, Block 11 incoming.
remote: [your_program] Piece 2 has block 11.
remote: [your_program] Piece 2, Block 12 incoming.
remote: [your_program] Piece 2 has block 12.
remote: [your_program] Piece 2, Block 13 incoming.
remote: [your_program] Piece 2 has block 13.
remote: [your_program] Piece 2, Block 14 incoming.
remote: [your_program] Piece 2 has block 14.
remote: [your_program] Piece 2, Block 15 incoming.
remote: [your_program] Piece 2 has block 15.
remote: [your_program] Piece 3, Block 0 incoming.
remote: [your_program] Piece 3 has block 0.
remote: [your_program] Piece 3, Block 1 incoming.
remote: [your_program] Piece 3 has block 1.
remote: [your_program] Piece 3, Block 2 incoming.
remote: [your_program] Piece 3 has block 2.
remote: [your_program] Piece 3, Block 3 incoming.
remote: [your_program] Piece 3 has block 3.
remote: [your_program] Piece 3, Block 4 incoming.
remote: [your_program] Piece 3 has block 4.
remote: [your_program] Piece 3, Block 5 incoming.
remote: [your_program] Piece 3 has block 5.
remote: [your_program] Piece 3, Block 6 incoming.
remote: [your_program] Piece 3 has block 6.
remote: [your_program] Piece 3, Block 7 incoming.
remote: [your_program] Piece 3 has block 7.
remote: [your_program] Piece 3, Block 8 incoming.
remote: [your_program] Piece 3 has block 8.
remote: [your_program] Piece 3, Block 9 incoming.
remote: [your_program] Piece 3 has block 9.
remote: [your_program] Piece 3, Block 10 incoming.
remote: [your_program] Piece 3 has block 10.
remote: [your_program] Piece 3, Block 11 incoming.
remote: [your_program] Piece 3 has block 11.
remote: [your_program] Piece 3, Block 12 incoming.
remote: [your_program] Piece 3 has block 12.
remote: [your_program] Piece 3, Block 13 incoming.
remote: [your_program] Piece 3 has block 13.
remote: [your_program] Piece 3, Block 14 incoming.
remote: [your_program] Piece 3 has block 14.
remote: [your_program] Piece 3, Block 15 incoming.
remote: [your_program] Piece 3 has block 15.
remote: [your_program] Piece 4, Block 0 incoming.
remote: [your_program] Piece 4 has block 0.
remote: [your_program] Piece 4, Block 1 incoming.
remote: [your_program] Piece 4 has block 1.
remote: [your_program] Piece 4, Block 2 incoming.
remote: [your_program] Piece 4 has block 2.
remote: [your_program] Piece 4, Block 3 incoming.
remote: [your_program] Piece 4 has block 3.
remote: [your_program] Piece 4, Block 4 incoming.
remote: [your_program] Piece 4 has block 4.
remote: [your_program] Piece 4, Block 5 incoming.
remote: [your_program] Piece 4 has block 5.
remote: [your_program] Piece 4, Block 6 incoming.
remote: [your_program] Piece 4 has block 6.
remote: [your_program] Piece 4, Block 7 incoming.
remote: [your_program] Piece 4 has block 7.
remote: [your_program] Piece 4, Block 8 incoming.
remote: [your_program] Piece 4 has block 8.
remote: [your_program] Piece 4, Block 9 incoming.
remote: [your_program] Piece 4 has block 9.
remote: [your_program] Piece 4, Block 10 incoming.
remote: [your_program] Piece 4 has block 10.
remote: [your_program] Piece 4, Block 11 incoming.
remote: [your_program] Piece 4 has block 11.
remote: [your_program] Piece 4, Block 12 incoming.
remote: [your_program] Piece 4 has block 12.
remote: [your_program] Piece 4, Block 13 incoming.
remote: [your_program] Piece 4 has block 13.
remote: [your_program] Piece 4, Block 14 incoming.
remote: [your_program] Piece 4 has block 14.
remote: [your_program] Piece 4, Block 15 incoming.
remote: [your_program] Piece 4 has block 15.
remote: [your_program] Piece 5, Block 0 incoming.
remote: [your_program] Piece 5 has block 0.
remote: [your_program] Piece 5, Block 1 incoming.
remote: [your_program] Piece 5 has block 1.
remote: [your_program] Piece 5, Block 2 incoming.
remote: [your_program] Piece 5 has block 2.
remote: [your_program] Piece 5, Block 3 incoming.
remote: [your_program] Piece 5 has block 3.
remote: [your_program] Piece 5, Block 4 incoming.
remote: [your_program] Piece 5 has block 4.
remote: [your_program] Piece 5, Block 5 incoming.
remote: [your_program] Piece 5 has block 5.
remote: [your_program] Piece 5, Block 6 incoming.
remote: [your_program] Piece 5 has block 6.
remote: [your_program] Piece 5, Block 7 incoming.
remote: [your_program] Piece 5 has block 7.
remote: [your_program] Piece 5, Block 8 incoming.
remote: [your_program] Piece 5 has block 8.
remote: [your_program] Piece 5, Block 9 incoming.
remote: [your_program] Piece 5 has block 9.
remote: [your_program] Piece 5, Block 10 incoming.
remote: [your_program] Piece 5 has block 10.
remote: [your_program] Piece 5, Block 11 incoming.
remote: [your_program] Piece 5 has block 11.
remote: [your_program] Piece 5, Block 12 incoming.
remote: [your_program] Piece 5 has block 12.
remote: [your_program] Piece 5, Block 13 incoming.
remote: [your_program] Piece 5 has block 13.
remote: [your_program] Piece 5, Block 14 incoming.
remote: [your_program] Piece 5 has block 14.
remote: [your_program] Piece 5, Block 15 incoming.
remote: [your_program] Piece 5 has block 15.
remote: [your_program] Piece 6, Block 0 incoming.
remote: [your_program] Piece 6 has block 0.
remote: [your_program] Piece 6, Block 1 incoming.
remote: [your_program] Piece 6 has block 1.
remote: [your_program] Piece 6, Block 2 incoming.
remote: [your_program] Piece 6 has block 2.
remote: [your_program] Piece 6, Block 3 incoming.
remote: [your_program] Piece 6 has block 3.
remote: [your_program] Piece 6, Block 4 incoming.
remote: [your_program] Piece 6 has block 4.
remote: [your_program] Piece 6, Block 5 incoming.
remote: [your_program] Piece 6 has block 5.
remote: [your_program] Piece 6, Block 6 incoming.
remote: [your_program] Piece 6 has block 6.
remote: [your_program] Piece 6, Block 7 incoming.
remote: [your_program] Piece 6 has block 7.
remote: [your_program] Piece 6, Block 8 incoming.
remote: [your_program] Piece 6 has block 8.
remote: [your_program] Piece 6, Block 9 incoming.
remote: [your_program] Piece 6 has block 9.
remote: [your_program] Piece 6, Block 10 incoming.
remote: [your_program] Piece 6 has block 10.
remote: [your_program] Piece 6, Block 11 incoming.
remote: [your_program] Piece 6 has block 11.
remote: [your_program] Piece 6, Block 12 incoming.
remote: [your_program] Piece 6 has block 12.
remote: [your_program] Piece 6, Block 13 incoming.
remote: [your_program] Piece 6 has block 13.
remote: [your_program] Piece 6, Block 14 incoming.
remote: [your_program] Piece 6 has block 14.
remote: [your_program] Piece 6, Block 15 incoming.
remote: [your_program] Piece 6 has block 15.
remote: [your_program] Piece 7, Block 0 incoming.
remote: [your_program] Piece 7 has block 0.
remote: [your_program] Piece 7, Block 1 incoming.
remote: [your_program] Piece 7 has block 1.
remote: [your_program] Piece 7, Block 2 incoming.
remote: [your_program] Piece 7 has block 2.
remote: [your_program] Piece 7, Block 3 incoming.
remote: [your_program] Piece 7 has block 3.
remote: [your_program] Piece 7, Block 4 incoming.
remote: [your_program] Piece 7 has block 4.
remote: [your_program] Piece 7, Block 5 incoming.
remote: [your_program] Piece 7 has block 5.
remote: [your_program] Piece 7, Block 6 incoming.
remote: [your_program] Piece 7 has block 6.
remote: [your_program] Piece 7, Block 7 incoming.
remote: [your_program] Piece 7 has block 7.
remote: [your_program] Piece 7, Block 8 incoming.
remote: [your_program] Piece 7 has block 8.
remote: [your_program] Piece 7, Block 9 incoming.
remote: [your_program] Piece 7 has block 9.
remote: [your_program] Piece 7, Block 10 incoming.
remote: [your_program] Piece 7 has block 10.
remote: [your_program] Piece 7, Block 11 incoming.
remote: [your_program] Piece 7 has block 11.
remote: [your_program] Piece 7, Block 12 incoming.
remote: [your_program] Piece 7 has block 12.
remote: [your_program] Piece 7, Block 13 incoming.
remote: [your_program] Piece 7 has block 13.
remote: [your_program] Piece 7, Block 14 incoming.
remote: [your_program] Piece 7 has block 14.
remote: [your_program] Piece 7, Block 15 incoming.
remote: [your_program] Piece 7 has block 15.
remote: [tester::#JV8] execution timed out
remote: [tester::#JV8] Test failed
(The files come in in order probably because the requests are sent in order. But I believe (from earlier tests where I didn’t send cancel messages) that they sometimes not all from one peer, though I haven’t printed out which peer they are coming from.) Would appreciate ideas of what might be going wrong! Thank you!