Skip to content

Schema Registry v0.2.0

Compare
Choose a tag to compare
@shiveshr shiveshr released this 08 Mar 16:47
· 1 commit to r0.2 since this release
b9eabb5

Schema registry 0.2.0 contains bug fixes and performance improvements on the service back end and serializers. This also includes several security related improvements and uses the refactored pravega.shared.security library for supporting Basic authentication method. There are also some changes to the API signatures to allow multiple serialization formats for same schema type.

Following are some of the highlight commits for this release:

  • Security:
    We now take dependency on pravega-shared-security module which has all the security related common code in pravega controller refactored out to be reused in schema registry and other pravega components. This also means we remove the dependency on pravega-controller module.
    As part of new auth string format, we now have the AuthHandler from pravega-shared-security where the auth strings are defined with a different syntax that allows users to specify service domain and resource name tags in the resource string.
    Following is how the auth resource strings will now look:
    all
    prn::*,READ
    all namespace
    prn::/namespace:*,READ
    all under specific namespace
    prn::/namespace:ns/*,READ
    specific group under default namespace
    prn::/namespace:/group:group1,READ
    all groups under a namespace
    prn::/namespace:ns/group:*,READ
    multiple groups under multiple namespaces
    prn::/namespace:ns1/group:group1,READ;prn::/namespace:ns2/group:group2,READ;prn::/namespace:ns3/group:group11,READ;prn::/namespace:/group:group12,READ
    all schemas under namespace ns and group group1
    prn::/namespace:ns/group:group1/schemas:*,READ
  • Perf optimizations:
    We made some performance improvements in AvroSerializer and AvroDeserializer to create DatumWriter and DatumReader objects once in their constructor.

  • Version schemas defining same type but defined in different serialization formats independently.
    Prior to this change, schemas were versioned by type. This worked well for schema group that had a single serialization format.
    But since we also support multiple serialization formats within a schema group by choosing SerializationFormat.Any. So if a schema type, e.g. User, has definitions in multiple formats like say avro and protobuf and json. Such schemas for same schema type were versioned together. We modified our apis to allow for versioning of schemas by different types and formats. So now versioning of schemas defining same type in different formats (e.g. User in avro and User in json and User in protobuf) is performed independently. This leads to signature changes to some of the APIs where we did get or delete operations by schema type and version. The VersionInfo object now also includes format apart from version, type and id.

For list of all the commits that are included from 0.1 release, please refer to the following file:
commit.txt