Skip to content

Releases: allegro/hermes

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.

0.10.3 (02.01.2017)

20 Jul 07:33
Compare
Choose a tag to compare

Bugfixes

(675) Audit of subscription status changes

(674) Validate topic before saving

(679) hermes-client handles sender errors

(676) Fix saving changes in topic maxMessageSize attribute

0.10.2 (19.12.2016)

20 Jul 07:33
Compare
Choose a tag to compare

This release introduces a crucial warming-up phase when starting Hermes Frontend.

Features

(591) Frontend graceful startup

Frontend tries to load and cache all Avro schemas and Kafka topic metadata before accepting any traffic.
Before this change large clusters were throwing 5xx and had very big latencies during warmup phase.
Currently startup moment is barely noticable for clients (and in metrics).

(667) Declare max message size on topic

With this change users are asked to specify the maximum size of message on a topic during topic creation.
This size is then used to calculate the size of Kafka buffers in Hermes Consumers. Prior to this change
Consumer Kafka buffers were set to the same size for every topic (default: 10Mb per partition), which could
cause crashes when starting Consumers with large number of subscriptions with lags.

By default message size is a soft limit, warn log is emitted when message larger than declared size is received.
frontend.force.topic.max.message.size flag can be switched to make it a hard limit (Frontend will return
http 413 Payload Too Large status).

Also calculation based on message size os disabled by default (will be enabled by default in next versions). To use this
feature set consumer.use.topic.message.size flag.

(666) Options to configure Consumer HTTP client SSL Context

New options to configure Consumers HTTP client:

  • consumer.http.client.validate.certs
  • consumer.http.client.validate.peer.certs
  • consumer.http.client.enable.crldp

(665) Allow to specify allowed topic content types in Hermes Console

Bugfixes

(663) Fetch -2min of data from Graphite and take first non-empty value

(664) Use proper type of metrics in Consumer workload metrics

(652) Proper configuration for Zookeeper retries