Skip to content

fix(deps): update fabric8-kubernetes-client monorepo to v8 - #684

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-fabric8-kubernetes-client-monorepo
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-fabric8-kubernetes-client-monorepo

Conversation

@renovate

@renovate renovate Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
io.fabric8:kubernetes-httpclient-okhttp 7.6.1 → 8.0.0 age confidence
io.fabric8:kubernetes-server-mock 7.6.1 → 8.0.0 age confidence
io.fabric8:kubernetes-client 7.6.1 → 8.0.0 age confidence

Warning

Some dependencies could not be looked up. Check the warning logs for more information.


Release Notes

fabric8io/kubernetes-client (io.fabric8:kubernetes-httpclient-okhttp)

v8.0.0

Compare Source

Bugs
  • Fix #​8105: requests hanging when a retry action, retry decision, or response cleanup throws an exception.
  • Fix #​7374: (crd-generator) Generated CRDs no longer prune or reject what the client writes: Object, raw Map, List<Object>, raw collection, @JsonUnwrapped and polymorphic properties keep their content, and date and time types only declare a format their values match (Duration, LocalDateTime and the partial types lose date-time). Optional properties get their value type's schema instead of preserving unknown fields, see the migration guide
  • Fix #​6779: (httpclient-jetty) 401 responses without a WWW-Authenticate header, which is how the API server sends them, are returned with their body instead of failing with "HTTP protocol violation: Authentication challenge without WWW-Authenticate header"
  • Fix #​6779: (httpclient-jetty, httpclient-vertx, httpclient-vertx-5) A proxy password containing a colon, or a proxy URL with a user and no password, is now used to authenticate with the proxy, instead of falling back to a Proxy-Authorization request header that HTTPS requests carry through the proxy tunnel to the API server
  • Fix #​6779: A proxy username configured without a password is sent with an empty password instead of null, and a proxy URL with a user and no password as user: instead of user (RFC 7617)
  • Fix #​8134: (httpclient-jetty) A failed WebSocket handshake no longer calls the listener's onError, the returned future already fails with it. When the handshake was retried, this ended watches and exec/attach sessions before the retry could open them
  • Fix #​8134: (httpclient-jetty) Credentials for a SOCKS5 proxy are sent to it
  • Fix #​8134: (httpclient-jetty, httpclient-vertx) Proxy credentials that aren't Basic user:password are only added as a Proxy-Authorization header to the requests an HTTP proxy reads. HTTPS and WSS requests, WebSockets that Vert.x tunnels, and requests through a SOCKS proxy carried them to the API server
  • Fix #​8134: (httpclient-vertx-5) Proxy credentials that aren't Basic user:password are sent to the HTTP proxy by Vert.x, on the CONNECT too, so HTTPS and WebSocket requests through a proxy that requires them work, and they no longer reach the API server
  • Fix #​8134: (httpclient-okhttp) A 407 from the API server (through pods/proxy for example) is no longer answered with the proxy credentials, which went through the proxy tunnel to it, and credentials the proxy rejected aren't sent again
  • Fix #​8140: (httpclient-vertx-5) A request whose connection is closed before it could be written fails with an IOException, and is retried, instead of hanging until the request timeout (seen on Windows)
  • Fix #​8134: (httpclient-jetty) Cookies set by a response are no longer sent back on later requests and WebSocket upgrades, like with the other HttpClient implementations
  • Fix #​8109: A java.sql.Date written as yyyy-MM-dd is read as a local date instead of the previous day west of UTC. Year, Month, java.sql.Date and Locale keep their 7.x wire format, mappers you build yourself need the new Jackson2JdkTypesModule, see the migration guide
  • Fix #​8109: (crd-generator) byte[], ByteBuffer, char[], Year and java.sql.Date schemas match what the client writes (byte[] and ByteBuffer are format: byte strings), so the API server no longer rejects them. @PrinterColumn on a LocalDate is a string column instead of a date column that showed <invalid>
  • Fix #​8008: (httpclient-vertx-5) Requests with an InputStream body and Expect: 100-continue (binary builds) no longer hang, and an InputStream body of known length is sent with Content-Length instead of chunked
  • Fix #​8139: (httpclient-okhttp) WebSockets answer the server's Close frame even when the listener doesn't, so port forwarding and custom listeners release the connection instead of waiting for the server to drop it
  • Fix #​8152: (httpclient-vertx, httpclient-vertx-5, httpclient-jetty, httpclient-jdk) WebSockets send a ping every Config#websocketPingInterval (30s by default), like OkHttp already did, so load balancers that close idle connections no longer drop quiet watches
Improvements
  • Fix #​8109: (crd-generator) int/Integer and long/Long properties get format: int32 and format: int64, like controller-gen
  • Fix #​7987: (kubernetes-client-api) withShardSelector accepts a typed ShardSelector (ShardSelector.builder().addShard(0, 4).addShard(2, 4).build()) next to the raw expression String, so the shardRange(...) CEL grammar and its hexadecimal bounds don't have to be written by hand
Dependency Upgrade
  • Fix #​7374: Upgrade Jackson from 2.x to 3.2.1
  • Fix #​8096: bump cert-manager from 1.20.2 to 1.21.2
  • Fix #​8098: bump chaos-mesh api from 4db47f5 to d70b66a
  • Fix #​8086: bump cluster-api from 1.12.2 to 1.13.6
  • Fix #​8101: bump cluster-api from 1.13.6 to 1.14.2
  • Fix #​8101: bump cluster-api-provider-metal3 from 1.13.0 to 1.14.0
  • Fix #​8133: bump controller-runtime from 0.19.7 to 0.23.3
  • Fix #​8142: bump controller-runtime from 0.23.3 to 0.25.1
  • Fix #​8086: bump gateway-api from 1.6.1 to 1.6.2
  • Fix #​8127: bump istio.io/client-go from 1.30.0 to 1.31.0
  • Fix #​8148: bump openshift/api from 1cb53e3 (release-4.19) to 231177c (release-4.22)
  • Fix #​8148: bump openshift/cloud-credential-operator from 0e03b7a to 5c4a396
  • Fix #​8148: bump openshift/cluster-network-operator from 698e349 to 61de77e
  • Fix #​8148: bump openshift/cluster-node-tuning-operator from 2ed182b to 039bae9
  • Fix #​8148: bump openshift/hive/apis from 2d25383 to 8104fcf
  • Fix #​8148: bump openshift/installer from 1.4.21-pre to 1.4.22-ec5
  • Fix #​6779: bump Jetty from 11.0.26 to 12.1.13
  • Fix #​8086: bump k8s.io/api from 0.35.2 to 0.35.8
  • Fix #​8142: bump k8s.io/api from 0.35.8 to 0.37.0
  • Fix #​8086: bump k8s.io/apiextensions-apiserver from 0.36.1 to 0.37.0
  • Fix #​8086: bump k8s.io/apimachinery from 0.36.1 to 0.37.0
  • Fix #​8086: bump k8s.io/autoscaler/vertical-pod-autoscaler from 1.7.0 to 1.7.1
  • Fix #​8086: bump k8s.io/client-go from 0.35.2 to 0.35.8
  • Fix #​8142: bump k8s.io/client-go from 0.35.8 to 0.37.0
  • Fix #​8142: bump k8s.io/cloud-provider from 0.35.8 to 0.37.0
  • Fix #​8142: bump k8s.io/csi-translation-lib from 0.35.8 to 0.37.0
  • Fix #​8086: bump k8s.io/kube-openapi from 0.0.0-20260501160325-927ab1f70cd6 to 0.0.0-20260821135717-be32def86098
  • Fix #​8142: bump k8s.io/kube-scheduler from 0.35.8 to 0.37.0
  • Fix #​8086: bump k8s.io/metrics from 0.36.1 to 0.37.0
  • Fix #​8142: bump k8s.io/mount-utils from 0.35.8 to 0.37.0
  • Fix #​8118: bump knative.dev/caching from 0.0.0-20260422140616-453ad996bbe2 to 0.0.0-20260821014320-af6341f3ab2b
  • Fix #​8118: bump knative.dev/eventing from 0.49.1 to 0.50.0
  • Fix #​8118: bump knative.dev/eventing-github from 0.49.1 to 0.50.0
  • Fix #​8118: bump knative.dev/eventing-gitlab from 0.49.1 to 0.50.0
  • Fix #​8118: bump knative.dev/eventing-kafka-broker from 0.49.1 to 0.50.1
  • Fix #​8118: bump knative.dev/networking from 0.0.0-20260529061306-c8de379770b9 to 0.0.0-20260921014731-e39778429a0f
  • Fix #​8118: bump knative.dev/pkg from 0.0.0-20260422015212-ec452872dcc1 to 0.0.0-20260918182429-5dc1978f0042
  • Fix #​8118: bump knative.dev/serving from 0.49.1 to 0.50.0
  • Fix #​8133: bump open-cluster-management.io/governance-policy-propagator from 0.18.0 to 0.20.0
  • Fix #​8126: bump prometheus-operator from 0.91.0 to 0.94.0
  • Fix #​8133: bump stolostron/discovery from 6a13204 to ea34ca3
  • Fix #​8133: bump stolostron/klusterlet-addon-controller from 0d7e21c to 5341d76
  • Fix #​8133: bump stolostron/multicluster-observability-operator from 3a17a1a to 553f19c
  • Fix #​8133: bump stolostron/multiclusterhub-operator from c3e46b4 to 30a5420
  • Fix #​8133: bump stolostron/search-v2-operator from 030a382 to 8d84710
  • Fix #​8100: bump tektoncd/pipeline from 1.12.0 to 1.16.0
  • Fix #​8100: bump tektoncd/triggers from 0.36.0 to 0.37.0
  • Fix #​8097: bump volcano.sh/apis from 1.11.0 to 1.15.2
  • Fix #​8050: (karaf) The Karaf feature bundles Aries SPI-Fly 1.3.7 (from 1.3.0) and ASM 9.10.1 (from 8.0.1), the versions required to weave Java 17 bytecode
New Features
  • Fix #​8041: Typed DSL for the resources added in Kubernetes 1.37: certificates().v1().podCertificateRequests(), dynamicResourceAllocation().v1().deviceTaintRules(), storageMigration().v1().storageVersionMigrations() and scheduling().v1beta1() podGroups() and workloads(), plus certificates().v1beta1().podCertificateRequests() and storageMigration().v1beta1().storageVersionMigrations(). kubernetes-model-policy also ships the lifecycle.k8s.io/v1alpha1 model (Eviction and EvictionRequest)
Note: Breaking changes
  • Check detailed migration documentation for breaking changes in 8.0.0
  • Fix #​8041: (kubernetes-client-api) runtimeClasses() and network().ingresses() (and network().ingress()) use the v1 models instead of v1beta1 ones Kubernetes no longer serves, see the migration guide
  • Fix #​7374: Moved to Jackson 3 (tools.jackson coordinates and packages). The default serialization keeps the Jackson 2 behavior for custom types, see the migration guide
  • Fix #​7987: (kubernetes-client-api) Filterable#withShardSelector also accepts a typed ShardSelector, so a literal withShardSelector(null) no longer compiles, see the migration guide
  • Fix #​8031: (crd-generator) Removed the deprecated CRD Generator v1 (crd-generator-api and crd-generator-apt). Migrate to crd-generator-api-v2 with the Maven plugin, the CLI tool, or the Gradle build script recipe, see the migration guide
  • Fix #​8009: Moved Java baseline from 11 to 17. In addition to the runtime requirement, the Maven plugins, the Gradle plugin and the annotation processor now require a Java 17+ JVM to run the build, and the OSGi bundles declare osgi.ee=JavaSE 17
  • Fix #​8050: (karaf) The kubernetes-karaf feature repository no longer defines its own scr feature. kubernetes-client now depends on the scr feature provided by the Karaf distribution, which supplies the Declarative Services API bundles and the scr:* shell commands
  • Fix #​8142: (knative) Serving RevisionSpec replaces workloadRef with schedulingGroup and adds evictionResponders, like the core PodSpec since Kubernetes 1.37
  • Fix #​8133: (open-cluster-management) DiscoveredClusterSpec drops owner and DiscoveredClusterCondition drops lastUpdateTime
  • Fix #​8148: (openshift-model) Model class io.fabric8.openshift.api.model.customresourcestatus.conditions.v1.Condition removed, Hive ClusterDeploymentCustomizationStatus conditions use the Kubernetes Condition
  • Fix #​8148: (openshift-model-config) ClusterImagePolicySpec and ImagePolicySpec policies are ImageSigstoreVerificationPolicy and their roots of trust ImagePolicyFulcioCAWithRekorRootOfTrust, ImagePolicyPKIRootOfTrust and ImagePolicyPublicKeyRootOfTrust. Model classes FulcioCAWithRekor, PKI, Policy and PublicKey removed
  • Fix #​8148: (openshift-model-config) GCPPlatformStatus drops serviceEndpoints, model class GCPServiceEndpoint removed
  • Fix #​8148: (openshift-model-hive) oVirt support removed: ClusterDeprovisionPlatform, MachinePoolPlatform and Platform drop ovirt, model classes OvirtClusterDeprovision and the io.fabric8.openshift.api.model.hive.ovirt.v1 package removed
  • Fix #​8148: (openshift-model-hive) vSphere MachinePool.osDisk uses the installer io.fabric8.openshift.api.model.installer.vsphere.v1.OSDisk, model class io.fabric8.openshift.api.model.hive.vsphere.v1.OSDisk removed. The module now depends on openshift-model-installer, openshift-model-machine and openshift-model-operator
  • Fix #​8148: (openshift-model-installer) GCP PSCEndpoint drops region
  • Fix #​8148: (openshift-model-machineconfiguration) v1alpha1 model classes MachineConfigNode, PinnedImageSet and their related types removed, use the v1 ones
  • Fix #​8133: (open-cluster-management) MultiClusterHubSpec drops customCAConfigmap, enableClusterBackup, enableClusterProxyAddon, hive, ingress and separateCertificateManagement. Model classes BackupConfig, ExternalDNSAWSConfig, ExternalDNSConfig, ExternalDNSGCPConfig, FailedProvisionConfig, HiveConfigSpec, HiveConfigStatus, IngressSpec and VeleroBackupConfig removed
  • Fix #​8133: (open-cluster-management) Observability PlatformMetricsSpec and UserWorkloadMetricsSpec replace collection with default (PlatformMetricsCollectionSpec and UserWorkloadMetricsCollectionSpec removed), and PlatformNamespaceRightSizingRecommendationSpec is renamed to PlatformRightSizingRecommendationSpec
  • Fix #​8100: (tekton) Model classes Template and AffinityAssistantTemplate moved from package io.fabric8.tekton.pod to io.fabric8.tekton.unversioned, since tekton pipeline 1.16.0 declares them as +versionName=unversioned
  • Fix #​6779: (httpclient-jetty) Moved from Jetty 11 to Jetty 12.1, see the migration guide
  • Fix #​8008: kubernetes-client and openshift-client default to the Vert.x 5 HttpClient (kubernetes-httpclient-vertx-5) instead of Vert.x 4 (kubernetes-httpclient-vertx), see the migration guide

v7.9.0

Compare Source

Bugs
  • Fix #​8024: (httpclient-vertx-5) WebSocket operations (exec/attach/portForward/WebSocket-backed watches) on a derived client - one produced by calling newBuilder()/build() on an already-built HttpClient - no longer fall back to Vert.x's bare WebSocketClient defaults. Vertx5HttpClientBuilder.build()'s short-circuit path for derived clients reused the original client's plain HTTP connection (with its configuration intact) but always created a brand-new WebSocketClient with no options at all, discarding both the trust/key material (so TLS verified against the JVM default trust store instead of the configured cluster CA) and the configured limits (maxFrameSize/maxMessageSize fell back to 64 KiB/256 KiB instead of unlimited, and maxConnections to 50 instead of 8192, so oversized exec/attach messages were silently dropped even on plain HTTP). This affects kubernetes-httpclient-vertx-5 only, which is opt-in - the bundled default kubernetes-httpclient-vertx (Vert.x 4) serves WebSockets from the same client it reuses when deriving and was never affected - and it is present in 7.6.0 through 7.8.0. Derivation happens more often than it looks: OpenShiftClientImpl derives on every adapt(OpenShiftClient.class) to install its OAuth token-refresh interceptor, OpenShiftOAuthInterceptor derives on every token refresh, and BaseClient#newClient derives whenever a differing RequestConfig is set. Derived clients now reuse the original's WebSocketClient outright, the same way they already reused its HTTP client, so they can no longer drift from it and no second transport is allocated per derivation. Note that sharing the transport also means closing any client in a derived family closes it for the whole family: close() on a client obtained from adapt(OpenShiftClient.class) now ends WebSocket operations on the client it was derived from as well, which is already what happened to that client's HTTP requests and what the other four implementations do. Nothing usable is lost, since the original's HTTP client was closed regardless; what changes is that the per-derivation WebSocketClient is no longer left behind unclosed
  • Fix #​8029: (httpclient-vertx-5, httpclient-jetty) WebSocket connections now honor the configured proxy, so exec/attach/portForward and WebSocket-backed watches no longer connect straight to the API server and bypass a mandated egress proxy. Both implementations serve WebSockets from a transport separate from the HTTP client (a Vert.x 5 WebSocketClient, and a second Jetty HttpClient behind the WebSocketClient) and neither was given the proxy configuration; Jetty's WebSocket transport now also receives the proxy BasicAuthentication entry. The OkHttp, JDK and Vert.x 4 modules were unaffected because a single client serves both. On httpclient-vertx-5 the configured connect timeout was not applied to the WebSocket client either, so a WebSocket connect could hang well past it. One consequence worth calling out: when the proxy credentials cannot be decoded - HttpClientUtils.decodeBasicCredentials returns null for anything that is not Basic, or whose decoded value does not split into exactly two :-separated parts, so a proxy password containing a colon is enough - the client falls back to stamping Proxy-Authorization on the request instead of configuring it on the transport. Such WebSocket connections now reach the proxy and are rejected with a 407 rather than silently completing straight to the API server, so a setup that appeared to work only because it was bypassing the proxy will now fail
  • Fix #​7807: (kube-api-test) The KUBE_API_TEST_STARTUP_TIMEOUT environment variable is now parsed instead of throwing ClassCastException on every use — the value (always a String) was passed to Class.cast() for an Integer/Boolean target, which only widens reference types and never parses, so the timeout could not be configured via environment at all. A new startupTimeout attribute on @EnableKubeAPIServer (e.g. @EnableKubeAPIServer(startupTimeout = 180000)) allows overriding it declaratively, and all three configuration paths (annotation, builder, env var) now reject non-positive values
  • Fix #​7983: (mockwebserver) WebSocket upgrades are now performed synchronously from the Vert.x request handler instead of from the asynchronous HttpServerRequest#body() callback. Deferring the upgrade let the request end event be processed first, so HttpServerRequest#toWebSocket() intermittently threw IllegalStateException: Request has already been read and the upgrade was lost (surfacing as flaky exec/attach mock-server tests). Upgrade requests carry no body, so they are detected via the Upgrade header and upgraded before the request is read; the asynchronous path is unchanged for regular HTTP requests
  • Fix #​7955: (java-generator) Malicious CRD schema values can no longer inject executable code into the generated Java sources. Schema-controlled values (enum values, CRD group/version/names, property names, descriptions and defaults) are emitted as fully escaped Java string literals, so a value carrying a Unicode-escaped quote cannot break out of its literal once javac decodes it. As a defense in depth, each generated class is also re-parsed and structurally validated before it is written (with Java Unicode escape preprocessing enabled to match javac), aborting generation on any residual structural mismatch
  • Fix #​8028: (openshift-model, kube-api-test) No package is shipped by two artifacts anymore, so each pair can be placed on the JPMS module path together. openshift-model no longer bundles the io.fabric8.openshift.api.model.config.* classes that openshift-model-config owns (its Export-Package wildcard inlined them from that dependency); they still reach consumers through it. Fabric8ClientInjectionHandler moved to io.fabric8.kubeapitest.junit.inject
Improvements
Dependency Upgrade
  • Fix #​8033: bump gateway-api from 1.5.1 to 1.6.1
New Features
  • Fix #​7752: Support for Kubernetes v1.37.0 (Garhwal)
  • Fix #​8033: gateway-api model gains v1.TCPRoute and v1.UDPRoute (both graduated from v1alpha2 upstream in gateway-api v1.6.0). The v1alpha2 types remain available, but upstream has deprecated them and will remove them in a future release, so new code should use the v1 types
Note: Breaking changes
  • Fix #​7752: Kubernetes model API removals (removed upstream in Kubernetes v1.37.0). The following API versions have been completely removed from Kubernetes and are no longer available in the client:
    • certificates.k8s.io/v1alpha1/ClusterTrustBundle → use certificates.k8s.io/v1 or v1beta1
    • networking.k8s.io/v1beta1/IPAddress → use networking.k8s.io/v1
    • networking.k8s.io/v1beta1/ServiceCIDR → use networking.k8s.io/v1
    • storage.k8s.io/v1beta1/VolumeAttributesClass → use storage.k8s.io/v1
    • scheduling.k8s.io/v1alpha2 (entire API version, 28 types) → use v1alpha3 or v1beta1
  • Fix #​7752: VolumeMount constructor signature changed (Kubernetes v1.37.0 added bindMountOptions field). The canonical constructor now takes bindMountOptions (List) as its first parameter. Builder usage (new VolumeMountBuilder().with...()) is unaffected
  • Fix #​8033: gateway-api model v1.SessionPersistence no longer exposes idleTimeout (removed upstream in gateway-api v1.6.0). Besides the field, this removes getIdleTimeout()/setIdleTimeout(), collapses the canonical constructor from five arguments to four, and drops SessionPersistenceFluent.withIdleTimeout()/getIdleTimeout()/hasIdleTimeout(), so the builder form (withNewSessionPersistence().withIdleTimeout(...)) no longer compiles. There is no runtime data loss: the class keeps its @JsonAnyGetter/@JsonAnySetter, and both the fluent and the builder carry additionalProperties through, so JSON or YAML still containing idleTimeout continues to deserialize and re-serialize intact
  • Fix #​8028: (kube-api-test) Fabric8ClientInjectionHandler moved to io.fabric8.kubeapitest.junit.inject. It is resolved through ServiceLoader, so only code naming the class directly is affected
  • Fix #​8028: (openshift-model) The bundle no longer exports or contains io.fabric8.openshift.api.model.config.*. Maven consumers are unaffected (openshift-model-config is a compile dependency), but OSGi deployments importing those packages must install the openshift-model-config bundle, which the openshift-client Karaf feature already does

v7.8.0

Compare Source

Bugs
  • Fix #​7953: (httpclient-jdk) bodyless requests now preserve the requested HTTP method instead of silently defaulting to GET. JdkHttpClientImpl.requestBuilder only called HttpRequest.Builder.method(...) inside the body != null branch, so a bodyless DELETE/POST/PUT/PATCH (such as client.raw(uri, "DELETE", null)) was sent as GET on the JDK backend; the method is now set with BodyPublishers.noBody() when there is no body, matching the OkHttp, Jetty and Vert.x backends
  • Fix #​7435: (kubernetes-client) A SharedIndexInformer's periodic resync no longer stops permanently and silently when a single resync cycle throws. DefaultSharedIndexInformer.scheduleResync runs the resync through Utils.scheduleAtFixedRate, whose self-rescheduling chain re-arms the next cycle only when the previous one completes normally; an uncaught exception completed the (unobserved) resyncFuture exceptionally and the resync was never scheduled again, with no log, while the independent watch kept isWatching() reporting true (a restart was required to recover). The resync command now catches and WARN-logs the failure so the schedule fires again at the next interval
  • Fix #​7933: (kubernetes-client-api) Deterministic TLS trust failures (untrusted cert, expired cert, hostname mismatch) are now classified as terminal and fail fast instead of being retried by the shared StandardHttpClient.shouldRetry backoff loop (~19 s drain). The classifier walks both getCause() and getSuppressed() trees for CertificateException, CertPathValidatorException, CertPathBuilderException, and SSLPeerUnverifiedException. Affects all five HTTP client modules (jdk, jetty, okhttp, vertx-4, vertx-5) on both the HTTP request and WebSocket connect paths
  • Fix #​7867: (kubernetes-server-mock) WatchEventsListener now buffers outgoing watch events that are scheduled before Vert.x fires onOpen and replays them once the WebSocket is available, closing the open-side race where a CRUD operation landing between handleWatch registering the listener and onOpen populating webSocketRef scheduled a send that dereferenced a null webSocketRef; the resulting NullPointerException was silently swallowed by the executor and the event was dropped. Buffered events are replayed after the initial-sync ADDEDs so ordering is preserved
  • Fix #​7896: (kubernetes-client) AbstractWatchManager.watchEnded() now emits a WatcherException when a watch closes cleanly with no messages within 2 seconds, compensating for a GKE-specific behaviour on v1/events where the GKFE proxy rejects a stale resourceVersion with a bare WebSocket close (code 1000, no body) instead of {"type":"ERROR","code":410}, causing an indefinite reconnect loop with the same stale resourceVersion
  • Fix #​7907: (httpclient-vertx-5) WebSocket-over-TLS operations (exec/attach/portForward/WebSocket-backed watches, and the CRD-establishment waits that depend on them) now trust the cluster certificate again. Vert.x 5.1 rewrote the WebSocket client to resolve TLS through a per-connection ClientSSLOptions that ignored the custom SslContextFactory the client used as its sole carrier of trust material, so WebSocket handshakes silently fell back to the default JVM trust store, failed PKIX validation, and hung to the client-side timeout (regular HTTPS request/response was unaffected). Both the HTTP and WebSocket clients are now configured uniformly with Vert.x TrustOptions/KeyCertOptions derived from the supplied trust/key managers
  • Fix #​7873: (kube-api-test) Utils.findFreePort now records every port it hands out for the JVM's lifetime and skips any port already returned, eliminating the back-to-back duplicate-port window that surfaced as a JUnitExtensionOnMethodTest.simpleTest2 flake — the probe ServerSocket was closed before the caller bound it, so EtcdProcess.startEtcd() and KubeAPIServerProcess.startApiServer() could draw the same port from Random.nextInt, etcd would win the bind, and apiserver would exit 1 with bind: address already in use, surfacing in ProcessReadinessChecker as Connection reset by peer
  • Fix #​7857: (kubernetes-server-mock) WatchEventsListener.onClosing now queues the server-side WebSocket.close(...) on the listener's send executor instead of invoking it directly on the Vert.x event loop. This preserves FIFO ordering with any data frames already queued on that executor, so events scheduled before a client-initiated watch close (e.g. an ADDED/DELETED pair on a final create/delete before watch.close()) are delivered before the close frame instead of being silently dropped by writes against an already-closing socket
  • Fix #​7832: (sonar) Re-interrupt thread in 8 production-code catch blocks that swallowed InterruptedException without preserving the interrupt status (S2142)
  • Fix #​7841: (mockwebserver) split Dispatcher shutdown into two phases so MockDispatcher only tears down per-session WebSocketSession executors after the HTTP server has drained, removing the window where an in-flight upgrade's onOpen could land on a shut-down executor. shutdown() still runs before httpServer.close() to unblock blocked dispatches (e.g. QueueDispatcher.take()); the new releaseResources() runs after. WebSocketSession.send() additionally catches RejectedExecutionException defensively so any residual shutdown race stays silent instead of bubbling as a Vert.x Unhandled exception. KubernetesMixedDispatcher now delegates both lifecycle hooks to its inner MockDispatcher, fixing a pre-existing leak where CRUD-mode WebSocket session executors were never shut down
  • Fix #​7779: (kubernetes-client) ExecWebSocketListener now notifies the user-supplied ExecListener on transport-level errors that race with terminateOnError / channel-3 exit-status completion — listener.onFailure (or onClose) fires exactly once, gated by a dedicated flag, instead of being silently swallowed when the deferred onError task observes exitCode.isDone()
  • Fix #​7765: (kubernetes-client) BaseOperation.informOnCondition now stops the informer inline when the inner predicate completes the future, closing a CompletableFuture postComplete race where a waiter helping drain dependents could fire informer.stop after cf.complete had already triggered a spurious ?watch=true HTTP request
  • Fix #​7847: (kubernetes-client) BaseClient.addToCloseable now synchronizes on the internal closeable set rather than the caller-supplied parameter, so callers cannot break mutual exclusion by passing different references (sonar S2445)
  • Fix #​7847: (kubernetes-client-api) KUBERNETES_SUBDOMAIN_REGEX uses possessive quantifiers on the outer groups to block ReDoS-style backtracking on adversarial subdomain input; semantics still match the canonical RFC 1123 subdomain pattern (sonar S5998)
  • Fix #​7847: (kubernetes-client-api) Serialization.yamlMapper builds the mapper into a local before assigning to the volatile field, so concurrent readers can no longer observe a partially-initialized instance with modules not yet registered (sonar S3064)
  • Fix #​7847: (mockwebserver) self-signed cert/key temp file cleanup goes through Files.deleteIfExists with logging instead of swallowing the File.delete() return value (sonar S899)
  • Fix #​7847: (httpclient-okhttp) OkHttpClientBuilderImpl now picks the first X509TrustManager from a multi-entry TrustManager[] rather than passing null to OkHttp's sslSocketFactory and NPE'ing; user-supplied sslContext is preserved for multi-CA setups (sonar S2637)
  • Fix #​7847: (httpclient-okhttp) OkHttpClientImpl.doClose removes dead null checks on dispatcher and connectionPool that are guaranteed non-null by the OkHttp API (sonar S2583)
Improvements
  • Fix #​7675: (mockwebserver) MockWebServer.dispatcher field marked volatile so a setDispatcher(...) call is reliably visible to the Vert.x request handler thread without further synchronization. MockWebServer.reset() Javadoc tightened to make its non-destructive contract explicit (no change to the running server, dispatcher, listeners, SSL/TLS state, port, or protocols)
  • Fix #​7809: (kubernetes-client) Support for shard selectors for list and watch - including informers
  • Fix #​7837: (kubernetes-client) Follow-ups on shard selector
  • Fix #​7899: (kubernetes-client) Callback before re-list for Informers
Dependency Upgrade
  • Fix #​7849: bump istio.io/client-go from 1.29.2 to 1.30.0
  • Fix #​7894: bump k8s.io/autoscaler/vertical-pod-autoscaler from 1.6.0 to 1.7.0
  • Fix #​7894: bump k8s.io/gengo/v2 from 2.0.0-20251215205346-5ee0d033ba5b to 2.0.0-20260408192533-25e2208e0dc3
  • Fix #​7894: bump k8s.io/kube-openapi from 0.0.0-20260319004828-5883c5ee87b9 to 0.0.0-20260414162039-ec9c827d403f
  • Fix #​7875: bump vertx5.version from 5.0.12 to 5.1.1, adapting httpclient-vertx-5 to Vert.x 5.1 behaviour changes (SSL engine options no longer accept an empty protocol array; request-body stream errors are reset with HTTP/2 CANCEL so they are not retried as transient IOExceptions)
New Features
  • Fix #​7926: (httpclient-vertx-5, httpclient-vertx) opt-in TLS warm-up on the Vert.x HTTP client factory. Vertx5HttpClientFactory/VertxHttpClientFactory now expose setTlsWarmup(TlsWarmup) with modes OFF, CONTEXT (default, unchanged) and FULL. FULL runs a synchronous, once-per-JVM, throwaway loopback TLS handshake off the event loop when the client is built, so the first real connection no longer blocks the event loop on the one-time JDK/Netty TLS class loading — for users on cold or hard-CPU-throttled JVMs hitting the first-connection block/timeout described in #​7921. Default behavior is unchanged; see the FAQ for CDS and pod CPU-sizing guidance for hard-throttled pods
  • Fix #​5084: Jbang scripts to generate graalVM metadata
  • Fix #​7375: (crd-generator) Support @​JsonClassDescription for adding descriptions to classes in the generated CRD schema.
Note: Breaking changes

v7.7.0

Compare Source

Bugs
  • Fix #​7747: (mockwebserver) avoid RejectedExecutionException in MockWebServer#shutdown() — linearize close sequence to remove the httpClose-listener vs await race, and make shutdown() idempotent against repeated calls (e.g. JUnit @​Nested afterAll cascades)
  • Fix #​7734: (mockwebserver) avoid sending Content-Length together with Transfer-Encoding for chunked responses
  • Fix #​7716: (informer) SerialExecutor.execute() now returns immediately after shutdown — no wrapper is offered, scheduleNext() is not called, and the underlying executor is not touched, fixing a post-stop NPE race exposed by SharedProcessor.distribute(...) after stop()
  • Fix #​7702: ExecWebSocketListener.onError now wraps WebSocketHandshakeException via the chaining KubernetesClientException constructor instead of post-hoc initCause — handshake failures with a non-null upgrade response no longer throw IllegalStateException synchronously, so onFailure/exitCode receive the parsed Status and the original handshake exception as the cause
  • Fix #​7686: (httpclient-vertx-5) StackBasedRecursionGuard.enter() no longer increments depth when refusing entry, fixing an infinite runOnContext loop that stalled InputStreamReadStream uploads under CPU contention
  • Fix #​7700: ExecWebSocketListener.onError now defers failure handling through the SerialExecutor so a pending channel-3 exit-status task runs first and the parsed exit code is preserved instead of being overwritten by a peer-close exception
  • Fix #​7698: (httpclient-vertx-5) InputStreamReadStream now fires endHandler when registered after the end signal has already been delivered, fixing a race for empty/fast streams
  • Fix #​7696: (httpclient-vertx) clear response exception handler before reset in cancel() to prevent StreamResetException from racing with future cancellation
  • Fix #​7695: ExecWebSocketListener now defers exitCode completion through the SerialExecutor so pending stdout/stderr async writes are flushed before exit signals
  • Fix #​7632: java-generator now HTML-escapes <, >, and & in CRD descriptions to produce valid Javadoc
  • Fix #​7543: fix processInlineDuplicateFields to recursively resolve nested inline embeds
  • Fix #​7450: StandardHttpClient.shouldRetry() does not retry on Vert.x HttpClosedException
  • Fix #​7350: Improper callback timing in leaderelection leads to the dual-leader
  • Fix #​7265: fix ephemeral removal of index entries from informer caches
Improvements
  • Fix #​7426: add HasMetadata#isSameResource to test whether two HasMetadata instances point to the same logical cluster resource, with an optional strict mode that also requires matching kind and resourceVersion
  • Fix #​7662: (mockwebserver) new MockWebServer#setHttp2ClearTextEnabled(boolean) setter to opt out of HTTP/2 cleartext (h2c) upgrade
  • Fix #​7522: improve dependency management for kubernetes-httpclient-okhttp
  • Fix #​7550: add a ResourceEventHandler onList method and deprecated onNothing
  • Fix #​6922: add addOwnerReference variant to set controller and blockOwnerDeletion fields
  • Fix #​3396: (mockwebserver) Enhance self-signed certificate generation to include Subject Alternative Names (SANs) for proper TLS verification by modern clients
  • Fix #​6923: Make the crd-generator-maven-plugin be toolchain aware
Dependency Upgrade
  • Fix #​7754: bump baremetal-operator/apis from 0.12.4 to 0.13.0
  • Fix #​7754: bump cluster-api-provider-metal3 from 1.12.4 to 1.13.0
  • Fix #​7651: bump k8s.io/apimachinery from 0.35.4 to 0.36.0
  • Fix #​7579: bump istio.io/client-go from 1.28.0 to 1.29.1
  • Fix #​7551: bump jackson-bom from 2.20.0 to 2.21.1
  • Fix #​7718: bump kin-openapi from 0.135.0 to 0.137.0
  • Fix #​7758: bump kin-openapi from 0.137.0 to 0.138.0
  • Fix #​7723: bump knative.dev/eventing from 0.48.2 to 0.49.0
  • Fix #​7723: bump knative.dev/eventing-github from 0.48.0 to 0.49.0
  • Fix #​7723: bump knative.dev/eventing-gitlab from 0.48.0 to 0.49.0
  • Fix #​7723: bump knative.dev/eventing-kafka-broker from 0.48.3 to 0.49.0
  • Fix #​7723: bump knative.dev/networking from 0.0.0-20260120131110-a7cdca238a0d to 0.0.0-20260422140718-e9578ef11562
  • Fix #​7723: bump knative.dev/serving from 0.48.2 to 0.49.0
  • Fix #​7580: bump kustomize/api from 0.20.1 to 0.21.1
  • Fix #​7726: bump tektoncd/pipeline from 1.11.1 to 1.12.0
  • Fix #​7552: bump tektoncd/triggers from 0.33.0 to 0.35.0
  • Fix #​7556: bump eventing-kafka-broker from 0.46.2 to 0.48.1
  • Fix #​7553: bump cert-manager from 1.19.4 to 1.20.0
  • Fix #​7557: bump baremetal-operator/apis from 0.9.2 to 0.12.2
  • Fix #​7544: bump cluster-api-provider-metal3 from 1.9.3 to 1.12.2
  • Fix #​7543: bump prometheus-operator from 0.85.0 to 0.89.0
  • Fix #​7542: bump open-cluster-management.io/api from 0.16.2 to 1.2.0
  • Fix #​7753: bump open-cluster-management.io/api from 1.2.0 to 1.3.0
  • Fix #​7541: bump gateway-api from 1.4.0 to 1.5.0
  • Fix #​7538: bump cert-manager from 1.18.2 to 1.19.4
  • Fix #​7583: bump operator-framework/api from 0.33.0 to 0.41.0
  • Fix #​7589: bump prometheus-operator from 0.89.0 to 0.90.0
  • Fix #​7736: bump prometheus-operator from 0.90.1 to 0.91.0
  • Fix #​7578: bump tektoncd/pipeline from 1.9.0 to 1.10.2
  • Fix #​7582: bump vertical-pod-autoscaler from 1.4.1 to 1.6.0
  • Fix #​7659: bump vertx.version from 4.5.24 to 4.5.26
  • Fix #​7731: bump vertx-5 version from 5.0.7 to 5.0.12
New Features
  • Fix #​7417: Support for Kubernetes v1.36 (ハル / Haru)
  • Fix #​5495: Add more support for subresource operations with enhanced documentation and examples for the generic subresource() method
  • Fix #​7451: Add support for server-side content negotiation (Table and PartialObjectMetadata responses)
Note: Breaking changes
  • Fix #​7417: scheduling.k8s.io/v1alpha1 model classes removed (Workload, WorkloadList, WorkloadSpec, PodGroup, PodGroupPolicy, `BasicSc

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@sonarqubecloud

sonarqubecloud Bot commented Oct 4, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants