[Checkins] [zopefoundation/ZEO] ab158e: Handle setting results on Delays who'd protocol we...

GitHub noreply at github.com
Sat Jul 9 17:41:18 CEST 2016


  Branch: refs/heads/simplify-server-commit-lock-management
  Home:   https://github.com/zopefoundation/ZEO
  Commit: ab158e86d1ce73f4a9e0a6905fd5c9b48c8f2b33
      https://github.com/zopefoundation/ZEO/commit/ab158e86d1ce73f4a9e0a6905fd5c9b48c8f2b33
  Author: Jim Fulton <jim at zope.com>
  Date:   2016-07-09 (Sat, 09 Jul 2016)

  Changed paths:
    M src/ZEO/asyncio/server.py

  Log Message:
  -----------
  Handle setting results on Delays who'd protocol were never set

Because races


  Commit: d4a4a7665c98ae2b04d0325675505ed3dd6cb991
      https://github.com/zopefoundation/ZEO/commit/d4a4a7665c98ae2b04d0325675505ed3dd6cb991
  Author: Jim Fulton <jim at zope.com>
  Date:   2016-07-09 (Sat, 09 Jul 2016)

  Changed paths:
    M src/ZEO/tests/forker.py

  Log Message:
  -----------
  Allow control over server debug logging via an environment variable


  Commit: f4bcea77162efd9306003a872ec5ad448e2463c1
      https://github.com/zopefoundation/ZEO/commit/f4bcea77162efd9306003a872ec5ad448e2463c1
  Author: Jim Fulton <jim at zope.com>
  Date:   2016-07-09 (Sat, 09 Jul 2016)

  Changed paths:
    M src/ZEO/StorageServer.py
    M src/ZEO/asyncio/mtacceptor.py
    M src/ZEO/tests/testConversionSupport.py
    M src/ZEO/tests/testZEO2.py

  Log Message:
  -----------
  Internal refactoring of the commit lock manager

In working on the next iteration of the lock manager to provide
object-level locking, I realized:

- It was saner let all waiting try to get locks when locks are
  released, at least in the more complicated logic to follow.

- We really do almost certianly want a multi-threaded server, even if
  it doesn't run faster (still an open question), because otherwise,
  big commits will completely block loads.

- We don't really want to hold the lock-manager lock while calling the
  callback.  Again, this really only matters if we have a
  multi-threaded server, but it also feels like a matter of hygiene :)

I decided to rework this branch:

- Don't hold lock-manager internal lock when calling the callnack.

- When releasing the lock, use call_soon_threadsafe to let all waiting
  have a chance to get the lock.

- A little bit of factoring to DRY. (This factoring will be much more
  useful in the follow-on branch.

This rework restores the workability of the thread-per-client model.


Compare: https://github.com/zopefoundation/ZEO/compare/9ef630e2ec16...f4bcea77162e


More information about the checkins mailing list