Repository navigation
Releases: masesgroup/KEFCore
Release list
V4.1.0: updates to KNet 3.3.0 adding projection-aware data retrieve
Caution
KEFCore 4.1.0 is a complete architectural rewrite. Existing code targeting 2.x will require significant updates. See documentation for the migration guide.
Key breaking changes: DatabaseName renamed to TopicPrefix; full rename of methods and classes to be compliant with project name; singleton/context options separation in IKEFCoreSingletonOptions; PreserveStreamsAcrossContexts removed; ApplicationId, StreamsConfig and ProducerConfig promoted to singleton scope; IEntityTypeProducer replaced by IStreamsChangeManager; EntityState moved from IValueContainer into IKEFCoreRowBag.
Internal benchmarks (100-iteration test suite) show overall query execution time improving roughly 2x without the new value buffer caching, and roughly 7x with caching enabled, compared to the 2.6.7 baseline — with some query patterns improving by 10x or more. This is a combined result of KEFCore's new caching architecture and the underlying JNet/JCOBridge evolution from 2.6.8 to 2.6.9.
This is a major release of Entity Framework Core provider for Apache Kafka, available for Entity Framework Core 8, 9 and 10, based on KNet version 3.3.0, on top of Apache Kafka 4.3.1.
Entity Framework Core provider for Apache Kafka comes with the following changes:
- MASES.EntityFrameworkCore.KNet:
- Updates to KNet version 3.3.0 based on Apache Kafka 4.3.1
- Adds projection-aware data retrieve (#719)
- MASES.EntityFrameworkCore.KNet.Serialization:
- Updates
IValueContainerMetadataaddingFullFlattenedPropertiesbesideFlattenedPropertieswhich contains projection properties - Review
DefaultValueContainerto support #719
- Updates
- MASES.EntityFrameworkCore.KNet.Serialization.Avro:
- MASES.EntityFrameworkCore.KNet.Serialization.Avro.Compiler: no changes
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf:
- Review
ProtobufValueContainerto support #719 - Updates Google.Protobuf version
- Review
- MASES.EntityFrameworkCore.KNet.Templates: no changes
- Documentation: aligns to the new architecture; adds backend compatibility reference
- Tests: general improvements; updates complex type tests
Official NuGet packages (*)
- MASES.EntityFrameworkCore.KNet
- MASES.EntityFrameworkCore.KNet.Templates
- MASES.EntityFrameworkCore.KNet.Serialization
- MASES.EntityFrameworkCore.KNet.Serialization.Avro
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf
(*) packages are also available on GitHub packages.
What's Changed
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #673
- Bump actions/cache from 5 to 6 by @dependabot[bot] in #677
- Add custom AvroValueContainer codec to reduce boxing (#679) by @masesdevelopers in #686
- #634 (comment): adds workflow for auto cherry-pick (#687) by @masesdevelopers in #690
- Refactor cherry-pick step in workflow (#691) by @masesdevelopers in #693
- Add permissions to cherry-pick workflow (#694) by @masesdevelopers in #696
- [cherry-pick → release/4.X] Change GitHub token for actions in cherry-pick workflow (#697) by @masesdevelopers in #699
- [cherry-pick → release/4.X] Remove reviewers from cherry-pick workflow (#700) by @masesdevelopers in #702
- [cherry-pick → release/4.X] Add team-reviewers and update assignees in workflow (#703) by @masesdevelopers in #704
- [cherry-pick → release/4.X] Add CODEOWNERS file for repository ownership (#706) by @masesdevelopers in #708
- Bump actions/setup-dotnet from 5 to 6 by @dependabot[bot] in #711
- Bump Microsoft.SourceLink.GitHub from 10.0.300 to 10.0.301 by @dependabot[bot] in #716
- Bump Microsoft.EntityFrameworkCore from 9.0.17 to 9.0.18 by @dependabot[bot] in #714
- Fix #714 by @masesdevelopers in #722
- [cherry-pick → release/4.X] Add structured result reporting and projection tests (#723) by @masesdevelopers in #725
- [cherry-pick → release/4.X] Add projection-aware query push-down (#719) by @masesdevelopers in #730
- [cherry-pick → release/4.X] docs: update performance benchmarks (#732) by @masesdevelopers in #734
- [cherry-pick → release/4.X] Use last special packages outside the repository (#737) by @masesdevelopers in #752
- [cherry-pick → release/4.X] Use performance-docs.yaml for baseline lookup (#749) by @masesdevelopers in #755
- [cherry-pick → release/4.X] Add timing-stats helper and report Complex results (#750) by @masesdevelopers in #757
- [cherry-pick → release/4.X] General update of logging adding many information and test of Earliest offset (#751) by @masesdevelopers in #759
- [cherry-pick → release/4.X] Move tests to test/net and update CI/workflows (#748) by @masesdevelopers in #760
- Bump github/codeql-action from 4 to 4.37.3 by @dependabot[bot] in #745
- [cherry-pick → release/4.X] docs: update performance benchmarks (#736) by @masesdevelopers in #763
- [cherry-pick → release/4.X] Adds Disposable pattern on many classes (#765) by @masesdevelopers in #766
- Bump Microsoft.SourceLink.GitHub from 10.0.301 to 10.0.400 by @dependabot[bot] in #776
- Bump Apache.Avro from 1.12.1 to 1.12.2 by @dependabot[bot] in #783
- Bump Google.Protobuf from 3.35.1 to 3.36.0 by @dependabot[bot] in #786
- Bump Google.Protobuf.Tools from 3.35.1 to 3.36.0 by @dependabot[bot] in #789
- Bump actions/setup-java from 5 to 6 by @dependabot[bot] in #793
- Bump github/codeql-action from 4.37.3 to 4.37.8 by @dependabot[bot] in #792
- Bump Microsoft.EntityFrameworkCore from 9.0.18 to 9.0.19 by @dependabot[bot] in #774
- Bump MASES.KNet.Serialization.Avro from 3.2.3 to 3.3.0 by @dependabot[bot] in #797
- Bump MASES.KNet from 3.2.3 to 3.3.0 by @dependabot[bot] in #796
- Update version from 4.0.0 to 4.1.0 by @github-actions[bot] in #802
Full Changelog: V4.0.0.0...V4.1.0.0
V3.1.0: updates to KNet 2.9.13 adding projection-aware data retrieve
Caution
KEFCore 3.1.0 is a complete architectural rewrite. Existing code targeting 2.x will require significant updates. See documentation for the migration guide.
Key breaking changes: DatabaseName renamed to TopicPrefix; full rename of methods and classes to be compliant with project name; singleton/context options separation in IKEFCoreSingletonOptions; PreserveStreamsAcrossContexts removed; ApplicationId, StreamsConfig and ProducerConfig promoted to singleton scope; IEntityTypeProducer replaced by IStreamsChangeManager; EntityState moved from IValueContainer into IKEFCoreRowBag.
Internal benchmarks (100-iteration test suite) show overall query execution time improving roughly 2x without the new value buffer caching, and roughly 7x with caching enabled, compared to the 2.6.7 baseline — with some query patterns improving by 10x or more. This is a combined result of KEFCore's new caching architecture and the underlying JNet/JCOBridge evolution from 2.6.8 to 2.6.9.
This is a major release of Entity Framework Core provider for Apache Kafka, available for Entity Framework Core 8, 9 and 10, based on KNet version 2.9.13, on top of Apache Kafka 3.9.2.
Entity Framework Core provider for Apache Kafka comes with the following changes:
- MASES.EntityFrameworkCore.KNet:
- Updates to KNet version 2.9.13 based on Apache Kafka 3.9.2
- Adds projection-aware data retrieve (#719)
- MASES.EntityFrameworkCore.KNet.Serialization:
- Updates
IValueContainerMetadataaddingFullFlattenedPropertiesbesideFlattenedPropertieswhich contains projection properties - Review
DefaultValueContainerto support #719
- Updates
- MASES.EntityFrameworkCore.KNet.Serialization.Avro:
- MASES.EntityFrameworkCore.KNet.Serialization.Avro.Compiler: no changes
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf:
- Review
ProtobufValueContainerto support #719 - Updates Google.Protobuf version
- Review
- MASES.EntityFrameworkCore.KNet.Templates: no changes
- Documentation: aligns to the new architecture; adds backend compatibility reference
- Tests: general improvements; updates complex type tests
Official NuGet packages (*)
- MASES.EntityFrameworkCore.KNet
- MASES.EntityFrameworkCore.KNet.Templates
- MASES.EntityFrameworkCore.KNet.Serialization
- MASES.EntityFrameworkCore.KNet.Serialization.Avro
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf
(*) packages are also available on GitHub packages.
What's Changed
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #672
- Bump actions/cache from 5 to 6 by @dependabot[bot] in #676
- Add custom AvroValueContainer codec to reduce boxing (#679) by @masesdevelopers in #685
- #634 (comment): adds workflow for auto cherry-pick (#687) by @masesdevelopers in #689
- [cherry-pick → release/3.X] Refactor cherry-pick step in workflow (#691) by @github-actions[bot] in #692
- [cherry-pick → release/3.X] Add permissions to cherry-pick workflow (#694) by @github-actions[bot] in #695
- [cherry-pick → release/3.X] Change GitHub token for actions in cherry-pick workflow (#697) by @masesdevelopers in #698
- [cherry-pick → release/3.X] Remove reviewers from cherry-pick workflow (#700) by @masesdevelopers in #701
- [cherry-pick → release/3.X] Add team-reviewers and update assignees in workflow (#703) by @masesdevelopers in #705
- [cherry-pick → release/3.X] Add CODEOWNERS file for repository ownership (#706) by @masesdevelopers in #707
- Bump actions/setup-dotnet from 5 to 6 by @dependabot[bot] in #710
- Bump Microsoft.SourceLink.GitHub from 10.0.300 to 10.0.301 by @dependabot[bot] in #717
- Bump Microsoft.EntityFrameworkCore from 9.0.17 to 9.0.18 by @dependabot[bot] in #715
- [cherry-pick → release/3.X] Add structured result reporting and projection tests (#723) by @masesdevelopers in #724
- [cherry-pick → release/3.X] Add projection-aware query push-down (#719) by @masesdevelopers in #731
- [cherry-pick → release/3.X] docs: update performance benchmarks (#732) by @masesdevelopers in #733
- [cherry-pick → release/3.X] Use last special packages outside the repository (#737) by @masesdevelopers in #753
- [cherry-pick → release/3.X] Use performance-docs.yaml for baseline lookup (#749) by @masesdevelopers in #754
- [cherry-pick → release/3.X] Add timing-stats helper and report Complex results (#750) by @masesdevelopers in #756
- [cherry-pick → release/3.X] General update of logging adding many information and test of Earliest offset (#751) by @masesdevelopers in #758
- [cherry-pick → release/3.X] Move tests to test/net and update CI/workflows (#748) by @masesdevelopers in #761
- Bump github/codeql-action from 4 to 4.37.3 by @dependabot[bot] in #742
- [cherry-pick → release/3.X] docs: update performance benchmarks (#736) by @masesdevelopers in #762
- [cherry-pick → release/3.X] Adds Disposable pattern on many classes (#765) by @masesdevelopers in #767
- Bump Microsoft.SourceLink.GitHub from 10.0.301 to 10.0.400 by @dependabot[bot] in #777
- Bump Apache.Avro from 1.12.1 to 1.12.2 by @dependabot[bot] in #782
- Bump Google.Protobuf from 3.35.1 to 3.36.0 by @dependabot[bot] in #785
- Bump Google.Protobuf.Tools from 3.35.1 to 3.36.0 by @dependabot[bot] in #788
- Bump actions/setup-java from 5 to 6 by @dependabot[bot] in #795
- Bump github/codeql-action from 4.37.3 to 4.37.8 by @dependabot[bot] in #794
- Bump Microsoft.EntityFrameworkCore from 9.0.18 to 9.0.19 by @dependabot[bot] in #775
- Bump MASES.KNet.Serialization.Avro from 2.9.12 to 2.9.13 by @dependabot[bot] in #801
- Bump MASES.KNet from 2.9.12 to 2.9.13 by @dependabot[bot] in #800
- Update version from 3.0.0 to 3.1.0 by @github-actions[bot] in #803
Full Changelog: V3.0.0.0...V3.1.0.0
V4.0.0: complete reengineering based on KNet 3.2.3 and JNet 2.6.9
Caution
KEFCore 4.0.0 is a complete architectural rewrite. Existing code targeting 2.x will require significant updates. See documentation for the migration guide.
Key breaking changes: DatabaseName renamed to TopicPrefix; full rename of methods and classes to be compliant with project name; singleton/context options separation in IKEFCoreSingletonOptions; PreserveStreamsAcrossContexts removed; ApplicationId, StreamsConfig and ProducerConfig promoted to singleton scope; IEntityTypeProducer replaced by IStreamsChangeManager; EntityState moved from IValueContainer into IKEFCoreRowBag.
Internal benchmarks (100-iteration test suite) show overall query execution time improving roughly 2x without the new value buffer caching, and roughly 7x with caching enabled, compared to the 2.6.7 baseline — with some query patterns improving by 10x or more. This is a combined result of KEFCore's new caching architecture and the underlying JNet/JCOBridge evolution from 2.6.8 to 2.6.9.
This is a major release of Entity Framework Core provider for Apache Kafka, available for Entity Framework Core 8, 9 and 10, based on KNet version 3.2.3, on top of Apache Kafka 4.2.1.
Entity Framework Core provider for Apache Kafka comes with the following changes:
- MASES.EntityFrameworkCore.KNet:
- Updates to KNet version 3.2.3 based on Apache Kafka 4.2.1
- Complete rewrite of the per-entity convention system: every aspect of Kafka behavior can now be configured via
IModelFinalizingConvention, Attribute, or Fluent API, overriding context-level defaults (topic partitions, replication factor, retention, read-only enforcement, store lookup, SerDes selector, producer tuning) - Adds complete complex type support:
IComplexTypeConverterFactoryfor complex type management, flattened property handling in query translation and serializers, complex-type projection and second-level extraction; enforces value equality onComplexTypeviaKEFCoreComplexTypeConverterConventionand attribute, requiring complex types to implementIEquatableor overrideEqualsfor correct comparison; requiresBinaryas the preferred conversion type on Avro and Protobuf serializers (instead ofText) for correct complex type round-tripping - Adds RocksDB, SSL and SASL configuration via Attribute and Fluent API, integrating with
KNetRocksDBConfigSetter - Introduces
KafkaClusterAdmin, separating admin operations fromKafkaCluster;ClusterIdnow depends only on cluster info and is used for service provider matching - Introduces
StreamsManagerfactory; removesPreserveStreamsAcrossContexts; streams lifecycle now managed viaIStreamsChangeManagerreplacingIEntityTypeProducer - Separates singleton and context-scoped options in
IKEFCoreSingletonOptions; promotesApplicationId,StreamsConfigandProducerConfigto singleton scope - Updates the Streams uncaught exception handler to detect
StreamsExceptionerrors related toTimestampExtractorand attempt thread replacement (StreamThreadExceptionResponse.REPLACE_THREAD) instead of shutting down the application; adds explicit, deterministic handling of allKafkaStreamsstates inStreamsManager(PENDING_ERROR,PENDING_SHUTDOWN,ERROR,NOT_RUNNING,RUNNING) with a documented state diagram; adds a retryingGetIteratorhelper inKNetStreamsRetrieverandKafkaStreamsBaseRetrieverto recover fromInvalidStateStoreExceptionwhile the stream thread isSTARTING, with cancellation support - Adds Kafka transactional producer with exactly-once semantics, async transactions, commit callbacks and future management
- Adds in-memory value buffer caching for entity types with background population on partial enumeration
- Implements
Findbehavior directly via the backend; updates the EF Core tracker directly when the backend reloads - Adds
IValueGeneratorSelectorsupport, threaded through cluster creation (IKafkaClusterCache.CreateCluster,KafkaClusterconstructor) and exposed onIKafkaCluster; renamesIKafkaIntegerValueGeneratortoIKafkaValueGeneratorand addsDateTime/DateTimeOffsetgenerators; updates change detection inKafkaStateHelperto correctly treat a null value arriving from Kafka against a non-null current row value as a real change when bumping generators - Adds
ResetStreamsAPI; refactors topic handling to avoid Kafka Streams reset when persistent storage is in use - Renames
DatabaseNametoTopicPrefix; propagatesTopicPrefixannotation along the full configuration chain - Adds infrastructure logger to
KafkaCluster - Uses producer Send API with managed callback lifecycle
- Adds optional
RecyclableMemoryStreamintegration - Adds
TranslateRightJoinsupport for EF Core 10 - Validates topic ACLs and partition rules on startup
- Removes
Activator.CreateInstancefrom hot path - Improves resource disposal throughout: iterators, event data types, disposable object patterns
- Full rename of methods and classes to be compliant with project name
- MASES.EntityFrameworkCore.KNet.Serialization:
- Introduces
IValueContainerData, movingEntityStateout ofIValueContainerand intoIKEFCoreRowBag - Revises
IValueContainer - Adds optional parameters to
IValueContainerMetadata - Adds
IsComplexhelper method, used across serializers
- Introduces
- MASES.EntityFrameworkCore.KNet.Serialization.Avro:
- Updates header serialization to use
AddVoid - Centralizes type conversion for managed types of Avro SerDes
- Updates header serialization to use
- MASES.EntityFrameworkCore.KNet.Serialization.Avro.Compiler: no changes
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf:
- Updates header serialization to use
AddVoid - Updates Google.Protobuf version
- Updates header serialization to use
- MASES.EntityFrameworkCore.KNet.Templates: no changes
- Documentation: aligns to the new architecture; adds backend compatibility reference
- Tests: general improvements; adds complex type tests
Official NuGet packages (*)
- MASES.EntityFrameworkCore.KNet
- MASES.EntityFrameworkCore.KNet.Templates
- MASES.EntityFrameworkCore.KNet.Serialization
- MASES.EntityFrameworkCore.KNet.Serialization.Avro
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf
(*) packages are also available on GitHub packages.
What's Changed
- Implement the Find behavior using directly the backend by @masesdevelopers in #429
- Update directly the EF Core tracker when the backend reloads by @masesdevelopers in #430
- Refactor streams lifecycle by @masesdevelopers in #433
- Validate topics ACLs and partition rules by @masesdevelopers in #434
- Centralize type conversion for managed types of Avro SerDes by @masesdevelopers in #444
- Support Kafka value generators via selector by @masesdevelopers in #442
- Add complex type management with a new specialized IComplexTypeConverterFactory by @masesdevelopers in #446
- Update creation offsets and sync check by @masesdevelopers in #454
- Add logging registration to complex converters by @masesdevelopers in #456
- Refactor internal object creation by @masesdevelopers in #458
- Add async transactions and commit callbacks by @masesdevelopers in #459
- Add infrastructure logger to Kafka cluster by @masesdevelopers in #460
- #457 (comment): Use producer Send API and manage callback lifecycle by @masesdevelopers in #463
- Bump Google.Protobuf.Tools from 3.33.5 to 3.34.0 by @dependabot[bot] in #466
- Bump Google.Protobuf from 3.33.5 to 3.34.0 by @dependabot[bot] in #465
- Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #464
- Handle TimestampExtractor errors by @masesdevelopers in #461
- Update version from 2.6.7 to 3.0.0-alpha by @github-actions[bot] in #467
- Update version from 3.0.0 to 3.0.0-alpha by @github-actions[bot] in #468
- Use indexed loops and remove unused using by @masesdevelopers in #470
- Add stored-data retrieval and fresh-event handling by @masesdevelopers in #462
- #473 (comment): Update complex property support by @masesdevelopers in #474
- Handle complex types with flattened properties by @masesdevelopers in #477
- Handle flattened properties and complex types in serializers by @masesdevelopers in #478
- Use nameof for GetEntity method lookup by @masesdevelopers in https://github.com/masesgr...
V3.0.0: complete reengineering based on KNet 2.9.12 and JNet 2.6.9
Caution
KEFCore 3.0.0 is a complete architectural rewrite. Existing code targeting 2.x will require significant updates. See documentation for the migration guide.
Key breaking changes: DatabaseName renamed to TopicPrefix; full rename of methods and classes to be compliant with project name; singleton/context options separation in IKEFCoreSingletonOptions; PreserveStreamsAcrossContexts removed; ApplicationId, StreamsConfig and ProducerConfig promoted to singleton scope; IEntityTypeProducer replaced by IStreamsChangeManager; EntityState moved from IValueContainer into IKEFCoreRowBag.
Internal benchmarks (100-iteration test suite) show overall query execution time improving roughly 2x without the new value buffer caching, and roughly 7x with caching enabled, compared to the 2.6.7 baseline — with some query patterns improving by 10x or more. This is a combined result of KEFCore's new caching architecture and the underlying JNet/JCOBridge evolution from 2.6.8 to 2.6.9.
This is a major release of Entity Framework Core provider for Apache Kafka, available for Entity Framework Core 8, 9 and 10, based on KNet version 2.9.12, on top of Apache Kafka 3.9.2.
Entity Framework Core provider for Apache Kafka comes with the following changes:
- MASES.EntityFrameworkCore.KNet:
- Updates to KNet version 2.9.12 based on Apache Kafka 3.9.2
- Complete rewrite of the per-entity convention system: every aspect of Kafka behavior can now be configured via
IModelFinalizingConvention, Attribute, or Fluent API, overriding context-level defaults (topic partitions, replication factor, retention, read-only enforcement, store lookup, SerDes selector, producer tuning) - Adds complete complex type support:
IComplexTypeConverterFactoryfor complex type management, flattened property handling in query translation and serializers, complex-type projection and second-level extraction; enforces value equality onComplexTypeviaKEFCoreComplexTypeConverterConventionand attribute, requiring complex types to implementIEquatableor overrideEqualsfor correct comparison; requiresBinaryas the preferred conversion type on Avro and Protobuf serializers (instead ofText) for correct complex type round-tripping - Adds RocksDB, SSL and SASL configuration via Attribute and Fluent API, integrating with
KNetRocksDBConfigSetter - Introduces
KafkaClusterAdmin, separating admin operations fromKafkaCluster;ClusterIdnow depends only on cluster info and is used for service provider matching - Introduces
StreamsManagerfactory; removesPreserveStreamsAcrossContexts; streams lifecycle now managed viaIStreamsChangeManagerreplacingIEntityTypeProducer - Separates singleton and context-scoped options in
IKEFCoreSingletonOptions; promotesApplicationId,StreamsConfigandProducerConfigto singleton scope - Updates the Streams uncaught exception handler to detect
StreamsExceptionerrors related toTimestampExtractorand attempt thread replacement (StreamThreadExceptionResponse.REPLACE_THREAD) instead of shutting down the application; adds explicit, deterministic handling of allKafkaStreamsstates inStreamsManager(PENDING_ERROR,PENDING_SHUTDOWN,ERROR,NOT_RUNNING,RUNNING) with a documented state diagram; adds a retryingGetIteratorhelper inKNetStreamsRetrieverandKafkaStreamsBaseRetrieverto recover fromInvalidStateStoreExceptionwhile the stream thread isSTARTING, with cancellation support - Adds Kafka transactional producer with exactly-once semantics, async transactions, commit callbacks and future management
- Adds in-memory value buffer caching for entity types with background population on partial enumeration
- Implements
Findbehavior directly via the backend; updates the EF Core tracker directly when the backend reloads - Adds
IValueGeneratorSelectorsupport, threaded through cluster creation (IKafkaClusterCache.CreateCluster,KafkaClusterconstructor) and exposed onIKafkaCluster; renamesIKafkaIntegerValueGeneratortoIKafkaValueGeneratorand addsDateTime/DateTimeOffsetgenerators; updates change detection inKafkaStateHelperto correctly treat a null value arriving from Kafka against a non-null current row value as a real change when bumping generators - Adds
ResetStreamsAPI; refactors topic handling to avoid Kafka Streams reset when persistent storage is in use - Renames
DatabaseNametoTopicPrefix; propagatesTopicPrefixannotation along the full configuration chain - Adds infrastructure logger to
KafkaCluster - Uses producer Send API with managed callback lifecycle
- Adds optional
RecyclableMemoryStreamintegration - Adds
TranslateRightJoinsupport for EF Core 10 - Validates topic ACLs and partition rules on startup
- Removes
Activator.CreateInstancefrom hot path - Improves resource disposal throughout: iterators, event data types, disposable object patterns
- Full rename of methods and classes to be compliant with project name
- MASES.EntityFrameworkCore.KNet.Serialization:
- Introduces
IValueContainerData, movingEntityStateout ofIValueContainerand intoIKEFCoreRowBag - Revises
IValueContainer - Adds optional parameters to
IValueContainerMetadata - Adds
IsComplexhelper method, used across serializers
- Introduces
- MASES.EntityFrameworkCore.KNet.Serialization.Avro:
- Updates header serialization to use
AddVoid - Centralizes type conversion for managed types of Avro SerDes
- Updates header serialization to use
- MASES.EntityFrameworkCore.KNet.Serialization.Avro.Compiler: no changes
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf:
- Updates header serialization to use
AddVoid - Updates Google.Protobuf version
- Updates header serialization to use
- MASES.EntityFrameworkCore.KNet.Templates: no changes
- Documentation: aligns to the new architecture; adds backend compatibility reference
- Tests: general improvements; adds complex type tests
Official NuGet packages (*)
- MASES.EntityFrameworkCore.KNet
- MASES.EntityFrameworkCore.KNet.Templates
- MASES.EntityFrameworkCore.KNet.Serialization
- MASES.EntityFrameworkCore.KNet.Serialization.Avro
- MASES.EntityFrameworkCore.KNet.Serialization.Protobuf
(*) packages are also available on GitHub packages.
What's Changed
- Implement the Find behavior using directly the backend by @masesdevelopers in #429
- Update directly the EF Core tracker when the backend reloads by @masesdevelopers in #430
- Refactor streams lifecycle by @masesdevelopers in #433
- Validate topics ACLs and partition rules by @masesdevelopers in #434
- Centralize type conversion for managed types of Avro SerDes by @masesdevelopers in #444
- Support Kafka value generators via selector by @masesdevelopers in #442
- Add complex type management with a new specialized IComplexTypeConverterFactory by @masesdevelopers in #446
- Update creation offsets and sync check by @masesdevelopers in #454
- Add logging registration to complex converters by @masesdevelopers in #456
- Refactor internal object creation by @masesdevelopers in #458
- Add async transactions and commit callbacks by @masesdevelopers in #459
- Add infrastructure logger to Kafka cluster by @masesdevelopers in #460
- #457 (comment): Use producer Send API and manage callback lifecycle by @masesdevelopers in #463
- Bump Google.Protobuf.Tools from 3.33.5 to 3.34.0 by @dependabot[bot] in #466
- Bump Google.Protobuf from 3.33.5 to 3.34.0 by @dependabot[bot] in #465
- Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #464
- Handle TimestampExtractor errors by @masesdevelopers in #461
- Update version from 2.6.7 to 3.0.0-alpha by @github-actions[bot] in #467
- Update version from 3.0.0 to 3.0.0-alpha by @github-actions[bot] in #468
- Use indexed loops and remove unused using by @masesdevelopers in #470
- Add stored-data retrieval and fresh-event handling by @masesdevelopers in #462
- #473 (comment): Update complex property support by @masesdevelopers in #474
- Handle complex types with flattened properties by @masesdevelopers in #477
- Handle flattened properties and complex types in serializers by @masesdevelopers in #478
- Use nameof for GetEntity method lookup by @masesdevelopers in https://github.com/mases...
V3.0.0-rc4: temporary release
What's Changed
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc94 to 3.2.3-rc95 by @dependabot[bot] in #620
- Bump MASES.KNet from 3.2.3-rc94 to 3.2.3-rc95 by @dependabot[bot] in #619
- Bump bojieyang/indexnow-action from 2 to 3 by @dependabot[bot] in #621
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc95 to 3.2.3-rc96 by @dependabot[bot] in #624
- Updates tests to be compliant with changes in #531 by @masesdevelopers in #626
- Dispose objects returned from iterators by @masesdevelopers in #627
- Dispose the object at its origin avoiding multiple Dispose invocations by @masesdevelopers in #628
- Bump MASES.KNet from 3.2.3-rc95 to 3.2.3-rc991 by @dependabot[bot] in #623
- Update version from 3.0.0-rc3 to 3.0.0-rc4 by @github-actions[bot] in #630
Full Changelog: V3.0.0.0-rc3...V3.0.0.0-rc4
V3.0.0-rc3: temporary release
What's Changed
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc93 to 3.2.3-rc94 by @dependabot[bot] in #615
- Bump MASES.KNet from 3.2.3-rc93 to 3.2.3-rc94 by @dependabot[bot] in #614
- Update version from 3.0.0-rc2 to 3.0.0-rc3 by @github-actions[bot] in #616
- Revert "Bump MASES.KNet from 3.2.3-rc93 to 3.2.3-rc94" by @masesdevelopers in #617
- Revert "Revert "Bump MASES.KNet from 3.2.3-rc93 to 3.2.3-rc94"" by @masesdevelopers in #618
Full Changelog: V3.0.0.0-rc2...V3.0.0.0-rc3
V3.0.0-rc2: temporary release
What's Changed
- Update for per-entity TopicPrefix convention by @masesdevelopers in #595
- Improve resource disposal and event data types by @masesdevelopers in #598
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc8 to 3.2.3-rc9 by @dependabot[bot] in #601
- Bump MASES.KNet from 3.2.3-rc8 to 3.2.3-rc9 by @dependabot[bot] in #600
- Switch Register/Unregister of IStreamsManager from IEntityTypeProducer to IStreamsChangeManager with armonization of event source detection by @masesdevelopers in #597
- Bump Microsoft.SourceLink.GitHub from 10.0.203 to 10.0.300 by @dependabot[bot] in #605
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc9 to 3.2.3-rc91 by @dependabot[bot] in #603
- Bump Microsoft.EntityFrameworkCore from 9.0.15 to 9.0.16 by @dependabot[bot] in #604
- Bump MASES.KNet from 3.2.3-rc9 to 3.2.3-rc91 by @dependabot[bot] in #602
- Bump Google.Protobuf.Tools from 3.34.1 to 3.35.0 by @dependabot[bot] in #607
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc91 to 3.2.3-rc92 by @dependabot[bot] in #609
- Bump Google.Protobuf from 3.34.1 to 3.35.0 by @dependabot[bot] in #606
- Bump MASES.KNet from 3.2.3-rc91 to 3.2.3-rc92 by @dependabot[bot] in #608
- Removes occurrences of Activator.CreateInstance in hot path by @masesdevelopers in #610
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc92 to 3.2.3-rc93 by @dependabot[bot] in #612
- Bump MASES.KNet from 3.2.3-rc92 to 3.2.3-rc93 by @dependabot[bot] in #611
- Update version from 3.0.0-rc1 to 3.0.0-rc2 by @github-actions[bot] in #613
Full Changelog: V3.0.0.0-rc1...V3.0.0.0-rc2
V3.0.0-rc1: temporary release
What's Changed
- Bump nuget/setup-nuget from 2.0.2 to 3.0.0 by @dependabot[bot] in #561
- Bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #562
- Bump actions/configure-pages from 5 to 6 by @dependabot[bot] in #563
- Add in-memory value buffer caching for entity types by @masesdevelopers in #565
- Update IValueContainer interface and adds internal cache by @masesdevelopers in #567
- Fix PR #565 by @masesdevelopers in #571
- Update to KNet 3.2.3-rc by @masesdevelopers in #570
- Bump Microsoft.SourceLink.GitHub from 10.0.201 to 10.0.202 by @dependabot[bot] in #575
- Bump actions/upload-pages-artifact from 4 to 5 by @dependabot[bot] in #574
- Bump nuget/setup-nuget from 3.0.0 to 3.1.0 by @dependabot[bot] in #573
- Background-populate cache on partial enumeration by @masesdevelopers in #572
- Moved future management for transactional producers by @masesdevelopers in #576
- Update to use a common set point for KNet version by @masesdevelopers in #577
- Bump Microsoft.SourceLink.GitHub from 10.0.202 to 10.0.203 by @dependabot[bot] in #580
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc to 3.2.3-rc1 by @dependabot[bot] in #579
- Bump MASES.KNet from 3.2.3-rc to 3.2.3-rc1 by @dependabot[bot] in #578
- Bump nuget/setup-nuget from 3.1.0 to 4 by @dependabot[bot] in #581
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc1 to 3.2.3-rc2 by @dependabot[bot] in #583
- Bump MASES.KNet from 3.2.3-rc1 to 3.2.3-rc3 by @dependabot[bot] in #582
- Bump MASES.KNet.Serialization.Avro from 3.2.3-rc2 to 3.2.3-rc3 by @dependabot[bot] in #584
- Avoid creation of new kafka Admin client when configuration parameter are the same of previously stored instance by @masesdevelopers in #589
- General improvements of tests by @masesdevelopers in #590
- Updates classes using Disposable object by @masesdevelopers in #569
- Update version from 3.0.0-rc to 3.0.0-rc1 by @github-actions[bot] in #591
Full Changelog: V3.0.0.0-rc...V3.0.0.0-rc1
V3.0.0-rc: temporary release
What's Changed
- Update documentation after commit 0446e0a by @github-actions[bot] in #548
- Bump Google.Protobuf.Tools from 3.34.0 to 3.34.1 by @dependabot[bot] in #550
- Bump Google.Protobuf from 3.34.0 to 3.34.1 by @dependabot[bot] in #549
- Review documentation adding backend compatibility by @masesdevelopers in #553
- Update documentation after commit e1edfaf by @github-actions[bot] in #554
- Adds professional support by @masesdevelopers in #555
- Bump MASES.KNet.Serialization.Avro from 3.2.1 to 3.2.2 by @dependabot[bot] in #558
- Bump MASES.KNet from 3.2.1 to 3.2.2 by @dependabot[bot] in #557
- Implementation of RocksDb, SSL and SASL configuration using Attribute and Fluent API by @masesdevelopers in #552
- Update version from 3.0.0-beta to 3.0.0-rc by @github-actions[bot] in #556
- Update documentation after commit 932c514 by @github-actions[bot] in #559
Full Changelog: V3.0.0.0-beta...V3.0.0.0-rc
V3.0.0-beta: temporary release
What's Changed
- Removes EntityTypeChanged by @masesdevelopers in #525
- #496 (comment): adds prefix scan stub by @masesdevelopers in #524
- Bump masesgroup/retrieve-changed-files from 3 to 4 by @dependabot[bot] in #527
- Bump nuget/setup-nuget from 2.0.1 to 2.0.2 by @dependabot[bot] in #526
- Update documentation after commit f666b61 by @github-actions[bot] in #528
- Adds workflow for copyright update by @masesdevelopers in #530
- Separate singleton and context-scoped options in IKEFCoreSingletonOptions by @masesdevelopers in #531
- Adds annotation and attribute for topic name and topic prefix by @masesdevelopers in #532
- Promote ApplicationId, StreamsConfig and ProducerConfig to singleton scope by @masesdevelopers in #533
- Enforce value equality on ComplexTypes via convention by @masesdevelopers in #535
- Add KEFCoreComplexTypeConverterConvention and attribute by @masesdevelopers in #536
- Re-engineering: singleton/context options separation, StreamsManager factory, topic naming and event management conventions by @masesdevelopers in #534
- Add per-entity topic, retention, read-only, store lookup, serialization and producer conventions by @masesdevelopers in #543
- Implement Kafka transactional producer support with exactly-once semantics by @masesdevelopers in #545
- Improve EntityExtractor and LocalEntityExtractor with caching, IModel and IComplexTypeConverterFactory support by @masesdevelopers in #547
- Update version from 3.0.0-alpha4 to 3.0.0-beta by @github-actions[bot] in #542
Full Changelog: V3.0.0.0-alpha4...V3.0.0.0-beta