Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
b2e47b6
operator: Add token storage for ingester + make sure PDBs are maxUnav…
saswatamcode May 6, 2026
ff906cd
feat(operator): Set trafficDistribution on the Distributor http service
JoaoBraveCoding May 21, 2026
68754f2
feat(operator): Add compression option for internal gRPC traffic
xperimental May 26, 2026
209e024
Merge pull request #3 from xperimental/grpc-compression
philipgough May 28, 2026
78cfe51
Merge pull request #2 from JoaoBraveCoding/rhobs-dist-svc-patch
philipgough May 28, 2026
43ab4aa
fix(version): Copy build info to Prometheus common library (#22343)
bboreham Jun 16, 2026
3430739
fix(v2-engine): Preserve explicit empty values from line_format/label…
sandeepsukhani Jun 16, 2026
7cbf963
chore(stats): Correctly account staging time for cancelled tasks (#22…
ashwanthgoli Jun 16, 2026
cb325dc
chore(deps): Update prom/alertmanager Docker tag to v0.33.0 (main) (#…
renovate-sh-app[bot] Jun 16, 2026
05029d4
chore(deps): Update dependency helm to v3.21.1 (main) (#22420)
renovate-sh-app[bot] Jun 16, 2026
6b590ea
fix(deps): Update k8s.io/apimachinery to v0.36.2 (main) (#22419)
renovate-sh-app[bot] Jun 16, 2026
c35c9bb
fix(deps): Update charm.land/lipgloss/v2 to v2.0.4 (main) (#22418)
renovate-sh-app[bot] Jun 16, 2026
7d90ee3
fix(deps): Update golang.org/x/tools to v0.46.0 (main) (#22414)
renovate-sh-app[bot] Jun 16, 2026
46744df
fix(deps): Update github.com/redis/go-redis/v9 to v9.20.1 (main) (#22…
renovate-sh-app[bot] Jun 16, 2026
faaedd9
fix(deps): Update github.com/aws/aws-sdk-go-v2/config to v1.32.25 (ma…
renovate-sh-app[bot] Jun 16, 2026
d3d2636
chore(deps): Update helm-rollout-operator to v0.50.0 (main) (#22408)
renovate-sh-app[bot] Jun 16, 2026
df2f604
fix(operator): Ensure ingesters store tokens (#21770)
saswatamcode Jun 16, 2026
8471f8c
chore(deps): Update alpine Docker tag to v3.24.0 (main) (#22407)
renovate-sh-app[bot] Jun 16, 2026
472233e
fix(deps): Update google.golang.org/api to v0.284.0 (main) (#21753)
renovate-sh-app[bot] Jun 16, 2026
f87fa8f
fix(deps): Update github.com/alecthomas/chroma/v2 to v2.26.1 (main) (…
renovate-sh-app[bot] Jun 16, 2026
93f943f
chore(deps): Update logstash:9.4.2 Docker digest to 648a781 (main) (#…
renovate-sh-app[bot] Jun 16, 2026
f3360c3
chore(deps): Update golang:1.26.4 Docker digest to 792443b (main) (#2…
renovate-sh-app[bot] Jun 16, 2026
0c5bc75
docs: Fix go command in dev/kafka README (#22340)
bboreham Jun 16, 2026
6ff9753
fix(operator): Update all components PDBs to maxUnavailable of 1 (#22…
saswatamcode Jun 16, 2026
f8ac182
chore: Throw earlier errors about unimplemented features (#22364)
spiridonov Jun 16, 2026
3830706
fix(dataobj-compaction): Split postings sections by size (#22442)
trevorwhitney Jun 17, 2026
304cda5
fix(v2-engine): Treat absent column as empty string in scan-layer pre…
sandeepsukhani Jun 17, 2026
d85dee3
chore(deps): Update dependency helm to v4 (main) (#22350)
renovate-sh-app[bot] Jun 17, 2026
4f52a83
chore(deps): Update GitHub Artifact Actions (main) (major) (#22121)
renovate-sh-app[bot] Jun 17, 2026
2e171d5
chore(deps): Update peter-evans/create-pull-request action to v8 (mai…
renovate-sh-app[bot] Jun 17, 2026
ea61a27
chore(deps): Update fluent/fluent-bit Docker tag to v5.0.7 (main) (#2…
renovate-sh-app[bot] Jun 17, 2026
8181286
fix(deps): Update github.com/aws/aws-sdk-go-v2/service/s3 to v1.103.3…
renovate-sh-app[bot] Jun 17, 2026
6c3c537
fix(dataobj-compaction): Filter index sections by tenant in IndexMerg…
trevorwhitney Jun 17, 2026
6ceea02
chore(dataobj-inspect): Add support for new section types (#22434)
ivkalita Jun 17, 2026
bd7c05d
feat: Allow overriding rate limits per ingestion policy (#22435)
salvacorts Jun 18, 2026
8ee465e
feat: Support per-policy stream sharding overrides (#22451)
salvacorts Jun 18, 2026
4ab8713
fix(deps): Update github.com/Azure/azure-sdk-for-go/sdk/storage/azblo…
renovate-sh-app[bot] Jun 18, 2026
9c8118d
refactor: Pointer-based per-policy override limits (#22455)
salvacorts Jun 18, 2026
0244851
chore: Update Prometheus dependency to latest main [main] (#22402)
rfratto Jun 18, 2026
94aef6a
fix(ci): Use newer backport action (#22456)
paul1r Jun 18, 2026
2f0e0ba
feat(operator): Produce metrics about managed LokiStacks (#21838)
btaani Jun 18, 2026
5b6cddf
chore: Use reverse input order as fallback during sort of dataobjs (#…
benclive Jun 18, 2026
66e5e2d
chore(docs): Add migration guide from SSD to HA Monolithic (#22444)
chaudum Jun 18, 2026
5b4cd23
revert: Remove deprecated `/api/prom` API endpoints (#21569) (#22466)
chaudum Jun 19, 2026
6102d52
feat(compactor): Read new postings section type (#22143)
shantanualsi Jun 19, 2026
4649720
feat(compactor): Add new `increase_generation_numbers` endpoint (#22443)
DylanGuedes Jun 19, 2026
0939e93
chore: Wrapping io.EOF and our custom EOF (#22463)
spiridonov Jun 19, 2026
66ac3f0
chore: Adds an E2E static write+read test (#22473)
benclive Jun 19, 2026
5050eef
chore: Adjust sortmerge.Iterator sequence batch sizes (#22472)
benclive Jun 19, 2026
e4b27ef
fix(dataobj-stats): Tie-break section sort on object path and section…
trevorwhitney Jun 19, 2026
eecfe8a
fix(dataobj): Source index ToC time range from postings sections and …
trevorwhitney Jun 19, 2026
ae35926
Update from Grafana 'main' branch
xperimental Jun 22, 2026
b42e800
Fix lint issue
xperimental Jun 23, 2026
1566c6d
feat(operator): Add option to enable flush_on_shutdown (#4)
xperimental Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
61 changes: 28 additions & 33 deletions .github/workflows/backport.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,50 @@
name: Backport PR Creator
run-name: "Backport for ${{ github.event.pull_request.title }} (#${{ github.event.pull_request.number }})"

on:
pull_request:
types:
- closed
- labeled

permissions:
contents: read

jobs:
main:
# We don't run the backporting for PRs from forks because those can't access "loki-github-bot" secrets in vault.
# We don't use GitHub actions app (secrets.GITHUB_TOKEN) because PRs created by the bot don't trigger CI.
# Also only run if the PR is merged, as an extra safe-guard.
if: ${{ ! github.event.pull_request.head.repo.fork && github.event.pull_request.merged == true }}

runs-on: ubuntu-x64
# On 'labeled' events, require that the label just added is itself a backport label, otherwise
# adding an unrelated label to an already-backported PR would re-trigger the job with the wrong label.
if: |
!github.event.pull_request.head.repo.fork &&
github.event.pull_request.merged == true &&
(
(github.event.action == 'labeled' && startsWith(github.event.label.name, 'backport ')) ||
(github.event.action == 'closed' && contains(join(github.event.pull_request.labels.*.name, ','), 'backport '))
)
permissions:
contents: "read"
id-token: "write"
pull-requests: "write"
contents: read
id-token: write
runs-on: ubuntu-x64
steps:
- name: Checkout Actions
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
repository: grafana/grafana-github-actions
persist-credentials: false
path: ./actions
ref: 3c62d35c5a66e730186a338e45aeb8fa784e2d56

- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "22"

- name: Install Actions
working-directory: ./actions
run: |
corepack enable
yarn install --immutable

- name: Generate GitHub App Token
- name: Get GitHub App token
id: app-token
uses: grafana/shared-workflows/actions/create-github-app-token@46f48da11e78ebdba7a8747ae456b11062fac83e # create-github-app-token/v0.3.1
with:
github_app: loki-gh-app

- name: Checkout loki
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
ref: ${{ github.event.repository.default_branch }}
fetch-depth: 2
persist-credentials: false

- name: Run backport
uses: ./actions/backport
uses: grafana/grafana-github-actions-go/backport@d484b937d035459a2645f7cd6b1c68cdd40fb291
with:
token: ${{ steps.app-token.outputs.token }}
labelsToAdd: "backport"
title: "{{originalTitle}} (backport {{base}})"
removeDefaultReviewers: false
pr_title_template: "{{title}} [{{branch}}]"
pr_label: ${{ github.event.action == 'labeled' && github.event.label.name || '' }}
pr_number: ${{ github.event.pull_request.number }}
repo_owner: ${{ github.repository_owner }}
repo_name: ${{ github.event.repository.name }}
4 changes: 2 additions & 2 deletions .github/workflows/helm-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
- name: Set up Helm
uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0
with:
version: v3.21.0
version: v4.2.1

# Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and
# yamllint (https://github.com/adrienverge/yamllint) which require Python
Expand Down Expand Up @@ -136,7 +136,7 @@ jobs:
- name: Set up Helm
uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0
with:
version: v3.21.0
version: v4.2.1

- name: Install Flux CLI
uses: fluxcd/flux2/action@1fd61a06264d71cf445ed55c4f14d401d26a1c64 # v2.8.8
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/helm-diff-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ jobs:
cat helm_diff_output.txt >> formatted_diff_output.md

- name: Upload diff output as artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
id: upload_diff
with:
name: ${{ matrix.scenario.name }}-diff-output
Expand All @@ -117,7 +117,7 @@ jobs:
with:
persist-credentials: false

- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1

- name: Combine diff outputs
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/helm-tagged-release-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
bash .github/workflows/scripts/helm-tagged-release.sh ${RELEASE_VERSION}

- name: Create Pull Request
uses: peter-evans/create-pull-request@22a9089034f40e5a961c8808d113e2c98fb63676 # v7
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8
with:
token: ${{ steps.app-token.outputs.token }}
title: "chore: release loki helm chart ${{ steps.update.outputs.new_chart_version }}"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/helm-weekly-release-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
bash .github/workflows/scripts/helm-weekly-release.sh

- name: Create Pull Request
uses: peter-evans/create-pull-request@22a9089034f40e5a961c8808d113e2c98fb63676 # v7
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8
with:
token: ${{ steps.app-token.outputs.token }}
title: "chore: release loki helm chart ${{ steps.update.outputs.new_chart_version }}"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/logql-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
working-directory: ./pkg/logql/bench

- name: Upload test data
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: logql-bench-testdata-${{ steps.checkout.outputs.commit }}
path: ./pkg/logql/bench/data.zip
Expand Down Expand Up @@ -93,7 +93,7 @@ jobs:
ref: ${{ inputs.ref }}

- name: Download test data
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: logql-bench-testdata-${{ steps.checkout.outputs.commit }}
path: ./pkg/logql/bench
Expand Down Expand Up @@ -123,7 +123,7 @@ jobs:
working-directory: ./pkg/logql/bench

- name: Upload results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always() # Upload results even if one of the benchmark tests fails
with:
name: logql-bench-results-${{ matrix.store }}-${{ steps.checkout.outputs.commit }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/logql-correctness.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
working-directory: ./pkg/logql/bench

- name: Upload test data
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: logql-bench-testdata-${{ steps.checkout.outputs.commit }}
path: ./pkg/logql/bench/data.zip
Expand All @@ -84,7 +84,7 @@ jobs:
ref: ${{ needs.generate-testdata.outputs.commit }}

- name: Download test data
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: logql-bench-testdata-${{ needs.generate-testdata.outputs.commit }}
path: ./pkg/logql/bench
Expand Down Expand Up @@ -120,7 +120,7 @@ jobs:
working-directory: ./pkg/logql/bench

- name: Upload results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always() # Upload results even if one of the test tests fails
with:
name: logql-bench-results-${{ matrix.store }}-${{ matrix.range_type }}-${{ matrix.remote_transport == true && 'remote' || 'local' }}-${{ needs.generate-testdata.outputs.commit }}
Expand Down
4 changes: 2 additions & 2 deletions clients/cmd/docker-driver/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ WORKDIR /src/loki
ARG GOARCH
RUN make clean && make BUILD_IN_CONTAINER=false GOARCH=${GOARCH} clients/cmd/docker-driver/docker-driver

FROM alpine:3.23.4@sha256:5b10f432ef3da1b8d4c7eb6c487f2f5a8f096bc91145e68878dd4a5019afde11 AS temp
FROM alpine:3.24.0@sha256:a2d49ea686c2adfe3c992e47dc3b5e7fa6e6b5055609400dc2acaeb241c829f4 AS temp

ARG GOARCH

RUN apk add --update --no-cache --arch=${GOARCH} ca-certificates tzdata

FROM --platform=linux/${GOARCH} alpine:3.23.4@sha256:5b10f432ef3da1b8d4c7eb6c487f2f5a8f096bc91145e68878dd4a5019afde11
FROM --platform=linux/${GOARCH} alpine:3.24.0@sha256:a2d49ea686c2adfe3c992e47dc3b5e7fa6e6b5055609400dc2acaeb241c829f4

COPY --from=temp /etc/ca-certificates.conf /etc/ca-certificates.conf
COPY --from=temp /usr/share/ca-certificates /usr/share/ca-certificates
Expand Down
2 changes: 1 addition & 1 deletion clients/cmd/fluent-bit/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ RUN go build \
-o clients/cmd/fluent-bit/out_grafana_loki.so \
/src/clients/cmd/fluent-bit

FROM fluent/fluent-bit:5.0.6@sha256:1abcf78fe8c9dee0c57fc2199693370a5a1f84e0af4716beddcd153b40cbbbb1
FROM fluent/fluent-bit:5.0.7@sha256:c96ee743cba9b1d5a38654931f411700af80bb7652697afbe67daad46cae237b

COPY --from=builder /src/clients/cmd/fluent-bit/out_grafana_loki.so /fluent-bit/bin
COPY clients/cmd/fluent-bit/fluent-bit.conf /fluent-bit/etc/fluent-bit.conf
Expand Down
2 changes: 1 addition & 1 deletion clients/cmd/logstash/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM logstash:9.4.2@sha256:37bba85d7c27ae42a429a77812ae33d493928ebee175de74bc1d6ba9a26e53b2
FROM logstash:9.4.2@sha256:648a781b7360736754a9f583f7819d166be9dcee42d272bbce7d67278f529398

USER logstash
ENV PATH /usr/share/logstash/vendor/jruby/bin:/usr/share/logstash/vendor/bundle/jruby/3.1.0/bin:/usr/share/logstash/jdk/bin:$PATH
Expand Down
69 changes: 68 additions & 1 deletion cmd/dataobj-inspect/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import (
"github.com/grafana/loki/v3/pkg/dataobj/sections/indexpointers"
"github.com/grafana/loki/v3/pkg/dataobj/sections/logs"
"github.com/grafana/loki/v3/pkg/dataobj/sections/pointers"
"github.com/grafana/loki/v3/pkg/dataobj/sections/postings"
"github.com/grafana/loki/v3/pkg/dataobj/sections/stats"
"github.com/grafana/loki/v3/pkg/dataobj/sections/streams"
)

Expand All @@ -27,7 +29,7 @@ type dumpCommand struct {
streamID *int
}

func (cmd *dumpCommand) run(c *kingpin.ParseContext) error {
func (cmd *dumpCommand) run(_ *kingpin.ParseContext) error {
for _, f := range *cmd.files {
cmd.dumpFile(f)
}
Expand Down Expand Up @@ -61,6 +63,10 @@ func (cmd *dumpCommand) dumpFile(name string) {
cmd.dumpStreamsSection(context.TODO(), offset, sec)
case logs.CheckSection(sec):
cmd.dumpLogsSection(context.TODO(), offset, sec)
case postings.CheckSection(sec):
cmd.dumpPostingsSection(context.TODO(), offset, sec)
case stats.CheckSection(sec):
cmd.dumpStatsSection(context.TODO(), offset, sec)
default:
fmt.Printf("unknown section: %s\n", sec.Type)
}
Expand Down Expand Up @@ -219,6 +225,67 @@ func (cmd *dumpCommand) dumpLogsSection(ctx context.Context, offset int, sec *da
}
}

func (cmd *dumpCommand) dumpPostingsSection(ctx context.Context, offset int, sec *dataobj.Section) {
postingsSec, err := postings.Open(ctx, sec)
if err != nil {
exitWithErr(err)
}
bold := color.New(color.Bold)
bold.Println("Postings section:")
bold.Printf("\toffset: %d, tenant: %s\n", offset, sec.Tenant)

r := postings.NewRowReader(ctx, postingsSec)
defer r.Close()
for r.Next() {
row := r.At()
switch row.Kind {
case postings.KindLabel:
bold.Printf("\t\t[Label] path: %s, section: %d, column: %s, value: %s, bitmap: %d bytes, uncompressedSize: %d, start: %s, end: %s\n",
row.ObjectPath, row.SectionIndex, row.ColumnName, row.LabelValue,
len(row.StreamIDBitmap), row.UncompressedSize,
time.Unix(0, row.MinTimestamp).UTC().Format(time.RFC3339Nano),
time.Unix(0, row.MaxTimestamp).UTC().Format(time.RFC3339Nano))
case postings.KindBloom:
bold.Printf("\t\t[Bloom] path: %s, section: %d, column: %s, bloom: %d bytes, bitmap: %d bytes, uncompressedSize: %d, start: %s, end: %s\n",
row.ObjectPath, row.SectionIndex, row.ColumnName,
len(row.BloomFilter), len(row.StreamIDBitmap), row.UncompressedSize,
time.Unix(0, row.MinTimestamp).UTC().Format(time.RFC3339Nano),
time.Unix(0, row.MaxTimestamp).UTC().Format(time.RFC3339Nano))
default:
fmt.Printf("\t\tunknown posting kind: %v\n", row.Kind)
}
}
if err := r.Err(); err != nil {
exitWithErr(err)
}
}

func (cmd *dumpCommand) dumpStatsSection(ctx context.Context, offset int, sec *dataobj.Section) {
statsSec, err := stats.Open(ctx, sec)
if err != nil {
exitWithErr(err)
}
bold := color.New(color.Bold)
bold.Println("Stats section:")
bold.Printf("\toffset: %d, tenant: %s\n", offset, sec.Tenant)

r := stats.NewRowReader(ctx, statsSec)
defer r.Close()
for r.Next() {
s := r.At()
bold.Printf("\t\tpath: %s, section: %d, sortSchema: %s, rows: %d, uncompressedSize: %d, start: %s, end: %s, labels:\n",
s.ObjectPath, s.SectionIndex, s.SortSchema, s.RowCount, s.UncompressedSize,
time.Unix(0, s.MinTimestamp).UTC().Format(time.RFC3339Nano),
time.Unix(0, s.MaxTimestamp).UTC().Format(time.RFC3339Nano))
for name, value := range s.Labels {
fmt.Printf("\t\t\t%s=%s\n", name, value)
}
}
if err := r.Err(); err != nil {
exitWithErr(err)
}
}

func addDumpCommand(app *kingpin.Application) {
cmd := &dumpCommand{}
dump := app.Command("dump", "Dump the contents of the data object.").Action(cmd.run)
Expand Down
67 changes: 0 additions & 67 deletions cmd/dataobj-inspect/go.mod

This file was deleted.

Loading
Loading