• Steven's avatar
    fix(server): prevent memory exhaustion in thumbnail generation · 8f29db2f
    Steven authored
    Address high memory usage when opening resource tab (fixes #5183) by implementing:
    
    1. Concurrency control: Limit thumbnail generation to 3 concurrent operations using semaphore to prevent memory exhaustion when many images are requested simultaneously
    
    2. S3 optimization: Skip server-side thumbnail generation for S3-stored images by default. S3 images now use presigned URLs directly, avoiding:
       - Downloading large images from S3 into server memory
       - Decoding and resizing images on the server
       - High memory consumption during batch requests
    
    3. Memory management improvements:
       - Explicitly clear blob and decoded image from memory after use
       - Restructure thumbnail cache check to avoid unnecessary semaphore acquisition
       - Double-check pattern to prevent duplicate generation while waiting
    
    This restores the original S3 behavior before commit e4f63453 while maintaining thumbnail support for local/database storage.
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
    8f29db2f
Name
Last commit
Last update
..
test Loading commit data...
acl.go Loading commit data...
acl_config.go Loading commit data...
activity_service.go Loading commit data...
attachment_service.go Loading commit data...
auth.go Loading commit data...
auth_service.go Loading commit data...
auth_service_client_info_test.go Loading commit data...
common.go Loading commit data...
health_service.go Loading commit data...
idp_service.go Loading commit data...
instance_service.go Loading commit data...
logger_interceptor.go Loading commit data...
memo_attachment_service.go Loading commit data...
memo_relation_service.go Loading commit data...
memo_service.go Loading commit data...
memo_service_converter.go Loading commit data...
memo_service_filter.go Loading commit data...
reaction_service.go Loading commit data...
resource_name.go Loading commit data...
shortcut_service.go Loading commit data...
test_auth.go Loading commit data...
user_service.go Loading commit data...
user_service_stats.go Loading commit data...
v1.go Loading commit data...