fix: SQLAlchemy async lazy loading for new users
Initialize user.roles=[] and user.preferences on new user creation to avoid MissingGreenlet error in async context. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.5
parent
7ab9f73a1d
commit
e3a49c800a
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.9.4] - 2026-01-04
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix SQLAlchemy async lazy loading error for new users in `/auth/sync`
|
||||||
|
- Initialize `user.roles = []` and `user.preferences` to avoid greenlet error
|
||||||
|
- Was causing "MissingGreenlet: greenlet_spawn has not been called" on new user creation
|
||||||
|
|
||||||
## [1.9.3] - 2026-01-04
|
## [1.9.3] - 2026-01-04
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "core-api"
|
name = "core-api"
|
||||||
version = "1.9.3"
|
version = "1.9.4"
|
||||||
description = "Core Code API - Infrastructure management and tools API"
|
description = "Core Code API - Infrastructure management and tools API"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
|
|||||||
@@ -130,11 +130,14 @@ class AuthService:
|
|||||||
avatar_url=token_info.picture,
|
avatar_url=token_info.picture,
|
||||||
last_login=datetime.now(timezone.utc),
|
last_login=datetime.now(timezone.utc),
|
||||||
)
|
)
|
||||||
|
# Initialize relationships to avoid lazy loading issues in async
|
||||||
|
user.roles = []
|
||||||
self.session.add(user)
|
self.session.add(user)
|
||||||
await self.session.flush() # Get the user ID
|
await self.session.flush() # Get the user ID
|
||||||
|
|
||||||
# Create default preferences
|
# Create default preferences and attach to user
|
||||||
preferences = UserPreferences(user_id=user.id)
|
preferences = UserPreferences(user_id=user.id)
|
||||||
|
user.preferences = preferences
|
||||||
self.session.add(preferences)
|
self.session.add(preferences)
|
||||||
|
|
||||||
logger.info(f"Created new user: {token_info.email}")
|
logger.info(f"Created new user: {token_info.email}")
|
||||||
|
|||||||
Reference in New Issue
Block a user