All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Domain delete functionality
- Github actions for release
- eg-oss-parent version updated to
2.4.0
- now inheriting jib plugin version from eg-oss-parent
- Added option to add metrics to
EntityView
- Entity key values are no longer normalised by trimming whitespace and converting to lowercase. Entity key values are
now case-sensitive and by default are validated as being in snake case (lowercase) when an entity is created. If you
wish to customise entity key value validation please implement a
KeyValidator
component for each key type that requires a different validation algorithm.
- Now using Spring Boot version 2.7.0.
- added arbitrary property support for repository kafka event receiver/sender
- updated all log4j dependencies to mitigate log4shell vulnerability
- Added CRUD Security for Process
- Updating versions of Confluent/Avro to align with downstream implementation
- Now properly defaulting function field to empty string when converting from model to state model to preserve backwards compatibility.
- Added function to kafka -> graphql conversion
- Added
function
field to all Specification types
DefaultEntityView
now based onConcurrentHashMap
- Added Model/State/Services for new Process and ProcessBinding Entities
- Implemented entity delete functionality.
- Added
security
to Specification models.
- Added
security
to AvroSpecification and AvroStreamSpecification schemas, defaulting to empty map.
- Enhanced
EntityView
to support the retrieval of deletedEntity
s
ApolloExecutor
returns aApolloResponseException
with access to the underlyingResponse
on errors.- Downgraded to Java 8 to increase support within the wider streaming ecosystem.
- cli: On cascading stream delete, don't delete schemas that are being used by other streams.
- Authorisation for read, findAll, and find operations for Consumer, ConsumerBinding, Domain, Infrastructure, Producer, ProducerBinding, Schema, Stream, StreamBinding, Zone
- Refactored upsert calls in mutations and removed upsert methods from services
- Refactored update_status calls
- Removed implementation of SecurityAuthoriser based authorisation
- Authorisation for create, update, delete, and updateStatus operations for Consumer, ConsumerBinding, Domain, Infrastructure, Producer, ProducerBinding, Schema, Stream, StreamBinding, Zone
- Refactored updateStatus for Consumer, ConsumerBinding, Domain, Infrastructure, Producer, ProducerBinding, Schema, Stream, StreamBinding, Zone
- Access control setup to handle who can perform mutations on GraphQL.
- Enhanced support for authentication - cli now supports streamRegistryUsername and streamRegistryPassword
- Added CLI command to discover and delete all child entities of a stream.
- Added custom configurer to
DefaultApolloClientFactory
customise okhttp client.
- Added CLI supporting creation and deletion of entities.
- Added authentication support for state api
- Fixed erroneous tag filter.
- Fixed missing filter for name in Producer and Consumer Binding queries.
- Removed postgres repository.
- Changed
Event.of
factory methods to more descriptive names and return the actual type. - Removed notification support.
- Fixed error in
KafkaEventReceiver
.
- Fixed off by one error in
KafkaEventReceiver
.
- Kafka Repository implementation.
- Added logging to Kafka and Apollo state code.
- Moved graphql modules under graphql directory.
- Bumped graphql-java versions to latest.
- Fix a bug in state Avro conversion of stream entities.
- Enhanced
EntityViewListener
to show nullability of parameters to give more control to Kotlin consumers.
- graphql-client, graphql-client-reactor & graphql-client-support modules.
- Added state library.
- Emit event on producer/consumer mutation.
- Emit event on streambinding mutation.
- Added
repository-api
module to define new repository abstraction exposing model instead of data. - Added
repository-postgres
module to implement new repository adapting JPA to consolidate JPA/Hibernate implementation details.
- Split internal representation into Model and Data
- Fixed issues with Stream updates
- Addressed possible issue with notifications
- Fixed issues with referential integrity on binding entities.
- Removed auto configuration of default handlers.
- A listener for streamBinding events
- A Kafka handler for streamBinding events
- A listener for producer events
- A Kafka handler for producer events
- Instrumented Resolvers with timers in line with queries and mutations
- Enabled hibernate metrics by default
- A new field was added for
AvroStream record
in stream-registry-notification schema - Unit tests were modified to verify and test the new field
- Utilise JPA
Example
to improve the performance of search operations in GraphQL Resolvers.
- Cache hints
- Hibernate caching
- Bugfix - Can now Query Streams by their schema
- A stream event handler for Kafka
- Unit and integration tests for stream event handler
- New config classes due a refactoring of
NotificationEventConfig
- New config properties for stream custom parser methods
NotificationEventConfig
was refactored
- Added a
notification-support
with a generic model for event listeners and handlers, including- A listener for schema events
- A listener for stream events
- A Kafka handler for schema events
- An Automatic Kafka setup
- A default avro protocol (a new one can be configured and dynamically loaded)
- Integration tests
- Added a spring application event multicaster
- Added an interface for services to multicast CUD events
- Unit tests
- Changed all core service to support
NotificationEventEmitter
- Changed all core service CUD methods to emit notification events
- Configuration in
spring-boot-starter
module to includenotification-support
config
- Status field will return blank object when it is null for all the entities.
- updateStream contract change(SchemaKeyInput not required in input) and upsertStream fixes for no schema during create
- Added an
authentication_group
tag to thegraphql_api
metric.
- Also fixed incorrectly wired field in
ConsumerBindingResolver
.
- Fixed incorrectly wired field in
ProducerBindingResolver
.
- Added StreamRegistryApolloClient.builder to create client with required adapters.
- Changed
NameNormaliser
valid pattern.
- Setup for flyway db migration tool and initial db script.
- Turning off auto-generation of db in integration.
byKey
query result are now optional.
- Only default handlers present by default.
- Simple validation rules for
EgspKafkaStreamHandler
. - Added schema to client query return of stream.
- Added optional Binding field to Producer and Consumer entities.
- Refactor of all entity structures and implementation of CRUD operations.
- Added metrics to all GraphQL api methods.
- Switch to Spring's
CrudRepository
for the backend.
- Added Zone, Infrastructure, Producer, Consumer, StreamBinding, ProducerBinding & ConsumerBinding entity types to the API.
- New GraphQL API.
- New internal model with service, handler and repository layers.
- Domain, Schema & Stream entities.
- Reference GraphQL client.
- Docker pull and push repo url.
- Converted project into spring boot starter
- 1.0.0-SNAPSHOT -> 0.7.0-SNAPSHOT
- Changed groupId to
com.expediagroup.streamplatform
- Changed packages to
com.expediagroup.streamplatform.streamregistry
- Modularized - core, model, service-api/impl, repository-api/impl, graphql, app
- Removed rest API
- Removed consumer/producer service (to be reintroduced later)
- Removed Dropwizard
- Added Spring Boot
- Docker image accepts environment variables for Spring Configuration
- Removed charts (to be reintroduced later)
- Removed health checks (to be reintroduced later)
- Removed remaining unused files
- Removed integration tests (a small number to be reintroduced later)
- Replaced ConfluentSchemaManager with simple HTTP impl.
- Reformat 2 spaces indent
- Removed unused dependencies & plugins
- License update
0.5.1 - SNAPSHOT
- Updated
README
with Expedia Group stream registry announcement (#155) - Increasing the WAIT time to 100ms in test cases to allow the underlying datastore to sync with the commits.
- Updated mkdocs.yml to
expediagroup
(#168)
0.5.0 - 2019-04-12
- Add health check to verify whether the underlying topic (used as Datastore) is compaction enabled to make sure Stream Metadata is not lost. (#144)
- Migrated version of jib to 1.0.2 (#151)
0.4.10 - 2019-04-03
- Fixed Stream Validation signature and updated implementation (#117)
- Fixed a NPE in get clusters(#145)
- Migrated KafkaManager to InfraManager (fixes #109) (#149)
- Deleted KafkaManager and corresponding test (#149)
0.4.9 - 2019-03-21
- Updated swagger example values (#139)
- Extract out service logic from StreamDao to a new Service Layer (#140)
- Fixed Exception Handling to catch Runtime Exception in Cluster Resource (#141)
- Fixed the response type to text in Stream Resource (#141)
- Upgrade confluent version from 3.3.1 to 4.1.3 (#142)
- Fixing StreamRegistryHealthCheck for release/cut (#143)
0.4.8 - 2019-03-08
- Added clusters Api (#131, #36)
- Updated license info to extend until Present (#138)
0.4.7 - 2019-03-05
- Created
StreamRegistryManagedContainer
which will be responsible for ordering lifecycle for infra components (#124) - Added support for registering Jersey Filters via config.yaml (#136)
- Added
@NonNull
constraint check forInfraManagerConfig.config
(#128) - Re-ordered bean instantiation in
StreamRegistryApplication.run()
to guarantee order of start/stop (#124) - Refactored the Exception chaining and removed business object from the custom Exception classes (#129)
0.4.6 - 2019-02-09
- Fixed healthcheck order of operations (#120)
0.4.5 - 2019-02-08
- Populated the HealthCheck stream region from config file. Removed the dependency of MPAAS_REGION variable. (#103)
- Refactored the Exception handling workflow in order to better communicate the actual error to customers. (#111)
- Hardening check for ensuring KStream store is available during Integration Tests. (#102)
0.4.4 - 2019-02-04
- Jib now publishes docker image to dockerhub
- Fixed the failing HeathCheck (#101). Workaround for confluentinc/schema-registry#894
0.4.3 - 2019-01-31
- Updated Building locally section in README with OpenJDK 11 reference
- Fixed the failing HealthCheck. Passed a valid schema while creating HealthCheckStream (#94)
0.4.2 - 2019-01-18
- Architecture diagram (#4)
- Standalone
infra-provider
module (#78) - Build and Runtime support for OpenJDK11
- Stop Stream Creation for existing topics if topic configs don't match (#52)
- Now DELETE consumer/producer services remove only one client (not all preceding list before a client) (#73)
- Rename
kafka-infra-provider
toinfra-provider-kafka
(#78) maven-enforcer-plugin
to enforce SLF4J logging (#82)- Java packages moved from
com.homeaway.streamingplatform
tocom.homeaway.streamplatform.streamregistry
.
0.4.1 - 2019-01-02
- Docker build commands and documentation (#74)
- Adding un-annotated
streamName
path param to streamUpsert HTTP resource (#69) - Updated pom.xml to remove unused retrofit library, and clean up some versioning (#70)
- Updated pom.xml to fix
make run
goal (#76)
- Deleted TODO/Documentation that referenced incorrect
http://localhost:8081/healthcheck
(#64)
0.4.0 - 2018-12-18
- Schema validation support via
SchemaManager
interface with default Confluent implementation provided (#41)
0.3.2 - 2018-12-16
- Updated README to something that outlines this a bit better. (#54)
- Changed .travis.yml and added a setup script to securely send credentials for sigining and deploying master builds. (#57)
- Added appropriate variables so that all encrypted keys work. (#57)
0.3.1 - 2018-12-12
- Specified
deploy
goal in maven-release-plugin - Fixed "site breaking release process" (#47)
- Fixed ossrh release requirements (#50)
- DummyForJavaDoc.java in assembly module to generate javadoc (#51)
0.3.0 - 2018-12-11
- Integration with travis-ci (#39)
- Makefile for build commands (#39, #43)
- Shell script for build commands (#43)