Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
94670c1
improve: add license headers to source files (#2980)
csviri Oct 9, 2025
aa153df
chore: version to 5.3.0-SNAPSHOT
csviri Oct 14, 2025
f84be3e
Annotation removal using locking (#3015)
shawkins Oct 30, 2025
6b4d387
improve: complete comparable resource version configs (#3027)
csviri Nov 13, 2025
77ac315
improve: run pr-s checks for v5.3 (#3042)
csviri Nov 17, 2025
d0b5dba
fix: rebase on main after release
csviri Dec 1, 2025
6281f43
fix(javadoc): invalid method ref blocks snapshot release (#3076)
csviri Dec 1, 2025
9c60e07
feat: record desired state in Context (#3082)
metacosm Dec 3, 2025
3c6bb72
improve: rename junit5 module to junit (#3081)
csviri Dec 4, 2025
167ce62
fix: delete empty files result of rebase on main (#3093)
csviri Dec 15, 2025
ac347cc
feat: ReconcileUtils for strongly consistent updates (#3106)
csviri Jan 15, 2026
dcdd111
Event filtering now records resource action and previous resource (#3…
csviri Jan 21, 2026
903fb87
improve: facelift samples to use ReconcileUtils (#3135)
csviri Jan 27, 2026
16378f5
improve: move compare resource version methods to internal utils (#3137)
csviri Jan 28, 2026
4b8037b
feat: move ReconcileUtils methods to ResourceOperations accessible fr…
csviri Feb 2, 2026
2218433
improve: KubernetesDependentResource uses resource operations directl…
csviri Feb 2, 2026
608cc95
feat: provide de-duplicated secondary resources stream on Context (#3…
metacosm Feb 3, 2026
80e7de4
refactor: avoid creating intermediate collections when unneeded (#3156)
metacosm Feb 5, 2026
572bbb2
improve: event filtering algorithm for multiple parallel updates (#3155)
csviri Feb 6, 2026
429c2c5
improve: prepare for removal of exitOnStopLeading from public API (#3…
metacosm Feb 6, 2026
a47e0fe
fix: typo (#3173)
metacosm Feb 19, 2026
d21cf5f
fix: incorrect logic by introducing createOrUpdate method (#3172)
metacosm Feb 19, 2026
2f1868d
chore: set next version to 999-SNAPSHOT (#3180)
metacosm Feb 23, 2026
f84c03e
feat: allow to skip namespace deletion in junit extension (#3178)
csviri Feb 23, 2026
fc23fef
improve: logging for resource filter cache (#3167)
csviri Feb 23, 2026
51ee0ff
fix: unify how resource information is added, prevent NPEs (#3185)
metacosm Feb 25, 2026
ecd076f
feat: emit MDCUtils.NO_NAMESPACE value when namespace is null (#3186)
metacosm Feb 26, 2026
bb01a06
improve: do not close infra client if same as client (#3187)
csviri Feb 26, 2026
7082ab8
feat: ReconcileUtils for strongly consistent updates (#3106)
csviri Jan 15, 2026
c01c287
feat: observability with otel and default grafana dashboard
csviri Feb 4, 2026
4d3a70f
wip
csviri Feb 4, 2026
e3bbc64
wip
csviri Feb 4, 2026
a1ac23d
wip
csviri Feb 4, 2026
43c64dd
wip
csviri Feb 8, 2026
fd0db41
wip
csviri Feb 8, 2026
eba66c6
wip
csviri Feb 8, 2026
b77cac9
wip
csviri Feb 9, 2026
c7748d1
wip
csviri Feb 9, 2026
10fe91e
wip
csviri Feb 9, 2026
d1d8ce1
wip
csviri Feb 9, 2026
a0933fb
wip
csviri Feb 9, 2026
8f48283
wip
csviri Feb 9, 2026
e1f9069
wip
csviri Feb 9, 2026
8c64c7a
wip
csviri Feb 9, 2026
5af6d5a
wip
csviri Feb 9, 2026
efd26d5
improve: micrometer metrics improvements
csviri Feb 9, 2026
c24c580
wip
csviri Feb 10, 2026
19c8aad
wip
csviri Feb 10, 2026
b9cea6e
wip
csviri Feb 10, 2026
8468d1e
wip
csviri Feb 10, 2026
374c7f2
wip
csviri Feb 10, 2026
f25cad1
wip
csviri Feb 10, 2026
94d77dc
wip
csviri Feb 11, 2026
b31039f
wip
csviri Feb 11, 2026
5a48baf
wip
csviri Feb 11, 2026
7c12b44
wip
csviri Feb 11, 2026
b4ed427
e2e test skeleton
csviri Feb 11, 2026
6fd6af6
wip
csviri Feb 12, 2026
f4d7016
wip
csviri Feb 17, 2026
357752b
wip
csviri Feb 21, 2026
0438611
wip
csviri Feb 27, 2026
fd049aa
wip
csviri Feb 27, 2026
822cf92
wip
csviri Feb 27, 2026
7b6f86c
wip
csviri Feb 27, 2026
1a48e38
wip
csviri Feb 27, 2026
f4b2882
wip
csviri Feb 27, 2026
08a780f
wip
csviri Feb 28, 2026
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
4 changes: 3 additions & 1 deletion .github/workflows/e2e-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ on:
paths-ignore:
- 'docs/**'
- 'adr/**'
branches: [ main, next ]
branches: [ main, next, v5.3 ]
push:
paths-ignore:
- 'docs/**'
- 'adr/**'
branches:
- main
- next
- v5.3

jobs:
sample_operators_tests:
Expand All @@ -24,6 +25,7 @@ jobs:
- "sample-operators/tomcat-operator"
- "sample-operators/webpage"
- "sample-operators/leader-election"
- "sample-operators/metrics-processing"
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ on:
paths-ignore:
- 'docs/**'
- 'adr/**'
- 'observability/**'
workflow_dispatch:
jobs:
check_format_and_unit_tests:
Expand Down
2 changes: 1 addition & 1 deletion bootstrapper-maven-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<parent>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>java-operator-sdk</artifactId>
<version>5.2.4-SNAPSHOT</version>
<version>999-SNAPSHOT</version>
</parent>

<artifactId>bootstrapper</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
</dependency>
<dependency>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>operator-framework-junit-5</artifactId>
<artifactId>operator-framework-junit</artifactId>
<version>${josdk.version}</version>
<scope>test</scope>
</dependency>
Expand Down
4 changes: 2 additions & 2 deletions caffeine-bounded-cache-support/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<parent>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>java-operator-sdk</artifactId>
<version>5.2.4-SNAPSHOT</version>
<version>999-SNAPSHOT</version>
</parent>

<artifactId>caffeine-bounded-cache-support</artifactId>
Expand All @@ -43,7 +43,7 @@
</dependency>
<dependency>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>operator-framework-junit-5</artifactId>
<artifactId>operator-framework-junit</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
Expand Down
29 changes: 29 additions & 0 deletions docs/content/en/docs/documentation/observability.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,35 @@ parts of reconciliation logic and during the execution of the controller:

For more information about MDC see this [link](https://www.baeldung.com/mdc-in-log4j-2-logback).

### MDC entries during event handling

Although, usually users might not require it in their day-to-day workflow, it is worth mentioning that
there are additional MDC entries managed for event handling. Typically, you might be interested in it
in your `SecondaryToPrimaryMapper` related logs.
For `InformerEventSource` and `ControllerEventSource` the following information is present:

| MDC Key | Value from Resource from the Event |
|:-----------------------------------------------|:-------------------------------------------------|
| `eventsource.event.resource.name` | `.metadata.name` |
| `eventsource.event.resource.uid` | `.metadata.uid` |
| `eventsource.event.resource.namespace` | `.metadata.namespace` |
| `eventsource.event.resource.kind` | resource kind |
| `eventsource.event.resource.resourceVersion` | `.metadata.resourceVersion` |
| `eventsource.event.action` | action name (e.g. `ADDED`, `UPDATED`, `DELETED`) |
| `eventsource.name` | name of the event source |

### Note on null values

If a resource doesn't provide values for one of the specified keys, the key will be omitted and not added to the MDC
context. There is, however, one notable exception: the resource's namespace, where, instead of omitting the key, we emit
the `MDCUtils.NO_NAMESPACE` value instead. This allows searching for resources without namespace (notably, clustered
resources) in the logs more easily.

### Disabling MDC support

MDC support is enabled by default. If you want to disable it, you can set the `JAVA_OPERATOR_SDK_USE_MDC` environment
variable to `false` when you start your operator.

## Metrics

JOSDK provides built-in support for metrics reporting on what is happening with your reconcilers in the form of
Expand Down
29 changes: 29 additions & 0 deletions docs/content/en/docs/migration/v5-3-migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: Migrating from v5.2 to v5.3
description: Migrating from v5.2 to v5.3
---


## Renamed JUnit Module

If you use JUnit extension in your test just rename it from:

```
<dependency>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>operator-framework-junit-5</artifactId>
<version>5.2.x<version>
<scope>test</scope>
</dependency>
```

to

```
<dependency>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>operator-framework-junit</artifactId>
<version>5.3.0<version>
<scope>test</scope>
</dependency>
```
4 changes: 2 additions & 2 deletions micrometer-support/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<parent>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>java-operator-sdk</artifactId>
<version>5.2.4-SNAPSHOT</version>
<version>999-SNAPSHOT</version>
</parent>

<artifactId>micrometer-support</artifactId>
Expand Down Expand Up @@ -58,7 +58,7 @@
</dependency>
<dependency>
<groupId>io.javaoperatorsdk</groupId>
<artifactId>operator-framework-junit-5</artifactId>
<artifactId>operator-framework-junit</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@

import static io.javaoperatorsdk.operator.api.reconciler.Constants.CONTROLLER_NAME;

@Deprecated
public class MicrometerMetrics implements Metrics {

private static final String PREFIX = "operator.sdk.";
Expand Down Expand Up @@ -208,6 +209,7 @@ public void cleanupDoneFor(ResourceID resourceID, Map<String, Object> metadata)
}

@Override
@Deprecated(forRemoval = true)
public void reconcileCustomResource(
HasMetadata resource, RetryInfo retryInfoNullable, Map<String, Object> metadata) {
Optional<RetryInfo> retryInfo = Optional.ofNullable(retryInfoNullable);
Expand All @@ -228,7 +230,8 @@ public void reconcileCustomResource(
}

@Override
public void finishedReconciliation(HasMetadata resource, Map<String, Object> metadata) {
public void successfullyFinishedReconciliation(
HasMetadata resource, Map<String, Object> metadata) {
incrementCounter(ResourceID.fromResource(resource), RECONCILIATIONS_SUCCESS, metadata);
}

Expand All @@ -240,7 +243,8 @@ public void reconciliationExecutionStarted(HasMetadata resource, Map<String, Obj
}

@Override
public void reconciliationExecutionFinished(HasMetadata resource, Map<String, Object> metadata) {
public void reconciliationExecutionFinished(
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
var reconcilerExecutions =
gauges.get(RECONCILIATIONS_EXECUTIONS + metadata.get(CONTROLLER_NAME));
reconcilerExecutions.decrementAndGet();
Expand All @@ -252,7 +256,7 @@ public void reconciliationExecutionFinished(HasMetadata resource, Map<String, Ob

@Override
public void failedReconciliation(
HasMetadata resource, Exception exception, Map<String, Object> metadata) {
HasMetadata resource, RetryInfo retry, Exception exception, Map<String, Object> metadata) {
var cause = exception.getCause();
if (cause == null) {
cause = exception;
Expand Down
Loading
Loading