The basic idea of the fix is to poll the socket for FIN in testcancel.
Since polling for FIN can be expensive, an alternative is to not remove
the socket from libev poll list, and alter the session state when FIN is
received, and, in testcancel(), check the state of the session.

-- 
You received this bug notification because you are a member of Tarantool
Development Team, which is subscribed to tarantool.
https://bugs.launchpad.net/bugs/1220676

Title:
  Abort lua fiber when owner socket closed

Status in Tarantool - an efficient in-memory data store:
  New

Bug description:
  Example function:

  function box.fqueue.take(timeout)
      timeout = tonumber(timeout)
      local now = box.time()
      while true do
          local x,one_ready = box.space[sno].index[i_ready]:next_equal( 'R' )
          if one_ready == nil then
              if not timeout or box.time() - now >= timeout then
                  return
              else
                  box.fiber.sleep( timeout/100 );
              end
          else
              return one_ready;
          end
      end
  end

  
  If socket, that called that function closed, function continue to work.

To manage notifications about this bug go to:
https://bugs.launchpad.net/tarantool/+bug/1220676/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~tarantool-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~tarantool-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to