Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
8ff4b3c
[fix] Update gRPC to 1.75.0 (#24813)
merlimat Oct 3, 2025
21255a1
[fix][build] Fix maven deploy with maven-source-plugin 3.3.1 (#24811)
lhotari Oct 2, 2025
5d8b45f
[fix][build] Remove invalid profile in settings.xml that caused gpg s…
lhotari Oct 4, 2025
b1cd295
[improve][ml] Upgrade Oxia client to 0.7.0 (#24824)
merlimat Oct 7, 2025
64cf82c
[improve][broker] Replace isServiceUnitActiveAsync with checkTopicNsO…
BewareMyPower Sep 25, 2025
9c7a92c
[fix][broker] Flaky-test: ExtensibleLoadManagerImplTest.testDisableBr…
Denovo1998 Sep 28, 2025
b65a42b
[improve][broker]Improve NamespaceService log that is printed when cl…
poorbarcode Sep 30, 2025
8d5660e
[fix][client] Make auto partitions update work for old brokers withou…
BewareMyPower Oct 8, 2025
db9d595
[fix][broker] Fix incorrect topic loading latency metric and timeout …
BewareMyPower Sep 30, 2025
1f2555e
[fix][broker] Allow intermittent error from topic policies service wh…
BewareMyPower Oct 8, 2025
a1981a4
[fix] Fix mixed lookup/partition metadata requests causing reliabilit…
lhotari Oct 9, 2025
ed44b6d
[fix][client] Fix getPendingQueueSize for PartitionedTopicProducerSta…
lhotari Oct 10, 2025
0df445b
[improve][ci] Upgrade GitHub Actions workflows to use ubuntu-24.04 (#…
lhotari Oct 13, 2025
60641b3
[fix][broker] Ensure LoadSheddingTask is scheduled after metadata ser…
Demogorgon314 Oct 14, 2025
1948bd5
[fix][ml] Fix `getNumberOfEntries` may point to deleted ledger (#24852)
Technoboy- Oct 17, 2025
1e2858d
[fix]Fixed getChildren('/') on Oxia based provider (#24863)
merlimat Oct 17, 2025
bc46abf
Fix compile issue by cherry-picked #24852
Technoboy- Oct 23, 2025
df20f59
[fix][ml] Fix ledger trimming race causing cursor to point to deleted…
codelipenghui Oct 15, 2025
89f41d2
[fix][test] Fix flaky SubscriptionSeekTest.testSeekWillNotEncountered…
Denovo1998 Oct 17, 2025
e5bf094
[fix][test] Stabilize SequenceIdWithErrorTest by fencing after first …
Denovo1998 Oct 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-documentbot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
if: (github.repository == 'apache/pulsar') && (github.event.pull_request.state == 'open')
permissions:
pull-requests: write
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Labeling
uses: apache/pulsar-test-infra/docbot@master
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci-go-functions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ env:
jobs:
preconditions:
name: Preconditions
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
outputs:
docs_only: ${{ steps.check_changes.outputs.docs_only }}
steps:
Expand Down Expand Up @@ -73,7 +73,7 @@ jobs:
needs: preconditions
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
name: Go ${{ matrix.go-version }} Functions style check
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
matrix:
go-version: ['1.23']
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci-maven-cache-update.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
matrix:
include:
- name: all modules
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
cache_name: 'm2-dependencies-all'
mvn_arguments: ''

Expand All @@ -68,7 +68,7 @@ jobs:
cache_name: 'm2-dependencies-all'

- name: core-modules
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
cache_name: 'm2-dependencies-core-modules'
mvn_arguments: '-Pcore-modules,-main'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-owasp-dependency-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
env:
JOB_NAME: Check ${{ matrix.branch }}
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 75
strategy:
fail-fast: false
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-pulsarbot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ on:

jobs:
pulsarbot:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name == 'issue_comment' && contains(github.event.comment.body, '/pulsarbot')
steps:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pulsar-ci-flaky.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ env:
jobs:
preconditions:
name: Preconditions
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
outputs:
docs_only: ${{ steps.check_changes.outputs.docs_only }}
changed_tests: ${{ steps.changes.outputs.tests_files }}
Expand Down Expand Up @@ -176,7 +176,7 @@ jobs:
THREAD_LEAK_DETECTOR_DIR: ${{ github.workspace }}/target/thread-leak-dumps
NETTY_LEAK_DETECTION: "${{ needs.preconditions.outputs.netty_leak_detection }}"
NETTY_LEAK_DUMP_DIR: ${{ github.workspace }}/target/netty-leak-dumps
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 100
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
steps:
Expand Down
32 changes: 16 additions & 16 deletions .github/workflows/pulsar-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ env:
jobs:
preconditions:
name: Preconditions
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
outputs:
docs_only: ${{ steps.check_changes.outputs.docs_only }}
changed_tests: ${{ steps.changes.outputs.tests_files }}
Expand Down Expand Up @@ -169,7 +169,7 @@ jobs:
JOB_NAME: Build and License check
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
CI_JDK_MAJOR_VERSION: ${{ needs.preconditions.outputs.jdk_major_version }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 60
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
steps:
Expand Down Expand Up @@ -252,7 +252,7 @@ jobs:
THREAD_LEAK_DETECTOR_DIR: ${{ github.workspace }}/target/thread-leak-dumps
NETTY_LEAK_DETECTION: "${{ needs.preconditions.outputs.netty_leak_detection }}"
NETTY_LEAK_DUMP_DIR: ${{ github.workspace }}/target/netty-leak-dumps
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: ${{ matrix.timeout || 60 }}
needs: ['preconditions', 'build-and-license-check']
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
Expand Down Expand Up @@ -407,7 +407,7 @@ jobs:

unit-tests-upload-coverage:
name: CI - Unit - Upload Coverage
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 30
needs: ['preconditions', 'unit-tests']
env:
Expand Down Expand Up @@ -489,7 +489,7 @@ jobs:

pulsar-java-test-image:
name: Build Pulsar java-test-image docker image
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: ['preconditions', 'build-and-license-check']
if: ${{ needs.preconditions.outputs.docs_only != 'true'}}
Expand Down Expand Up @@ -571,7 +571,7 @@ jobs:

integration-tests:
name: CI - Integration - ${{ matrix.name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: ${{ matrix.timeout || 60 }}
needs: ['preconditions', 'pulsar-java-test-image']
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
Expand Down Expand Up @@ -774,7 +774,7 @@ jobs:

integration-tests-upload-coverage:
name: CI - Integration - Upload Coverage
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 30
needs: ['preconditions', 'integration-tests']
if: ${{ needs.preconditions.outputs.collect_coverage == 'true' }}
Expand Down Expand Up @@ -861,7 +861,7 @@ jobs:

delete-integration-test-docker-image-artifact:
name: "Delete integration test docker image artifact"
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
needs: [
'preconditions',
Expand All @@ -885,7 +885,7 @@ jobs:

pulsar-test-latest-version-image:
name: Build Pulsar docker image
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: ['preconditions', 'build-and-license-check']
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
Expand Down Expand Up @@ -1009,7 +1009,7 @@ jobs:

system-tests:
name: CI - System - ${{ matrix.name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: ['preconditions', 'pulsar-test-latest-version-image']
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
Expand Down Expand Up @@ -1171,7 +1171,7 @@ jobs:

system-tests-upload-coverage:
name: CI - System - Upload Coverage
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 30
needs: ['preconditions', 'system-tests']
if: ${{ needs.preconditions.outputs.collect_coverage == 'true' }}
Expand Down Expand Up @@ -1259,7 +1259,7 @@ jobs:

flaky-system-tests:
name: CI Flaky - System - ${{ matrix.name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: [ 'preconditions', 'pulsar-test-latest-version-image' ]
if: ${{ needs.preconditions.outputs.docs_only != 'true' }}
Expand Down Expand Up @@ -1398,7 +1398,7 @@ jobs:

delete-system-test-docker-image-artifact:
name: "Delete system test docker image artifact"
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
needs: [
'preconditions',
Expand Down Expand Up @@ -1459,7 +1459,7 @@ jobs:

codeql:
name: Run CodeQL Analysis
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: ['preconditions', 'unit-tests']
if: ${{ (needs.preconditions.outputs.java_non_tests == 'true' || github.event_name != 'pull_request') && ((github.event_name == 'pull_request' && github.base_ref == 'master') || (github.event_name != 'pull_request' && github.ref_name == 'master')) }}
Expand Down Expand Up @@ -1524,7 +1524,7 @@ jobs:

owasp-dep-check:
name: OWASP dependency check
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 120
needs: [ 'preconditions', 'integration-tests' ]
if: ${{ needs.preconditions.outputs.need_owasp == 'true' }}
Expand Down Expand Up @@ -1630,7 +1630,7 @@ jobs:
# this is to allow the workflow scheduled jobs to show as cancelled instead of failed since scheduled
# jobs are not enabled for other than apache/pulsar repository.
if: ${{ always() && !(cancelled() && github.repository != 'apache/pulsar' && github.event_name == 'schedule') }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 10
needs: [
'preconditions',
Expand Down
4 changes: 3 additions & 1 deletion build/run_unit_group.sh
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,8 @@ function test_group_other() {
-pl '!com.datastax.oss:distribution,!com.datastax.oss:pulsar-offloader-distribution,!com.datastax.oss:pulsar-server-distribution,!com.datastax.oss:pulsar-io-distribution,!com.datastax.oss:pulsar-all-docker-image,!com.datastax.oss:pulsar-experimental-docker-image' \
-PskipTestsForUnitGroupOther -DdisableIoMainProfile=true -DskipIntegrationTests \
-Dexclude='**/ManagedLedgerTest.java,
**/OffloadersCacheTest.java
**/OffloadersCacheTest.java,
**/OffsetsCacheTest.java,
**/PrimitiveSchemaTest.java,
**/BlobStoreManagedLedgerOffloaderTest.java,
**/BlobStoreManagedLedgerOffloaderStreamingTest.java'
Expand All @@ -184,6 +185,7 @@ function test_group_other() {

mvn_test -pl tiered-storage/jcloud -Dinclude='**/BlobStoreManagedLedgerOffloaderTest.java'
mvn_test -pl tiered-storage/jcloud -Dinclude='**/BlobStoreManagedLedgerOffloaderStreamingTest.java'
mvn_test -pl tiered-storage/jcloud -Dinclude='**/OffsetsCacheTest.java'

echo "::endgroup::"
local modules_with_quarantined_tests=$(git grep -l '@Test.*"quarantine"' | grep '/src/test/java/' | \
Expand Down
46 changes: 23 additions & 23 deletions distribution/server/src/assemble/LICENSE.bin.txt
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ The Apache Software License, Version 2.0
* Caffeine -- com.github.ben-manes.caffeine-caffeine-2.9.1.jar
* Conscrypt -- org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar
* Fastutil -- it.unimi.dsi-fastutil-8.5.16.jar
* Proto Google Common Protos -- com.google.api.grpc-proto-google-common-protos-2.51.0.jar
* Proto Google Common Protos -- com.google.api.grpc-proto-google-common-protos-2.59.2.jar
* Bitbucket -- org.bitbucket.b_c-jose4j-0.9.4.jar
* Gson
- com.google.code.gson-gson-2.8.9.jar
Expand Down Expand Up @@ -431,26 +431,26 @@ The Apache Software License, Version 2.0
- org.jetbrains.kotlin-kotlin-stdlib-jdk8-1.8.20.jar
- org.jetbrains-annotations-13.0.jar
* gRPC
- io.grpc-grpc-all-1.72.0.jar
- io.grpc-grpc-auth-1.72.0.jar
- io.grpc-grpc-context-1.72.0.jar
- io.grpc-grpc-core-1.72.0.jar
- io.grpc-grpc-protobuf-1.72.0.jar
- io.grpc-grpc-protobuf-lite-1.72.0.jar
- io.grpc-grpc-stub-1.72.0.jar
- io.grpc-grpc-alts-1.72.0.jar
- io.grpc-grpc-api-1.72.0.jar
- io.grpc-grpc-grpclb-1.72.0.jar
- io.grpc-grpc-netty-shaded-1.72.0.jar
- io.grpc-grpc-services-1.72.0.jar
- io.grpc-grpc-xds-1.72.0.jar
- io.grpc-grpc-rls-1.72.0.jar
- io.grpc-grpc-servlet-1.72.0.jar
- io.grpc-grpc-servlet-jakarta-1.72.0.jar
- io.grpc-grpc-all-1.75.0.jar
- io.grpc-grpc-auth-1.75.0.jar
- io.grpc-grpc-context-1.75.0.jar
- io.grpc-grpc-core-1.75.0.jar
- io.grpc-grpc-protobuf-1.75.0.jar
- io.grpc-grpc-protobuf-lite-1.75.0.jar
- io.grpc-grpc-stub-1.75.0.jar
- io.grpc-grpc-alts-1.75.0.jar
- io.grpc-grpc-api-1.75.0.jar
- io.grpc-grpc-grpclb-1.75.0.jar
- io.grpc-grpc-netty-shaded-1.75.0.jar
- io.grpc-grpc-services-1.75.0.jar
- io.grpc-grpc-xds-1.75.0.jar
- io.grpc-grpc-rls-1.75.0.jar
- io.grpc-grpc-servlet-1.75.0.jar
- io.grpc-grpc-servlet-jakarta-1.75.0.jar
- io.grpc-grpc-util-1.60.0.jar
- io.grpc-grpc-opentelemetry-1.72.0.jar
- io.grpc-grpc-gcp-csm-observability-1.72.0.jar
- io.grpc-grpc-inprocess-1.72.0.jar
- io.grpc-grpc-opentelemetry-1.75.0.jar
- io.grpc-grpc-gcp-csm-observability-1.75.0.jar
- io.grpc-grpc-inprocess-1.75.0.jar
* Perfmark
- io.perfmark-perfmark-api-0.26.0.jar
* OpenCensus
Expand Down Expand Up @@ -484,8 +484,8 @@ The Apache Software License, Version 2.0
* Prometheus
- io.prometheus-simpleclient_httpserver-0.16.0.jar
* Oxia
- io.github.oxia-db-oxia-client-api-0.6.2.jar
- io.github.oxia-db-oxia-client-0.6.2.jar
- io.github.oxia-db-oxia-client-api-0.7.0.jar
- io.github.oxia-db-oxia-client-0.7.0.jar
* OpenHFT
- net.openhft-zero-allocation-hashing-0.16.jar
* Java JSON WebTokens
Expand Down Expand Up @@ -541,7 +541,7 @@ The Apache Software License, Version 2.0
- io.opentelemetry.instrumentation-opentelemetry-runtime-telemetry-java8-1.33.6-alpha.jar
- io.opentelemetry.semconv-opentelemetry-semconv-1.29.0-alpha.jar
- com.google.cloud.opentelemetry-detector-resources-support-0.33.0.jar
- io.opentelemetry.contrib-opentelemetry-gcp-resources-1.43.0-alpha.jar
- io.opentelemetry.contrib-opentelemetry-gcp-resources-1.48.0-alpha.jar
* Spotify completable-futures
- com.spotify-completable-futures-0.3.6.jar
* JSpecify
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2586,7 +2586,8 @@ public void addWaitingEntryCallBack(WaitingEntryCallBack cb) {

public void maybeUpdateCursorBeforeTrimmingConsumedLedger() {
for (ManagedCursor cursor : cursors) {
Position lastAckedPosition = cursor.getMarkDeletedPosition();
Position lastAckedPosition = cursor.getPersistentMarkDeletedPosition() != null
? cursor.getPersistentMarkDeletedPosition() : cursor.getMarkDeletedPosition();
LedgerInfo currPointedLedger = ledgers.get(lastAckedPosition.getLedgerId());
LedgerInfo nextPointedLedger = Optional.ofNullable(ledgers.higherEntry(lastAckedPosition.getLedgerId()))
.map(Map.Entry::getValue).orElse(null);
Expand Down Expand Up @@ -3716,11 +3717,17 @@ public long getNumberOfEntries(Range<Position> range) {
boolean toIncluded = range.upperBoundType() == BoundType.CLOSED;

if (fromPosition.getLedgerId() == toPosition.getLedgerId()) {
// If the 2 positions are in the same ledger
long count = toPosition.getEntryId() - fromPosition.getEntryId() - 1;
count += fromIncluded ? 1 : 0;
count += toIncluded ? 1 : 0;
return count;
LedgerInfo li = ledgers.get(toPosition.getLedgerId());
if (li != null) {
// If the 2 positions are in the same ledger
long count = toPosition.getEntryId() - fromPosition.getEntryId() - 1;
count += fromIncluded ? 1 : 0;
count += toIncluded ? 1 : 0;
return count;
} else {
// if the ledgerId is not in the ledgers, it means it has been deleted
return 0;
}
} else {
long count = 0;
// If the from & to are pointing to different ledgers, then we need to :
Expand Down
Loading
Loading