diff --git a/OWNERS_ALIASES b/OWNERS_ALIASES
index 0ba0d09d24..d1976bdbd8 100644
--- a/OWNERS_ALIASES
+++ b/OWNERS_ALIASES
@@ -2,6 +2,9 @@
# Do not modify this file, instead modify peribolos/knative-extensions.yaml
aliases:
+ autoscaler-keda-approvers:
+ - ReToCode
+ - skonto
backstage-plugins-reviewers:
- aliok
- cali0707
@@ -14,11 +17,9 @@ aliases:
- pierdipi
client-wg-leads:
- dsimansk
- - navidshaikh
- rhuss
client-writers:
- dsimansk
- - navidshaikh
- rhuss
discovery-approvers:
- lberk
@@ -98,18 +99,21 @@ aliases:
- lance
- lkingland
- matejvasek
+ - matzew
- nainaz
- salaboy
function-runtime-approvers:
- lance
- lkingland
- matejvasek
+ - matzew
- nainaz
- salaboy
function-runtime-writers:
- lance
- lkingland
- matejvasek
+ - matzew
- nainaz
- salaboy
homebrew-kn-plugins-approvers:
@@ -118,13 +122,11 @@ aliases:
- rhuss
kn-plugin-admin-approvers:
- maximilien
- - navidshaikh
- rhuss
- zhanggbj
kn-plugin-diag-approvers:
- cdlliuy
- maximilien
- - navidshaikh
kn-plugin-event-approvers:
- cardil
- rhuss
@@ -137,12 +139,10 @@ aliases:
- rhuss
kn-plugin-quickstart-approvers:
- dsimansk
- - navidshaikh
- psschwei
- rhuss
kn-plugin-sample-approvers:
- maximilien
- - navidshaikh
- rhuss
kn-plugin-service-log-approvers:
- rhuss
@@ -150,7 +150,6 @@ aliases:
- daisy-ycguo
- dsimansk
- maximilien
- - navidshaikh
- rhuss
kn-plugin-source-kamelet-approvers:
- christophd
@@ -194,7 +193,6 @@ aliases:
- knative-prow-robot
- knative-prow-updater-robot
- knative-test-reporter-robot
- net-certmanager-approvers: []
net-contour-approvers:
- KauzClay
- dprotaso
@@ -233,7 +231,7 @@ aliases:
- davidhadas
- evankanderson
serving-approvers:
- - psschwei
+ - ReToCode
- skonto
serving-progressive-rollout-approvers:
- alexagriffith
@@ -251,8 +249,8 @@ aliases:
serving-wg-leads:
- dprotaso
serving-writers:
+ - ReToCode
- dprotaso
- - psschwei
- skonto
steering-committee:
- aliok
diff --git a/control-plane/cmd/post-install/kafka_broker_deployment_deleter.go b/control-plane/cmd/post-install/kafka_broker_deployment_deleter.go
deleted file mode 100644
index b5e8c4ac14..0000000000
--- a/control-plane/cmd/post-install/kafka_broker_deployment_deleter.go
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2024 The Knative Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-import (
- "context"
- "fmt"
- "time"
-
- apierrors "k8s.io/apimachinery/pkg/api/errors"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/apimachinery/pkg/util/wait"
- "k8s.io/client-go/kubernetes"
- "knative.dev/pkg/system"
-)
-
-type kafkaDeploymentDeleter struct {
- k8s kubernetes.Interface
-}
-
-func (k *kafkaDeploymentDeleter) DeleteBrokerDeployments(ctx context.Context) error {
- deployments := []string{
- "kafka-broker-receiver",
- "kafka-broker-dispatcher",
- }
-
- for _, deployment := range deployments {
- if err := k.deleteDeployment(ctx, deployment); err != nil {
- return fmt.Errorf("failed to delete deployment %s: %v", deployment, err)
- }
- }
-
- return nil
-}
-
-func (k *kafkaDeploymentDeleter) deleteDeployment(ctx context.Context, deploymentName string) error {
- err := k.waiteStatefulSetExists(ctx, deploymentName)
- if err != nil {
- return fmt.Errorf("failed while waiting for statefulset to come up: %w", err)
- }
-
- err = k.k8s.
- AppsV1().
- Deployments(system.Namespace()).
- Delete(ctx, deploymentName, metav1.DeleteOptions{})
- if err != nil && !apierrors.IsNotFound(err) {
- return fmt.Errorf("failed to delete deployment %s/%s: %w", system.Namespace(), deploymentName, err)
- }
-
- return nil
-}
-
-func (k *kafkaDeploymentDeleter) waiteStatefulSetExists(ctx context.Context, statefulSetName string) error {
- return wait.PollUntilContextTimeout(ctx, 10*time.Second, 10*time.Minute, false, func(ctx context.Context) (done bool, err error) {
- _, err = k.k8s.AppsV1().StatefulSets(system.Namespace()).Get(ctx, statefulSetName, metav1.GetOptions{})
- if apierrors.IsNotFound(err) {
- return false, nil
- }
- if err != nil {
- return false, fmt.Errorf("failed to get statefulset %s/%s: %w", system.Namespace(), statefulSetName, err)
- }
- return true, nil
- })
-}
diff --git a/control-plane/cmd/post-install/main.go b/control-plane/cmd/post-install/main.go
index 684ce07ec7..aa177446da 100644
--- a/control-plane/cmd/post-install/main.go
+++ b/control-plane/cmd/post-install/main.go
@@ -16,54 +16,5 @@
package main
-import (
- "context"
- "flag"
- "fmt"
- "log"
-
- "k8s.io/client-go/kubernetes"
-
- "knative.dev/pkg/environment"
- "knative.dev/pkg/logging"
- "knative.dev/pkg/signals"
-)
-
func main() {
- ctx := signals.NewContext()
-
- config, err := logging.NewConfigFromMap(nil)
- if err != nil {
- log.Fatal("Failed to create logging config: ", err)
- }
-
- logger, _ := logging.NewLoggerFromConfig(config, "kafka-broker-post-install")
- defer logger.Sync()
-
- logging.WithLogger(ctx, logger)
-
- if err := run(ctx); err != nil {
- logger.Fatal(err)
- }
-}
-
-func run(ctx context.Context) error {
- env := environment.ClientConfig{}
- env.InitFlags(flag.CommandLine)
- flag.Parse()
-
- config, err := env.GetRESTConfig()
- if err != nil {
- return fmt.Errorf("failed to get kubeconfig: %w", err)
- }
-
- deploymentDeleter := &kafkaDeploymentDeleter{
- k8s: kubernetes.NewForConfigOrDie(config),
- }
-
- if err := deploymentDeleter.DeleteBrokerDeployments(ctx); err != nil {
- return fmt.Errorf("broker migration failed: %v", err)
- }
-
- return nil
}
diff --git a/control-plane/config/eventing-kafka-broker/100-channel/100-kafka-channel.yaml b/control-plane/config/eventing-kafka-broker/100-channel/100-kafka-channel.yaml
index 6058c60cf7..43aa07b0f0 100644
--- a/control-plane/config/eventing-kafka-broker/100-channel/100-kafka-channel.yaml
+++ b/control-plane/config/eventing-kafka-broker/100-channel/100-kafka-channel.yaml
@@ -147,6 +147,9 @@ spec:
description: Generation of the origin of the subscriber with uid:UID.
type: integer
format: int64
+ name:
+ description: The name of the subscription
+ type: string
replyUri:
description: ReplyURI is the endpoint for the reply
type: string
diff --git a/control-plane/config/eventing-kafka-broker/200-controller/100-config-logging.yaml b/control-plane/config/eventing-kafka-broker/200-controller/100-config-logging.yaml
index 96a1e2537b..84ec85210d 100644
--- a/control-plane/config/eventing-kafka-broker/200-controller/100-config-logging.yaml
+++ b/control-plane/config/eventing-kafka-broker/200-controller/100-config-logging.yaml
@@ -27,7 +27,12 @@ data:
+
+
+ true
+ 1000
+
-
+
diff --git a/control-plane/config/post-install/200-controller-cluster-role.yaml b/control-plane/config/post-install/200-controller-cluster-role.yaml
index 9682a2a7f2..f4eafa902d 100644
--- a/control-plane/config/post-install/200-controller-cluster-role.yaml
+++ b/control-plane/config/post-install/200-controller-cluster-role.yaml
@@ -20,20 +20,4 @@ metadata:
name: knative-kafka-controller-post-install
labels:
app.kubernetes.io/version: devel
-rules:
- # we need to be able to delete old deployments
- - apiGroups:
- - "apps"
- resources:
- - "deployments"
- verbs:
- - "delete"
- # we need to get statefulsets
- - apiGroups:
- - "apps"
- resources:
- - "statefulsets"
- verbs:
- - "get"
- - "list"
-
+rules: []
diff --git a/control-plane/pkg/apis/config/features.go b/control-plane/pkg/apis/config/features.go
index 12bc83d2de..9adc45a65c 100644
--- a/control-plane/pkg/apis/config/features.go
+++ b/control-plane/pkg/apis/config/features.go
@@ -29,6 +29,7 @@ import (
"knative.dev/eventing/pkg/apis/feature"
"knative.dev/pkg/configmap"
"knative.dev/pkg/logging"
+ "knative.dev/pkg/reconciler"
)
const (
@@ -217,3 +218,12 @@ func executeTemplateToString(template template.Template, metadata v1.ObjectMeta,
return result.String(), nil
}
+
+type Stores []reconciler.ConfigStore
+
+func (css Stores) ToContext(ctx context.Context) context.Context {
+ for _, cs := range css {
+ ctx = cs.ToContext(ctx)
+ }
+ return ctx
+}
diff --git a/control-plane/pkg/reconciler/broker/namespaced_broker.go b/control-plane/pkg/reconciler/broker/namespaced_broker.go
index bcb836af5f..81711084e5 100644
--- a/control-plane/pkg/reconciler/broker/namespaced_broker.go
+++ b/control-plane/pkg/reconciler/broker/namespaced_broker.go
@@ -72,6 +72,7 @@ type NamespacedReconciler struct {
ServiceAccountLister corelisters.ServiceAccountLister
ServiceLister corelisters.ServiceLister
ClusterRoleBindingLister rbaclisters.ClusterRoleBindingLister
+ DeploymentLister appslisters.DeploymentLister
StatefulSetLister appslisters.StatefulSetLister
BrokerLister eventinglisters.BrokerLister
@@ -316,12 +317,18 @@ func (r *NamespacedReconciler) getManifestFromSystemNamespace(broker *eventing.B
}
resources = append(resources, additionalConfigMaps...)
- additionalDeployments, err := r.statefulSetsFromSystemNamespace(broker)
+ additionalDeployments, err := r.deploymentsFromSystemNamespace(broker)
if err != nil {
return mf.Manifest{}, err
}
resources = append(resources, additionalDeployments...)
+ additionalStatefulsets, err := r.statefulSetsFromSystemNamespace(broker)
+ if err != nil {
+ return mf.Manifest{}, err
+ }
+ resources = append(resources, additionalStatefulsets...)
+
additionalServiceAccounts, err := r.serviceAccountsFromSystemNamespace(broker)
if err != nil {
return mf.Manifest{}, err
@@ -368,7 +375,6 @@ func (r *NamespacedReconciler) getManifestFromAdditionalResources(broker *eventi
func (r *NamespacedReconciler) statefulSetsFromSystemNamespace(broker *eventing.Broker) ([]unstructured.Unstructured, error) {
deployments := []string{
- "kafka-broker-receiver",
"kafka-broker-dispatcher",
}
resources := make([]unstructured.Unstructured, 0, len(deployments))
@@ -382,6 +388,21 @@ func (r *NamespacedReconciler) statefulSetsFromSystemNamespace(broker *eventing.
return resources, nil
}
+func (r *NamespacedReconciler) deploymentsFromSystemNamespace(broker *eventing.Broker) ([]unstructured.Unstructured, error) {
+ deployments := []string{
+ "kafka-broker-receiver",
+ }
+ resources := make([]unstructured.Unstructured, 0, len(deployments))
+ for _, name := range deployments {
+ resource, err := r.createManifestFromSystemDeployment(broker, name)
+ if err != nil {
+ return nil, err
+ }
+ resources = append(resources, resource)
+ }
+ return resources, nil
+}
+
func (r *NamespacedReconciler) configMapsFromSystemNamespace(broker *eventing.Broker) ([]unstructured.Unstructured, error) {
configMaps := []string{
"config-kafka-broker-data-plane",
@@ -472,6 +493,25 @@ func (r *NamespacedReconciler) createManifestFromSystemStatefulSet(broker *event
return unstructuredFromObject(cm)
}
+func (r *NamespacedReconciler) createManifestFromSystemDeployment(broker *eventing.Broker, name string) (unstructured.Unstructured, error) {
+ sysDeployment, err := r.DeploymentLister.Deployments(r.SystemNamespace).Get(name)
+ if err != nil {
+ return unstructured.Unstructured{}, fmt.Errorf("failed to get Deployment %s/%s: %w", r.SystemNamespace, name, err)
+ }
+
+ cm := &appsv1.Deployment{
+ TypeMeta: metav1.TypeMeta{Kind: "Deployment", APIVersion: appsv1.SchemeGroupVersion.String()},
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: broker.GetNamespace(),
+ Name: sysDeployment.Name,
+ Labels: sysDeployment.Labels,
+ Annotations: sysDeployment.Annotations,
+ },
+ Spec: sysDeployment.Spec,
+ }
+ return unstructuredFromObject(cm)
+}
+
func (r *NamespacedReconciler) serviceAccountsFromSystemNamespace(broker *eventing.Broker) ([]unstructured.Unstructured, error) {
serviceAccounts := []string{
"knative-kafka-broker-data-plane",
diff --git a/control-plane/pkg/reconciler/broker/namespaced_broker_test.go b/control-plane/pkg/reconciler/broker/namespaced_broker_test.go
index 065d285a09..07645c50ba 100644
--- a/control-plane/pkg/reconciler/broker/namespaced_broker_test.go
+++ b/control-plane/pkg/reconciler/broker/namespaced_broker_test.go
@@ -60,12 +60,13 @@ import (
brokerreconciler "knative.dev/eventing/pkg/client/injection/reconciler/eventing/v1/broker"
reconcilertesting "knative.dev/eventing/pkg/reconciler/testing/v1"
+ duckv1 "knative.dev/pkg/apis/duck/v1"
+
apisconfig "knative.dev/eventing-kafka-broker/control-plane/pkg/apis/config"
"knative.dev/eventing-kafka-broker/control-plane/pkg/receiver"
"knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/base"
. "knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/broker"
. "knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/testing"
- duckv1 "knative.dev/pkg/apis/duck/v1"
)
var (
@@ -121,7 +122,7 @@ func namespacedBrokerReconciliation(t *testing.T, format string, env config.Env)
base.VolumeGenerationAnnotationKey: "0",
"annotation_to_preserve": "value_to_preserve",
}),
- NewStatefulSet("kafka-broker-receiver", SystemNamespace),
+ NewDeployment("kafka-broker-receiver", SystemNamespace),
NewStatefulSet("kafka-broker-dispatcher", SystemNamespace),
NewServiceAccount(SystemNamespace, "knative-kafka-broker-data-plane"),
reconcilertesting.NewService("kafka-broker-ingress", SystemNamespace),
@@ -199,7 +200,7 @@ func namespacedBrokerReconciliation(t *testing.T, format string, env config.Env)
WithNamespacedLabel,
),
ToManifestivalResource(t,
- NewStatefulSet("kafka-broker-receiver", BrokerNamespace),
+ NewDeployment("kafka-broker-receiver", BrokerNamespace),
WithNamespacedBrokerOwnerRef,
WithNamespacedLabel,
),
@@ -371,7 +372,7 @@ func namespacedBrokerFinalization(t *testing.T, format string, env config.Env) {
reconcilertesting.NewConfigMap("config-tracing", SystemNamespace),
reconcilertesting.NewConfigMap("config-features", SystemNamespace),
reconcilertesting.NewConfigMap("kafka-config-logging", SystemNamespace),
- NewStatefulSet("kafka-broker-receiver", SystemNamespace),
+ NewDeployment("kafka-broker-receiver", SystemNamespace),
NewStatefulSet("kafka-broker-dispatcher", SystemNamespace),
NewServiceAccount(SystemNamespace, "knative-kafka-broker-data-plane"),
reconcilertesting.NewService("kafka-broker-ingress", SystemNamespace),
@@ -503,6 +504,7 @@ func useTableNamespaced(t *testing.T, table TableTest, env *config.Env) {
NamespaceLister: listers.GetNamespaceLister(),
ConfigMapLister: listers.GetConfigMapLister(),
StatefulSetLister: listers.GetStatefulSetLister(),
+ DeploymentLister: listers.GetDeploymentLister(),
BrokerLister: listers.GetBrokerLister(),
ServiceAccountLister: listers.GetServiceAccountLister(),
ServiceLister: listers.GetServiceLister(),
diff --git a/control-plane/pkg/reconciler/broker/namespaced_controller.go b/control-plane/pkg/reconciler/broker/namespaced_controller.go
index 293c24d791..4441ee475a 100644
--- a/control-plane/pkg/reconciler/broker/namespaced_controller.go
+++ b/control-plane/pkg/reconciler/broker/namespaced_controller.go
@@ -23,10 +23,11 @@ import (
"net/http"
"time"
- "knative.dev/eventing-kafka-broker/control-plane/pkg/kafka/clientpool"
"knative.dev/eventing/pkg/eventingtls"
"knative.dev/pkg/network"
+ "knative.dev/eventing-kafka-broker/control-plane/pkg/kafka/clientpool"
+
"knative.dev/eventing-kafka-broker/control-plane/pkg/util"
mfclient "github.com/manifestival/client-go-client"
@@ -52,6 +53,7 @@ import (
brokerinformer "knative.dev/eventing/pkg/client/injection/informers/eventing/v1/broker"
brokerreconciler "knative.dev/eventing/pkg/client/injection/reconciler/eventing/v1/broker"
+ deploymentinformer "knative.dev/pkg/client/injection/kube/informers/apps/v1/deployment"
statefulsetinformer "knative.dev/pkg/client/injection/kube/informers/apps/v1/statefulset"
configmapinformer "knative.dev/pkg/client/injection/kube/informers/core/v1/configmap"
namespaceinformer "knative.dev/pkg/client/injection/kube/informers/core/v1/namespace"
@@ -108,6 +110,7 @@ func NewNamespacedController(ctx context.Context, watcher configmap.Watcher, env
ServiceLister: serviceinformer.Get(ctx).Lister(),
ClusterRoleBindingLister: clusterrolebindinginformer.Get(ctx).Lister(),
StatefulSetLister: statefulsetinformer.Get(ctx).Lister(),
+ DeploymentLister: deploymentinformer.Get(ctx).Lister(),
BrokerLister: brokerinformer.Get(ctx).Lister(),
Env: env,
Counter: counter.NewExpiringCounter(ctx),
@@ -176,13 +179,21 @@ func NewNamespacedController(ctx context.Context, watcher configmap.Watcher, env
statefulsetinformer.Get(ctx).Informer().AddEventHandler(cache.FilteringResourceEventHandler{
FilterFunc: kafka.FilterAny(
kafka.FilterWithLabel("app", "kafka-broker-dispatcher"),
- kafka.FilterWithLabel("app", "kafka-broker-receiver"),
),
Handler: controller.HandleAll(controller.EnsureTypeMeta(
globalResync,
appsv1.SchemeGroupVersion.WithKind("StatefulSet"),
)),
})
+ deploymentinformer.Get(ctx).Informer().AddEventHandler(cache.FilteringResourceEventHandler{
+ FilterFunc: kafka.FilterAny(
+ kafka.FilterWithLabel("app", "kafka-broker-receiver"),
+ ),
+ Handler: controller.HandleAll(controller.EnsureTypeMeta(
+ globalResync,
+ appsv1.SchemeGroupVersion.WithKind("Deployment"),
+ )),
+ })
// we set a label for each resource we create and filter things based on that
filterFunc := pkgreconciler.LabelFilterFunc(
diff --git a/control-plane/pkg/reconciler/consumergroup/consumergroup.go b/control-plane/pkg/reconciler/consumergroup/consumergroup.go
index 9d842e0f6c..f0ca79169d 100644
--- a/control-plane/pkg/reconciler/consumergroup/consumergroup.go
+++ b/control-plane/pkg/reconciler/consumergroup/consumergroup.go
@@ -185,20 +185,27 @@ type Reconciler struct {
}
func (r *Reconciler) ReconcileKind(ctx context.Context, cg *kafkainternals.ConsumerGroup) reconciler.Event {
+ logger := logging.FromContext(ctx)
+ logger.Debugw("Reconciling consumergroup")
+
recordExpectedReplicasMetric(ctx, cg)
r.reconcileStatusSelector(cg)
+ logger.Debugw("Reconciling initial offset")
if err := r.reconcileInitialOffset(ctx, cg); err != nil {
return cg.MarkInitializeOffsetFailed("InitializeOffset", err)
}
+ logger.Debugw("Scheduling consumergroup")
if err := r.schedule(ctx, cg); err != nil {
return err
}
cg.MarkScheduleSucceeded()
+ logger.Debugw("Scheduling completed", zap.Any("placement", cg.Status.PlaceableStatus))
if keda.IsEnabled(ctx, r.KafkaFeatureFlags, r.KedaClient, cg) {
+ logger.Debugw("Reconciling KEDA objects")
if err := r.reconcileKedaObjects(ctx, cg); err != nil {
return cg.MarkAutoscalerFailed("AutoscalerFailed", err)
}
@@ -208,10 +215,12 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, cg *kafkainternals.Consu
cg.MarkAutoscalerDisabled()
}
+ logger.Debugw("Reconciling consumers")
if err := r.reconcileConsumers(ctx, cg); err != nil {
return err
}
+ logger.Debugw("Propagating consumers status")
errCondition, err := r.propagateStatus(ctx, cg)
if err != nil {
return cg.MarkReconcileConsumersFailed("PropagateConsumerStatus", err)
@@ -232,18 +241,23 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, cg *kafkainternals.Consu
}
cg.MarkReconcileConsumersSucceeded()
+ logger.Debugw("Reconciliation succeeded")
+
return nil
}
func (r *Reconciler) FinalizeKind(ctx context.Context, cg *kafkainternals.ConsumerGroup) reconciler.Event {
+ logger := logging.FromContext(ctx)
+ logger.Debugw("Reconciling consumergroup (finalization)")
+ logger.Debugw("Scheduling consumergroup")
cg.Spec.Replicas = pointer.Int32(0)
err := r.schedule(ctx, cg) //de-schedule placements
-
if err != nil && !errors.Is(err, NoSchedulerFoundError{}) {
// return an error to 1. update the status. 2. not clear the finalizer
return cg.MarkScheduleConsumerFailed("Deschedule", fmt.Errorf("failed to unschedule consumer group: %w", err))
}
+ logger.Debugw("Scheduling completed", zap.Any("placement", cg.Status.PlaceableStatus))
// Get consumers associated with the ConsumerGroup.
existingConsumers, err := r.ConsumerLister.Consumers(cg.GetNamespace()).List(labels.SelectorFromSet(cg.Spec.Selector))
@@ -251,12 +265,14 @@ func (r *Reconciler) FinalizeKind(ctx context.Context, cg *kafkainternals.Consum
return cg.MarkReconcileConsumersFailed("ListConsumers", err)
}
+ logger.Debugw("Removing consumers", zap.Any("consumers", existingConsumers))
for _, c := range existingConsumers {
if err := r.finalizeConsumer(ctx, c); err != nil {
return cg.MarkReconcileConsumersFailed("FinalizeConsumer", err)
}
}
+ logger.Debugw("Deleteing consumergroup metadata from Kafka cluster")
if err := r.deleteConsumerGroupMetadata(ctx, cg); err != nil {
// We retry a few times to delete Consumer group metadata from Kafka before giving up.
if v := r.DeleteConsumerGroupMetadataCounter.Inc(string(cg.GetUID())); v <= 5 {
@@ -267,6 +283,8 @@ func (r *Reconciler) FinalizeKind(ctx context.Context, cg *kafkainternals.Consum
r.InitOffsetLatestInitialOffsetCache.Expire(keyOf(cg))
+ logger.Debugw("Reconciliation succeeded (finalization)")
+
return nil
}
diff --git a/control-plane/pkg/reconciler/consumergroup/evictor.go b/control-plane/pkg/reconciler/consumergroup/evictor.go
index cc3ac43c87..4968e6144c 100644
--- a/control-plane/pkg/reconciler/consumergroup/evictor.go
+++ b/control-plane/pkg/reconciler/consumergroup/evictor.go
@@ -60,12 +60,12 @@ func newEvictor(ctx context.Context, fields ...zap.Field) *evictor {
}
}
-func (e *evictor) evict(pod *corev1.Pod, vpod scheduler.VPod, from *eventingduckv1alpha1.Placement) error {
+func (e *evictor) evict(_ *corev1.Pod, vpod scheduler.VPod, from *eventingduckv1alpha1.Placement) error {
key := vpod.GetKey()
logger := e.logger.
With(zap.String("consumergroup", key.String())).
- With(zap.String("pod", fmt.Sprintf("%s/%s", pod.GetNamespace(), pod.GetName())))
+ With(zap.String("pod", from.PodName))
cgBefore, err := e.InternalsClient.
ConsumerGroups(key.Namespace).
diff --git a/control-plane/pkg/reconciler/consumergroup/evictor_test.go b/control-plane/pkg/reconciler/consumergroup/evictor_test.go
index a71c935482..2da86f0ca7 100644
--- a/control-plane/pkg/reconciler/consumergroup/evictor_test.go
+++ b/control-plane/pkg/reconciler/consumergroup/evictor_test.go
@@ -39,6 +39,40 @@ func TestNewEvictor(t *testing.T) {
require.NotPanics(t, func() { newEvictor(ctx, zap.String("k", "n")) })
}
+func TestEvictorNilPodNoPanic(t *testing.T) {
+ ctx, _ := reconcilertesting.SetupFakeContext(t)
+
+ var pod *corev1.Pod
+
+ pod1 := &corev1.Pod{
+ ObjectMeta: metav1.ObjectMeta{Namespace: "ns1", Name: "name1"},
+ }
+
+ cg := &kafkainternals.ConsumerGroup{
+ ObjectMeta: metav1.ObjectMeta{Namespace: "ns-1", Name: "cg-name"},
+ Status: kafkainternals.ConsumerGroupStatus{
+ PlaceableStatus: eventingduckv1alpha1.PlaceableStatus{Placeable: eventingduckv1alpha1.Placeable{
+ MaxAllowedVReplicas: pointer.Int32(1),
+ Placements: []eventingduckv1alpha1.Placement{
+ {PodName: "name", VReplicas: 1},
+ {PodName: pod1.GetName(), VReplicas: 1},
+ },
+ }},
+ },
+ }
+ cg.GetConditionSet().Manage(cg.GetStatus()).InitializeConditions()
+ cg.MarkScheduleSucceeded()
+
+ placement := &eventingduckv1alpha1.Placement{PodName: pod1.GetName(), VReplicas: 1}
+
+ ctx, _ = kafkainternalsclient.With(ctx, cg)
+
+ e := newEvictor(ctx)
+ err := e.evict(pod, cg, placement)
+
+ require.Nil(t, err)
+}
+
func TestEvictorEvictSuccess(t *testing.T) {
ctx, _ := reconcilertesting.SetupFakeContext(t)
diff --git a/control-plane/pkg/reconciler/testing/deployment.go b/control-plane/pkg/reconciler/testing/deployment.go
new file mode 100644
index 0000000000..bfdfbf08ec
--- /dev/null
+++ b/control-plane/pkg/reconciler/testing/deployment.go
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2024 The Knative Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package testing
+
+import (
+ appsv1 "k8s.io/api/apps/v1"
+ corev1 "k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ reconcilertesting "knative.dev/eventing/pkg/reconciler/testing/v1"
+)
+
+func NewDeployment(name, namespace string, sso ...reconcilertesting.DeploymentOption) *appsv1.Deployment {
+ ss := &appsv1.Deployment{
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: namespace,
+ Name: name,
+ },
+ Spec: appsv1.DeploymentSpec{
+ Template: corev1.PodTemplateSpec{
+ Spec: corev1.PodSpec{
+ Containers: []corev1.Container{{}},
+ Volumes: []corev1.Volume{{
+ Name: "contract-resources",
+ VolumeSource: corev1.VolumeSource{
+ ConfigMap: &corev1.ConfigMapVolumeSource{
+ LocalObjectReference: corev1.LocalObjectReference{
+ Name: "kafka-broker-brokers-triggers",
+ },
+ },
+ },
+ }},
+ },
+ },
+ },
+ }
+ for _, opt := range sso {
+ opt(ss)
+ }
+ return ss
+}
diff --git a/control-plane/pkg/reconciler/trigger/v2/controllerv2.go b/control-plane/pkg/reconciler/trigger/v2/controllerv2.go
index 6374ecc6f9..a76be1ccdb 100644
--- a/control-plane/pkg/reconciler/trigger/v2/controllerv2.go
+++ b/control-plane/pkg/reconciler/trigger/v2/controllerv2.go
@@ -38,17 +38,16 @@ import (
triggerinformer "knative.dev/eventing/pkg/client/injection/informers/eventing/v1/trigger"
triggerreconciler "knative.dev/eventing/pkg/client/injection/reconciler/eventing/v1/trigger"
+ apiseventing "knative.dev/eventing/pkg/apis/eventing"
+ eventing "knative.dev/eventing/pkg/apis/eventing/v1"
+ eventinglisters "knative.dev/eventing/pkg/client/listers/eventing/v1"
+
apisconfig "knative.dev/eventing-kafka-broker/control-plane/pkg/apis/config"
consumergroupclient "knative.dev/eventing-kafka-broker/control-plane/pkg/client/internals/kafka/injection/client"
consumergroupinformer "knative.dev/eventing-kafka-broker/control-plane/pkg/client/internals/kafka/injection/informers/eventing/v1alpha1/consumergroup"
"knative.dev/eventing-kafka-broker/control-plane/pkg/config"
"knative.dev/eventing-kafka-broker/control-plane/pkg/kafka"
"knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/consumergroup"
- "knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/trigger"
-
- apiseventing "knative.dev/eventing/pkg/apis/eventing"
- eventing "knative.dev/eventing/pkg/apis/eventing/v1"
- eventinglisters "knative.dev/eventing/pkg/client/listers/eventing/v1"
kubeclient "knative.dev/pkg/client/injection/kube/client"
secretinformer "knative.dev/pkg/client/injection/kube/informers/core/v1/secret"
@@ -72,20 +71,19 @@ func NewController(ctx context.Context, watcher configmap.Watcher, configs *conf
var globalResync func()
- flagsHolder := trigger.FlagsHolder{}
-
- featureStore := feature.NewStore(logger.Sugar().Named("feature-config-store"), func(name string, value interface{}) {
- flags, ok := value.(feature.Flags)
- if ok {
- flagsHolder.FlagsLock.Lock()
- defer flagsHolder.FlagsLock.Unlock()
- flagsHolder.Flags = flags
+ coreFeatureStore := feature.NewStore(logger.Sugar().Named("feature-config-store"), func(_ string, _ interface{}) {
+ if globalResync != nil {
+ globalResync()
}
+ })
+ coreFeatureStore.WatchConfigs(watcher)
+
+ kafkaFeatureStore := apisconfig.NewStore(ctx, func(_ string, _ *apisconfig.KafkaFeatureFlags) {
if globalResync != nil {
globalResync()
}
})
- featureStore.WatchConfigs(watcher)
+ kafkaFeatureStore.WatchConfigs(watcher)
reconciler := &Reconciler{
BrokerLister: brokerInformer.Lister(),
@@ -97,12 +95,11 @@ func NewController(ctx context.Context, watcher configmap.Watcher, configs *conf
InternalsClient: consumergroupclient.Get(ctx),
SecretLister: secretinformer.Get(ctx).Lister(),
KubeClient: kubeclient.Get(ctx),
- KafkaFeatureFlags: apisconfig.DefaultFeaturesConfig(),
- FlagsHolder: &flagsHolder,
}
impl := triggerreconciler.NewImpl(ctx, reconciler, func(impl *controller.Impl) controller.Options {
return controller.Options{
+ ConfigStore: apisconfig.Stores{coreFeatureStore, kafkaFeatureStore},
FinalizerName: FinalizerName,
AgentName: ControllerAgentName,
SkipStatusUpdates: false,
@@ -110,14 +107,6 @@ func NewController(ctx context.Context, watcher configmap.Watcher, configs *conf
}
})
- kafkaFeatureStore := apisconfig.NewStore(ctx, func(_ string, value *apisconfig.KafkaFeatureFlags) {
- reconciler.KafkaFeatureFlags.Reset(value)
- if globalResync != nil {
- globalResync()
- }
- })
- kafkaFeatureStore.WatchConfigs(watcher)
-
globalResync = func() {
impl.FilteredGlobalResync(filterTriggers(reconciler.BrokerLister), triggerInformer.Informer())
}
diff --git a/control-plane/pkg/reconciler/trigger/v2/triggerv2.go b/control-plane/pkg/reconciler/trigger/v2/triggerv2.go
index ca303fae20..b2aee545e7 100644
--- a/control-plane/pkg/reconciler/trigger/v2/triggerv2.go
+++ b/control-plane/pkg/reconciler/trigger/v2/triggerv2.go
@@ -30,6 +30,7 @@ import (
corelisters "k8s.io/client-go/listers/core/v1"
eventingduck "knative.dev/eventing/pkg/apis/duck/v1"
eventing "knative.dev/eventing/pkg/apis/eventing/v1"
+ "knative.dev/eventing/pkg/apis/feature"
"knative.dev/eventing/pkg/auth"
eventingclientset "knative.dev/eventing/pkg/client/clientset/versioned"
eventinglisters "knative.dev/eventing/pkg/client/listers/eventing/v1"
@@ -49,7 +50,6 @@ import (
"knative.dev/eventing-kafka-broker/control-plane/pkg/kafka"
kafkalogging "knative.dev/eventing-kafka-broker/control-plane/pkg/logging"
brokerreconciler "knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/broker"
- "knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/trigger"
"knative.dev/eventing-kafka-broker/control-plane/pkg/security"
)
@@ -72,21 +72,27 @@ type Reconciler struct {
InternalsClient internalsclient.Interface
SecretLister corelisters.SecretLister
KubeClient kubernetes.Interface
- KafkaFeatureFlags *apisconfig.KafkaFeatureFlags
- FlagsHolder *trigger.FlagsHolder
}
func (r *Reconciler) ReconcileKind(ctx context.Context, trigger *eventing.Trigger) reconciler.Event {
logger := kafkalogging.CreateReconcileMethodLogger(ctx, trigger)
if trigger.Status.Annotations == nil {
- trigger.Status.Annotations = make(map[string]string, 0)
+ trigger.Status.Annotations = make(map[string]string)
}
- r.FlagsHolder.FlagsLock.RLock()
- defer r.FlagsHolder.FlagsLock.RUnlock()
-
- errOIDC := auth.SetupOIDCServiceAccount(ctx, r.FlagsHolder.Flags, r.ServiceAccountLister, r.KubeClient, eventing.SchemeGroupVersion.WithKind("Trigger"), trigger.ObjectMeta, &trigger.Status, func(a *duckv1.AuthStatus) { trigger.Status.Auth = a })
+ err := auth.SetupOIDCServiceAccount(ctx,
+ feature.FromContext(ctx),
+ r.ServiceAccountLister,
+ r.KubeClient,
+ eventing.SchemeGroupVersion.WithKind("Trigger"),
+ trigger.ObjectMeta,
+ &trigger.Status,
+ func(a *duckv1.AuthStatus) { trigger.Status.Auth = a },
+ )
+ if err != nil {
+ return fmt.Errorf("failed to setup OIDC service account: %w", err)
+ }
broker, err := r.BrokerLister.Brokers(trigger.Namespace).Get(trigger.Spec.Broker)
if err != nil && !apierrors.IsNotFound(err) {
@@ -125,7 +131,7 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, trigger *eventing.Trigge
}
propagateConsumerGroupStatus(cg, trigger)
- return errOIDC
+ return nil
}
func (r *Reconciler) reconcileConsumerGroup(ctx context.Context, broker *eventing.Broker, trigger *eventing.Trigger) (*internalscg.ConsumerGroup, error) {
@@ -175,7 +181,7 @@ func (r *Reconciler) reconcileConsumerGroup(ctx context.Context, broker *eventin
// No existing consumer groups, use new naming
if apierrors.IsNotFound(err) {
- groupId, err = r.KafkaFeatureFlags.ExecuteTriggersConsumerGroupTemplate(trigger.ObjectMeta)
+ groupId, err = apisconfig.FromContext(ctx).ExecuteTriggersConsumerGroupTemplate(trigger.ObjectMeta)
if err != nil {
return nil, fmt.Errorf("couldn't generate new consumergroup id: %w", err)
}
diff --git a/control-plane/pkg/reconciler/trigger/v2/triggerv2_test.go b/control-plane/pkg/reconciler/trigger/v2/triggerv2_test.go
index 38afa52044..3883fac8d8 100644
--- a/control-plane/pkg/reconciler/trigger/v2/triggerv2_test.go
+++ b/control-plane/pkg/reconciler/trigger/v2/triggerv2_test.go
@@ -24,7 +24,6 @@ import (
"k8s.io/utils/pointer"
eventingduck "knative.dev/eventing/pkg/apis/duck/v1"
- apisconfig "knative.dev/eventing-kafka-broker/control-plane/pkg/apis/config"
sources "knative.dev/eventing-kafka-broker/control-plane/pkg/apis/sources/v1beta1"
"knative.dev/eventing-kafka-broker/control-plane/pkg/kafka"
@@ -37,7 +36,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
clientgotesting "k8s.io/client-go/testing"
eventing "knative.dev/eventing/pkg/apis/eventing/v1"
- "knative.dev/eventing/pkg/apis/feature"
eventingclient "knative.dev/eventing/pkg/client/injection/client/fake"
triggerreconciler "knative.dev/eventing/pkg/client/injection/reconciler/eventing/v1/trigger"
reconcilertesting "knative.dev/eventing/pkg/reconciler/testing/v1"
@@ -51,7 +49,6 @@ import (
. "knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/testing"
fakeconsumergroupinformer "knative.dev/eventing-kafka-broker/control-plane/pkg/client/internals/kafka/injection/client/fake"
- "knative.dev/eventing-kafka-broker/control-plane/pkg/reconciler/trigger"
)
const (
@@ -935,8 +932,6 @@ func TestReconcileKind(t *testing.T) {
table.Test(t, NewFactory(env, func(ctx context.Context, listers *Listers, env *config.Env, row *TableRow) controller.Reconciler {
logger := logging.FromContext(ctx)
- ctxFlags := feature.FromContextOrDefaults(ctx)
-
reconciler := &Reconciler{
BrokerLister: listers.GetBrokerLister(),
ConfigMapLister: listers.GetConfigMapLister(),
@@ -947,8 +942,6 @@ func TestReconcileKind(t *testing.T) {
InternalsClient: fakeconsumergroupinformer.Get(ctx),
SecretLister: listers.GetSecretLister(),
KubeClient: kubeclient.Get(ctx),
- KafkaFeatureFlags: apisconfig.DefaultFeaturesConfig(),
- FlagsHolder: &trigger.FlagsHolder{Flags: ctxFlags},
}
return triggerreconciler.NewReconciler(
diff --git a/data-plane/README.md b/data-plane/README.md
index 7d1e6df6e1..55182afc6f 100644
--- a/data-plane/README.md
+++ b/data-plane/README.md
@@ -32,10 +32,8 @@ update another one will be created. This allows to not block or use locks.
├── core
├── dispatcher
├── dispatcher-loom
-├── dispatcher-vertx
├── receiver
├── receiver-loom
-├── receiver-vertx
├── contract
└── tests
```
@@ -44,9 +42,7 @@ update another one will be created. This allows to not block or use locks.
- `core` directory contains the core module, in particular, it contains classes for representing Eventing objects
- `dispatcher` directory contains the base [_Dispatcher_](#dispatcher) application.
- `dispatcher-loom` directory contains the [_Dispatcher_](#dispatcher) application's entrypoit that use Loom virtual thread implementation for kafka communication.
-- `dispatcher-vertx` directory contains application's entrypoit that use Vert.x kafka client implementation for kafka communication.
- `receiver` directory contains the [_Receiver_](#receiver) application.
- `receiver-loom` directory contains the [_Receiver_](#receiver) application's entrypoit that use Loom virtual thread implementation for kafka communication.
-- `receiver-vertx` directory contains application's entrypoit that use Vert.x kafka client implementation for kafka communication.
- `contract` directory contains a module in which the protobuf compiler (`protoc`) generates code. Git ignores the
- `tests` directory contains tests for the whole data-plane.
diff --git a/data-plane/THIRD-PARTY.txt b/data-plane/THIRD-PARTY.txt
index 34a8b477ee..a11377b1d4 100644
--- a/data-plane/THIRD-PARTY.txt
+++ b/data-plane/THIRD-PARTY.txt
@@ -1,25 +1,25 @@
-Lists of 231 third-party dependencies.
+Lists of 234 third-party dependencies.
(Eclipse Public License - v 1.0) (GNU Lesser General Public License) Logback Classic Module (ch.qos.logback:logback-classic:1.4.14 - http://logback.qos.ch/logback-classic)
(Eclipse Public License - v 1.0) (GNU Lesser General Public License) Logback Core Module (ch.qos.logback:logback-core:1.4.14 - http://logback.qos.ch/logback-core)
- (Apache License 2.0) brotli4j (com.aayushatharva.brotli4j:brotli4j:1.12.0 - https://github.com/hyperxpro/Brotli4j/brotli4j)
- (Apache License 2.0) native-linux-x86_64 (com.aayushatharva.brotli4j:native-linux-x86_64:1.12.0 - https://github.com/hyperxpro/Brotli4j/natives/native-linux-x86_64)
- (Apache License 2.0) service (com.aayushatharva.brotli4j:service:1.12.0 - https://github.com/hyperxpro/Brotli4j/service)
- (The Apache Software License, Version 2.0) Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.15.2 - https://github.com/FasterXML/jackson)
- (The Apache Software License, Version 2.0) Jackson-core (com.fasterxml.jackson.core:jackson-core:2.15.2 - https://github.com/FasterXML/jackson-core)
- (The Apache Software License, Version 2.0) jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.15.2 - https://github.com/FasterXML/jackson)
- (The Apache Software License, Version 2.0) Jackson-dataformat-CSV (com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.15.2 - https://github.com/FasterXML/jackson-dataformats-text)
- (The Apache Software License, Version 2.0) Jackson-dataformat-YAML (com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2 - https://github.com/FasterXML/jackson-dataformats-text)
- (The Apache Software License, Version 2.0) Jackson datatype: jdk8 (com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.15.2 - https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8)
- (The Apache Software License, Version 2.0) Jackson datatype: JSR310 (com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2 - https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310)
- (The Apache Software License, Version 2.0) jackson-module-scala (com.fasterxml.jackson.module:jackson-module-scala_2.12:2.15.2 - https://github.com/FasterXML/jackson-module-scala)
+ (Apache License 2.0) brotli4j (com.aayushatharva.brotli4j:brotli4j:1.16.0 - https://github.com/hyperxpro/Brotli4j/brotli4j)
+ (Apache License 2.0) native-linux-x86_64 (com.aayushatharva.brotli4j:native-linux-x86_64:1.16.0 - https://github.com/hyperxpro/Brotli4j/natives/native-linux-x86_64)
+ (Apache License 2.0) service (com.aayushatharva.brotli4j:service:1.16.0 - https://github.com/hyperxpro/Brotli4j/service)
+ (The Apache Software License, Version 2.0) Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.16.1 - https://github.com/FasterXML/jackson)
+ (The Apache Software License, Version 2.0) Jackson-core (com.fasterxml.jackson.core:jackson-core:2.16.1 - https://github.com/FasterXML/jackson-core)
+ (The Apache Software License, Version 2.0) jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.16.1 - https://github.com/FasterXML/jackson)
+ (The Apache Software License, Version 2.0) Jackson-dataformat-CSV (com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.16.1 - https://github.com/FasterXML/jackson-dataformats-text)
+ (The Apache Software License, Version 2.0) Jackson-dataformat-YAML (com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.16.1 - https://github.com/FasterXML/jackson-dataformats-text)
+ (The Apache Software License, Version 2.0) Jackson datatype: jdk8 (com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.16.1 - https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8)
+ (The Apache Software License, Version 2.0) Jackson datatype: JSR310 (com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.16.1 - https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310)
+ (The Apache Software License, Version 2.0) jackson-module-scala (com.fasterxml.jackson.module:jackson-module-scala_2.12:2.16.1 - https://github.com/FasterXML/jackson-module-scala)
(BSD 2-Clause License) zstd-jni (com.github.luben:zstd-jni:1.5.2-1 - https://github.com/luben/zstd-jni)
(The Apache Software License, Version 2.0) bucket4j-core (com.github.vladimir-bukhtoyarov:bucket4j-core:7.6.0 - http://github.com/vladimir-bukhtoyarov/bucket4j/bucket4j-core)
(The Apache Software License, Version 2.0) FindBugs-jsr305 (com.google.code.findbugs:jsr305:3.0.2 - http://findbugs.sourceforge.net/)
(Apache-2.0) Gson (com.google.code.gson:gson:2.10.1 - https://github.com/google/gson/gson)
- (Apache 2.0) error-prone annotations (com.google.errorprone:error_prone_annotations:2.19.1 - https://errorprone.info/error_prone_annotations)
+ (Apache 2.0) error-prone annotations (com.google.errorprone:error_prone_annotations:2.24.0 - https://errorprone.info/error_prone_annotations)
(The Apache Software License, Version 2.0) Guava InternalFutureFailureAccess and InternalFutures (com.google.guava:failureaccess:1.0.1 - https://github.com/google/guava/failureaccess)
- (Apache License, Version 2.0) Guava: Google Core Libraries for Java (com.google.guava:guava:32.0.0-jre - https://github.com/google/guava)
+ (Apache License, Version 2.0) Guava: Google Core Libraries for Java (com.google.guava:guava:33.0.0-jre - https://github.com/google/guava)
(Apache License, Version 2.0) J2ObjC Annotations (com.google.j2objc:j2objc-annotations:2.8 - https://github.com/google/j2objc/)
(BSD-3-Clause) Protocol Buffers [Core] (com.google.protobuf:protobuf-java:3.24.4 - https://developers.google.com/protocol-buffers/protobuf-java/)
(BSD-3-Clause) Protocol Buffers [Util] (com.google.protobuf:protobuf-java-util:3.24.4 - https://developers.google.com/protocol-buffers/protobuf-java-util/)
@@ -31,14 +31,13 @@ Lists of 231 third-party dependencies.
(Apache License 2.0) Metrics Core Library (com.yammer.metrics:metrics-core:2.2.0 - http://metrics.codahale.com/metrics-core/)
(Apache License, Version 2.0) Apache Commons CLI (commons-cli:commons-cli:1.4 - http://commons.apache.org/proper/commons-cli/)
(Apache-2.0) Apache Commons Codec (commons-codec:commons-codec:1.16.0 - https://commons.apache.org/proper/commons-codec/)
+ (Apache-2.0) Apache Commons Codec (commons-codec:commons-codec:1.16.1 - https://commons.apache.org/proper/commons-codec/)
(Unknown license) contract (dev.knative.eventing.kafka.broker:contract:1.0-SNAPSHOT - no url defined)
(Unknown license) core (dev.knative.eventing.kafka.broker:core:1.0-SNAPSHOT - no url defined)
(Unknown license) dispatcher (dev.knative.eventing.kafka.broker:dispatcher:1.0-SNAPSHOT - no url defined)
(Unknown license) dispatcher-loom (dev.knative.eventing.kafka.broker:dispatcher-loom:1.0-SNAPSHOT - no url defined)
- (Unknown license) dispatcher-vertx (dev.knative.eventing.kafka.broker:dispatcher-vertx:1.0-SNAPSHOT - no url defined)
(Unknown license) receiver (dev.knative.eventing.kafka.broker:receiver:1.0-SNAPSHOT - no url defined)
(Unknown license) receiver-loom (dev.knative.eventing.kafka.broker:receiver-loom:1.0-SNAPSHOT - no url defined)
- (Unknown license) receiver-vertx (dev.knative.eventing.kafka.broker:receiver-vertx:1.0-SNAPSHOT - no url defined)
(The Apache Software License, Version 2.0) CloudEvents - API (io.cloudevents:cloudevents-api:2.5.0 - https://cloudevents.github.io/sdk-java/cloudevents-api/)
(The Apache Software License, Version 2.0) CloudEvents - Core (io.cloudevents:cloudevents-core:2.5.0 - https://cloudevents.github.io/sdk-java/cloudevents-core/)
(The Apache Software License, Version 2.0) CloudEvents - Vert.x Http Binding (io.cloudevents:cloudevents-http-vertx:2.5.0 - https://cloudevents.github.io/sdk-java/cloudevents-http-vertx/)
@@ -51,121 +50,124 @@ Lists of 231 third-party dependencies.
(Apache License, Version 2.0) Fabric8 :: Kubernetes :: Java Client (io.fabric8:kubernetes-client:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-client)
(Apache License, Version 2.0) Fabric8 :: Kubernetes :: Java Client API (io.fabric8:kubernetes-client-api:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-client-api)
(Apache License, Version 2.0) Fabric8 :: Kubernetes :: HttpClient :: JDK (io.fabric8:kubernetes-httpclient-jdk:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-httpclient-jdk)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Admission Registration, Authentication and Authorization (io.fabric8:kubernetes-model-admissionregistration:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-admissionregistration/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: API Extensions (io.fabric8:kubernetes-model-apiextensions:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-apiextensions/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Apps (io.fabric8:kubernetes-model-apps:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-apps/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Autoscaling (io.fabric8:kubernetes-model-autoscaling:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-autoscaling/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Batch (io.fabric8:kubernetes-model-batch:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-batch/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Certificates (io.fabric8:kubernetes-model-certificates:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-certificates/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Common (io.fabric8:kubernetes-model-common:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-common/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Coordination (io.fabric8:kubernetes-model-coordination:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-coordination/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Core (io.fabric8:kubernetes-model-core:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-core/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Discovery (io.fabric8:kubernetes-model-discovery:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-discovery/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Events (io.fabric8:kubernetes-model-events:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-events/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Extensions (io.fabric8:kubernetes-model-extensions:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-extensions/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: FlowControl (io.fabric8:kubernetes-model-flowcontrol:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-flowcontrol/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Sigs :: Gateway API (io.fabric8:kubernetes-model-gatewayapi:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-gatewayapi/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Metrics (io.fabric8:kubernetes-model-metrics:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-metrics/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Networking (io.fabric8:kubernetes-model-networking:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-networking/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Node (io.fabric8:kubernetes-model-node:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-node/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Policy (io.fabric8:kubernetes-model-policy:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-policy/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: RBAC (io.fabric8:kubernetes-model-rbac:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-rbac/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Resource (io.fabric8:kubernetes-model-resource:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-resource/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Scheduling (io.fabric8:kubernetes-model-scheduling:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-scheduling/)
- (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Storage Class (io.fabric8:kubernetes-model-storageclass:6.7.2 - http://fabric8.io/kubernetes-model-generator/kubernetes-model-storageclass/)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Admission Registration, Authentication and Authorization (io.fabric8:kubernetes-model-admissionregistration:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-admissionregistration)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: API Extensions (io.fabric8:kubernetes-model-apiextensions:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-apiextensions)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Apps (io.fabric8:kubernetes-model-apps:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-apps)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Autoscaling (io.fabric8:kubernetes-model-autoscaling:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-autoscaling)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Batch (io.fabric8:kubernetes-model-batch:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-batch)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Certificates (io.fabric8:kubernetes-model-certificates:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-certificates)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Common (io.fabric8:kubernetes-model-common:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-common)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Coordination (io.fabric8:kubernetes-model-coordination:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-coordination)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Core (io.fabric8:kubernetes-model-core:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-core)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Discovery (io.fabric8:kubernetes-model-discovery:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-discovery)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Events (io.fabric8:kubernetes-model-events:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-events)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Extensions (io.fabric8:kubernetes-model-extensions:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-extensions)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: FlowControl (io.fabric8:kubernetes-model-flowcontrol:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-flowcontrol)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Sigs :: Gateway API (io.fabric8:kubernetes-model-gatewayapi:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-gatewayapi)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Metrics (io.fabric8:kubernetes-model-metrics:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-metrics)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Networking (io.fabric8:kubernetes-model-networking:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-networking)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Node (io.fabric8:kubernetes-model-node:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-node)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Policy (io.fabric8:kubernetes-model-policy:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-policy)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: RBAC (io.fabric8:kubernetes-model-rbac:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-rbac)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Resource (io.fabric8:kubernetes-model-resource:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-resource)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Scheduling (io.fabric8:kubernetes-model-scheduling:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-scheduling)
+ (Apache License, Version 2.0) Fabric8 :: Kubernetes Model :: Storage Class (io.fabric8:kubernetes-model-storageclass:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-model-generator/kubernetes-model-storageclass)
(Apache License, Version 2.0) Fabric8 :: Kubernetes :: JUnit :: Server Mock (io.fabric8:kubernetes-server-mock:6.10.0 - https://github.com/fabric8io/kubernetes-client/junit/kubernetes-server-mock)
(Apache License, Version 2.0) Fabric8 :: Mock Web Server (io.fabric8:mockwebserver:6.10.0 - https://github.com/fabric8io/kubernetes-client/junit/mockwebserver)
- (Apache License, Version 2.0) Fabric8 :: Service Catalog :: Client (io.fabric8:servicecatalog-client:6.7.2 - http://fabric8.io/kubernetes-extensions/service-catalog/servicecatalog-client/)
- (Apache License, Version 2.0) Fabric8 :: Service Catalog :: Model (io.fabric8:servicecatalog-model:6.7.2 - http://fabric8.io/kubernetes-extensions/service-catalog/servicecatalog-model/)
+ (Apache License, Version 2.0) Fabric8 :: Service Catalog :: Client (io.fabric8:servicecatalog-client:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-extensions/service-catalog/servicecatalog-client)
+ (Apache License, Version 2.0) Fabric8 :: Service Catalog :: Model (io.fabric8:servicecatalog-model:6.10.0 - https://github.com/fabric8io/kubernetes-client/kubernetes-extensions/service-catalog/servicecatalog-model)
(The Apache Software License, Version 2.0) zjsonpatch (io.fabric8:zjsonpatch:0.3.0 - https://github.com/fabric8io/zjsonpatch/)
(BSD-2-Clause) org-crac (io.github.crac:org-crac:0.1.3 - https://github.com/crac/org.crac)
- (The Apache Software License, Version 2.0) micrometer-commons (io.micrometer:micrometer-commons:1.11.1 - https://github.com/micrometer-metrics/micrometer)
- (The Apache Software License, Version 2.0) micrometer-core (io.micrometer:micrometer-core:1.11.1 - https://github.com/micrometer-metrics/micrometer)
- (The Apache Software License, Version 2.0) micrometer-observation (io.micrometer:micrometer-observation:1.11.1 - https://github.com/micrometer-metrics/micrometer)
- (The Apache Software License, Version 2.0) micrometer-registry-prometheus (io.micrometer:micrometer-registry-prometheus:1.11.1 - https://github.com/micrometer-metrics/micrometer)
- (Apache License, Version 2.0) Netty/Buffer (io.netty:netty-buffer:4.1.100.Final - https://netty.io/netty-buffer/)
- (Apache License, Version 2.0) Netty/Codec (io.netty:netty-codec:4.1.100.Final - https://netty.io/netty-codec/)
- (Apache License, Version 2.0) Netty/Codec/DNS (io.netty:netty-codec-dns:4.1.100.Final - https://netty.io/netty-codec-dns/)
- (Apache License, Version 2.0) Netty/Codec/HAProxy (io.netty:netty-codec-haproxy:4.1.100.Final - https://netty.io/netty-codec-haproxy/)
- (Apache License, Version 2.0) Netty/Codec/HTTP (io.netty:netty-codec-http:4.1.100.Final - https://netty.io/netty-codec-http/)
- (Apache License, Version 2.0) Netty/Codec/HTTP2 (io.netty:netty-codec-http2:4.1.100.Final - https://netty.io/netty-codec-http2/)
- (Apache License, Version 2.0) Netty/Codec/Socks (io.netty:netty-codec-socks:4.1.100.Final - https://netty.io/netty-codec-socks/)
- (Apache License, Version 2.0) Netty/Common (io.netty:netty-common:4.1.100.Final - https://netty.io/netty-common/)
- (Apache License, Version 2.0) Netty/Handler (io.netty:netty-handler:4.1.100.Final - https://netty.io/netty-handler/)
- (Apache License, Version 2.0) Netty/Handler/Proxy (io.netty:netty-handler-proxy:4.1.100.Final - https://netty.io/netty-handler-proxy/)
- (Apache License, Version 2.0) Netty/Resolver (io.netty:netty-resolver:4.1.100.Final - https://netty.io/netty-resolver/)
- (Apache License, Version 2.0) Netty/Resolver/DNS (io.netty:netty-resolver-dns:4.1.100.Final - https://netty.io/netty-resolver-dns/)
- (Apache License, Version 2.0) Netty/Transport (io.netty:netty-transport:4.1.100.Final - https://netty.io/netty-transport/)
- (Apache License, Version 2.0) Netty/Transport/Classes/Epoll (io.netty:netty-transport-classes-epoll:4.1.100.Final - https://netty.io/netty-transport-classes-epoll/)
- (Apache License, Version 2.0) Netty/Transport/Native/Epoll (io.netty:netty-transport-native-epoll:4.1.100.Final - https://netty.io/netty-transport-native-epoll/)
- (Apache License, Version 2.0) Netty/Transport/Native/Unix/Common (io.netty:netty-transport-native-unix-common:4.1.100.Final - https://netty.io/netty-transport-native-unix-common/)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-api:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-api-events:1.25.0-alpha - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-api-logs:1.25.0-alpha - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-context:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-exporter-common:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-exporter-logging:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-exporter-zipkin:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache Software License, Version 2.0) micrometer-commons (io.micrometer:micrometer-commons:1.12.2 - https://github.com/micrometer-metrics/micrometer)
+ (The Apache Software License, Version 2.0) micrometer-core (io.micrometer:micrometer-core:1.12.2 - https://github.com/micrometer-metrics/micrometer)
+ (The Apache Software License, Version 2.0) micrometer-observation (io.micrometer:micrometer-observation:1.12.2 - https://github.com/micrometer-metrics/micrometer)
+ (The Apache Software License, Version 2.0) micrometer-registry-prometheus (io.micrometer:micrometer-registry-prometheus:1.12.2 - https://github.com/micrometer-metrics/micrometer)
+ (Apache License, Version 2.0) Netty/Buffer (io.netty:netty-buffer:4.1.108.Final - https://netty.io/netty-buffer/)
+ (Apache License, Version 2.0) Netty/Codec (io.netty:netty-codec:4.1.108.Final - https://netty.io/netty-codec/)
+ (Apache License, Version 2.0) Netty/Codec/DNS (io.netty:netty-codec-dns:4.1.108.Final - https://netty.io/netty-codec-dns/)
+ (Apache License, Version 2.0) Netty/Codec/HAProxy (io.netty:netty-codec-haproxy:4.1.108.Final - https://netty.io/netty-codec-haproxy/)
+ (Apache License, Version 2.0) Netty/Codec/HTTP (io.netty:netty-codec-http:4.1.108.Final - https://netty.io/netty-codec-http/)
+ (Apache License, Version 2.0) Netty/Codec/HTTP2 (io.netty:netty-codec-http2:4.1.108.Final - https://netty.io/netty-codec-http2/)
+ (Apache License, Version 2.0) Netty/Codec/Socks (io.netty:netty-codec-socks:4.1.108.Final - https://netty.io/netty-codec-socks/)
+ (Apache License, Version 2.0) Netty/Common (io.netty:netty-common:4.1.108.Final - https://netty.io/netty-common/)
+ (Apache License, Version 2.0) Netty/Handler (io.netty:netty-handler:4.1.108.Final - https://netty.io/netty-handler/)
+ (Apache License, Version 2.0) Netty/Handler/Proxy (io.netty:netty-handler-proxy:4.1.108.Final - https://netty.io/netty-handler-proxy/)
+ (Apache License, Version 2.0) Netty/Resolver (io.netty:netty-resolver:4.1.108.Final - https://netty.io/netty-resolver/)
+ (Apache License, Version 2.0) Netty/Resolver/DNS (io.netty:netty-resolver-dns:4.1.108.Final - https://netty.io/netty-resolver-dns/)
+ (Apache License, Version 2.0) Netty/Transport (io.netty:netty-transport:4.1.108.Final - https://netty.io/netty-transport/)
+ (Apache License, Version 2.0) Netty/Transport/Classes/Epoll (io.netty:netty-transport-classes-epoll:4.1.108.Final - https://netty.io/netty-transport-classes-epoll/)
+ (Apache License, Version 2.0) Netty/Transport/Native/Epoll (io.netty:netty-transport-native-epoll:4.1.108.Final - https://netty.io/netty-transport-native-epoll/)
+ (Apache License, Version 2.0) Netty/Transport/Native/Unix/Common (io.netty:netty-transport-native-unix-common:4.1.108.Final - https://netty.io/netty-transport-native-unix-common/)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-api:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-api-events:1.32.0-alpha - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-context:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-exporter-common:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-exporter-logging:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-exporter-zipkin:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-extension-incubator:1.32.0-alpha - https://github.com/open-telemetry/opentelemetry-java)
(The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-extension-trace-propagators:1.17.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-common:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-logs:1.25.0-alpha - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-metrics:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-testing:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-trace:1.25.0 - https://github.com/open-telemetry/opentelemetry-java)
- (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-semconv:1.25.0-alpha - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-common:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-logs:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-metrics:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-testing:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
+ (The Apache License, Version 2.0) OpenTelemetry Java (io.opentelemetry:opentelemetry-sdk-trace:1.32.0 - https://github.com/open-telemetry/opentelemetry-java)
(The Apache Software License, Version 2.0) Prometheus Java Simpleclient (io.prometheus:simpleclient:0.16.0 - http://github.com/prometheus/client_java/simpleclient)
(The Apache Software License, Version 2.0) Prometheus Java Simpleclient Common (io.prometheus:simpleclient_common:0.16.0 - http://github.com/prometheus/client_java/simpleclient_common)
(The Apache Software License, Version 2.0) Prometheus Java Span Context Supplier - Common (io.prometheus:simpleclient_tracer_common:0.16.0 - http://github.com/prometheus/client_java/simpleclient_tracer/simpleclient_tracer_common)
(The Apache Software License, Version 2.0) Prometheus Java Span Context Supplier - OpenTelemetry (io.prometheus:simpleclient_tracer_otel:0.16.0 - http://github.com/prometheus/client_java/simpleclient_tracer/simpleclient_tracer_otel)
(The Apache Software License, Version 2.0) Prometheus Java Span Context Supplier - OpenTelemetry Agent (io.prometheus:simpleclient_tracer_otel_agent:0.16.0 - http://github.com/prometheus/client_java/simpleclient_tracer/simpleclient_tracer_otel_agent)
- (The Apache Software License, Version 2.0) Quarkus - ArC - Runtime (io.quarkus:quarkus-arc:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (Apache License, Version 2.0) Quarkus - Bootstrap - Runner (io.quarkus:quarkus-bootstrap-runner:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (The Apache Software License, Version 2.0) Quarkus - Core - Runtime (io.quarkus:quarkus-core:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (The Apache Software License, Version 2.0) Quarkus - Development mode - SPI (io.quarkus:quarkus-development-mode-spi:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (Apache License, Version 2.0) Quarkus - FS Util (io.quarkus:quarkus-fs-util:0.0.9 - https://quarkus.io/)
- (The Apache Software License, Version 2.0) Quarkus - IDE Launcher (io.quarkus:quarkus-ide-launcher:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (The Apache Software License, Version 2.0) Quarkus - Mutiny - Runtime (io.quarkus:quarkus-mutiny:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (The Apache Software License, Version 2.0) Quarkus - Netty - Runtime (io.quarkus:quarkus-netty:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (The Apache Software License, Version 2.0) Quarkus - SmallRye Context Propagation - Runtime (io.quarkus:quarkus-smallrye-context-propagation:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (The Apache Software License, Version 2.0) Quarkus - Vert.x - Runtime (io.quarkus:quarkus-vertx:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (The Apache Software License, Version 2.0) Quarkus - Quarkus - Vert.x Late Bound MDC Provider (io.quarkus:quarkus-vertx-latebound-mdc-provider:3.2.9.Final - https://github.com/quarkusio/quarkus)
- (Apache License, Version 2.0) ArC - Runtime (io.quarkus.arc:arc:3.2.9.Final - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - ArC - Runtime (io.quarkus:quarkus-arc:3.8.4 - https://github.com/quarkusio/quarkus)
+ (Apache License, Version 2.0) Quarkus - Bootstrap - Runner (io.quarkus:quarkus-bootstrap-runner:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - Core - Runtime (io.quarkus:quarkus-core:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - Development mode - SPI (io.quarkus:quarkus-development-mode-spi:3.8.4 - https://github.com/quarkusio/quarkus)
+ (Apache License, Version 2.0) Quarkus - FS Util (io.quarkus:quarkus-fs-util:0.0.10 - https://quarkus.io/)
+ (The Apache Software License, Version 2.0) Quarkus - IDE Launcher (io.quarkus:quarkus-ide-launcher:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - Mutiny - Runtime (io.quarkus:quarkus-mutiny:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - Netty - Runtime (io.quarkus:quarkus-netty:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - SmallRye Context Propagation - Runtime (io.quarkus:quarkus-smallrye-context-propagation:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - Vert.x - Runtime (io.quarkus:quarkus-vertx:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - Vert.x Late Bound MDC Provider (io.quarkus:quarkus-vertx-latebound-mdc-provider:3.8.4 - https://github.com/quarkusio/quarkus)
+ (The Apache Software License, Version 2.0) Quarkus - Virtual Threads - Runtime (io.quarkus:quarkus-virtual-threads:3.8.4 - https://github.com/quarkusio/quarkus)
+ (Apache License, Version 2.0) ArC - Runtime (io.quarkus.arc:arc:3.8.4 - https://github.com/quarkusio/quarkus)
(The Apache Software License, Version 2.0) SmallRye Context Propagation: Core (io.smallrye:smallrye-context-propagation:2.1.0 - https://github.com/smallrye/smallrye-context-propagation)
(The Apache Software License, Version 2.0) SmallRye Context Propagation: API (io.smallrye:smallrye-context-propagation-api:2.1.0 - https://github.com/smallrye/smallrye-context-propagation)
(The Apache Software License, Version 2.0) SmallRye Context Propagation: Storage (io.smallrye:smallrye-context-propagation-storage:2.1.0 - https://github.com/smallrye/smallrye-context-propagation)
(Apache License, Version 2.0) SmallRye Fault Tolerance: Vert.x Integration (io.smallrye:smallrye-fault-tolerance-vertx:6.2.6 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: Annotations (io.smallrye.common:smallrye-common-annotation:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: Classloader (io.smallrye.common:smallrye-common-classloader:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: Constraints (io.smallrye.common:smallrye-common-constraint:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: Expressions (io.smallrye.common:smallrye-common-expression:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: Functions (io.smallrye.common:smallrye-common-function:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: IO (io.smallrye.common:smallrye-common-io:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: OS (io.smallrye.common:smallrye-common-os:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Common: Vert.x Context Utilities (io.smallrye.common:smallrye-common-vertx-context:2.1.0 - http://smallrye.io)
- (Apache License, Version 2.0) SmallRye Config: CDI (io.smallrye.config:smallrye-config:3.3.2 - https://smallrye.io)
- (Apache License, Version 2.0) SmallRye Config: Common (io.smallrye.config:smallrye-config-common:3.3.2 - https://smallrye.io)
- (Apache License, Version 2.0) SmallRye Config: Core (io.smallrye.config:smallrye-config-core:3.3.2 - https://smallrye.io)
- (Apache License, Version 2.0) SmallRye Mutiny - Core library (io.smallrye.reactive:mutiny:2.3.1 - https://smallrye.io/smallrye-mutiny)
- (Apache License, Version 2.0) SmallRye Mutiny - Integration with SmallRye Context Propagation (io.smallrye.reactive:mutiny-smallrye-context-propagation:2.3.1 - https://smallrye.io/smallrye-mutiny)
- (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Auth Common (io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:3.7.2 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
- (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Core (io.smallrye.reactive:smallrye-mutiny-vertx-core:3.7.2 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
- (The Apache Software License, Version 2.0) SmallRye Mutiny - Runtime Helpers (io.smallrye.reactive:smallrye-mutiny-vertx-runtime:3.7.2 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
- (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x URI Template (io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:3.7.2 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
- (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Web Client (io.smallrye.reactive:smallrye-mutiny-vertx-web-client:3.7.2 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
- (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Web Common (io.smallrye.reactive:smallrye-mutiny-vertx-web-common:3.7.2 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
- (The Apache Software License, Version 2.0) SmallRye Mutiny - Code Generator (io.smallrye.reactive:vertx-mutiny-generator:3.7.2 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
- (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-auth-common (io.vertx:vertx-auth-common:4.4.6 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-auth-parent/vertx-auth-common)
- (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-codegen (io.vertx:vertx-codegen:4.4.6 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-codegen)
- (Eclipse Public License - v 2.0) (The Apache Software License, Version 2.0) Vert.x Core (io.vertx:vertx-core:4.4.6 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-core)
+ (Apache License, Version 2.0) SmallRye Common: Annotations (io.smallrye.common:smallrye-common-annotation:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: Classloader (io.smallrye.common:smallrye-common-classloader:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: Constraints (io.smallrye.common:smallrye-common-constraint:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: CPU (io.smallrye.common:smallrye-common-cpu:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: Expressions (io.smallrye.common:smallrye-common-expression:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: Functions (io.smallrye.common:smallrye-common-function:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: IO (io.smallrye.common:smallrye-common-io:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: Net (io.smallrye.common:smallrye-common-net:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: OS (io.smallrye.common:smallrye-common-os:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: References (io.smallrye.common:smallrye-common-ref:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Common: Vert.x Context Utilities (io.smallrye.common:smallrye-common-vertx-context:2.2.0 - http://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Config: CDI (io.smallrye.config:smallrye-config:3.5.4 - https://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Config: Common (io.smallrye.config:smallrye-config-common:3.5.4 - https://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Config: Core (io.smallrye.config:smallrye-config-core:3.5.4 - https://smallrye.io)
+ (Apache License, Version 2.0) SmallRye Mutiny - Core library (io.smallrye.reactive:mutiny:2.5.8 - https://smallrye.io/smallrye-mutiny)
+ (Apache License, Version 2.0) SmallRye Mutiny - Integration with SmallRye Context Propagation (io.smallrye.reactive:mutiny-smallrye-context-propagation:2.5.8 - https://smallrye.io/smallrye-mutiny)
+ (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Auth Common (io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:3.11.0 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
+ (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Core (io.smallrye.reactive:smallrye-mutiny-vertx-core:3.11.0 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
+ (The Apache Software License, Version 2.0) SmallRye Mutiny - Runtime Helpers (io.smallrye.reactive:smallrye-mutiny-vertx-runtime:3.11.0 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
+ (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x URI Template (io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:3.11.0 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
+ (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Web Client (io.smallrye.reactive:smallrye-mutiny-vertx-web-client:3.11.0 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
+ (The Apache Software License, Version 2.0) SmallRye Mutiny - Vert.x Web Common (io.smallrye.reactive:smallrye-mutiny-vertx-web-common:3.11.0 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
+ (The Apache Software License, Version 2.0) SmallRye Mutiny - Code Generator (io.smallrye.reactive:vertx-mutiny-generator:3.11.0 - https://smallrye.io/smallrye-mutiny-vertx-bindings)
+ (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-auth-common (io.vertx:vertx-auth-common:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-auth-parent/vertx-auth-common)
+ (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-codegen (io.vertx:vertx-codegen:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-codegen)
+ (Eclipse Public License - v 2.0) (The Apache Software License, Version 2.0) Vert.x Core (io.vertx:vertx-core:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-core)
(Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x JUnit 5 support :: Core (io.vertx:vertx-junit5:4.4.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-junit5)
- (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x Kafka Client (io.vertx:vertx-kafka-client:4.4.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-kafka-client)
- (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x metrics implementation for Micrometer.io (io.vertx:vertx-micrometer-metrics:4.4.6 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-micrometer-metrics)
+ (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x Kafka Client (io.vertx:vertx-kafka-client:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-kafka-client)
+ (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x metrics implementation for Micrometer.io (io.vertx:vertx-micrometer-metrics:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-micrometer-metrics)
(Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x OpenTelemetry (io.vertx:vertx-opentelemetry:4.4.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-tracing-parent/vertx-opentelemetry)
- (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x URI Template (io.vertx:vertx-uri-template:4.4.6 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-uri-template)
- (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-web-client (io.vertx:vertx-web-client:4.4.6 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-web-parent/vertx-web-client)
- (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-web-common (io.vertx:vertx-web-common:4.4.6 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-web-parent/vertx-web-common)
+ (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) Vert.x URI Template (io.vertx:vertx-uri-template:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-uri-template)
+ (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-web-client (io.vertx:vertx-web-client:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-web-parent/vertx-web-client)
+ (Eclipse Public License - v 1.0) (The Apache Software License, Version 2.0) vertx-web-common (io.vertx:vertx-web-common:4.5.7 - http://nexus.sonatype.org/oss-repository-hosting.html/vertx-parent/vertx-ext/vertx-ext-parent/vertx-web-parent/vertx-web-common)
(The Apache Software License, Version 2.0) Zipkin Reporter: Core (io.zipkin.reporter2:zipkin-reporter:2.16.3 - https://github.com/openzipkin/zipkin-reporter-java/zipkin-reporter)
(The Apache Software License, Version 2.0) Zipkin Sender: OkHttp 3 (io.zipkin.reporter2:zipkin-sender-okhttp3:2.16.3 - https://github.com/openzipkin/zipkin-reporter-java/zipkin-sender-okhttp3)
(The Apache Software License, Version 2.0) Zipkin Core Library (io.zipkin.zipkin2:zipkin:2.23.2 - https://github.com/openzipkin/zipkin/zipkin)
@@ -175,10 +177,11 @@ Lists of 231 third-party dependencies.
(Apache License 2.0) CDI Language Model (jakarta.enterprise:jakarta.enterprise.lang-model:4.0.1 - https://projects.eclipse.org/projects/ee4j/jakarta.enterprise.cdi-parent/jakarta.enterprise.lang-model)
(The Apache Software License, Version 2.0) Jakarta Dependency Injection (jakarta.inject:jakarta.inject-api:2.0.1 - https://github.com/eclipse-ee4j/injection-api)
(EPL 2.0) (GPL2 w/ CPE) Jakarta Interceptors (jakarta.interceptor:jakarta.interceptor-api:2.1.0 - https://github.com/eclipse-ee4j/interceptor-api)
+ (Eclipse Public License 2.0) (GNU General Public License, version 2 with the GNU Classpath Exception) Jakarta JSON Processing API (jakarta.json:jakarta.json-api:2.1.3 - https://github.com/eclipse-ee4j/jsonp)
(EPL 2.0) (GPL2 w/ CPE) jakarta.transaction API (jakarta.transaction:jakarta.transaction-api:2.0.1 - https://projects.eclipse.org/projects/ee4j.jta)
(Eclipse Public License 1.0) JUnit (junit:junit:4.12 - http://junit.org)
- (Apache License, Version 2.0) Byte Buddy (without dependencies) (net.bytebuddy:byte-buddy:1.14.7 - https://bytebuddy.net/byte-buddy)
- (Apache License, Version 2.0) Byte Buddy agent (net.bytebuddy:byte-buddy-agent:1.14.4 - https://bytebuddy.net/byte-buddy-agent)
+ (Apache License, Version 2.0) Byte Buddy (without dependencies) (net.bytebuddy:byte-buddy:1.14.11 - https://bytebuddy.net/byte-buddy)
+ (Apache License, Version 2.0) Byte Buddy agent (net.bytebuddy:byte-buddy-agent:1.14.10 - https://bytebuddy.net/byte-buddy-agent)
(Apache License, Version 2.0) (MIT License) Logstash Logback Encoder (net.logstash.logback:logstash-logback-encoder:7.2 - https://github.com/logfellow/logstash-logback-encoder)
(The MIT License) JOpt Simple (net.sf.jopt-simple:jopt-simple:5.0.4 - http://jopt-simple.github.io/jopt-simple)
(MIT) argparse4j (net.sourceforge.argparse4j:argparse4j:0.7.0 - http://argparse4j.github.io)
@@ -198,36 +201,36 @@ Lists of 231 third-party dependencies.
(Apache License, Version 2.0) AssertJ fluent assertions (org.assertj:assertj-core:3.22.0 - https://assertj.github.io/doc/assertj-core/)
(Apache 2.0) Awaitility (org.awaitility:awaitility:4.2.0 - http://awaitility.org)
(The Apache Software License, Version 2.0) jose4j (org.bitbucket.b_c:jose4j:0.9.6 - https://bitbucket.org/b_c/jose4j/)
- (The MIT License) Checker Qual (org.checkerframework:checker-qual:3.34.0 - https://checkerframework.org/)
+ (The MIT License) Checker Qual (org.checkerframework:checker-qual:3.42.0 - https://checkerframework.org/)
(Apache License, Version 2.0) MicroProfile Config API (org.eclipse.microprofile.config:microprofile-config-api:3.0.3 - https://microprofile.io/project/eclipse/microprofile-config/microprofile-config-api)
(Apache License, Version 2.0) MicroProfile Context Propagation (org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.3 - http://microprofile.io/microprofile-context-propagation-api)
- (Universal Permissive License, Version 1.0) Graal Sdk (org.graalvm.sdk:graal-sdk:23.0.1 - https://github.com/oracle/graal)
- (BSD Licence 3) Hamcrest (org.hamcrest:hamcrest:2.1 - http://hamcrest.org/JavaHamcrest/)
+ (Eclipse Public License 2.0) (GNU General Public License, version 2 with the GNU Classpath Exception) Eclipse Parsson (org.eclipse.parsson:parsson:1.1.5 - https://github.com/eclipse-ee4j/parsson/parsson)
+ (BSD License 3) Hamcrest (org.hamcrest:hamcrest:2.2 - http://hamcrest.org/JavaHamcrest/)
(New BSD License) Hamcrest Core (org.hamcrest:hamcrest-core:1.3 - https://github.com/hamcrest/JavaHamcrest/hamcrest-core)
(BSD-2-Clause) (Public Domain, per Creative Commons CC0) HdrHistogram (org.hdrhistogram:HdrHistogram:2.1.12 - http://hdrhistogram.github.io/HdrHistogram/)
- (Apache License 2.0) JBoss Logging 3 (org.jboss.logging:jboss-logging:3.5.1.Final - http://www.jboss.org)
+ (Apache License 2.0) JBoss Logging 3 (org.jboss.logging:jboss-logging:3.5.3.Final - http://www.jboss.org)
(Apache License, version 2.0) JBoss Logging I18n Annotations (org.jboss.logging:jboss-logging-annotations:2.2.1.Final - http://www.jboss.org/jboss-logging-tools-parent/jboss-logging-annotations)
- (Apache License 2.0) JBoss Log Manager (Embedded) (org.jboss.logmanager:jboss-logmanager-embedded:1.1.1 - http://www.jboss.org/jboss-logmanager-embedded)
- (Apache License 2.0) JBoss Threads (org.jboss.threads:jboss-threads:3.5.0.Final - http://www.jboss.org/jboss-threads)
+ (Apache License 2.0) JBoss Log Manager (org.jboss.logmanager:jboss-logmanager:3.0.4.Final - https://jboss.org)
+ (Apache License 2.0) JBoss Threads (org.jboss.threads:jboss-threads:3.5.1.Final - http://www.jboss.org/jboss-threads)
(Eclipse Public License v2.0) JUnit Jupiter (Aggregator) (org.junit.jupiter:junit-jupiter:5.10.1 - https://junit.org/junit5/)
- (Eclipse Public License v2.0) JUnit Jupiter API (org.junit.jupiter:junit-jupiter-api:5.9.3 - https://junit.org/junit5/)
- (Eclipse Public License v2.0) JUnit Jupiter Engine (org.junit.jupiter:junit-jupiter-engine:5.9.3 - https://junit.org/junit5/)
- (Eclipse Public License v2.0) JUnit Jupiter Params (org.junit.jupiter:junit-jupiter-params:5.9.3 - https://junit.org/junit5/)
- (Eclipse Public License v2.0) JUnit Platform Commons (org.junit.platform:junit-platform-commons:1.9.3 - https://junit.org/junit5/)
- (Eclipse Public License v2.0) JUnit Platform Engine API (org.junit.platform:junit-platform-engine:1.9.3 - https://junit.org/junit5/)
+ (Eclipse Public License v2.0) JUnit Jupiter API (org.junit.jupiter:junit-jupiter-api:5.10.1 - https://junit.org/junit5/)
+ (Eclipse Public License v2.0) JUnit Jupiter Engine (org.junit.jupiter:junit-jupiter-engine:5.10.1 - https://junit.org/junit5/)
+ (Eclipse Public License v2.0) JUnit Jupiter Params (org.junit.jupiter:junit-jupiter-params:5.10.1 - https://junit.org/junit5/)
+ (Eclipse Public License v2.0) JUnit Platform Commons (org.junit.platform:junit-platform-commons:1.10.1 - https://junit.org/junit5/)
+ (Eclipse Public License v2.0) JUnit Platform Engine API (org.junit.platform:junit-platform-engine:1.10.1 - https://junit.org/junit5/)
(Public Domain, per Creative Commons CC0) LatencyUtils (org.latencyutils:LatencyUtils:2.0.3 - http://latencyutils.github.io/LatencyUtils/)
(The Apache Software License, Version 2.0) LZ4 and xxHash (org.lz4:lz4-java:1.8.0 - https://github.com/lz4/lz4-java)
- (The MIT License) mockito-core (org.mockito:mockito-core:5.3.1 - https://github.com/mockito/mockito)
+ (MIT) mockito-core (org.mockito:mockito-core:5.8.0 - https://github.com/mockito/mockito)
(MIT) mockito-junit-jupiter (org.mockito:mockito-junit-jupiter:5.8.0 - https://github.com/mockito/mockito)
(Apache License, Version 2.0) Objenesis (org.objenesis:objenesis:3.3 - http://objenesis.org/objenesis)
(GNU General Public License (GPL), version 2, with the Classpath exception) JMH Core (org.openjdk.jmh:jmh-core:1.37 - http://openjdk.java.net/projects/code-tools/jmh/jmh-core/)
(GNU General Public License (GPL), version 2, with the Classpath exception) JMH Generators: Annotation Processors (org.openjdk.jmh:jmh-generator-annprocess:1.37 - http://openjdk.java.net/projects/code-tools/jmh/jmh-generator-annprocess/)
- (The Apache License, Version 2.0) org.opentest4j:opentest4j (org.opentest4j:opentest4j:1.2.0 - https://github.com/ota4j-team/opentest4j)
+ (The Apache License, Version 2.0) org.opentest4j:opentest4j (org.opentest4j:opentest4j:1.3.0 - https://github.com/ota4j-team/opentest4j)
(Apache-2.0) Scala Library (org.scala-lang:scala-library:2.12.15 - https://www.scala-lang.org/)
(Apache-2.0) scala-collection-compat (org.scala-lang.modules:scala-collection-compat_2.12:2.6.0 - http://www.scala-lang.org/)
(Apache-2.0) scala-java8-compat (org.scala-lang.modules:scala-java8-compat_2.12:1.0.2 - http://www.scala-lang.org/)
(MIT License) SLF4J API Module (org.slf4j:slf4j-api:2.0.9 - http://www.slf4j.org)
(Apache License, Version 2.0) SnakeYAML Engine (org.snakeyaml:snakeyaml-engine:2.7 - https://bitbucket.org/snakeyaml/snakeyaml-engine)
- (Apache License 2.0) wildfly-common (org.wildfly.common:wildfly-common:1.5.4.Final-format-001 - http://www.jboss.org/wildfly-common)
+ (Apache License 2.0) wildfly-common (org.wildfly.common:wildfly-common:1.7.0.Final - http://www.jboss.org)
(Apache-2.0) snappy-java (org.xerial.snappy:snappy-java:1.1.10.5 - https://github.com/xerial/snappy-java)
- (Apache License, Version 2.0) SnakeYAML (org.yaml:snakeyaml:2.0 - https://bitbucket.org/snakeyaml/snakeyaml)
+ (Apache License, Version 2.0) SnakeYAML (org.yaml:snakeyaml:2.2 - https://bitbucket.org/snakeyaml/snakeyaml)
diff --git a/data-plane/benchmarks/pom.xml b/data-plane/benchmarks/pom.xml
index 2b3c577f9b..2cbc78f479 100644
--- a/data-plane/benchmarks/pom.xml
+++ b/data-plane/benchmarks/pom.xml
@@ -49,10 +49,9 @@
${jmh.version}
provided
-
dev.knative.eventing.kafka.broker
- dispatcher-vertx
+ dispatcher
${project.version}
diff --git a/data-plane/config/broker/500-receiver.yaml b/data-plane/config/broker/500-receiver.yaml
index 484f4352e4..46dadb5535 100644
--- a/data-plane/config/broker/500-receiver.yaml
+++ b/data-plane/config/broker/500-receiver.yaml
@@ -15,7 +15,7 @@
# limitations under the License.
apiVersion: apps/v1
-kind: StatefulSet
+kind: Deployment
metadata:
name: kafka-broker-receiver
namespace: knative-eventing
@@ -25,8 +25,6 @@ metadata:
app.kubernetes.io/component: kafka-broker-receiver
app.kubernetes.io/name: knative-eventing
spec:
- serviceName: kafka-broker-receiver
- podManagementPolicy: "Parallel"
selector:
matchLabels:
app: kafka-broker-receiver
@@ -67,13 +65,13 @@ spec:
- mountPath: /etc/config
name: config-kafka-broker-data-plane
readOnly: true
- - mountPath: /etc/contract-resources
- name: contract-resources
+ - mountPath: /etc/brokers-triggers
+ name: kafka-broker-brokers-triggers
readOnly: true
- mountPath: /tmp
name: cache
- mountPath: /etc/logging
- name: kafka-config-logging
+ name: kafka-broker-config-logging
readOnly: true
- mountPath: /etc/tracing
name: config-tracing
@@ -110,7 +108,7 @@ spec:
- name: HTTPSERVER_CONFIG_FILE_PATH
value: /etc/config/config-kafka-broker-httpserver.properties
- name: DATA_PLANE_CONFIG_FILE_PATH
- value: /etc/contract-resources/data
+ value: /etc/brokers-triggers/data
- name: LIVENESS_PROBE_PATH
value: /healthz
- name: READINESS_PROBE_PATH
@@ -170,7 +168,7 @@ spec:
seccompProfile:
type: RuntimeDefault
volumes:
- - name: contract-resources
+ - name: kafka-broker-brokers-triggers
configMap:
name: kafka-broker-brokers-triggers
- name: config-kafka-broker-data-plane
@@ -178,7 +176,7 @@ spec:
name: config-kafka-broker-data-plane
- name: cache
emptyDir: { }
- - name: kafka-config-logging
+ - name: kafka-broker-config-logging
configMap:
name: kafka-config-logging
- name: config-tracing
diff --git a/data-plane/config/brokerv2/500-dispatcher.yaml b/data-plane/config/brokerv2/500-dispatcher.yaml
deleted file mode 100644
index 27d9ecc444..0000000000
--- a/data-plane/config/brokerv2/500-dispatcher.yaml
+++ /dev/null
@@ -1,178 +0,0 @@
----
-
-# Copyright 2020 The Knative Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- name: kafka-broker-dispatcher
- namespace: knative-eventing
- labels:
- app: kafka-broker-dispatcher
- app.kubernetes.io/version: devel
- app.kubernetes.io/component: kafka-broker-dispatcher
- app.kubernetes.io/name: knative-eventing
-spec:
- serviceName: kafka-broker-dispatcher
- podManagementPolicy: "Parallel"
- selector:
- matchLabels:
- app: kafka-broker-dispatcher
- template:
- metadata:
- name: kafka-broker-dispatcher
- labels:
- app: kafka-broker-dispatcher
- app.kubernetes.io/version: devel
- app.kubernetes.io/component: kafka-broker-dispatcher
- app.kubernetes.io/name: knative-eventing
- app.kubernetes.io/kind: kafka-dispatcher
- spec:
- # To avoid node becoming SPOF, spread our replicas to different nodes and zones.
- topologySpreadConstraints:
- - maxSkew: 2
- topologyKey: topology.kubernetes.io/zone
- whenUnsatisfiable: ScheduleAnyway
- labelSelector:
- matchLabels:
- app: kafka-broker-dispatcher
- affinity:
- podAntiAffinity:
- preferredDuringSchedulingIgnoredDuringExecution:
- - podAffinityTerm:
- labelSelector:
- matchLabels:
- app: kafka-broker-dispatcher
- topologyKey: kubernetes.io/hostname
- weight: 100
- serviceAccountName: knative-kafka-broker-data-plane
- securityContext:
- runAsNonRoot: true
- containers:
- - name: kafka-broker-dispatcher
- image: ${KNATIVE_KAFKA_DISPATCHER_IMAGE}
- imagePullPolicy: IfNotPresent
- volumeMounts:
- - mountPath: /etc/config
- name: config-kafka-broker-data-plane
- readOnly: true
- - mountPath: /etc/contract-resources
- name: contract-resources
- readOnly: true
- - mountPath: /tmp
- name: cache
- - mountPath: /etc/logging
- name: kafka-config-logging
- readOnly: true
- - mountPath: /etc/tracing
- name: config-tracing
- readOnly: true
- ports:
- - containerPort: 9090
- name: http-metrics
- protocol: TCP
- env:
- - name: SERVICE_NAME
- value: "kafka-broker-dispatcher"
- - name: SERVICE_NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- - name: PRODUCER_CONFIG_FILE_PATH
- value: /etc/config/config-kafka-broker-producer.properties
- - name: CONSUMER_CONFIG_FILE_PATH
- value: /etc/config/config-kafka-broker-consumer.properties
- - name: WEBCLIENT_CONFIG_FILE_PATH
- value: /etc/config/config-kafka-broker-webclient.properties
- - name: DATA_PLANE_CONFIG_FILE_PATH
- value: /etc/contract-resources/data
- - name: EGRESSES_INITIAL_CAPACITY
- value: "20"
- - name: INSTANCE_ID
- valueFrom:
- fieldRef:
- fieldPath: metadata.uid
- - name: METRICS_PATH
- value: /metrics
- - name: METRICS_PORT
- value: "9090"
- - name: METRICS_PUBLISH_QUANTILES
- value: "false"
- - name: METRICS_JVM_ENABLED
- value: "false"
- - name: CONFIG_TRACING_PATH
- value: "/etc/tracing"
- # https://github.com/fabric8io/kubernetes-client/issues/2212
- - name: HTTP2_DISABLE
- value: "true"
- # This should be set according to initial delay seconds
- - name: WAIT_STARTUP_SECONDS
- value: "8"
- - name: JAVA_TOOL_OPTIONS
- value: "-XX:+CrashOnOutOfMemoryError -XX:InitialRAMPercentage=70.0 -XX:MinRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0"
-
- resources:
- requests:
- cpu: 1000m
- # 600Mi for virtual replicas + 100Mi overhead
- memory: 700Mi
- limits:
- cpu: 2000m
- memory: 1000Mi
-
- livenessProbe:
- failureThreshold: 3
- tcpSocket:
- port: 9090
- initialDelaySeconds: 10
- periodSeconds: 3
- successThreshold: 1
- timeoutSeconds: 1
- readinessProbe:
- failureThreshold: 3
- httpGet:
- port: 9090
- path: /metrics
- scheme: HTTP
- initialDelaySeconds: 10
- periodSeconds: 3
- successThreshold: 1
- timeoutSeconds: 1
- terminationMessagePolicy: FallbackToLogsOnError
- terminationMessagePath: /dev/temination-log
- securityContext:
- allowPrivilegeEscalation: false
- readOnlyRootFilesystem: true
- capabilities:
- drop:
- - ALL
- seccompProfile:
- type: RuntimeDefault
- volumes:
- - name: config-kafka-broker-data-plane
- configMap:
- name: config-kafka-broker-data-plane
- - name: cache
- emptyDir: { }
- - name: kafka-config-logging
- configMap:
- name: kafka-config-logging
- - name: config-tracing
- configMap:
- name: config-tracing
- restartPolicy: Always
- dnsConfig:
- options:
- - name: single-request-reopen
diff --git a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/oidc/TokenProvider.java b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/oidc/TokenProvider.java
index 3ee9cf81c7..066024f881 100644
--- a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/oidc/TokenProvider.java
+++ b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/oidc/TokenProvider.java
@@ -20,7 +20,6 @@
import dev.knative.eventing.kafka.broker.core.NamespacedName;
import io.fabric8.kubernetes.api.model.authentication.TokenRequest;
import io.fabric8.kubernetes.api.model.authentication.TokenRequestBuilder;
-import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
@@ -44,57 +43,68 @@ public class TokenProvider {
public TokenProvider(Vertx vertx) {
this.vertx = vertx;
- Config clientConfig = new ConfigBuilder().build();
- kubernetesClient =
- new KubernetesClientBuilder().withConfig(clientConfig).build();
-
+ this.kubernetesClient = new KubernetesClientBuilder()
+ .withConfig(new ConfigBuilder().build())
+ .build();
this.tokenCache = CacheBuilder.newBuilder()
.expireAfterWrite(CACHE_EXPIRATION_TIME_SECONDS, TimeUnit.SECONDS)
.maximumSize(CACHE_MAXIMUM_SIZE)
+ .initialCapacity(2)
.build();
}
public Future getToken(NamespacedName serviceAccount, String audience) {
- String cacheKey = generateCacheKey(serviceAccount, audience);
- String token = tokenCache.getIfPresent(cacheKey);
+ final var cacheKey = generateCacheKey(serviceAccount, audience);
+ final var token = tokenCache.getIfPresent(cacheKey);
if (token != null) {
return Future.succeededFuture(token);
- } else {
- return requestToken(serviceAccount, audience).onSuccess(t -> {
- if (t != null) {
- tokenCache.put(cacheKey, t);
- }
- });
}
+
+ return requestToken(serviceAccount, audience).onSuccess(t -> {
+ if (t != null) {
+ tokenCache.put(cacheKey, t);
+ }
+ });
}
private Future requestToken(NamespacedName serviceAccount, String audience) {
return this.vertx.executeBlocking(
promise -> {
- TokenRequest tokenRequest = new TokenRequestBuilder()
- .withNewSpec()
- .withAudiences(audience)
- .withExpirationSeconds(TOKEN_EXPIRATION_SECONDS)
- .endSpec()
- .build();
+ try {
+ final var builder = new TokenRequestBuilder()
+ .withNewSpec()
+ .withAudiences(audience)
+ .withExpirationSeconds(TOKEN_EXPIRATION_SECONDS)
+ .endSpec()
+ .build();
- tokenRequest = kubernetesClient
- .serviceAccounts()
- .inNamespace(serviceAccount.namespace())
- .withName(serviceAccount.name())
- .tokenRequest(tokenRequest);
+ final var tokenRequest = kubernetesClient
+ .serviceAccounts()
+ .inNamespace(serviceAccount.namespace())
+ .withName(serviceAccount.name())
+ .tokenRequest(builder);
- if (tokenRequest != null && tokenRequest.getStatus() != null) {
- promise.complete(tokenRequest.getStatus().getToken());
- } else {
- promise.fail("could not request token for " + serviceAccount.name() + "/"
- + serviceAccount.namespace());
+ if (isValidTokenRequest(tokenRequest)) {
+ promise.tryComplete(tokenRequest.getStatus().getToken());
+ } else {
+ promise.tryFail("could not request token for " + serviceAccount.name() + "/"
+ + serviceAccount.namespace());
+ }
+ } catch (final RuntimeException exception) {
+ promise.tryFail(exception);
}
},
false);
}
+ private static boolean isValidTokenRequest(final TokenRequest tokenRequest) {
+ return tokenRequest != null
+ && tokenRequest.getStatus() != null
+ && tokenRequest.getStatus().getToken() != null
+ && !tokenRequest.getStatus().getToken().isBlank();
+ }
+
private String generateCacheKey(NamespacedName serviceAccount, String audience) {
return serviceAccount.namespace() + "/" + serviceAccount.name() + "/" + audience;
}
diff --git a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/reconciler/impl/ResourcesReconcilerImpl.java b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/reconciler/impl/ResourcesReconcilerImpl.java
index 30966431be..ed3743ed2a 100644
--- a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/reconciler/impl/ResourcesReconcilerImpl.java
+++ b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/reconciler/impl/ResourcesReconcilerImpl.java
@@ -268,11 +268,17 @@ private static boolean egressEquals(DataPlaneContract.Egress e1, DataPlaneContra
&& Objects.equals(e1.getKeyType(), e2.getKeyType())
&& Objects.equals(e1.getDialectedFilterList(), e2.getDialectedFilterList())
&& Objects.equals(e1.getDestinationCACerts(), e2.getDestinationCACerts())
+ && Objects.equals(e1.getDestinationAudience(), e2.getDestinationAudience())
&& Objects.equals(e1.getReplyUrlCACerts(), e2.getReplyUrlCACerts())
+ && Objects.equals(e1.getReplyUrlAudience(), e2.getReplyUrlAudience())
+ && Objects.equals(e1.getOidcServiceAccountName(), e2.getOidcServiceAccountName())
&& Objects.equals(e1.getReference(), e2.getReference())
&& Objects.equals(
e1.getEgressConfig().getDeadLetterCACerts(),
- e2.getEgressConfig().getDeadLetterCACerts());
+ e2.getEgressConfig().getDeadLetterCACerts())
+ && Objects.equals(
+ e1.getEgressConfig().getDeadLetterAudience(),
+ e2.getEgressConfig().getDeadLetterAudience());
}
private static boolean trustBundlesEquals(Set oldTrustBundles, Set newTrustBundles) {
diff --git a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/AuthProvider.java b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/AuthProvider.java
index 48065b106f..9dbfce938c 100644
--- a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/AuthProvider.java
+++ b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/AuthProvider.java
@@ -18,6 +18,7 @@
import dev.knative.eventing.kafka.broker.contract.DataPlaneContract;
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
import io.vertx.core.Future;
+import io.vertx.core.Vertx;
/**
* AuthProvider provides auth credentials.
@@ -25,8 +26,8 @@
@FunctionalInterface
public interface AuthProvider {
- static AuthProvider kubernetes() {
- return new KubernetesAuthProvider(new DefaultKubernetesClient());
+ static AuthProvider kubernetes(final Vertx vertx) {
+ return new KubernetesAuthProvider(vertx, new DefaultKubernetesClient());
}
static AuthProvider noAuth() {
diff --git a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProvider.java b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProvider.java
index f4eb3de722..41268c1a41 100644
--- a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProvider.java
+++ b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProvider.java
@@ -28,14 +28,16 @@
class KubernetesAuthProvider implements AuthProvider {
+ private final Vertx vertx;
private final KubernetesClient kubernetesClient;
- KubernetesAuthProvider(final KubernetesClient client) {
+ KubernetesAuthProvider(final Vertx vertx, final KubernetesClient client) {
+ this.vertx = vertx;
this.kubernetesClient = client;
}
private Future getCredentials(final DataPlaneContract.Reference secretReference) {
- return Vertx.currentContext().executeBlocking(p -> {
+ return this.vertx.executeBlocking(p -> {
try {
final Secret secret = getSecretFromKubernetes(secretReference);
final var credentials = new KubernetesCredentials(secret);
@@ -52,7 +54,7 @@ private Future getCredentials(final DataPlaneContract.Reference sec
}
private Future getCredentials(final DataPlaneContract.MultiSecretReference secretReferences) {
- return Vertx.currentContext().executeBlocking(p -> {
+ return this.vertx.executeBlocking(p -> {
try {
final var credentials = new KubernetesCredentials(secretDataOf(secretReferences));
final var error = CredentialsValidator.validate(credentials);
diff --git a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/utils/ReferenceCounter.java b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/utils/ReferenceCounter.java
index 122dcffeb9..796b111ff9 100644
--- a/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/utils/ReferenceCounter.java
+++ b/data-plane/core/src/main/java/dev/knative/eventing/kafka/broker/core/utils/ReferenceCounter.java
@@ -16,6 +16,7 @@
package dev.knative.eventing.kafka.broker.core.utils;
import java.util.Objects;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* Thread unsafe holder with reference counter.
@@ -25,12 +26,12 @@
public class ReferenceCounter {
private final T value;
- private int refs;
+ private final AtomicInteger refs;
public ReferenceCounter(final T value) {
Objects.requireNonNull(value);
this.value = value;
- this.refs = 0;
+ this.refs = new AtomicInteger(0);
}
/**
@@ -44,14 +45,13 @@ public T getValue() {
* Increment the ref count
*/
public void increment() {
- this.refs++;
+ this.refs.incrementAndGet();
}
/**
* @return true if the count is 0, hence nobody is referring anymore to this value
*/
public boolean decrementAndCheck() {
- this.refs--;
- return this.refs == 0;
+ return this.refs.decrementAndGet() == 0;
}
}
diff --git a/data-plane/core/src/test/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProviderTest.java b/data-plane/core/src/test/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProviderTest.java
index fd12393626..7bb85cbe0b 100644
--- a/data-plane/core/src/test/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProviderTest.java
+++ b/data-plane/core/src/test/java/dev/knative/eventing/kafka/broker/core/security/KubernetesAuthProviderTest.java
@@ -51,8 +51,8 @@ public class KubernetesAuthProviderTest {
private static final String userPasswordSecretKey = "password";
@BeforeEach
- public void setUp() {
- provider = new KubernetesAuthProvider(client);
+ public void setUp(final Vertx vertx) {
+ provider = new KubernetesAuthProvider(vertx, client);
}
@Test
diff --git a/data-plane/dispatcher-vertx/pom.xml b/data-plane/dispatcher-vertx/pom.xml
deleted file mode 100644
index 1b81090b82..0000000000
--- a/data-plane/dispatcher-vertx/pom.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-
-
-
- 4.0.0
-
- data-plane
- dev.knative.eventing.kafka.broker
- 1.0-SNAPSHOT
-
-
- dispatcher-vertx
-
- dispatcher-vertx
-
-
-
- dev.knative.eventing.kafka.broker
- dispatcher
- ${project.version}
-
-
- dev.knative.eventing.kafka.broker
- receiver-vertx
- ${project.version}
-
-
-
-
-
-
- com.google.cloud.tools
- jib-maven-plugin
- ${jib.version}
-
-
- ${env.KO_DOCKER_REPO}/knative-kafka-broker-dispatcher:${env.TAG}
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- ${maven.shade.plugin.version}
-
- true
-
-
-
- package
-
- shade
-
-
-
-
-
-
- dev.knative.eventing.kafka.broker.dispatchervertx.Main
-
-
-
-
- *:*
- false
-
-
- net.logstash.logback:logstash-logback-encoder
-
- **
-
-
-
- org.apache.kafka:kafka-clients
-
- **
-
-
-
- io.fabric8:kubernetes-client
-
- **
-
-
-
-
-
-
-
-
-
-
-
diff --git a/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/Main.java b/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/Main.java
deleted file mode 100644
index 9558c36fd1..0000000000
--- a/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/Main.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright © 2018 Knative Authors (knative-dev@googlegroups.com)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package dev.knative.eventing.kafka.broker.dispatchervertx;
-
-import dev.knative.eventing.kafka.broker.receiververtx.VertxProducerFactory;
-import java.io.IOException;
-
-public class Main {
- public static void main(String[] args) throws IOException {
- dev.knative.eventing.kafka.broker.dispatcher.main.Main.start(
- args, new VertxConsumerFactory<>(), new VertxProducerFactory<>());
- }
-}
diff --git a/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/VertxConsumerFactory.java b/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/VertxConsumerFactory.java
deleted file mode 100644
index 15cf4e198c..0000000000
--- a/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/VertxConsumerFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright © 2018 Knative Authors (knative-dev@googlegroups.com)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package dev.knative.eventing.kafka.broker.dispatchervertx;
-
-import dev.knative.eventing.kafka.broker.core.ReactiveConsumerFactory;
-import dev.knative.eventing.kafka.broker.core.ReactiveKafkaConsumer;
-import io.vertx.core.Vertx;
-import io.vertx.core.tracing.TracingPolicy;
-import io.vertx.kafka.client.common.KafkaClientOptions;
-import java.util.Map;
-
-public class VertxConsumerFactory implements ReactiveConsumerFactory {
-
- @Override
- public ReactiveKafkaConsumer create(Vertx vertx, Map configs) {
- return new VertxKafkaConsumer<>(
- vertx, new KafkaClientOptions().setConfig(configs).setTracingPolicy(TracingPolicy.IGNORE));
- }
-}
diff --git a/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/VertxKafkaConsumer.java b/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/VertxKafkaConsumer.java
deleted file mode 100644
index 1e7b06dd3b..0000000000
--- a/data-plane/dispatcher-vertx/src/main/java/dev/knative/eventing/kafka/broker/dispatchervertx/VertxKafkaConsumer.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright © 2018 Knative Authors (knative-dev@googlegroups.com)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package dev.knative.eventing.kafka.broker.dispatchervertx;
-
-import dev.knative.eventing.kafka.broker.core.ReactiveKafkaConsumer;
-import io.vertx.core.Future;
-import io.vertx.core.Handler;
-import io.vertx.core.Vertx;
-import io.vertx.kafka.client.common.KafkaClientOptions;
-import io.vertx.kafka.client.consumer.KafkaConsumer;
-import java.time.Duration;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.apache.kafka.clients.consumer.Consumer;
-import org.apache.kafka.clients.consumer.ConsumerRebalanceListener;
-import org.apache.kafka.clients.consumer.ConsumerRecords;
-import org.apache.kafka.clients.consumer.OffsetAndMetadata;
-import org.apache.kafka.common.TopicPartition;
-
-public class VertxKafkaConsumer implements ReactiveKafkaConsumer {
-
- private KafkaConsumer consumer;
-
- public VertxKafkaConsumer(Vertx v, KafkaClientOptions configs) {
- consumer = KafkaConsumer.create(v, configs);
- }
-
- @Override
- public Future