|sr| Changelog ============== Version 5.4.0 ------------- * `PR-1244 `__ - DG-134: Fix NPE when `schema.registry.ssl.protocol` not specified * `PR-1242 `__ - DG-128: Allow DNS lookup policy to be configurable * `PR-1235 `__ - DG-114: Fix tombstone behavior that causes CPU utilization to go up * `PR-1228 `__ - DG-42: Upgrade to Avro 1.9.1; fixes #1122 * `PR-1225 `__ - Remove `javax.validation::validation-api` dependency from |sr| client * `PR-1026 `__ - CC-3759 - Regenerate ID if in use during registration * `PR-1207 `__ - Add `/v1/metadata/id endpoint` to display |sr| cluster information * `PR-1220 `__ - Add optional query parameter to `/schemas/ids/{id}` to retrieve the current max ID of all schemas * `PR-1214 `__ - MINOR: remove type parameter on Avro deserializer * `PR-1212 `__ - CC-6428 - Use values to preserve defaults for SSL configuration * `PR-1210 `__ - MMA-5160 - Add `defaultToGlobal` flag for `config` API * `PR-1144 `__ - Add a configurable proxy to |sr| client * `PR-1208 `__ - Retain `RestService` SSL method API * `PR-1167 `__ - Mark API parameter for API Spec * `PR-969 `__ - Avro Console Consumer `print.timestamp` property * `PR-957 `__ - Ability to configure SSL truststore and keystore for |sr| clients * `PR-1205 `__ - Use constant time lookup to check subject exists * `PR-1111 `__ - Support reflection-based Avro serialization * `PR-1196 `__ - API to retrieve all subjects associated with a schema id * `PR-1183 `__ - MINOR: Change `int` to `Integer` for `schemaRegistryPort` * `PR-1180 `__ - MINOR: handle `null` in `RecordNameStrategy`; fixes #1165 (`TopicRecordNameStrategy` creates invalid names on `null` values) * `PR-1179 `__ - MINOR: add transitive levels to messages; fixes #1150 (Client reports misleading error when providing an unsupported compatibility level) * `PR-965 `__ - Invalid compatibility message update to include three transitive states * `PR-1178 `__ - Fix `createParentPath` issue where it was actually creating the child path * `PR-1135 `__ - #941. Avoid NPE on parsing Avro schemas by throwing `InvalidSchemaException` (which is handled as `BadRequest`) * `PR-1172 `__ - Add protected method for configuring `forceOptional` * `PR-1038 `__ - Use try-with-resources to avoid NPE in `RestService` * `PR-1171 `__ - MINOR: refactor configuration of `RestService` * `PR-1170 `__ - MINOR: close admin client in tests * `PR-1006 `__ - Fix issue "`RecordNameStrategy` throws `SerializationException` on `null` values" * `PR-1149 `__ - CC-5036: Use `swagger-maven-plugin` to generate API specifications * `PR-1163 `__ - CC-5283: Add temporary replacement for `kafka.utils.ZkUtils` * `PR-1148 `__ - Use the new `AbstractCoordinator` interface * `PR-1140 `__ - CC-4099: `JsonErrorHandler` for |sr| * `PR-1088 `__ - CC-4345: Add per-subject locking and `lastOffset` tracking * `PR-1136 `__ - Fix compilation error caused by signature change to `TestUtils.createBrokerConfig` * `PR-1127 `__ - MINOR: fix abstract coordinator usage Version 5.3.0 ------------- * `PR-1009 `__ - CC-3741: Remove use of IdentityHashMap * `PR-1020 `__ - CC-3803: Corrected support for handling defaults of logical schema types * `PR-1018 `__ - DOCS-319: Add reference to SR security plugin * `PR-1064 `__ - DEVX-768: 5.2 C3 feature focus: new Schema Registry capabilities * `PR-1039 `__ - DOCS-900: use compatibilityLevel for GET response examples * `PR-1067 `__ - DOCS-1437: Change sr-short to sr for proper substitution * `PR-1073 `__ - DOCS-1440: Remove CP install from SR lefthand TOC * `PR-1065 `__ - DOCS-1333: Add Schema Migration docs * `PR-1055 `__ - DOCS-1094: Schema Registry ACLs * `PR-1060 `__ - MINOR: Backport of: Fix checkstyle to pass on 8.5 after upgrade from 6.19 (#857) * `PR-1074 `__ - MINOR: Fix exception string formatting in Avro converter * `PR-1022 `__ - MINOR: improve err message during duplicate ID detection * `PR-1021 `__ - MINOR: add defensive check for tombstoning Version 5.2.0 ------------- * `PR-1062 `__ - CC-4091: Enable reregistration of schema with different ID * `PR-1056 `__ - CC-4062: Fix NPE caused after _schemas topic is compacted * `PR-1054 `__ - CC-4056: Pass id/version when secondary forwards register requests * `PR-1045 `__ - CC-4015 : Clean up tombstones from internal caches * `PR-1043 `__ - Support explicit names for non-string map schemas. * `PR-1035 `__ - CC-3956: Revert "Merge pull request #687 from sunbit-dev/canonical-schemas * `PR-687 `__ - Fix #28: Normalize schemas to canonical form * `PR-1031 `__ - CC-3930: Only send version/id if not null * `PR-1023 `__ - MINOR: swap deleted w/non-deleted before clearing; fix javadoc * `PR-953 `__ - CC-2669 Allow id and version to be passed to register; add modes * `PR-992 `__ - CC-3635 - Add config to specify location of static resources * `PR-994 `__ - Ability to pass additional topic configs to the schemas topic * `PR-948 `__ - Make CachedSchemaRegistryClient thread-safe * `PR-930 `__ - CC-3003 : Ability to inject custom headers to CachedSchemaRegistryClient * `PR-939 `__ - MINOR: ensure store is initialized for getAllKeys Version 5.1.0 ------------- * `PR-933 `__ - DOCS-989 - Fix legacy SR doc issues * `PR-936 `__ - DOCS-929 - Fix confusing anchor links * `PR-938 `__ - Duplicate Heading Update (#937) * `PR-921 `__ - Pass ClientDnsLookup to NetworkClient and parseAndValidateAddresses * `PR-873 `__ - Refactor SR to pull lookup datastructure to its own interface and Id Generation to its own interface * `PR-888 `__ - CC-2674: Point to the right checkstyle suppression file * `PR-846 `__ - CC-2367 : Tombstone deleted schemakey if the same schema is registered again in the subject * `PR-853 `__ - CC-2441 : Add Cyclic schema support * `PR-861 `__ - MINOR: Add Timer class. Change from Kafka (commit fc5f6b0e46ff81302b3e445fed0cdf454c942792) * `PR-857 `__ - Fix checkstyle to pass on 8.5 after upgrade from 6.19 Version 5.0.0 ------------- * `PR-837 `__ - CC-2185: Deprecate schema.registry. prefixes on commonly modified configs and allow unprefixed versions * `PR-834 `__ - DOCS-381 - Rename quick start and improve navigation * `PR-813 `__ - Update maven-plugin-plugin to fix out of bounds error in build * `PR-811 `__ - Fix SchemaRegistryCoordinator for upstream changes * `PR-810 `__ - Remove KafkaJsonEncoder since Scala producers have been removed from Kafka * `PR-809 `__ - Remove KafkaAvroEncoder since the Scala producers have been removed from Kafka * `PR-808 `__ - Use java.util.Base64 instead of javax.xml.bind.DatatypeConverter * `PR-807 `__ - Fix usage of internal Jersey utilities that no longer exist * `PR-806 `__ - Inherit maven compiler plugin definition from common * `PR-804 `__ - Ability to plugin an implementation of BasicAuthCredentialProvider * `PR-803 `__ - CC-1958: Verify configs if createTopic fails because topic already exists * `PR-792 `__ - Improve GC options * `PR-784 `__ - Docs for Subject Name Strategy and Basic Auth * `PR-774 `__ - Revert "Remove |zk| from title" * `PR-773 `__ - Remove |zk| from title * `PR-756 `__ - CLIENTS-986 Forward Auth headers * `PR-748 `__ - confluent.maven.repo: use 'https' * `PR-731 `__ - Issue #704 - Make Serde constructors public Version 4.1.2 ------------- * `PR-840 `__ - CC-2201: Handle NPE exception when tombstone messages are encountered * `PR-839 `__ - CC-2024 : Fix schema not found issue * `PR-801 `__ - CC-1902 : pass all configs to underlying Serializer/deserializer Version 4.1.1 ------------- * `PR-792 `__ - Improve GC options * `PR-787 `__ - Docs for Subject Name Strategy and Basic Auth Version 4.1.0 ------------- * `PR-757 `__ - Add WantedBy dependency to ensure startup order * `PR-741 `__ - CC-1511 : Fix for subject strategy when used with new SubjectNameStrategy. * `PR-742 `__ - Added delete to the client. * `PR-738 `__ - CLIENTS-896: Fix path to patch/series * `PR-735 `__ - Change to use updated Kafka internal API for JaasContext * `PR-718 `__ - Log properly when Exception raised on SchemaRegistryRestApplication * `PR-723 `__ - Merge packaging branches into master and add systemd init scripts * `PR-545 `__ - #544: Add null check for schema doc while adding the property "connect.enum.doc" for schema conversion of enum types * `PR-680 `__ - New (key|value).multi.type option for Avro serialization * `PR-710 `__ - Support Multiple SchemaRegistryResourceExtension * `PR-702 `__ - Set metrics tag for SR metrics * `PR-694 `__ - check kafkaTopicReader and producer not null before closing * `PR-686 `__ - issue#629: endpoint to return schema literal * `PR-696 `__ - Fix sasl inherit * `PR-683 `__ - Systemd * `PR-681 `__ - Add getAllVersions to SchemaRegistryClient * `PR-673 `__ - CLIENTS-729 : ability to inject BasicAuth credentials from producer/consumer SASL * `PR-676 `__ - CLIENTS-774 : ability to forward authorization header * `PR-664 `__ - CLIENTS-708 & CLIENTS-720 Fix enum type in fromConnectData * `PR-571 `__ - Support basic auth credentials embedded in the schema.registry.url * `PR-657 `__ - Add maxPollTimeout parameter to ConsumerNetworkClient constructor Version 4.0.1 ------------- This release upgrades Jackson 2.5.4 to 2.9.4, and fixes handling of Avro enums. * `PR-753 `__ - Bump Jackson version * `PR-692 `__ - MINOR: Backport enum fixes to 4.0.x Version 4.0.0 ------------- * `PR-686 ` - Added REST endpoint to return the unescaped Avro schema for a specific subject and version. Upgrade Notes +++++++++++++ In 4.0.0, initial creation or validation of the topic used to store schemas has been reimplemented to use native Kafka protocol requests instead of accessing |zk| directly. This means that you are no longer required to have direct access to the |zk| cluster backing your Kafka cluster. However, note that this also requires appropriate permissions to create topics (on first execution of |sr|) or describe topics and configs (on subsequent executions to validate the topic is configured correctly). If you have authentication and authorization enabled on your Kafka cluster, you must ensure your principal has the correct permissions before upgrading |sr| cluster. Your principal must have the following permissions: Create Schemas Topic ========= =========================== =============================================== Operation Resource Reason ========= =========================== =============================================== Describe Topic: ``kafkastore.topic`` Check existence of topic Create Cluster Create the schemas topic, set compaction policy ========= =========================== =============================================== Validate Schemas Topic =============== =========================== ============================================= Operation Resource Reason =============== =========================== ============================================= Describe Topic: ``kafkastore.topic`` Check existence of topic DescribeConfigs Topic: ``kafkastore.topic`` Validate correct compaction policy on topic =============== =========================== ============================================= Version 3.3.0 ------------- * Upgrade avro to 1.8.2 * `PR-561 `__ - Use TO_AVRO_LOGICAL_CONVERTERS to convert default values that are Kafka connect logical data types to internal format which correspond to schema type. Logic copied from AvroData fromConnectData * `PR-549 `__ - Replace usage of deprecated ZkUtils.DefaultAcls() * Allow for some retries when validating that all nodes have the same primary * Relocate Avro serdes under a new `avro` package * Increment Magic Byte for SchemaKey and add compatibility tests * Add Delete Schema support * Added avro-serde for Kafka Streams. Pulled from the example project. * `#506 `__ - The AvroMessageFormatter passes byte[] to an Avro encoder, but Avro only likes ByteBuffer. So we need to ByteBuffer.wrap() instead. * Added optional kafkastore.group.id config to override the one automatically created by |sr| * `PR-476 `__ - Adapt to KAFKA-4636 changes: Per listener security settings overrides (KIP-103) Version 3.2.1 ------------- * `PR-503 `__ - CLIENTS-244: Update 3.2.0 changelog * `PR-499 `__ - making sure |sr| doesn't start with uncompacted topic * `PR-497 `__ - CLIENTS-103: Fix ArrayIndexOutOfBoundsException in SchemaRegistryPerformance by counting the registration attempt even if it failed. * `PR-493 `__ - Fixes for CLIENTS-257 * `PR-494 `__ - MINOR: Add compact schemas topic doc * `PR-458 `__ - CLIENTS-104: Add a few retries during startup to allow for slow metadata propagation after creating the _schemas topic. Version 3.2.0 ------------- * `PR-428 `__ - Maven Checkstyle * `PR-425 `__ - Logical Type support * `PR-440 `__ - Documentation changes to reflect pull request 415 * `PR-451 `__ - Generalize schema incompatibility message. * `PR-457 `__ - Update ClusterTestHarness to use o.a.k.common.utils.Time. * `PR-458 `__ - CLIENTS-104: Add a few retries during startup to allow for slow metadata propagation after creating the _schemas topic. * `PR-464 `__ - Improve request URL building in client * `PR-465 `__ - Add topic to error string to make debugging easier. * `PR-448 `__ - Fixes the following avro issues (complex union, document preservation, output schema != input schema) * `PR-468 `__ - CC-443: AvroData's caches should be synchronized for thread-safety * `PR-473 `__ - Fix build to work post KIP-103. * `PR-474 `__ - Fix broker endpoint extraction to correctly translate to the non-ListenerName version that clients use to initiate broker connections. * `PR-472 `__ - Handle primitive types when specific.avro.reader is true * `PR-477 `__ - Docchangefor3.2 * `PR-488 `__ - Don't re-invoke SchemaBuilder.version() and SchemaBuilder.name() if the value has already been set. * `PR-494 `__ - MINOR: Add compact schemas topic doc Version 3.1.1 ------------- No changes Version 3.1.0 ------------- |sr| ++++ * `PR-429 `__ - Moving licenses and notices to a new format, generated by an internal script. * `PR-415 `__ - Option to apply fully transitive schema compatibility checking * `PR-412 `__ - Require bash since we use some bashisms and fix a copyright. * `PR-396 `__ - |zk| and Kafka SASL support. * `PR-384 `__ - Update the link to Google Java code Style * `PR-372 `__ - Update KafkaStore to use moved TopicExistsException class. * `PR-373 `__ - Added get all subjects. * `PR-364 `__ - Increase testing timeouts from 5000ms to 15000ms * `PR-346 `__ - configured log4j to write to log file Serializers, Formatters, and Converters +++++++++++++++++++++++++++++++++++++++ * `PR-403 `__ - CLIENTS-101: Document wire format for Avro. * `PR-379 `__ - Maven plugin * `PR-355 `__ - Adding support for Fixed data types * `PR-352 `__ - Fix schemas.cache.config can't be overrided Version 3.0.1 ------------- |sr| ++++ * `PR-369 `__ - Introducing a new config: kafkastore.bootstrap.servers * `PR-371 `__ - Fixing a bug where the listener port wasn't used in |zk| * `PR-390 `__ - Include cURL output in quickstart * `PR-392 `__ - Fix schemes used for listeners Serializers, Formatters, and Converters +++++++++++++++++++++++++++++++++++++++ * `PR-363 `__ - 3.0.x duplicate schema support * `PR-365 `__ - Fix API compatibility regression from #363 * `PR-378 `__ - Support null namespace for Array of Records Version 3.0.0 ------------- |sr| ++++ * `PR-212 `__ - change the documentation on port to have a high priority and list it higher up in the docs * `PR-298 `__ - Bump version to 3.0.0-SNAPSHOT and Kafka dependency to 0.10.0.0-SNAPSHOT * `PR-300 `__ - Using the new 0.9 Kafka consumer. * `PR-302 `__ - Fix build to handle rack aware changes in Kafka. * `PR-305 `__ - Update to match changed methods in CoreUtils * `PR-317 `__ - Change the 'host.name' importance to high * `PR-319 `__ - KafkaStore SSL support. * `PR-320 `__ - API reference uses 'integer' Avro type which isn't supported. 'int' is supported. * `PR-329 `__ - https support. Serializers, Formatters, and Converters +++++++++++++++++++++++++++++++++++++++ * `PR-264 `__ - Add null checks to json serializer/deserializer * `PR-274 `__ - Add support for Avro projections in decoders * `PR-275 `__ - Fixed references to confluent common version * `PR-276 `__ - Unit tests and bugfix for NPE when using nested optional fields * `PR-278 `__ - Test cases for optional nested structs * `PR-280 `__ - Fix fromConnectData for optional complex types * `PR-290 `__ - Issue #284 Cannot set max.schemas.per.subject due to cast exception * `PR-297 `__ - Allows any CharSequence implementation to be considered a string * `PR-318 `__ - Minor cleanup * `PR-323 `__ - Fix #142 - handle parsing non-json responses in the RestService * `PR-332 `__ - Add status storage topic to Connect Avro sample config. Version 2.0.1 ------------- |sr| ++++ * `PR-286 `__ - Update Kafka version to 0.9.0.1-cp1. Version 2.0.0 ------------- |sr| ++++ * `PR-141 `__ - Incorrect path to log4j.properties file for simple zip file layout * `PR-143 `__ - schema-registry-start does not work with -daemon argument * `PR-152 `__ - Added point about Google code style to Readme. * `PR-163 `__ - Expose more information when registry fails to start * `PR-165 `__ - Add compatibility support for SchemaRegistryClient * `PR-167 `__ - Update the versionCache with a new schemaVersionMap for a subject * `PR-169 `__ - Use correct URL to update compatibility setting of a subject * `PR-180 `__ - GH-177: Remove unneeded content-type headers for GET ops in quickstart and README * `PR-184 `__ - Support multiple registry URLs in client * `PR-186 `__ - Rename LocalSchemaRegistryClient to make it clear it is only intended to be used as a mock in tests. Fixes #185. * `PR-187 `__ - Correct example response for POST /subjects/(string: subject)/versions * `PR-188 `__ - Address GH-168; enable unit testing of CachedSchemaRegistryClient * `PR-195 `__ - Fixed typo in Exception message * `PR-196 `__ - Require Java 7 * `PR-197 `__ - Enable test code sharing * `PR-198 `__ - Update jersey, jackson and junit versions to match rest-utils * `PR-202 `__ - Correct minor docs error in example response * `PR-203 `__ - Issue 194 rename main * `PR-207 `__ - Issue #170: PUT /config/(string: subject) should return 4xx for unknown subjects * `PR-210 `__ - Issue #208: Several RestApiTest test cases don't test proper exception behavior * `PR-219 `__ - Update Kafka version to 0.8.3-SNAPSHOT so we can start developing using upcoming 0.8.3 features. * `PR-237 `__ - Update uses of ZkUtils to match changes made in KAFKA-2639. * `PR-240 `__ - Fixes Typo in the docs. 'actsas' -> 'acts as' * `PR-242 `__ - Fixed |sr| build against kafka trunk * `PR-243 `__ - Use x.y.z versioning scheme (i.e. 2.0.0-SNAPSHOT) * `PR-245 `__ - Fix mvn assembly setup * `PR-252 `__ - Use Kafka compiled with Scala 2.11 * `PR-257 `__ - Updated classpath in schema-registry-run-class to reflect changes in pom.xml * `PR-258 `__ - CC-53: Add worker configs for Avro Kafka Connect that integrates with |sr|. Serializers, Formatters, and Converters +++++++++++++++++++++++++++++++++++++++ * `PR-146 `__ - Added decoder to return a specific Avro record from bytes. * `PR-162 `__ - Add implementation of new Deserializer interface. * `PR-192 `__ - Add new module for Kafka JSON serialization stuff * `PR-193 `__ - Add more JSON codec support * `PR-200 `__ - Switch serializer config classes to use AbstractConfig from confluent-common instead of from Kafka. * `PR-222 `__ - Add AvroConverter in new copycat-avro-converter jar to convert Copycat and Avro data. * `PR-234 `__ - Add AvroConverter support for Decimal, Date, Time, and Timestamp logical types. * `PR-235 `__ - Add caching of schema conversions in AvroData and AvroConverter. * `PR-247 `__ - Update for Copycat -> Kafka Connect renaming. * `PR-251 `__ - Add tests of conversion of null values from Kafka Connect and fix handling of null for int8 and int16 types. * `PR-254 `__ - Ensure AvroConverter passes through null values without adding schemas and that deserialized null values are converted to SchemaAndValue.NULL. * `PR-255 `__ - CC-44: Include version when deserializing Kafka Connect data. * `PR-256 `__ - Encode null values for schemaless array entries and map keys and values as an Anything record.