Skip to content

Releases: allegro/hermes

0.12.1 (04.08.2017)

20 Jul 07:33
Compare
Choose a tag to compare

All issues and pull requests: 0.12.1 milestone

Features

(799) Offline clients

Add new endpoint and interface in Management which can be implemented to show
if data produced on given topic has been accessed recently in any offline storage
(like Hadoop). Read more in docs.

(692) Improved schema management

Avro schemas are now created/deleted in the same transaction as topic creation/deletion,
meaning that no topic is created if schema validation fails and vice versa.

Also new SchemaRepository interface method has been added which allows on validating
schema before trying to send it to Schema Registry (fail fast).

(794) Query topics by metrics

Bugfixes

(758) Use timestamp in seconds in ElasticSearch message tracking

Added new field in ElasticSearch message trace object which is used to order
messages in time. This should significantly increase the speed of fetching
data from ES.

(757) Rate limit schema registry calls in Consumers

There was no rate limit when trying to get schema from Schema Registry when
no cached schema matched the message. This could cause DoS attack on Schema Registry
for subscriptions with high traffic of malformed events.

(777) Subscription URI constraint fix

Fixed subscription URI constraints to match URI spec.

(787) Subscription validation fix

Subscriptions were validated at the wrong moment, which in some cases could lead
to ugly NullPointerException instead of validation message.

(780) Metrics block topic removal

0.12.0 (23.06.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Features

(760) Added http2 client to consumers

(770) Added feature to restrict subscribing for particular topic

Enhancements

(775) Console notification box UX improvements

Notification box will resize according to body text, also error messages require user interaction in order to disappear.

(778) Creating consumer signals chains

From now on, consumers logs contain information about signals like their id or type.
This simplifies analysis of consumers history.

(781) Schema version aware deserialization is backward compatible

Which means that flag schemaVersionAwareSerializationEnabled can be set to true on the fly.
When the flag is enabled on a topic then consumed payload without schema version will be deserialized as well -
Hermes will try hard to adjust avro schema starting with the latest version.

Bugfixes

(774) Ensuring that consumer process exists for processed signal

Fixes NullPointerException which occurred when some signals (e.x. COMMIT) were processed for non existing consumer.

0.11.4 (15.05.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Features

(764) Custom button on UI.

Allows to configure custom view near topic buttons area on hermes-console. Custom view can be set via configuration file, example:

{
    "topic": {
        "buttonsExtension": "<a class=\"btn btn-info {{topic.contentType === 'JSON' ? 'ng-show' : 'ng-hide'}}\" ng-href='http://migrator.example/topics/{{topic.name}}'>Migrate to AVRO</a>",
    }
}

0.11.3 (13.04.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Features

(753) Filtering by headers

Added new filter type: header that allows on filtering messages by HTTP headers. Example of filter definition:

{"type": "header", "header": "My-Propagated-Header", "matcher": "^abc.*"}

Mind that by default no headers are propagated from Frontend to Consumers. To enable headers propagation, define and register
own HeadersPropagator via HermesFrontend.Builder#withHeadersPropagator.

(749) Handling avro/json content type

When converting messages from JSON to Avro Hermes uses json-avro-converter
to provide smooth experience, that does not require changing already produced JSONs (for instance to to support optional
fields).

However in some rare cases it might be desired to send JSON messages that are compatible with
standard Avro JSON encoding. To use vanilla JSON -> Avro converter and bypass json-avro-converter, send requests with avro/json content type.

Enhancements

(748) Topic authorization controls and status in Console

Console now has support for toggling auth on topics. This is an opt-in feature, enable by specifying:

{
    "topic": {
        "authEnabled": true,
    }
}

In Console config.json.

(710) Limit size of messages in preview

(751) Move Zookeeper cache update logs to DEBUG level

(750) Move Schema Registry cache refresh logs to DEBUG level

Bugfixes

(737) Updating subscription in hermes-console resets OAuth password

(734) Prevent manual setting of subscription state to PENDING

(743) Better defaults for max-rate algorithm

0.11.2 (15.03.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Enhancements

(738) Payload content-type check and error handling

From now on, clients who send HTTP request without specified Content-Type on an Avro topic will receive proper error message.

(739) Added latency metrics for schema registry

Metrics are available in the following path:

schema.<schema-repo-type>.latency.read-schema

Bugfixes

(740) Invalid metrics names in zookeeper for topics with underscore in name

0.11.1 (7.03.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Features

(733) Topic authorization

Added feature to control which system has permission to publish on particular topic.

(722) Frontend security context initialization

Added feature to configure SSL context.

(735) Configurable http keep_alive

(707) Throughput limit

Added feature to limit throughput in bytes/sec when publishing to particular topic.
Can be configured to work as simple threshold or dynamically calculated value.

(687) Throughput metric

Metric can be found under {producer|consumer}.{hostname}.throughput.{group}.{topic}

0.11.0 (15.02.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Features

(693) Owners instead of support teams

Replaces group and subscription support team, contact and technical owner with a
single notion – owner. Topics and subscriptions have assigned owners, groups no longer
do, so everyone can create a topic in any group.

Migration guide

After deployment to hermes-management you need to run a migration task.
It will initialise topic and subscription owners by assigning what used to be related group and subscription support teams.
Perform with admin credentials:

POST /migrations/support-team-to-owner?source=Plaintext (or source=Crowd if you used Crowd support teams)

Enhancements

(721) Creator must be an owner of created topic or subscription

(714) Don't match when queried nested field doesn't exist instead of failing

(726) Pass Avro validation errors to users

Bugfixes

(717) NPE in Hermes frontend related to BlacklistZookeeperNotifyingCache

0.10.6 (07.02.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Features

(611) Consumers rate negotiation

Max rate negotiation algorithm for balancing maximum delivery rate across subscription consumers.

Enhancements

(703) Update Curator dependency

(701) Updated migration guide for 0.10.5

(713) Admin scripts catalogue with initial migration script for 0.10.5

Bugfixes

(709) Fix docker-compose and docker setup

0.10.5 (31.01.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Enhancements

(688) Selective algorithm healing

Improved durability of assignments during restarts and zookeeper flaps.
Reporting of assignments and running consumers has been improved and made consistent.
More reliable handling of consumer processes.

Migration guide:

To utilize these improvements it is required to stop all instances in hermes cluster, remove all nodes from {zookeeper.root}/consumers-workload/{kafka.cluster.name}/runtime and restart instances.

This adds a marker in selective algorithm's consumer assignments, which allows rebalancing with removing automatically created assignments.

Alternatively, to avoid switching off your cluster, a script updating assignments' zookeeper nodes' data to AUTO_ASSIGNED can be used. It should be also applied after all nodes run the new version, as previous run could shuffle assignments during deployment.

(698) Fix Dockerfile build

0.10.4 (23.01.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Enhancements

(690) Update json-avro-converter to 0.2.5

(687) Added throughput metric

(684) Limit number of retries for inflight on Frontend graceful shutdown

Bugfixes

(694) Leaking file descriptors

Handling corner case in a race between ack and timeout task.

Because of it number of messages in backup storage was growing with a time.
Eventually, it lead to full backup-storage and further writes ended with an exception which was not caught.
This exception was the reason of file descriptor leak.

Mentioned corner case was fixed in this issue. Beside that, additional exception handling was added and backup-storage size
is from now on monitored.

(695) Decouple filtering rate limiting from backpressure based rate limiting

Filtered messages do not influence on a sending rate.

(686) Do not merge topic.contentType with default value

Fix in hermes-console.