Skip to content
This repository has been archived by the owner on Aug 2, 2023. It is now read-only.

20.09.17

Compare
Choose a tag to compare
@inureyes inureyes released this 17 May 04:29
· 238 commits to main since this release
20.09.17

20.09.17 (2021-05-14)

Fixes

  • Change the KeyPair.num_queries GQL field to use Redis instead of the keypairs.num_queries DB column to avoid excessive DB writes (#421) (#425)
  • Improve stability and synchronization of container-databse states
    • Now all DB transactions use the "SERIALIZABLE" isolation level with explicit retries.
    • Now DB transactions that includes only SELECT queries are marked as "read-only" so that
      the PostgreSQL engine could optimize concurrent access with the new isolation level.
      All future codes should use beegin_readonly() method from our own subclassed SQLAlchemy
      engine instance replacing all existing db context variables.
    • Remove excessive database updates due to keypair API query counts and kernel API query counts.
      The keypair API query count is re-written to use Redis with one month retention. (#421)
      Now just calling an API does not trigger updates in the PostgreSQL database.
    • Fix unnecessary database updates for agent heartbeats.
    • Split many update-only DB transactions into smaller units, such as resource recalculation.
    • Use PostgreSQL advisory locks to make the scheduling decision process as a critical section.
    • Fix some of variable binding issues with nested functions inside loops.
    • Apply event message coalescing to prevent event bursts (e.g., DoScheduleEvent fired after
      enqueueing new session requests) which hurts the database performance and potentially
      break the transaction isolation guarantees.
  • Further refine the stability update with improved database transaction retries and the latest SQLAlchemy 1.4.x updates within the last month (#429)
  • Fix a regression that destroying a cluster session generates duplicate session termination events (#430)

Miscellaneous

  • Temporarily pin pytest-asyncio to 0.14.0 due to regression of handling event loops for fixtures (#423)