lib/avromatic/schema_registry_patch.rb in avromatic-0.15.1 vs lib/avromatic/schema_registry_patch.rb in avromatic-0.17.0
- old
+ new
@@ -5,27 +5,29 @@
module CacheableSchemaRegistration
# Override register to first check if a schema is registered by fingerprint
def register(subject, schema)
return super unless Avromatic.use_cacheable_schema_registration
+ begin
+ lookup_subject_schema(subject, schema)
+ rescue Excon::Errors::NotFound
+ data = post("/subjects/#{subject}/versions", body: { schema: schema.to_s }.to_json)
+ id = data.fetch('id')
+ @logger.info("Registered schema for subject `#{subject}`; id = #{id}")
+ id
+ end
+ end
+
+ def lookup_subject_schema(subject, schema)
schema_object = if schema.is_a?(String)
Avro::Schema.parse(schema)
else
schema
end
- registered = false
- data = begin
- get("/subjects/#{subject}/fingerprints/#{schema_object.sha256_fingerprint.to_s(16)}")
- rescue
- registered = true
- post("/subjects/#{subject}/versions", body: { schema: schema.to_s }.to_json)
- end
-
+ data = get("/subjects/#{subject}/fingerprints/#{schema_object.sha256_fingerprint.to_s(16)}")
id = data.fetch('id')
-
- @logger.info("#{registered ? 'Registered' : 'Found'} schema for subject `#{subject}`; id = #{id}")
-
+ @logger.info("Found schema for subject `#{subject}`; id = #{id}")
id
end
end
end