Skip to content

RedisOnlineStore missing async_supported property - server never uses async Redis path #6437

Closed

Description

@ntkathole

Summary

RedisOnlineStore implements full async support (online_read_async, online_write_batch_async, _get_client_async using redis.asyncio), but does not override the async_supported property from the base OnlineStore class. The default returns SupportedAsyncMethods(read=False, write=False), so the feature server never uses the async path.

Impact

In feature_server.py, the online read dispatch checks this property:

if store._get_provider().async_supported.online.read:
    response = await store.get_online_features_async(**read_params)
else:
    response = await run_in_threadpool(
        lambda: store.get_online_features(**read_params)
    )

Because async_supported.online.read is False for Redis, every request goes through run_in_threadpool(sync) instead of await get_online_features_async(). This means:

No non-blocking I/O — sync Redis calls block a thread from the threadpool instead of using redis.asyncio non-blocking pipeline
No parallel FeatureView reads — the base class get_online_features_async uses asyncio.gather() to query all FeatureViews concurrently, but the sync path reads them sequentially
Thread pool pressure — under concurrent load, the threadpool becomes a bottleneck since each request occupies a thread for the duration of the Redis call

DynamoDB and MongoDB already declare async_supported:

DynamoDBOnlineStore: SupportedAsyncMethods(read=True, write=True)
MongoDBOnlineStore: SupportedAsyncMethods(read=True, write=True)

Redis is the only online store with full async implementation that doesn't declare support.

Activity

  1. self-assigned this
    on May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions