• 
      

    Give status updates an optional timeout.

    Review Request #8512 — Created Oct. 31, 2016 and submitted

    Information

    Review Board
    release-3.0.x
    8a855e8...

    Reviewers

    Because of the distributed, asynchronous nature of status updates, it's
    possible that some client will create a status update and then drop the ball.
    This could happen because of any number of issues, but one real-world example
    we've hit is that applications which use rabbitmq can block if the disk fills
    up too much (in which case the broker will just hold on to messages instead of
    passing them).

    With this change, a client can set a timeout period for the status update,
    measured in seconds. If a status update is listed in the "pending" state for
    longer than that period, measured from the timestamp, the "effective state"
    will return TIMEOUT. Clients with legitimately long-running operations can
    keep their stuff in the pending state by pinging, either poking the timestamp
    field or setting longer timeout values. If a client sets the state to one of
    the finished or error states even after the timeout, that new state will take
    priority.

    • Tested the database evolution.
    • Created a status update with a timeout. Saw that before the timeout expired,
      the status update was shown in the UI and API as pending, and after it was
      shown as timed out.
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/models/status_update.py
          reviewboard/reviews/evolutions/__init__.py
          reviewboard/reviews/detail.py
          reviewboard/webapi/resources/status_update.py
          reviewboard/reviews/evolutions/status_update_timeout.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/models/status_update.py
          reviewboard/reviews/evolutions/__init__.py
          reviewboard/reviews/detail.py
          reviewboard/webapi/resources/status_update.py
          reviewboard/reviews/evolutions/status_update_timeout.py
      
      
    2. 
        
    brennie
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-3.0.x (ad958c2)