Files that are both large and changed often are where bugs tend to cluster and where refactoring pays off first. Each file in the current tree is placed by its size and by the number of commits that changed it; its hotspot score is changes × √lines. Files without counted lines, such as binary files, are left out.
Each dot is a file; a bigger dot is a higher score. The dashed lines mark the median file size and the median number of changes, so the large files that change often are in the top right. Both axes are logarithmic. Showing the 2,000 highest-scoring of 20,136 files.
The files ranked by hotspot score: the larger a file is and the more often it changes, the higher it ranks. Authors is how many people have changed the file, bots aside, as on the Code Ownership page: a hotspot only one person has changed is also a bus-factor risk.
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| pom.xml | 2,451 | 1,070 | 197 | 52,973.1 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskExecutor.java | 2,897 | 279 | 72 | 15,016.8 | |
| flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/StreamTaskTest.java | 2,940 | 265 | 50 | 14,368.8 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointCoordinatorTest.java | 4,721 | 208 | 55 | 14,291.6 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/checkpoint/CheckpointCoordinator.java | 2,482 | 279 | 59 | 13,899.7 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/dispatcher/Dispatcher.java | 2,576 | 232 | 53 | 11,775.0 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/taskmanager/Task.java | 1,915 | 264 | 59 | 11,552.8 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/state/StateBackendTestBase.java | 5,988 | 147 | 42 | 11,375.2 | |
| flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/BuiltInFunctionDefinitions.java | 3,640 | 187 | 36 | 11,282.2 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorTest.java | 3,173 | 200 | 39 | 11,265.9 |
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| pom.xml | 2,451 | 1,070 | 197 | 52,973.1 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskExecutor.java | 2,897 | 279 | 72 | 15,016.8 | |
| flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/StreamTaskTest.java | 2,940 | 265 | 50 | 14,368.8 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/checkpoint/CheckpointCoordinatorTest.java | 4,721 | 208 | 55 | 14,291.6 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/checkpoint/CheckpointCoordinator.java | 2,482 | 279 | 59 | 13,899.7 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/dispatcher/Dispatcher.java | 2,576 | 232 | 53 | 11,775.0 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/taskmanager/Task.java | 1,915 | 264 | 59 | 11,552.8 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/state/StateBackendTestBase.java | 5,988 | 147 | 42 | 11,375.2 | |
| flink-table/flink-table-common/src/main/java/org/apache/flink/table/functions/BuiltInFunctionDefinitions.java | 3,640 | 187 | 36 | 11,282.2 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/taskexecutor/TaskExecutorTest.java | 3,173 | 200 | 39 | 11,265.9 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/JobMaster.java | 1,785 | 266 | 55 | 11,238.3 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/jobmaster/JobMasterTest.java | 2,763 | 208 | 45 | 10,933.4 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/executiongraph/Execution.java | 1,864 | 246 | 53 | 10,620.8 | |
| flink-table/flink-sql-parser/src/test/java/org/apache/flink/sql/parser/FlinkSqlParserImplTest.java | 4,217 | 145 | 49 | 9,416.1 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/dispatcher/DispatcherTest.java | 2,405 | 192 | 39 | 9,415.8 | |
| flink-table/flink-sql-parser/src/main/codegen/includes/parserImpls.ftl | 3,981 | 146 | 43 | 9,211.9 | |
| flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/TableEnvironmentImpl.java | 1,588 | 217 | 43 | 8,647.4 | |
| flink-runtime-web/src/test/resources/rest_api_v1.snapshot | 5,420 | 117 | 51 | 8,613.6 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/ResourceManager.java | 1,616 | 200 | 49 | 8,039.9 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/minicluster/MiniCluster.java | 1,667 | 189 | 51 | 7,716.7 | |
| flink-python/pyflink/table/table_environment.py | 2,350 | 154 | 39 | 7,465.4 | |
| docs/layouts/shortcodes/generated/rest_v1_dispatcher.html | 7,137 | 82 | 34 | 6,927.4 | |
| flink-dist/pom.xml | 808 | 241 | 70 | 6,850.5 | |
| docs/data/sql_functions.yml | 1,899 | 155 | 46 | 6,754.5 | |
| flink-yarn/src/main/java/org/apache/flink/yarn/YarnClusterDescriptor.java | 1,936 | 147 | 50 | 6,468.0 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/SingleInputGate.java | 1,415 | 162 | 33 | 6,093.9 | |
| flink-tests/src/test/java/org/apache/flink/test/checkpointing/SavepointITCase.java | 1,768 | 141 | 46 | 5,928.7 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/scheduler/SchedulerBase.java | 1,208 | 170 | 35 | 5,908.6 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/consumer/SingleInputGateTest.java | 1,521 | 147 | 35 | 5,733.0 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/scheduler/DefaultSchedulerTest.java | 2,369 | 112 | 27 | 5,451.3 | |
| docs/data/sql_functions_zh.yml | 1,997 | 118 | 41 | 5,273.2 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/taskmanager/TaskTest.java | 1,813 | 123 | 33 | 5,237.3 | |
| flink-runtime/pom.xml | 505 | 232 | 52 | 5,213.6 | |
| flink-runtime-web/web-dashboard/package-lock.json | 15,876 | 41 | 13 | 5,166.0 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/executiongraph/ExecutionGraph.java | 273 | 308 | 52 | 5,089.0 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/scheduler/adaptive/AdaptiveScheduler.java | 1,858 | 118 | 34 | 5,086.3 | |
| flink-python/pyflink/table/expression.py | 2,806 | 95 | 28 | 5,032.3 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/consumer/RemoteInputChannelTest.java | 2,630 | 95 | 26 | 4,871.9 | |
| docs/static/generated/rest_v1_dispatcher.yml | 4,104 | 76 | 27 | 4,868.7 | |
| flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/internal/BaseExpressions.java | 3,170 | 85 | 26 | 4,785.7 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/scheduler/adaptive/AdaptiveSchedulerTest.java | 2,888 | 88 | 24 | 4,729.1 | |
| flink-end-to-end-tests/test-scripts/common.sh | 1,021 | 146 | 51 | 4,665.2 | |
| flink-tests/pom.xml | 767 | 167 | 55 | 4,625.0 | |
| flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontend.java | 1,509 | 119 | 47 | 4,622.7 | |
| flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/catalog/CatalogManager.java | 2,599 | 89 | 34 | 4,537.3 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/RemoteInputChannel.java | 1,290 | 126 | 27 | 4,525.5 | |
| flink-python/pyflink/datastream/data_stream.py | 3,001 | 82 | 18 | 4,492.1 | |
| flink-python/pom.xml | 915 | 145 | 48 | 4,386.1 | |
| flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java | 3,974 | 68 | 26 | 4,286.7 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/executiongraph/ExecutionVertex.java | 597 | 175 | 43 | 4,275.9 | |
| flink-python/pyflink/datastream/tests/test_data_stream.py | 1,937 | 96 | 17 | 4,225.1 | |
| flink-yarn/src/main/java/org/apache/flink/yarn/cli/FlinkYarnSessionCli.java | 977 | 135 | 43 | 4,219.7 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskManagerRunner.java | 834 | 145 | 40 | 4,187.5 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/consumer/LocalInputChannelTest.java | 1,539 | 106 | 28 | 4,158.4 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/webmonitor/WebMonitorEndpoint.java | 1,418 | 110 | 35 | 4,142.2 | |
| flink-yarn-tests/src/test/java/org/apache/flink/yarn/YarnTestBase.java | 1,334 | 109 | 33 | 3,981.1 | |
| flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/utils/TableTestBase.scala | 2,029 | 81 | 33 | 3,648.6 | |
| docs/content/docs/ops/metrics.md | 2,658 | 70 | 43 | 3,608.9 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/entrypoint/ClusterEntrypoint.java | 771 | 129 | 45 | 3,581.9 | |
| flink-table/flink-table-planner/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java | 8,502 | 37 | 10 | 3,411.6 | |
| flink-clients/src/main/java/org/apache/flink/client/program/rest/RestClusterClient.java | 1,208 | 98 | 33 | 3,406.1 | |
| docs/content.zh/docs/ops/metrics.md | 2,658 | 66 | 38 | 3,402.7 | |
| flink-end-to-end-tests/run-nightly-tests.sh | 290 | 199 | 69 | 3,388.8 | |
| flink-clients/src/test/java/org/apache/flink/client/program/rest/RestClusterClientTest.java | 1,519 | 85 | 29 | 3,312.8 | |
| flink-core/src/main/java/org/apache/flink/api/common/ExecutionConfig.java | 717 | 123 | 46 | 3,293.6 | |
| flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/TableEnvironment.java | 1,757 | 78 | 28 | 3,269.5 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/executiongraph/ExecutionJobVertex.java | 695 | 123 | 37 | 3,242.6 | |
| flink-core/src/main/java/org/apache/flink/configuration/JobManagerOptions.java | 935 | 105 | 41 | 3,210.7 | |
| flink-table/flink-sql-parser/src/main/codegen/data/Parser.tdd | 785 | 114 | 36 | 3,194.0 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/executiongraph/DefaultExecutionGraph.java | 1,822 | 74 | 33 | 3,158.7 | |
| flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/TableEnvironmentTest.scala | 3,660 | 52 | 23 | 3,145.9 | |
| flink-streaming-java/src/test/java/org/apache/flink/streaming/api/operators/async/AsyncWaitOperatorTest.java | 1,854 | 73 | 34 | 3,143.2 | |
| flink-core/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java | 2,523 | 62 | 25 | 3,114.2 | |
| flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/MultipleInputStreamTaskTest.java | 1,770 | 74 | 17 | 3,113.3 | |
| flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java | 2,857 | 58 | 24 | 3,100.2 | |
| flink-core/src/main/java/org/apache/flink/configuration/TaskManagerOptions.java | 775 | 111 | 33 | 3,090.1 | |
| flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/calls/ScalarOperatorGens.scala | 2,182 | 66 | 20 | 3,083.0 | |
| flink-python/pyflink/table/tests/test_table_environment_api.py | 1,103 | 92 | 24 | 3,055.5 | |
| flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/OneInputStreamTaskTest.java | 1,340 | 81 | 29 | 2,965.1 | |
| flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java | 3,046 | 53 | 11 | 2,925.1 | |
| flink-table/flink-table-planner/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java | 7,139 | 34 | 5 | 2,872.7 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/state/heap/HeapKeyedStateBackend.java | 647 | 110 | 30 | 2,798.0 | |
| flink-core/src/main/java/org/apache/flink/core/fs/FileSystem.java | 1,160 | 82 | 36 | 2,792.8 | |
| flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/CastFunctionITCase.java | 2,707 | 53 | 9 | 2,757.5 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/executiongraph/ExecutionGraphTestUtils.java | 556 | 116 | 27 | 2,735.2 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/blob/BlobServer.java | 1,429 | 72 | 24 | 2,721.8 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/PipelinedSubpartition.java | 838 | 94 | 22 | 2,721.1 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/io/network/partition/consumer/LocalInputChannel.java | 915 | 89 | 21 | 2,692.2 | |
| flink-libraries/flink-cep/src/test/java/org/apache/flink/cep/nfa/NFAITCase.java | 2,876 | 50 | 17 | 2,681.4 | |
| flink-python/pyflink/table/types.py | 2,860 | 50 | 12 | 2,673.9 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/checkpoint/PendingCheckpoint.java | 701 | 100 | 31 | 2,647.6 | |
| flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/planner/plan/metadata/FlinkRelMdHandlerTestBase.scala | 3,910 | 42 | 13 | 2,626.3 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/scheduler/adaptive/ExecutingTest.java | 1,907 | 60 | 26 | 2,620.2 | |
| flink-tests/src/test/java/org/apache/flink/test/checkpointing/UnalignedCheckpointTestBase.java | 1,214 | 75 | 26 | 2,613.2 | |
| flink-runtime/src/test/java/org/apache/flink/runtime/io/network/partition/ResultPartitionTest.java | 936 | 83 | 28 | 2,539.3 | |
| flink-core/src/main/java/org/apache/flink/configuration/ConfigConstants.java | 129 | 223 | 62 | 2,532.8 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/taskexecutor/TaskManagerServices.java | 568 | 104 | 32 | 2,478.6 | |
| flink-clients/src/main/java/org/apache/flink/client/cli/CliFrontendParser.java | 723 | 92 | 43 | 2,473.8 | |
| flink-runtime/src/main/java/org/apache/flink/runtime/scheduler/DefaultScheduler.java | 588 | 102 | 24 | 2,473.4 | |
| flink-dist/src/main/flink-bin/bin/config.sh | 516 | 107 | 46 | 2,430.6 |
How Apache Flink compares with other Apache projects →
How Apache Flink ranks among Apache projects by AI-assisted commits →
Generate this report for your own repository with gitstats-action · All Gallery reports
Publishes the report to GitHub Pages on every push to main: turn on Pages for the gh-pages branch.
# .github/workflows/gitstats.yml
name: GitStats Report
on:
push:
branches: [main]
permissions:
contents: write
jobs:
gitstats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: shenxianpeng/gitstats-action@v1
with:
deploy-to-pages: true