Skip to content

[DRAFT][FLIP-597][filesystem] Add common object storage stream interfaces - #28976

Draft
Izeren wants to merge 1 commit into
apache:masterfrom
Izeren:FLIP-597/interfaces-only
Draft

[DRAFT][FLIP-597][filesystem] Add common object storage stream interfaces#28976
Izeren wants to merge 1 commit into
apache:masterfrom
Izeren:FLIP-597/interfaces-only

Conversation

@Izeren

@Izeren Izeren commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

What is the purpose of the change

Introduces shared, cloud-agnostic stream abstractions in flink-core for building native object storage filesystem plugins without Hadoop dependencies. These types form the shared mechanics layer described in FLIP-597.

This is an interfaces-only draft to gather early community feedback before the concrete implementations (ObjectStorageInputStream, ObjectStorageOutputStream) are submitted.

Brief change log

  • ReadContext / WriteContext: immutable opener contexts carrying read position and write metadata
  • InputStreamOpener / OutputStreamOpener: cloud-agnostic functional interfaces for stream creation
  • InputStreamExtension / BufferingInputStreamExtension: extension point for object-storage input streams with a default buffering implementation
  • RawAndWrappedInputStreams: value class pairing the raw SDK stream with its wrapped counterpart
  • Abortable (@Experimental): optional capability for SDK streams that can release resources immediately from a non-owner thread, unblocking a stalled read or write
  • ObjectStorageFileSystem (@Experimental): optional filesystem capability for rich metadata access and ETag-guarded atomic rename (re-encryption)
  • RichFileStatus (@Experimental): FileStatus extended with user-defined blob metadata and ETag

Verifying this change

This change is a trivial rework / code cleanup without any test coverage.

Concrete implementations and their tests will be submitted in a follow-up PR.

Does this pull request potentially affect one of the following parts:

  • Dependencies (does it add or upgrade a dependency): no
  • The public API, i.e., is any changed class annotated with @Public(Evolving): no (all new types are @Internal / @Experimental)
  • The serializers: no
  • The runtime per-record code paths (performance sensitive): no
  • Anything that affects deployment or recovery: no
  • The S3 file system connector: no

Documentation

  • Does this pull request introduce a new feature? yes
  • If yes, how is the feature documented? JavaDocs on all public types and methods; FLIP-597 design document

Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)

Generated-by: Claude Code (claude-sonnet-4-6[1m])

Introduces shared, cloud-agnostic stream abstractions in `flink-core` for
building native object storage filesystem plugins without Hadoop dependencies.
These types form the shared mechanics layer described in FLIP-597.

This is an interfaces-only PR to gather early feedback and unblock downstream
implementations.

New types:

- `ReadContext` / `WriteContext`: immutable opener contexts carrying read
  position and write metadata.
- `InputStreamOpener` / `OutputStreamOpener`: cloud-agnostic functional
  interfaces for stream creation.
- `InputStreamExtension` / `BufferingInputStreamExtension`: extension point
  for object-storage input streams with a default buffering implementation.
- `RawAndWrappedInputStreams`: value class pairing the raw SDK stream with its
  wrapped counterpart.
- `Abortable` (@experimental): optional capability for SDK streams that can
  release resources immediately from a non-owner thread, unblocking a stalled
  read or write.
- `ObjectStorageFileSystem` (@experimental): optional filesystem capability for
  rich metadata access and ETag-guarded atomic rename (re-encryption).
- `RichFileStatus` (@experimental): `FileStatus` extended with user-defined
  blob metadata and ETag.

Generated-by: Claude Code
@Izeren Izeren changed the title [FLIP-597][filesystem] Add common object storage stream abstractions [DRAFT][FLIP-597][filesystem] Add common object storage stream abstractions Aug 14, 2026
@Izeren Izeren changed the title [DRAFT][FLIP-597][filesystem] Add common object storage stream abstractions [DRAFT][FLIP-597][filesystem] Add common object storage stream interfaces Aug 14, 2026
@flinkbot

flinkbot commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

CI report:

Bot commands The @flinkbot bot supports the following commands:
  • @flinkbot run azure re-run the last Azure build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants