gearman-go/client
Paul Cameron a8f0a04c3d Fix two race conditions in client.Do
* Common race condition is fixed by identifying that Client.respHandler
  can be completely removed since all respHandler operations (get, put
  and invocation) can be moved into the Client.processLoop goroutine,
  meaning that zero locking is required. This race condition resulted
  in a deadlock that was resolved by the response timeout at the
  end of client.Do, returning ErrLostConn

* Rare race condition is fixed by changing responseHandlerMap.get
  to .getAndRemove. This race condition resulted in the innerHandler
  for a new dtJobCreated assigned in client.Do overriding a stale older
  dtJobCreated request, and the newer innerHandler being removed by an
  older dtJobCreated in client.processLoop > client.handleInner. When
  the newer dtJobCreated response was received, the handler for it had
  already been deleted. This was resolved by the response timeout at the
  end of client.Do, returning ErrLostConn
2021-05-02 11:31:19 +10:00
..
client_test.go Fix two race conditions in client.Do 2021-05-02 11:31:19 +10:00
client.go Fix two race conditions in client.Do 2021-05-02 11:31:19 +10:00
common.go fixed typo and keep WorkComplate for downward compatibility 2017-09-27 13:19:08 +08:00
error.go Use %v instead of %V, which is not a valid Printf verb 2014-03-07 10:21:45 +01:00
id_test.go Remove depenance on external libs for unique id 2013-08-25 22:49:00 -07:00
id.go Fix function comments based on best practices from Effective Go 2019-02-28 02:11:17 +00:00
pool_test.go Add skipping for integration tests when running unit tests 2017-09-27 16:42:21 +02:00
pool.go Fix function comments based on best practices from Effective Go 2019-02-28 02:11:17 +00:00
request.go a better documents for the client package 2013-12-26 15:28:42 +08:00
response.go Fixed WORK_FAIL needing 2 arguments 2014-08-21 10:41:23 +03:00
status.go go fmt 2013-08-30 12:36:57 +08:00