Changes between Initial Version and Version 1 of Ticket #1191, comment 12


Ignore:
Timestamp:
2010-09-07T05:57:59Z (14 years ago)
Author:
zooko
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1191, comment 12

    initial v1  
    3030(Sorry about the wide lines there.)
    3131
    32 So at "local#231 23:01:59.969" the request is retired but the resulting eventual {{{got_shares}}} won't happen until "local#255 23:01:59.977" which is shortly after the {{{loop}}} at "local#247 23:01:59.973" which said {{{no_more_shares, ever}}}, which set a flag named {{{_no_more_shares}}} in the {{{SegmentFetcher}}} so that the next time {{{SegmentFetcher._do_loop}}} runs then it gives up and says {{{ran out of shares}}} at "local#253 23:01:59.976".
     32So at {{{local#231 23:01:59.969}}} the request is retired but the resulting eventual {{{got_shares}}} won't happen until {{{local#255 23:01:59.977}}} which is shortly after the {{{loop}}} at {{{local#247 23:01:59.973}}} which said {{{no_more_shares, ever}}}, which set a flag named {{{_no_more_shares}}} in the {{{SegmentFetcher}}} so that the next time {{{SegmentFetcher._do_loop}}} runs then it gives up and says {{{ran out of shares}}} at {{{local#253 23:01:59.976}}}.
    3333
    3434Now [attachment:1191-fix.diff] makes it so that when {{{loop}}} decides {{{no_more_shares, ever}}} then it sets an eventual task to set the {{{_no_more_shares}}} flag in {{{SegmentFetcher}}} instead of doing it immediately. Is this guaranteed to always prevent this bug? I guess it is because when the {{{_request_retired}}} (local#231 23:01:59.969) is done immediately then during that same tick the {{{got_shares}}} (local#255 23:01:59.977) is put on the eventual queue, so when the setting of {{{_no_more_shares}}} is put on the eventual queue it will always go take effect after the {{{got_shares}}} does.