Giter VIP home page Giter VIP logo

eventing-kafka-broker's Introduction

eventing-kafka-broker's People

Contributors

aavarghese avatar aliok avatar arghya88 avatar aslom avatar basit9958 avatar cali0707 avatar converge avatar creydr avatar debasishbsws avatar dependabot[bot] avatar devguyio avatar endpositive avatar haubenr avatar knative-automation avatar leo6leo avatar lionelvillard avatar markusthoemmes avatar maschmid avatar mattmoor avatar matzew avatar meenuyd avatar mgencur avatar neerajnagure avatar pierdipi avatar rahul-kumar-prog avatar rajibmitra avatar slinkydeveloper avatar upodroid avatar vishal-chdhry avatar xiangpingjiang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eventing-kafka-broker's Issues

Set up Jacoco to produce an aggregate code coverage report

Problem
Jacoco code coverage report produces multiple reports, one per module (core, receiver, etc)

Persona:
Which persona is this feature for?
Contributor

Exit Criteria
Jacoco produces an aggregated code coverage report of all modules and the report is integrated with the coverage infrastructure.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Support full Delivery Spec

Problem
broker.spec.delivery has parameters to specify retries, backoffDelay, and backoffPolicy, we need to support them.

  • Update the control plane to add those configs to the ConfigMap
  • Update the data plane to act on those configs

Persona:
Which persona is this feature for?
Event Consumer

Exit Criteria
Pass TestBrokerRedelivery test (https://github.com/knative/eventing/blob/master/test/e2e/broker_redelivery_test.go)

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)

/kind feature-request
/area data-plane
/area control-plane

Use Maven wrapper

Problem
The Maven Wrapper is an excellent choice for projects that need a specific version of Maven (or for users that don't want to install Maven at all). Instead of installing many versions of it in the operating system, we can just use the project-specific wrapper script.

Persona:
Which persona is this feature for?
Contributor

Exit Criteria

  • Use ./mvnw for running tests.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)

/good-first-issue

[Data-plane] Receiver should reply with 404 in case it receives a request to a non existing broker

Problem
Now the receiver just tries to push the events to the topic, without checking if that broker exists.

Exit Criteria
An integration test that replies with 404 when you try to push a valid event to a non existing broker URL

Time Estimate (optional):
2

Additional context (optional)
The problem with receiver is that today it doesn't have knowledge of the existing brokers, aka it doesn't watch the famous data plane config map.

While in dispatcher side you solved the file watcher thread -> vertx communication deploying and undeploying verticles, here I have some ideas that might give an implementation hint:

  1. Without revolutionize the code, since you just need a read view and you recreate every time that map, an AtomicReference shared between the watcher thread and the http verticle should suffice.
  2. Without revolutionize the code, you might have a shared map using https://vertx.io/docs/vertx-core/java/#_using_the_shareddata_api. On file watcher thread, you write in that map and on the http verticle (request handler) you read that map
  3. A more vert.x-ish approach could be to use the event bus to perform updates: on http verticle receiver you start an event bus receiver that, every time receives a message at address updatebrokers.myapp, updates its internal set of brokers. On file watcher side, every time you receive an update from the file, you broadcast the new set of brokers to updatebrokers.myapp.

Choose the simplest approach that fits better both for this issue and eventual next changes to the receiver code that requires knowledge of the available brokers

Set partitionkey value as ProducerRecord key

Problem
partitionkey is the cloudevents way of specifying events partitioning, we should set ProducerRecord key to the partitionkey value.
If there is no partitionkey extension the ProducerRecord key defaults to the empty string.

Persona:
Which persona is this feature for?

Exit Criteria
A measurable (binary) test that would indicate that the problem has been resolved.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)

Implement KafkaSink finalizer

Problem
We haven't implemented the finalizer in this PR: #134

Persona:
Which persona is this feature for?
*

Exit Criteria
A measurable (binary) test that would indicate that the problem has been resolved.
finalizer + unit tests

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)

  • The underlying topic might be managed by an external entity (eg it might be created before the CO is created), we need to make sure that we don't delete the topic if it isn't managed by us. To do that we can use the annotation eventing.knative.dev/topic.owner in the status of the KafkaSink. Possible values of this annotation might be:

    • kafkasink-controller if it's managed by us
    • external if it's not

cc @matzew @slinkydeveloper if you would like to share your opinion on the additional context design/discussion.

Allow independent installation of Broker and KafkaSink

Problem

Since a user can use the KafkaSink independently from the Broker, we can separate the control plane in a different YAML. In this way, a user can choose to use the Broker, the Sink, or both, and we use only one process to handle both.

Persona:
Which persona is this feature for?
Event Consumer
Event Producer

Exit Criteria
A measurable (binary) test that would indicate that the problem has been resolved.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)

  • #134 (comment)

    • control plane (eventing-kafka-control-plane.yaml) - required
    • sink data plane (eventing-kafka-sink.yaml)
    • broker data plane (eventing-kafka-broker.yaml)

    Users choose 2 or 3 or both.

    Images remain 3 (but we package one per YAML).

  • Add a check to see if the data plane exists or not and reflect that in the status

/area control-plane

Create an E2E test using Brokers, Triggers and KafkaSinks

Problem

We should create a test with all the objects we manage. This can prevent
regressions or raise bugs in the implementation or with the configurations
(eg RBAC config).

Test Plan

+---------+     +--------+     +---------+   +---------------------------+
|  Broker +---->+ Trigger+---->+KafkaSink+-->+kafka consumer (test image)|
+----+----+     +--------+     +----+----+   +---------------------------+
     |                              ^
     |          +--------+          |
     +--------->+ Trigger+----------+
                +--------+

(Use this diagram as test documentation)

  • Send 10 events to the Broker and verify them using the kafka-consumer test image.

Persona:
Which persona is this feature for?
*

Exit Criteria
An E2E test using Brokers, Triggers and KafkaSinks

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)
Add any other context about the feature request here.

  • the /test directory has some examples.

Add Trigger Finalizer

Persona:
Which persona is this feature for?

  • All

Exit Criteria
A measurable (binary) test that would indicate that the problem has been resolved.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)
Add any other context about the feature request here.

Rename the data-plane contract entities to more general terms

Problem
Now the data-plane contract (the ConfigMap that configures the data-plane dispatcher and receiver) uses names for entities which are strictly related to knative eventing broker terminology (broker, triggers, etc). This is confusing because these building blocks are pretty much abstracted from the knative component they implement, in particular in relation to the work is happening here #134 and the eventual next plans to implement with this data-plane the KafkaSource component too.

Persona:
Which persona is this feature for? Knative Developer

Exit Criteria
Better names to replace Broker/Trigger in the config map data plane contract.

Additional context (optional)
As raised by @pierDipi, this change may break and bring outages while upgrading to the next version of this project #134 (comment). We need to develop a migration tool that gracefully performs the update #134 (comment).

update developer guide to include tailored k8s cluster installation

Problem

The current developer guide documentation references the main knative install docs for instructions on how to create a k8s cluster for this project. However, the referenced knative docs does not include the creation of k8s clusters and assumes that user's already have one created.

Persona:
Which persona is this feature for?

Contributor

Keep protobuf generated code in repository

Problem
In order to get started contributing a developer needs to generate code.
We can keep generated code by protoc in the repository.

Persona:
Which persona is this feature for?
Contributor

Exit Criteria

  • Get rid of hack/dev_data_plane_setup.sh
  • Add hack/update-codegen.sh
  • Add hack/verify-codegen.sh
  • Remove Git ignore rules for generated code. (see data-plane/.gitignore)

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

/assign

[flaky] .Up

Auto-generated issue tracking flakiness of test

  • Test name: .Up
  • Repository name: eventing-kafka-broker

Use <dependencyManagement> in parent data-plane pom

Problem
Now the parent data plane pom contains a lot of dependencies that should be specified in child poms.

These should be removed but the parent pom should have the <dependencyManagement> definition to import the Vert.x BOM (https://github.com/vert-x3/vertx-stack#bills-of-materials-maven-bom) and the other dependencies versions (slf4j, junit5, ...).
Then the child modules just need to import the dep without explicating the version (this will keep the version aligned across all modules)

Persona:
Which persona is this feature for?
Contributor

Exit Criteria
A measurable (binary) test that would indicate that the problem has been resolved.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Support Tracing

Problem
The Broker spec indicates that a Broker implementation SHOULD support Cloudevents Distributed Tracing extension: https://github.com/knative/eventing/blob/master/docs/spec/broker.md#observability

Persona:
Which persona is this feature for?
All of them can benefit from this.

Exit Criteria
Pass the Broker tracing conformance test (https://github.com/knative/eventing/blob/master/test/conformance/broker_tracing_test.go), it needs some refactoring (ie removing the channelTestRunner from parameters) before we can import it.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
3

Additional context (optional)

/kind data-plane
/kind feature-request

Doc how to configure checkstyle with Intellij Idea

Problem
The checkstyle plugin for intellij doesn't really work well and it's a mess to configure the code formatting. Document how to do it.

Persona:
Which persona is this feature for? Developers

Exit Criteria
Some doc that explains how to configure the code formatting

Time Estimate (optional):
1

[flaky] .Test

Auto-generated issue tracking flakiness of test

  • Test name: .Test
  • Repository name: eventing-kafka-broker

Upgrade to cloud events sdk milestone2

Problem
We need to update to CloudEvents SDK milestone 2, major changes that impact us are related to the Vert.x 4 support.

Persona:
Which persona is this feature for?

  • System Integrator

Exit Criteria
Upgrade to cloud events sdk milestone2 and all tests pass.

Time Estimate (optional):
How many developer-days do you think this may take to resolve?
1

Additional context (optional)

/area data-plane

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.