From 73d5691d1cd47ef650b55791fe8744c1aea321c6 Mon Sep 17 00:00:00 2001 From: Joongi Kim Date: Fri, 14 May 2021 02:12:00 +0900 Subject: [PATCH] release: 21.03.4 --- CHANGELOG.md | 31 ++++++++++++++++++++++++++++++ changes/419.feature | 1 - changes/421.fix | 1 - changes/423.misc | 1 - changes/425.fix | 16 --------------- changes/429.fix | 1 - changes/430.fix | 1 - src/ai/backend/manager/__init__.py | 2 +- 8 files changed, 32 insertions(+), 22 deletions(-) delete mode 100644 changes/419.feature delete mode 100644 changes/421.fix delete mode 100644 changes/423.misc delete mode 100644 changes/425.fix delete mode 100644 changes/429.fix delete mode 100644 changes/430.fix diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a31d5846..dcdb8b59f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,37 @@ Changes .. towncrier release notes start +21.03.4 (2021-05-14) +-------------------- + +### Features +* Add an API endpoint to share/unshare a group virtual folder directly to specific users. This is to allow specified users (usually teachers with user account) can upload data/materials to a virtual folder while it is shared as read-only for other group users. ([#419](https://github.com/lablup/backend.ai-manager/issues/419)) + +### 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](https://github.com/lablup/backend.ai-manager/issues/421)) ([#425](https://github.com/lablup/backend.ai-manager/issues/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](https://github.com/lablup/backend.ai-manager/issues/429)) +* Fix a regression that destroying a cluster session generates duplicate session termination events ([#430](https://github.com/lablup/backend.ai-manager/issues/430)) + +### Miscellaneous +* Temporarily pin `pytest-asyncio` to 0.14.0 due to regression of handling event loops for fixtures ([#423](https://github.com/lablup/backend.ai-manager/issues/423)) + + 21.03.3 (2021-04-13) -------------------- diff --git a/changes/419.feature b/changes/419.feature deleted file mode 100644 index c95931f02..000000000 --- a/changes/419.feature +++ /dev/null @@ -1 +0,0 @@ -Add an API endpoint to share/unshare a group virtual folder directly to specific users. This is to allow specified users (usually teachers with user account) can upload data/materials to a virtual folder while it is shared as read-only for other group users. diff --git a/changes/421.fix b/changes/421.fix deleted file mode 100644 index 1473f8cce..000000000 --- a/changes/421.fix +++ /dev/null @@ -1 +0,0 @@ -Change the `KeyPair.num_queries` GQL field to use Redis instead of the `keypairs.num_queries` DB column to avoid excessive DB writes diff --git a/changes/423.misc b/changes/423.misc deleted file mode 100644 index 69c2509fd..000000000 --- a/changes/423.misc +++ /dev/null @@ -1 +0,0 @@ -Temporarily pin `pytest-asyncio` to 0.14.0 due to regression of handling event loops for fixtures diff --git a/changes/425.fix b/changes/425.fix deleted file mode 100644 index 02289ecf4..000000000 --- a/changes/425.fix +++ /dev/null @@ -1,16 +0,0 @@ -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. diff --git a/changes/429.fix b/changes/429.fix deleted file mode 100644 index e9ab8a07a..000000000 --- a/changes/429.fix +++ /dev/null @@ -1 +0,0 @@ -Further refine the stability update with improved database transaction retries and the latest SQLAlchemy 1.4.x updates within the last month diff --git a/changes/430.fix b/changes/430.fix deleted file mode 100644 index 7e987d9a4..000000000 --- a/changes/430.fix +++ /dev/null @@ -1 +0,0 @@ -Fix a regression that destroying a cluster session generates duplicate session termination events diff --git a/src/ai/backend/manager/__init__.py b/src/ai/backend/manager/__init__.py index fd4163923..84e65e7e9 100644 --- a/src/ai/backend/manager/__init__.py +++ b/src/ai/backend/manager/__init__.py @@ -1 +1 @@ -__version__ = '21.03.3' +__version__ = '21.03.4'