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 6,271 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 | |
|---|---|---|---|---|---|
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java | 5,654 | 606 | 103 | 45,567.0 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java | 6,107 | 469 | 94 | 36,651.1 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java | 5,170 | 509 | 97 | 36,598.5 | |
| pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java | 4,904 | 508 | 102 | 35,574.5 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java | 5,397 | 419 | 88 | 30,781.5 | |
| managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java | 6,092 | 373 | 79 | 29,113.1 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java | 3,705 | 349 | 95 | 21,243.2 | |
| conf/broker.conf | 2,490 | 419 | 103 | 20,908.1 | |
| managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java | 4,729 | 281 | 68 | 19,323.7 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java | 5,671 | 251 | 70 | 18,901.8 |
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java | 5,654 | 606 | 103 | 45,567.0 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/PersistentTopicsBase.java | 6,107 | 469 | 94 | 36,651.1 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java | 5,170 | 509 | 97 | 36,598.5 | |
| pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java | 4,904 | 508 | 102 | 35,574.5 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java | 5,397 | 419 | 88 | 30,781.5 | |
| managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java | 6,092 | 373 | 79 | 29,113.1 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java | 3,705 | 349 | 95 | 21,243.2 | |
| conf/broker.conf | 2,490 | 419 | 103 | 20,908.1 | |
| managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java | 4,729 | 281 | 68 | 19,323.7 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/PersistentTopics.java | 5,671 | 251 | 70 | 18,901.8 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java | 2,653 | 359 | 76 | 18,491.1 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java | 3,617 | 269 | 75 | 16,178.1 | |
| managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java | 6,758 | 182 | 59 | 14,961.7 | |
| managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java | 8,031 | 146 | 47 | 13,083.9 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java | 4,179 | 199 | 58 | 12,864.4 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java | 3,270 | 221 | 66 | 12,637.6 | |
| pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleProducerConsumerTest.java | 5,712 | 165 | 58 | 12,470.3 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxTest.java | 5,188 | 167 | 48 | 12,028.6 | |
| pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java | 2,828 | 223 | 59 | 11,858.9 | |
| distribution/server/src/assemble/LICENSE.bin.txt | 689 | 443 | 53 | 11,628.2 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java | 3,883 | 167 | 60 | 10,406.4 | |
| conf/standalone.conf | 1,795 | 239 | 72 | 10,125.8 | |
| pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopics.java | 3,112 | 180 | 52 | 10,041.4 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicTest.java | 2,556 | 185 | 58 | 9,353.0 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/TopicPoliciesTest.java | 4,782 | 134 | 35 | 9,266.4 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java | 1,823 | 211 | 57 | 9,009.0 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/PulsarClientImpl.java | 2,123 | 189 | 61 | 8,708.4 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java | 2,039 | 182 | 62 | 8,218.3 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java | 1,761 | 193 | 49 | 8,099.1 | |
| pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/TopicsImpl.java | 3,010 | 145 | 50 | 7,955.2 | |
| pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaces.java | 2,904 | 143 | 54 | 7,706.1 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientCnx.java | 2,192 | 161 | 45 | 7,537.8 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/NamespacesTest.java | 2,725 | 144 | 56 | 7,517.0 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/nonpersistent/NonPersistentTopic.java | 1,368 | 199 | 71 | 7,360.3 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java | 1,718 | 176 | 61 | 7,295.0 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/AbstractTopic.java | 1,612 | 179 | 59 | 7,186.8 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/PersistentTopicsTest.java | 2,183 | 150 | 60 | 7,008.4 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java | 1,641 | 162 | 59 | 6,562.5 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java | 1,230 | 187 | 60 | 6,558.3 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BrokerServiceTest.java | 2,826 | 123 | 38 | 6,538.7 | |
| pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdFunctions.java | 1,398 | 171 | 33 | 6,393.7 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java | 4,486 | 95 | 31 | 6,362.9 | |
| pulsar-common/src/main/java/org/apache/pulsar/common/protocol/Commands.java | 2,675 | 123 | 45 | 6,361.6 | |
| pulsar-functions/instance/src/main/java/org/apache/pulsar/functions/instance/JavaInstanceRunnable.java | 1,336 | 167 | 36 | 6,104.1 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTest.java | 2,119 | 126 | 37 | 5,800.1 | |
| pulsar-common/src/main/proto/PulsarApi.proto | 1,473 | 143 | 46 | 5,488.3 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBase.java | 1,478 | 130 | 55 | 4,997.8 | |
| pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/NamespacesImpl.java | 2,170 | 106 | 40 | 4,937.8 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/transaction/TransactionTest.java | 2,151 | 105 | 25 | 4,869.8 | |
| tests/integration/src/test/java/org/apache/pulsar/tests/integration/functions/PulsarFunctionsTest.java | 2,359 | 100 | 33 | 4,857.0 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/web/PulsarWebResource.java | 1,363 | 131 | 52 | 4,836.4 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java | 1,448 | 124 | 40 | 4,718.5 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/stats/PrometheusMetricsTest.java | 2,219 | 99 | 47 | 4,663.5 | |
| managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerFactoryImpl.java | 1,862 | 104 | 40 | 4,487.7 | |
| pulsar-broker/src/test/java/org/apache/pulsar/compaction/CompactionTest.java | 3,158 | 79 | 29 | 4,439.5 | |
| .github/workflows/pulsar-ci.yaml | 1,016 | 136 | 20 | 4,335.0 | |
| distribution/shell/src/assemble/LICENSE.bin.txt | 529 | 188 | 24 | 4,324.0 | |
| pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/ComponentImpl.java | 2,069 | 88 | 26 | 4,002.8 | |
| pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Topics.java | 4,754 | 58 | 26 | 3,999.1 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/service/BacklogQuotaManagerTest.java | 2,496 | 80 | 35 | 3,996.8 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImplTest.java | 2,394 | 81 | 12 | 3,963.2 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java | 825 | 137 | 42 | 3,935.0 | |
| pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionRuntimeManager.java | 1,035 | 120 | 24 | 3,860.6 | |
| pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java | 844 | 117 | 23 | 3,399.0 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/channel/ServiceUnitStateChannelImpl.java | 2,165 | 73 | 11 | 3,396.7 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java | 994 | 104 | 29 | 3,278.9 | |
| pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java | 2,703 | 62 | 20 | 3,223.4 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/service/PersistentTopicE2ETest.java | 2,024 | 71 | 31 | 3,194.2 | |
| pulsar-broker/src/test/java/org/apache/pulsar/client/api/BrokerServiceLookupTest.java | 1,386 | 85 | 31 | 3,164.5 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentReplicator.java | 1,225 | 90 | 37 | 3,150.0 | |
| pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java | 1,172 | 92 | 37 | 3,149.6 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java | 999 | 99 | 40 | 3,129.1 | |
| pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TransactionEndToEndTest.java | 1,749 | 74 | 22 | 3,094.8 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/service/OneWayReplicatorTest.java | 2,951 | 56 | 10 | 3,042.1 | |
| gradle/libs.versions.toml | 547 | 130 | 10 | 3,040.4 | |
| pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionConfigUtils.java | 1,191 | 86 | 29 | 2,967.9 | |
| pulsar-broker/src/test/java/org/apache/pulsar/io/PulsarFunctionE2ETest.java | 1,361 | 79 | 27 | 2,914.4 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/SystemTopicBasedTopicPoliciesService.java | 1,246 | 82 | 29 | 2,894.5 | |
| pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Namespaces.java | 4,935 | 41 | 21 | 2,880.2 | |
| pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSinks.java | 857 | 97 | 27 | 2,839.6 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherSingleActiveConsumer.java | 621 | 113 | 44 | 2,815.9 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/namespace/NamespaceServiceTest.java | 1,151 | 80 | 35 | 2,714.1 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Producer.java | 928 | 89 | 37 | 2,711.2 | |
| pulsar-broker/src/test/java/org/apache/pulsar/client/impl/BrokerClientIntegrationTest.java | 1,178 | 78 | 30 | 2,677.1 | |
| pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConnection.java | 1,081 | 79 | 28 | 2,597.4 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/MessageImpl.java | 900 | 86 | 37 | 2,580.0 | |
| pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java | 1,640 | 63 | 28 | 2,551.3 | |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/channel/ServiceUnitStateChannelTest.java | 2,781 | 48 | 8 | 2,531.3 | |
| pulsar-broker-common/src/main/java/org/apache/pulsar/broker/authorization/PulsarAuthorizationProvider.java | 1,033 | 78 | 31 | 2,506.9 | |
| pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionActioner.java | 786 | 89 | 22 | 2,495.2 | |
| pulsar-broker/src/test/java/org/apache/pulsar/client/impl/TopicsConsumerImplTest.java | 1,547 | 63 | 28 | 2,477.9 | |
| pulsar-functions/instance/src/main/java/org/apache/pulsar/functions/instance/ContextImpl.java | 867 | 83 | 26 | 2,443.9 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/transaction/buffer/impl/TopicTransactionBuffer.java | 1,179 | 69 | 17 | 2,369.2 | |
| pulsar-functions/worker/src/test/java/org/apache/pulsar/functions/worker/FunctionRuntimeManagerTest.java | 1,205 | 68 | 18 | 2,360.5 | |
| pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSources.java | 765 | 85 | 25 | 2,351.0 | |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java | 1,251 | 66 | 10 | 2,334.4 | |
| pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBuilderImpl.java | 657 | 90 | 44 | 2,306.9 | |
| pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTopicPolicies.java | 2,141 | 49 | 18 | 2,267.3 | |
| pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/kubernetes/KubernetesRuntimeTest.java | 1,497 | 58 | 28 | 2,244.1 | |
| pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java | 1,141 | 66 | 28 | 2,229.4 |
How Apache Pulsar compares with other Apache projects →
How Apache Pulsar 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