Our latest version of what was then-called the “Scala Repo Server” was released more than two years ago, as part of Iglu R3 Penny Black. That version is still bundled with Snowplow Mini and has proved its worth in that environment.
Since then, our Iglu product efforts have focused on tools like igluctl, focused on improving the static schema registry experience for Snowplow operators. This was a deliberate decision, and the Iglu static registry has over time proven its robustness - at the cost of some flexibility.
However, it has become clear that to deliver on our ambitious and exciting Iglu roadmap, we will need a more powerful schema registry engine. We will deliver this through our tried-and-tested Scala Repo Server project, now re-badged as simply Iglu Server.
In order to reduce setup time for Iglu Server, we have widened the scope of
super API keys to the writing and reading of schemas - not only creating new keys. Thus as of R9, it is possible to use just a single API key for all interactions with Iglu Server.
For more granular access control, separate
write keys still can be used.
Given that Iglu Server could be deployed behind a proxy or a load balancer, R9 extends the server configuration options with a new parameter,
repo-server.baseURL - set this to the address that will be used to reach your Iglu Server.
Before this release, Iglu Server attached metadata to all schemas, which made its interface incompatible with more widely-used static schema registry. Now, by default all schemas are returned without any additional information, but you can add a special
metadata query parameter with value
1 to any
/api/schemas/ endpoint in order to restore old behavior.
Finally, there is a new CLI interface to Iglu Server, so far offering just a single
--config option. Use this to provide a configuration file for Iglu Server with DB and server settings.
As part of the project reboot, we have brought internal dependencies, such as Akka, Akka HTTP and others up-to-date with the modern Scala ecosystem.
These dependency updates have fixed some subtle bugs in Iglu Server’s REST interface, and have also improved performance.
We are particularly pleased to have updated the registry’s Swagger UI - this represents a hugely beneficial to Iglu Server’s built-in UI for interacting with schema endpoints.
R9 Bull’s Eye also fixes two important bugs in igluctl, introducing a new 0.4.1 version:
lintinput is the full path to schema and the schema’s version isn’t
1-0-0, then igluctl produced a failure message instead of warning (issue #340),
The new Iglu Server release can be downloaded from here from Bintray (download will start). Unzip the compressed file and then you can launch server with following interface:
java -jar $JAR_PATH --config $CONFIG_PATH.
The switch from Spray to Akka HTTP has seen some major changes in the configuration file format. However the old format can be adapted by:
repo-server.baseURL, making sure to omit the protocol (i.e.
http(s)://), because Swagger UI will automatically prepend that
Another breaking change is related to endpoint paths. Previously, a DELETE request sent to
api/auth/keygen was used to delete API keys of a specific vendor prefix. From now on, that same request should be sent to
Finally, Iglu Server 0.3.0 now negotiates
Content-Type with clients. Clients should specify either
Accept: application/json header, or no
Accept header at all; no other header values are supported.
The latest igluctl can be downloaded from here from Bintray (download will start).
The new version, igluctl 0.4.1, doesn’t introduce any interface changes over 0.4.0.
For more details on this release, as always do check out the release notes and the wiki page on GitHub.
If you have any questions or run into any problems, please raise a question in our Discourse forum.