Comments (7)
When fixing it with the serializer, then it has to be changed for all serializers. Sending null for tombstoning should not be part of the serialization imho.
great library by the way. :)
from kafkaflow.
Do you have any error while producing the message?
from kafkaflow.
No, there is no error. But it won't produce tombstone records when using a kafka upsert source: https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/table/upsert-kafka/ .
from kafkaflow.
Like we discussed on kafkaflow on slack, by using a custom serializer, you can bypass this limitation by checking if the message is null before serializing the message value.
This should produce a message where the message value is an empty byte[] which is the tombstone.
Meanwhile, we will address this issue, by creating a pull request to fix the JsonCoreSerializer.
Regarding the Kakfa upsert source, flink we won't expect a different behavior from Kafka client as they both produce a null record.
from kafkaflow.
I have tried that approach, end to end, using kafka-upsert source and iceberg table destination in AWS. It sends indeed an empty byte array, but that did not translate into a tombstone record.
If I read correctly this https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/table/upsert-kafka/, it would only work if we send null for message.
Maybe I missed something, but I'm happy to test your PR once ready.
from kafkaflow.
Fixing the issue with JsonCoreSerializer when producing a message with a null value it results in a tombstone record where the message value is an empty byte[].
"A null payload is a payload with 0 bytes"
reference here
public Task SerializeAsync(object? message, Stream output, ISerializerContext context)
{
if (message == null)
{
return Task.CompletedTask;
}
return SerializeNonNullMessageAsync(message, output);
}
As an alternative, you can always use the native Kafka client to confirm that it also produces a tombstone record with an empty byte[] like KafkaFlow.
from kafkaflow.
Related Issues (20)
- Improve Worker Distribution Strategy documentation
- [Bug Report]: KafkaFlow OTEL trace is breaking after message consumption
- [Feature Request]: Analyze and adapt to OTEL Semantic Conventions version 1.23.0
- [Bug Report]: KafkaBus.StopAsync() blocks and does not return if there are messages still pending to be consumed HOT 3
- [Bug Report]: System.InvalidOperationException: There is no offsets in the received queue. Call Enqueue first HOT 1
- [Bug Report]: Distribution strategy by message/partition key issue. HOT 4
- [Bug Report]: Consumer Stuck on Exceeding Max Poll Interval
- [Bug Report]: Deserializer does not trigger next middleware in pipeline HOT 2
- [Feature Request]: Add AvroConvert schema registry serializer
- [Bug Report]: System.InvalidOperationException: Could not load the embedded file manifest 'Microsoft.Extensions.FileProviders.Embedded.Manifest.xml' for assembly 'KafkaFlow.Admin.Dashboard'.
- [Bug Report]: WebApi Sample not working as expected
- [Bug Report]: Incompatibility with Microsoft.IO.RecyclableMemoryStream 3.0.0 HOT 1
- [Feature Request]: Inheritance support in Typed Handler Middleware HOT 1
- [Feature Request]: Support JsonSerializerContext ie. JSON source generator HOT 1
- AddSingleTypeDeserializer tries to run for all types of messages[Bug Report]: HOT 5
- Manipulating headers HOT 7
- [Bug Report]: schema-registry service fails because broker is not available yet HOT 1
- [Feature Request]: Schema Registry Samples is Missing an Avro Generic Example HOT 3
- [Bug Report]: MicrosoftLogHandler is serializing exceptions using System.Text.Json HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kafkaflow.