feat(gateway): implement ListContainerStream forwarding - #711
Open
flash7777 wants to merge 1 commit into
Open
Conversation
The CS3 ListContainerStream RPC was already defined in the protobuf spec and implemented in the storage provider, but the gateway returned "Unimplemented". This change forwards the streaming RPC from the gateway to the responsible storage provider, enabling gRPC clients to receive directory listings as a stream of individual resource infos instead of a single large response. This is useful for: - Large directories where buffering all entries is expensive - Streaming clients that can start processing entries immediately - Headless sync daemons that need efficient directory traversal Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The
ListContainerStreamgRPC RPC is defined in the CS3 API and already implemented in the storage provider, but the gateway returnedUnimplemented. This change forwards the server-streaming RPC from the gateway to the responsible storage provider.findAndUnwrap(same asListContainer)ListContainerStreamResponsemessages back to the callerListContainerMotivation
Internal OpenCloud services that traverse large directories (search indexer, thumbnail generator) currently use the unary
ListContainerwhich buffers all entries in memory before responding. With the streaming variant, services can start processing entries immediately and reduce memory pressure for directories with thousands of files.Test plan
Unimplemented, confirming the gapCo-Authored-By: flash