flink
AGENTS.md26k starsChanged 3 months agoApache-2.0View on GitHub
http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> This file provides guidance for AI coding agents working with the Apache Flink codebase. Every module from the root pom.xml, organized by function. Flink provides three main user-facing APIs (recommended in…
We split this AGENTS.md into the rules it gives an agent
35 rules. About 1 is common, 17 are distinctive, and 17 are very specific to this project.
≈1
Common · estimate
Many files like this have a rule of this kind.
≈17
Distinctive · estimate
This author's own choices. Worth a look.
17
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 57
Every module from the root pom.xml, organized by function.
- Very specific: line 211
Add tests in flink-table-planner and flink-table-runtime
- Very specific: line 219
Use ConfigOptions.key("table.exec....") builder with type, default value, and description
- Very specific: line 220
Add @Documentation.TableOption annotation for auto-generated docs
- Very specific: line 221
Document in docs/ if user-facing
- Distinctive: line 222
Verify: unit test for default value, ITCase for behavior change
- Distinctive: line 234
Verify: unit tests + ITCase with real or embedded external system
- Distinctive: line 242
Verify: serializer snapshot migration tests, checkpoint restore tests across versions
- Distinctive: line 247
Every user-facing API class and method must carry a stability annotation
- Distinctive: line 250
Update JavaDoc on the changed class/method
- Distinctive: line 251
Add to release notes
- Distinctive: line 252
Verify: ArchUnit tests pass, no new architecture violations
- Very specific: line 259
No new Scala code: All Flink Scala APIs are deprecated per FLIP-265.
- Very specific: line 262
Logging: Use parameterized log statements (SLF4J {} placeholders), never string concatenation.
- Distinctive: line 265
Comments: Do not add unnecessary comments that restate what the code does.
- Distinctive: line 266
Reuse existing code: Before implementing new utilities or abstractions, search for existing ones in the codebase.
- Distinctive: line 271
Add tests for new behavior, covering success, failure, and edge cases.
- Distinctive: line 272
Use JUnit 5 + AssertJ assertions.
- Distinctive: line 273
Prefer real test implementations over Mockito mocks where possible.
- Very specific: line 277
Follow the testing conventions at https://flink.apache.org/how-to-contribute/code-style-and-quality-common/#7-testing
- Very specific: line 287
When AI tools were used: add Generated-by: <Tool Name and Version> trailer per ASF generative tooling guidance
- Very specific: line 295
Ensure ./mvnw clean verify passes before opening a PR
- Very specific: line 296
Always push to your fork, not directly to apache/flink
- Very specific: line 303
Add Generated-by: <Tool Name and Version> to commit messages
- Very specific: line 304
Never add Co-Authored-By with an AI agent as co-author.
- Distinctive: line 310
When reviewing a PR or diff against this repo:
- Distinctive: line 312
Look for opportunities to simplify the code, scoped to the diff itself (not pre-existing code outside the change).
- Very specific: line 315
Check that each commit message conforms to Flink conventions: it must start with [FLINK-XXXX] or [hotfix], and must specify a …
- Distinctive: line 316
If a change introduces a new feature controlled by a config option/flag, check that the resolved state (enabled/disabled, and the effective …
- Common: line 333
Commit secrets, credentials, or tokens
- Distinctive: line 336
Use Java serialization for new features
- Very specific: line 338
Use the legacy SourceFunction or SinkFunction interfaces for connectors.
- Very specific: line 339
Add Co-Authored-By with an AI agent as co-author in commit messages.
- Very specific: line 341
Add, change, or remove classes outside the org.apache.flink.* package (for example, classes copied from Calcite)
- Distinctive: line 343
Use destructive git operations unless explicitly requested
≈ “Common” is an estimate: at least 1 in 5 of the 36,368 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->Flink AI Agent Instructions
This file provides guidance for AI coding agents working with the Apache Flink codebase.
Prerequisites
- Java 11, 17 (default), or 21. Java 11 syntax must be used in all modules. Java 17 syntax (records, sealed classes, pattern matching) is only permitted in the
flink-tests-java17module. - Maven 3.9.16 (Maven wrapper
./mvnwincluded; prefer it) - Git
- Unix-like environment (Linux, macOS, WSL, Cygwin)
Commands
Build
- Fast dev build:
./mvnw clean install -DskipTests -Dfast -Pskip-webui-build -T1C - Full build (Java 17 default):
./mvnw clean package -DskipTests -Djdk17 -Pjava17-target - Java 11:
./mvnw clean package -DskipTests -Djdk11 -Pjava11-target - Java 21:
./mvnw clean package -DskipTests -Djdk21 -Pjava21-target - Full build with tests:
./mvnw clean verify - Single module:
./mvnw clean package -DskipTests -pl flink-core-api - Single module with tests:
./mvnw clean verify -pl flink-core-api
Testing
- Single test class:
./mvnw -pl flink-core-api -Dtest=MemorySizeTest test - Single test method:
./mvnw -pl flink-core-api -Dtest=MemorySizeTest#testParseBytes test
Code Quality
- Format code (Java + Scala):
./mvnw spotless:apply - Check formatting:
./mvnw spotless:check - Checkstyle:
./mvnw checkstyle:check -T1C - Checkstyle config:
tools/maven/checkstyle.xml
Repository Structure
Every module from the root pom.xml, organized by function. Flink provides three main user-facing APIs (recommended in this order: SQL, Table API, DataStream API) plus a newer DataStream v2 API.
Core Infrastructure
flink-annotations— Stability annotations (@Public,@PublicEvolving,@Internal,@Experimental) and@VisibleForTestingflink-core-api— Core API interfaces (functions, state, types) shared by all APIsflink-core— Core implementation (type system, serialization, memory management, configuration)flink-runtime— Distributed runtime (JobManager, TaskManager, scheduling, network, state)flink-clients— CLI and client-side job submissionflink-rpc/— RPC frameworkflink-rpc-core— RPC interfacesflink-rpc-akka,flink-rpc-akka-loader— Pekko-based RPC implementation
SQL / Table API (recommended API for most users)
flink-table/flink-sql-parser— SQL parser (extends Calcite SQL parser)flink-table-common— Shared types, descriptors, catalog interfacesflink-table-api-java— Table API for Javaflink-table-api-scala— Table API for Scalaflink-table-api-bridge-base,flink-table-api-java-bridge,flink-table-api-scala-bridge— Bridges between Table and DataStream APIsflink-table-api-java-uber— Uber JAR for Table APIflink-table-planner— SQL/Table query planning and optimization (Calcite-based)flink-table-planner-loader,flink-table-planner-loader-bundle— Classloader isolation for plannerflink-table-runtime— Runtime operators for Table/SQL queriesflink-table-calcite-bridge— Bridge to Apache Calciteflink-sql-gateway-api,flink-sql-gateway— SQL Gateway for remote SQL executionflink-sql-client— Interactive SQL CLIflink-sql-jdbc-driver,flink-sql-jdbc-driver-bundle— JDBC driver for SQL Gatewayflink-table-code-splitter— Code generation utilitiesflink-table-test-utils— Test utilities for Table/SQL
DataStream API (original streaming API)
flink-streaming-java— DataStream API and stream processing operator implementations
DataStream API v2 (newer event-driven API)
flink-datastream-api— DataStream v2 API definitionsflink-datastream— DataStream v2 API implementation
Connectors (in-tree)
flink-connectors/flink-connector-base— Base classes for source/sink connectorsflink-connector-files— Unified file system source and sinkflink-connector-datagen— DataGen source for testingflink-connector-datagen-test— Tests for DataGen connectorflink-hadoop-compatibility— Hadoop InputFormat/OutputFormat compatibilityflink-file-sink-common— Common file sink utilities
- Most connectors (Kafka, JDBC, Elasticsearch, etc.) live in separate repos under github.com/apache; see README.md for the full list
Formats
flink-formats/flink-json,flink-csv,flink-avro,flink-parquet,flink-orc,flink-protobuf— Serialization formatsflink-avro-confluent-registry— Avro with Confluent Schema Registryflink-sequence-file,flink-compress,flink-hadoop-bulk,flink-orc-nohive— Hadoop-related formatsflink-format-common— Shared format utilitiesflink-sql-json,flink-sql-csv,flink-sql-avro,flink-sql-parquet,flink-sql-orc,flink-sql-protobuf— SQL-layer format integrationsflink-sql-avro-confluent-registry— SQL-layer Avro with Confluent Schema Registry
State Backends
flink-state-backends/flink-statebackend-rocksdb— RocksDB state backendflink-statebackend-forst— ForSt state backend (experimental; a fork of RocksDB)flink-statebackend-heap-spillable— Heap-based spillable state backendflink-statebackend-changelog— Changelog state backendflink-statebackend-common— Shared state backend utilities
flink-dstl/flink-dstl-dfs— State changelog storage (DFS-based persistent changelog for incremental checkpointing)
File Systems
flink-filesystems/flink-hadoop-fs— Hadoop FileSystem abstractionflink-s3-fs-native,flink-s3-fs-hadoop,flink-s3-fs-presto,flink-s3-fs-base— S3 file systemsflink-oss-fs-hadoop— Alibaba OSSflink-azure-fs-hadoop— Azure Blob Storageflink-gs-fs-hadoop— Google Cloud Storageflink-fs-hadoop-shaded— Shaded Hadoop dependencies
Queryable State
flink-queryable-state/flink-queryable-state-runtime— Server-side queryable state serviceflink-queryable-state-client-java— Client for querying operator state from running jobs
Deployment
flink-kubernetes— Kubernetes integrationflink-yarn— YARN integrationflink-dist,flink-dist-scala— Distribution packagingflink-container— Container entry-point and utilities for containerized deployments
Metrics
flink-metrics/flink-metrics-core— Metrics API and core implementation- Reporter implementations:
flink-metrics-jmx,flink-metrics-prometheus,flink-metrics-datadog,flink-metrics-statsd,flink-metrics-graphite,flink-metrics-influxdb,flink-metrics-slf4j,flink-metrics-dropwizard,flink-metrics-otel
Libraries
flink-libraries/flink-cep— Complex Event Processingflink-state-processing-api— Offline state access (savepoint reading/writing)
Other
flink-models— AI model integration (sub-modules:flink-model-openai,flink-model-triton)flink-python— PyFlink (Python API)flink-runtime-web— Web UI for JobManager dashboardflink-external-resources— External resource management (e.g., GPU)docs/— Documentation content (Hugo site). This is where user-facing docs are written.flink-docs— Documentation build module (auto-generated config reference docs)flink-examples— Example programsflink-quickstart— Maven archetype for new projectsflink-walkthroughs— Tutorial walkthrough projects
Testing
flink-tests— Integration testsflink-end-to-end-tests— End-to-end testsflink-test-utils-parent— Test utility classesflink-yarn-tests— YARN-specific testsflink-fs-tests— FileSystem testsflink-architecture-tests— ArchUnit architectural boundary teststools/ci/flink-ci-tools— CI tooling
Architecture Boundaries
- Client submits jobs to the cluster. Submission paths include the CLI (
bin/flink runviaflink-clients), the SQL Client (bin/sql-client.shviaflink-sql-client), the SQL Gateway (flink-sql-gateway, also accessible via JDBC driver), the REST API (direct HTTP to JobManager), programmatic execution (StreamExecutionEnvironment.execute()orTableEnvironment.executeSql()), and PyFlink (flink-python, wraps the Java APIs). - JobManager (
flink-runtime) orchestrates execution: receives jobs, creates the execution graph, manages scheduling, coordinates checkpoints, and handles failover. Never runs user code directly. - TaskManager (
flink-runtime) executes the user's operators in task slots. Manages network buffers, state backends, and I/O. - Table Planner (
flink-table-planner) translates SQL/Table API programs into DataStream programs. The planner is loaded in a separate classloader (flink-table-planner-loader) to isolate Calcite dependencies. - Connectors communicate with external systems. Source connectors implement the
SourceAPI (FLIP-27); sinks implement theSinkAPI (packagesink2). Most connectors are externalized to separate repositories. - State Backends persist keyed state and operator state. RocksDB is the primary backend for production use.
- Checkpointing provides exactly-once guarantees. The JobManager coordinates barriers through the data stream; TaskManagers snapshot local state to a distributed file system.
Key separations:
- Planner vs Runtime: The table planner generates code and execution plans; the runtime executes them. Changes to planning logic live in
flink-table-planner; changes to runtime operators live inflink-table-runtimeorflink-streaming-java. - Codegen vs hand-written operators: Per-record expression logic (casts, projections, filters, function calls) is generated at planning time by cast rules in
flink-table-planner/.../functions/casting/and call generators inflink-table-planner/.../codegen/calls/, then compiled by Janino into the surrounding operator class. Operators with fixed structure (joins, aggregations, source/sink runtime) are hand-written Java inflink-table-runtimeorflink-streaming-java. New scalar functions usually only need aBuiltInFunctionDefinitionsentry plus aBuiltInScalarFunctionsubclass - the planner wires up codegen automatically. New cast behaviour or a custom call shape needs a cast rule or call generator. - API vs Implementation: Public API surfaces (
flink-core-api,flink-datastream-api,flink-table-api-java) are separate from implementation modules. API stability annotations control what users can depend on. - ArchUnit enforcement:
flink-architecture-tests/contains ArchUnit tests that enforce module boundaries. New violations should be avoided; if unavoidable, follow the freeze procedure inflink-architecture-tests/README.md.
Common Change Patterns
This section maps common types of Flink changes to the modules they touch and the verification they require.
Adding a new SQL built-in function
- Register in
flink-table-commoninBuiltInFunctionDefinitions.java(definition, input/output type strategies, runtime class reference) - Implement in
flink-table-runtimeunderfunctions/(extend the appropriate base class:BuiltInScalarFunction,BuiltInTableFunction,BuiltInAggregateFunction, orBuiltInProcessTableFunction) - Add tests in
flink-table-plannerandflink-table-runtime - Extend Table API support
- Document in
docs/ - See flink-table/flink-table-planner/AGENTS.md and flink-table/flink-table-runtime/AGENTS.md for detailed patterns
Adding a new configuration option
- Define
ConfigOption<T>in the relevant config class (e.g.,ExecutionConfigOptions.javainflink-table-api-java) - Use
ConfigOptions.key("table.exec....")builder with type, default value, and description - Add
@Documentation.TableOptionannotation for auto-generated docs - Document in
docs/if user-facing - Verify: unit test for default value, ITCase for behavior change
Adding a new table operator (e.g., join type, aggregate)
- Involves
flink-table-runtime(operator),flink-table-planner(ExecNode, physical/logical rules), and tests across both - See flink-table/flink-table-planner/AGENTS.md and flink-table/flink-table-runtime/AGENTS.md for detailed development order and testing patterns
Adding a new connector (Source or Sink)
- Implement the
SourceAPI (flink-connector-base):SplitEnumerator,SourceReader,SourceSplit, serializers (SimpleVersionedSerializer) - Or implement the
SinkAPI (packagesink2) for sinks - Most new connectors go in separate repos under
github.com/apache, not in the main Flink repo - Verify: unit tests + ITCase with real or embedded external system
Modifying state serializers
- Changes to
TypeSerializerrequire a correspondingTypeSerializerSnapshotfor migration - Bump version in
getCurrentVersion(), handle old versions inreadSnapshot() - Snapshot must have no-arg constructor for reflection-based deserialization
- Implement
resolveSchemaCompatibility()for upgrade paths - Verify: serializer snapshot migration tests, checkpoint restore tests across versions
Introducing or changing user-facing APIs (@Public, @PublicEvolving, @Experimental)
- New user-facing API requires a voted FLIP (Flink Improvement Proposal); this applies to
@Public,@PublicEvolving, and@Experimentalsince users build against all three - Every user-facing API class and method must carry a stability annotation
- Changes to existing
@Publicor@PublicEvolvingAPI must maintain backward compatibility @InternalAPIs can be changed freely; users should not depend on them- Update JavaDoc on the changed class/method
- Add to release notes
- Verify: ArchUnit tests pass, no new architecture violations
Coding Standards
- Format Java files with Spotless immediately after editing:
./mvnw spotless:apply. Uses google-java-format with AOSP style. - Scala formatting: Spotless + scalafmt (config at
.scalafmt.conf, maxColumn 100). - Checkstyle:
tools/maven/checkstyle.xml(version defined in rootpom.xmlascheckstyle.version). Some modules (flink-core, flink-optimizer, flink-runtime) are not covered by checkstyle enforcement, but conventions should still be followed. - No new Scala code. All Flink Scala APIs are deprecated per FLIP-265. Write all new code in Java.
- Apache License 2.0 header required on all new files (enforced by Apache Rat). Use an HTML comment for markdown files.
- API stability annotations: Every user-facing API class and method must have a stability annotation.
@Public(stable across minor releases),@PublicEvolving(may change in minor releases),@Experimental(may change at any time). These are all part of the public API surface that users build against.@Internalmarks APIs with no stability guarantees that users should not depend on. - Logging: Use parameterized log statements (SLF4J
{}placeholders), never string concatenation. - No Java serialization for new features (except internal RPC message transport).
- Use
finalfor variables and fields where applicable. - Comments: Do not add unnecessary comments that restate what the code does. Add comments that explain "the why" where relevant.
- Reuse existing code. Before implementing new utilities or abstractions, search for existing ones in the codebase. Prioritize architecture consistency and code reusability.
- Full code style guide: https://flink.apache.org/how-to-contribute/code-style-and-quality-preamble/
Testing Standards
- Add tests for new behavior, covering success, failure, and edge cases.
- Use JUnit 5 + AssertJ assertions. Do not use JUnit 4 or Hamcrest in new test code.
- Prefer real test implementations over Mockito mocks where possible.
- Integration tests: Name classes with
ITCasesuffix (e.g.,MyFeatureITCase.java). - Red-green verification: For bug fixes, verify that new tests actually fail without the fix before confirming they pass with it.
- Test location mirrors source structure within each module.
- Follow the testing conventions at https://flink.apache.org/how-to-contribute/code-style-and-quality-common/#7-testing
Commits and PRs
Commit message format
[FLINK-XXXX][component] Descriptionwhere FLINK-XXXX is the JIRA issue number[hotfix][component] Descriptionfor typo fixes without JIRA- Each commit must have a meaningful message including the JIRA ID. If you don't know the ticket number, ask.
- Separate cleanup/refactoring from functional changes into distinct commits
- When AI tools were used: add
Generated-by: <Tool Name and Version>trailer per ASF generative tooling guidance
Pull request conventions
- Title format:
[FLINK-XXXX][component] Title of the pull request - A corresponding JIRA issue is required (except hotfixes for typos)
- Fill out the PR template completely but concisely: describe purpose, change log, testing approach, impact assessment
- Each PR should address exactly one issue
- Ensure
./mvnw clean verifypasses before opening a PR - Always push to your fork, not directly to
apache/flink - Rebase onto the latest target branch before submitting
- For user-visible behaviour changes, breaking changes, new SQL features, or new config options: fill in the Release Notes field on the JIRA ticket. The release manager consolidates these when cutting a release. The next version's
docs/content/release-notes/flink-X.Y.mdwill be generated based of the jira tickets, so make sure to fill them in properly.
AI-assisted contributions
- Disclose AI usage by checking the AI disclosure checkbox and uncommenting the
Generated-byline in the PR template - Add
Generated-by: <Tool Name and Version>to commit messages - Never add
Co-Authored-Bywith an AI agent as co-author; agents are assistants, not authors - You must be able to explain the design, code, and tests, debug them, and respond to review feedback substantively
- Reviewer-ready quality bar: the author owns PR quality. PRs that look AI-generated without author refinement (walls of unreviewed prose, scaffolding without behaviour, tests that do not exercise the change, padded commit messages) will be closed without review
Code Review Guidelines
When reviewing a PR or diff against this repo:
- Look for opportunities to simplify the code, scoped to the diff itself (not pre-existing code outside the change).
- Flag comments that are obvious (restate what the code already says) or overly verbose.
- In test code, look for potential flakiness — e.g.
Thread.sleepused outside a retry/poll loop, or similar timing-dependent, non-deterministic patterns. Where applicable, suggest clock injection (e.g. a manually-advancedClock/ManualClock) instead of relying on wall-clock time, or waiting for the actual condition in a loop with a timeout, for deterministic tests. - Check that each commit message conforms to Flink conventions: it must start with
[FLINK-XXXX]or[hotfix], and must specify a subsystem/component (e.g.[FLINK-XXXX][runtime] Description). - If a change introduces a new feature controlled by a config option/flag, check that the resolved state (enabled/disabled, and the effective value) is logged at INFO level when the feature initializes/activates.
- Consider whether a change should be hidden behind a feature flag, especially if it's non-trivial (touches core paths, changes default behavior, or is hard to reason about in isolation). This is mandatory if the change is risky (correctness, performance, backward-compatibility, or data-safety risk) and no flag/kill-switch already exists.
- For changes to configuration options, check if the corresponding documentation has been regenerated (this should be covered by tests but flagging it earlier speeds up development)
Boundaries
Ask first
- Adding or changing
@Public,@PublicEvolving, or@Experimentalannotations (these are user-facing API commitments requiring a FLIP) - Large cross-module refactors
- New dependencies
- Changes to serialization formats (affects state compatibility)
- Changes to checkpoint/savepoint behavior
- Changes that could impact performance on hot paths (per-record processing, serialization, state access)
Never
- Commit secrets, credentials, or tokens
- Push directly to
apache/flink; always work from your fork - Mix unrelated changes into one PR
- Use Java serialization for new features
- Edit generated files by hand when a generation workflow exists
- Use the legacy
SourceFunctionorSinkFunctioninterfaces for connectors; use theSourceAPI (FLIP-27) andSinkAPI (packagesink2) instead - Add
Co-Authored-Bywith an AI agent as co-author in commit messages; AI agents are assistants, not authors. UseGenerated-by: <Tool Name and Version>instead. - Suppress or bypass checkstyle rules (no
CHECKSTYLE:ON/CHECKSTYLE:OFFcomments, no adding entries totools/maven/suppressions.xml, no@SuppressWarnings). Fix the code to satisfy checkstyle instead. - Add, change, or remove classes outside the
org.apache.flink.*package (for example, classes copied from Calcite) - Modify
Parser.jj(Calcite's generated parser grammar; expected to be removed in future Calcite upgrades) - Use destructive git operations unless explicitly requested
References
- README.md — Build instructions and project overview
- DEVELOPMENT.md — IDE setup and development environment
- .github/CONTRIBUTING.md — Contribution process
- .github/PULL_REQUEST_TEMPLATE.md — PR checklist
- Code Style Guide — Detailed coding guidelines
- ASF Generative Tooling Guidance — AI tooling policy
Trending
Quiet since September.about the whole repository
Who's talking about apache/flink
- Apache Flink Community China“入门教程:为什么要学习 Apache Flink?”YouTube · Apr 14, 2020 · 9.1k views
- Apache Flink Community China“入门教程:Apache Flink 概念介绍 - 有状态流式处理引擎的基石”YouTube · Apr 14, 2020 · 3.9k views
- Apache Flink Community China“入门教程:Apache Flink SQL 编程”YouTube · Apr 14, 2020 · 2.8k views
- Apache Flink Community China“入门教程:Apache Flink 安装部署、环境配置及运行应用程序”YouTube · Apr 14, 2020 · 2.3k views
- Apache Flink Community China“入门教程:DataStream API 编程”YouTube · Apr 14, 2020 · 1.8k views
The biggest 5 of 49 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 49
Talked about on Stack Overflow, YouTube, GitHub and Hacker News (49 times).
On Stack Overflow · 28
- Jul 12, 2019Maven compiler plugin always detecting a set of sources as "stale"20 votes
- Feb 2, 2016Kafka -> Flink DataStream -> MongoDB11 votes · 2 answers
- Jun 19, 2020Flink Kafka EXACTLY_ONCE causing KafkaException ByteArraySerializer is not an instance of Serializer10 votes · 2 answers
- Jul 4, 2019Apache Flink - Unable to use local Kinesis for FlinkKinesisConsumer8 votes · 2 answers
- Oct 24, 2016Calculate average using Flink DataStream for a window duration7 votes
23 more on Stack Overflow
- Jul 18, 2019"No implicits found" when creating a Flink DataStream from a collection of Case Classes5 votes
- Jan 18, 2019Kotlin classes not identified as Flink valid POJO's5 votes · 2 answers
- Feb 14, 2017Why does the creation of flink checkpoints differs so much5 votes
- Mar 22, 2022Flink Unit Test over ProcessWindowFunction<IN, OUT, KEY, W>4 votes
- Dec 6, 2020Adding custom dependencies for a Plugin in a Flink cluster4 votes
- Aug 14, 2020Flink Unit Test over ProcessWindowFunction<IN, OUT, KEY, W>4 votes
- Feb 8, 2017Flink TaskManager cannot connect to JobManager in docker swarm task4 votes · 1 answer
- Apr 28, 2016How to connect Flink remotely via JMX?4 votes · 1 answer
- Jul 27, 2015Maven build has missing package linkages4 votes · 1 answer
- Dec 30, 2020What's the effect of waterwark for event time based interval join3 votes
- Mar 26, 2020Why is using StateDescriptor to set default state value deprecated?3 votes
- Dec 12, 2019Flink Job Deployment In Kubernetes3 votes · 2 answers
- Oct 29, 2019can i use flink rocksDB state backend with local file system?3 votes · 1 answer
- Sep 18, 2019Flink in ECS fails to find shaded ContainerCredentialsProvider3 votes
- May 30, 2019Why is flink SplitStream marked deprecated3 votes
- Feb 25, 2019why do we have flink-streaming-java and flink-streaming-scala modules in flink source code3 votes · 3 answers
- Feb 14, 2019Is possible send data from Nifi to Spark Structured Streaming/Storm directly without loss data?3 votes
- Feb 9, 2018Flink loses leader and crashes3 votes · 1 answer
- Aug 29, 2016FlinkQueryableState: configuration issues on a local cluster3 votes · 1 answer
- Apr 6, 2016Instantiate StreamExecutionEnvironment in Scala Shell3 votes
- Dec 16, 2015Communication with JobManager failed error in wordcount example in flink3 votes · 1 answer
- Sep 7, 2015How to use flink fold function in scala3 votes
- Jul 27, 2015Maven build has missing package linkages3 votes
On YouTube · 12
- Apr 14, 2020入门教程:为什么要学习 Apache Flink? — Apache Flink Community China9.1k views · 4 comments
- Apr 14, 2020入门教程:Apache Flink 概念介绍 - 有状态流式处理引擎的基石 — Apache Flink Community China3.9k views · 6 comments
- Apr 14, 2020入门教程:Apache Flink SQL 编程 — Apache Flink Community China2.8k views · 4 comments
- Apr 14, 2020入门教程:Apache Flink 安装部署、环境配置及运行应用程序 — Apache Flink Community China2.3k views · 2 comments
- Apr 14, 2020入门教程:DataStream API 编程 — Apache Flink Community China1.8k views · 3 comments
7 more on YouTube
- Apr 14, 2020入门教程:Apache Flink 状态管理与容错机制 — Apache Flink Community China1.3k views · 1 comment
- Apr 14, 2020入门教程:Apache Flink Window、Time — Apache Flink Community China852 views · 1 comment
- Apr 14, 2020入门教程:Apache Flink Table API 编程 — Apache Flink Community China841 views
- Apr 14, 2020入门教程:Apache Flink 客户端操作 — Apache Flink Community China788 views · 1 comment
- Aug 19, 2022Efficient Construction Of Real-Time Data Lakes Based On Flink Cdc And Hudi — The ASF394 views
- Sep 27, 2026What Is a Flink Kafka Connector, Really? #ApacheFlink #Kafka #DataEngineering — ByteShip201 views
- Sep 13, 2023Apache Flink - Open-Source stream processing framework | #GourceVisualizations — Gource Visualizations51 views
On GitHub · 8
- May 9, 2023Add remove-large-packages option — easimon/maximize-build-space5 reactions
- Oct 17, 2015Add example application for Apache Flink on Kubernetes — kubernetes/kubernetes5 reactions · 29 comments
- Aug 6, 2024[hotfix][ci] Clean up disk space — apache/flink-cdc4 reactions · 1 comment
- Sep 9, 2023Migrate the classic transport to Netty 4 without CVEs — apache/pekko4 reactions · 1 comment
- Mar 14, 2023FlinkDeployment stuck in Progressing state — argoproj/argo-cd4 reactions · 6 comments
3 more on GitHub
- Mar 25, 2022[FEATURE] Provide dedicated Test Containers support for OpenSearch — opensearch-project/OpenSearch4 reactions · 15 comments
- May 23, 2019Configuration option to ignore infinity value metrics — influxdata/influxdb4 reactions · 2 comments
- Sep 13, 2023[Bug]: Flink fails with "cannot handle nodes with more than 64 outputs" — apache/beam2 reactions · 3 comments
On Hacker News · 1
- Jan 28, 2019Apache Flink115 points · 58 comments
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 28,693 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

