There may be other issues describing this but with a brief search I didn't find any. Loki currently has de-duplication logic which follows these rules: Lines are removed from results as duplicates when: * Are in the same stream * They have the exact same timestamp to the nanosecond * Have the exact same log content Not related to this issue directly but a di
<!-- Please keep the structure below, or your issue may be closed. --> **Is your feature request related to a problem? Please describe.** I am running a java spring-boot application on AWS ECS and want to ship logs to loki/grafana. In order to have the java stack trace as a single log line in grafana I log as json to console using ```xml <encoder class="net.
importance 28@sschmiedleitneropentype/featuregood first issuecomponent/fluent-bit-pluginOriginal evidence ↗
Summary PRs #21849 (3.7.2) and #21848 (3.6.11) introduced a regression that causes complete data loss on S3-compatible storage that does not support the STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER value in the x-amz-content-sha256 header. Ingesters fail to flush chunks to object storage after 8 retries and silently drop data. Affected versions ``` ┌──────────
## Summary We currently have a linter rule that blocks usage of `sync/atomic` and forces us to use `go.uber.go/atomic` instead. This rule was originally added because `sync/atomic` required atomic operations on primitive types, which was considered error-prone. However, since **Go 1.19**, the standard library `sync/atomic` package now includes typed wrappers
> ℹ️ **Note** > > This PR body was truncated due to platform limits. This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: GitHub failure: second
## What happens With query sharding enabled, `avg_over_time(... | unwrap ...)` with a `by`/`without` grouping returns a value that is too low whenever some log lines in the range produce no unwrapped sample (missing field, non-numeric value). The unsharded path returns the correct value, so the same query gives two different answers depending on sharding. ##
## Problem Loki does not currently expose OCI Object Storage as a supported Thanos object-store backend. OCI users therefore have to use the S3-compatible API and static Customer Secret Keys. This prevents using OCI-native authentication mechanisms such as: - OKE Workload Identity - Instance Principal ## Proposed solution Add `oci` to Loki's Thanos object-st
- Default mode is mmap (existing implementation) - New mode is stream - New mode is not yet implemented - it delegates all calls to mmap implementation. - Extract Reader interface, renaming existing implementation to ByteSliceReader and adding new StreamReader. - This is a PR that doesn't do much because it's a lot of plumbing! **What this PR does / why we n
**What this PR does / why we need it**: Automatic stream sharding splits one stream into shards by adding an internal label (`__stream_shard__`, and `__time_shard__` for time-based sharding). When a client resends a log line, the copy can be assigned to a different shard, so the two copies land in different streams and are not deduplicated at query time (#18
## What this PR does / why we need it Loki's Kafka client hardcodes **SASL PLAIN** as the only authentication mechanism. Brokers configured with `sasl.enabled.mechanisms=SCRAM-SHA-256` or `SCRAM-SHA-512` only (e.g., AWS MSK, Confluent Cloud) immediately reject the handshake with `UNSUPPORTED_SASL_MECHANISM`, making Loki impossible to use with those providers
**What this PR does / why we need it**: Concurrent sample queries can share one `QueryPlan` AST between ingester fan-out and store evaluation. `DoUntilQuorum` may return while canceled ingester RPCs are still serializing the request. Store-side extractor construction sorts grouping slices in place, so protobuf sizing and marshaling can observe different AST
**What this PR does / why we need it**: _This draft PR is not intended to be proposed for merge, but just to show a prototype I'm working on and run tests in CI._ In this prototype I'm introducing a different order to consume samples when running LogQL metric queries (currently focused on `<decomposable aggr>_over_time()` cases). See `docs/internal/logql-eng
**What this PR does / why we need it**: The distributor always builds the ingester write set with `ring.WriteNoExtend`. When an ingester is briefly non-`ACTIVE` (for example `LEAVING` during a graceful scale-down or a rollout) it is dropped from the replica set with no replacement. If there is no quorum slack (RF=2, or RF=3 when several ingesters change at o
**What this PR does / why we need it**: This updates compaction planning to treat objects are pre-existing indivisible runs when planning. * It isn't possible to consistently re-detect Runs from just looking at the sections, which meant that the planning phase tends to move data around rather than compact it. Said differently, without this change, compaction
**What this PR does / why we need it**: This runs 3x index compactions for every log merge we do. Each merge reduces Runs by K, but each log merge increases it again by K * (The K can be different for index & log merge, but in reality they are in the same ballpark) This means index-compaction doesn't make progress if it flip-flops 1-1. This PR improves that
**What this PR does / why we need it**: Wires up a separate configuration for logsobj vs indexobj so we don't need to use the same for both. From experience, these are similar but we use smaller page sizes on index objects I updated the defaults against the latest recommendations. This ends up wiring all the way through multiple layers so there a lot of smal
**What this PR does / why we need it**: Fixes three related bugs in `pkg/iter`'s chaining iterators where a failing or drained sub-iterator was silently dropped instead of being surfaced or closed: 1. `nonOverlappingIterator`/`nonOverlappingSampleIterator.Next()` advanced past a sub-iterator that failed with a real read error instead of stopping, and `Err()`
**What this PR does / why we need it**: This pull request updates the `Loki / Write Resources` dashboard. <img width="1380" height="431" alt="Screenshot 2026-08-12 at 11 43 13" src="https://github.com/user-attachments/assets/3b5dbea2-17b2-411d-96ef-e67d8d847181" /> <img width="1372" height="424" alt="Screenshot 2026-08-12 at 11 43 23" src="https://github.com
**What this PR does / why we need it**: S3 throttling responses (`SlowDown`, `503`, `429`) were not being treated as retryable when the object client runs on the thanos/objstore backend (`use_thanos_objstore: true`), which is the default for our object stores. `IsStorageThrottledErr` only matched the AWS SDK's `smithy.APIError`, but the thanos S3 client is b
- Remove Symbols() and SymbolTableSize() from Reader interface as it's not actually used - Implement streamSymbols - Test that it behaves the same as Symbols in index.go **What this PR does / why we need it**: Part of our effort to move away from mmap in index gateways. **Which issue(s) this PR fixes**: N/A **Special notes for your reviewer**: This is a reim
**What this PR does / why we need it**: Updates the sample storage examples to include Thanos configuration format using `object_store` as requested by @bboreham. This PR - Adds four new examples of Thanos storage configuration files - Updates existing examples to better indicate <REPLACEMENT_VALUES> - Removes some extra lines **Special notes for your review
- Add optimisation to FilePoolDecbufFactory to cache fileSize - Cache all label names in memory in streamSymbols (same as mmap) - Add isLabelName to streamPostings, used to populate that cache in streamSymbols - These two optimisations make the new Series and ChunkStats implementations more efficient. **What this PR does / why we need it**: Part of our effor
**What this PR does / why we need it**: With sharding enabled, a grouped `avg_over_time(... | unwrap x)` returns a value that is too low whenever a log line yields no unwrapped sample. The shard mapper decomposes the average into a sum leg over samples divided by a count leg over lines, and the count leg counts lines the numerator never saw. A line yields an
Fixes #20051 The "pipeline errors" link in the label filter expression section pointed to `../#pipeline-errors`, which resolves to a non-existent anchor. The actual section heading in this file is `## Log pipeline`, so the correct link anchor is `#log-pipeline`. This is a one-character fix in the markdown link target.
## Summary The index gateway has no bound on concurrent request execution: in-flight requests pile up until the process locks up and can no longer schedule readiness probes or error responses. This PR ports the admission-control mechanism Mimir runs on its store-gateway, using the same dskit building blocks: at most N requests execute at once, excess request
**What this PR does / why we need it**: I previously tried to fix this in https://github.com/grafana/loki/pull/19011 but I now realize that it wasn't 100% correct. It solved an ephemeral issue that was remedied on the next release. Long term we need another newline in the release script. Demonstrated through a git-diff of the output. ``` ## Unreleased + ## 6
**What this PR does / why we need it**: - Consolidates port determination logic from `manifest` package to `handlers` - Adds Service watcher that triggers reconciliation when object storage Services change - NetworkPolicies now update automatically when Service ports change **Which issue(s) this PR fixes**: Fixes [LOG-8768](https://redhat.atlassian.net/brows
**What this PR does / why we need it**: `SingleTenantQuerier.SelectLogs` copied `QueryRequest` before splitting ingester and store intervals, but the copy still shared its `QueryPlan`. Store pipeline construction mutates that AST in place through `reorderStages` and `combineFilters`. A canceled or hedged ingester request can still be serializing the same pla
**What this PR does / why we need it**: When the query-frontend rejects a query for exceeding `max_query_bytes_read` (`MaxQueryBytesRead`) or `MaxQuerierBytesRead`, it logs a `Query exceeds limits` warning containing `limit_name`, `limit_bytes`, and `resolved_bytes` - but not the query itself or its hash. Because the rejection happens before execution, no `m
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/prometheus/prometheus](https://redirect.github.com/prometheus/prometheus) | require | digest | `ab225f6` → `3c82a95` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/23439) for more information.
**What this PR does / why we need it**: Implement streaming reading of header and TOC as part of the process of moving away from mmap in the index gateway. I have run this in a pre-production environment for a few minutes and not seen any noticeable changes in latency, resource usage, etc. **Special notes for your reviewer**: This PR is best reviewed commit-
**What this PR does / why we need it**: This PR tidies up two things left over from #23681, which folded `chunks-inspect` into the root Go module and listed both of these as deliberate follow-ups. * Reports per-block parse errors instead of quietly dropping them, and returns the entries recovered before the corruption. * Adds some basic test coverage for sai
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/grafana/objstore](https://redirect.github.com/grafana/objstore) | replace | digest | `becd33c` → `ec72e5a` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/23439) for more information. --- ### C
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [logstash](https://hub.docker.com/_/logstash) ([source](https://redirect.github.com/elastic/dockerfiles)) | final | digest | `7bf7931` → `bdb7d35` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/23439) for
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [golang](https://hub.docker.com/_/golang) ([source](https://redirect.github.com/docker-library/golang)) | stage | digest | `3aff665` → `705e964` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/23439) for m
- Remove PostingsRanges() from interface as it's unused - Implement Postings for cases where a fingerprint filter isn't given - All is derivative of existing implementation, so can be reviewed against that. And also is tested against the existing implementation so we know it behaves similarly. **What this PR does / why we need it**: Part of our effort to mov
- Read it into memory on open (like existing mmap implementation). - Implement Postings(...) for non-nil fingerprint filters. - Test against existing implementation. - Second commit makes changes across a few of the files I've been working on to prevent leaking file descriptors when creating a decbuf fails. This problem was identified by cursor's review of t
- Implement LabelValues, LabelNames, LabelValueFor and LabelNamesFor - Test these against the existing implementation - Remove mmap fallback from stream_reader.go as it's no longer needed **What this PR does / why we need it**: Part of our effort to move away from mmap in index gateways. **Which issue(s) this PR fixes**: N/A. **Special notes for your reviewe
**What this PR does / why we need it**: This pull request fixes a number of cases where large requests were failed with a 400 instead of a 413 status code. This seems inconsequential, but it meant a number of these cases were invisible on provisioned Grafana Cloud dashboards that customers use to track their ingest. **Which issue(s) this PR fixes**: Fixes #<
**What this PR does / why we need it**: - Removes `LokiStorageSlowWrite` and `LokiStorageSlowRead` alerts - Removes the `job_le_namespace_operation:loki_boltdb_shipper_request_duration_seconds_bucket` recording rule - Rewrites the retention dashboard compaction panels from `loki_boltdb_shipper_compact_tables_operation_*` to `loki_compactor_apply_retention_*`
**What this PR does / why we need it**: Updates the Loki Helm charts to keep pace with updates in the Grafana-community repo. Regenerates the Helm Reference file. Replaces relative links with full URLs. **Special notes for your reviewer**: Planned with AI (Sonnet 5) Written with AI (Sonnet 5) Validated with a different model (Opus 5)