Skip to content

DISPATCH-760: Message annotation handling improvements#173

Merged
asfgit merged 14 commits intoapache:masterfrom
ChugR:crolke-DISPATCH-760-3
Jul 7, 2017
Merged

DISPATCH-760: Message annotation handling improvements#173
asfgit merged 14 commits intoapache:masterfrom
ChugR:crolke-DISPATCH-760-3

Conversation

@ChugR
Copy link
Contributor

@ChugR ChugR commented Jul 7, 2017

This PR replaces existing annotation handling with a more efficient version. It is fully compatible with 0.8.x.
It contains the same stuff as pr171 with the addition of five commits (b321fa2..50637b7) to clean up and satisfy review comments

A comparison with 0.8.x has run on a single laptop. A sender sends a short message with a varying number of 10-byte user annotations to an ingress router A. Router A sends the messages to egress router B. A single client is attached to router B. This comparison is not rigorous and at the 50-annotation-per-message level the producer started to be the limiting factor.

Messages per second. Number of annotations, Nanno, vs router code version, 0.8.x or new.

Nanno 0.8.x new
0 26500 32000
1 24000 31200
5 18000 30100
10 14200 28500
20 8200 24400
50 3500 11300

This PR performance numbers are down a little bit from the last PR. This PR does a little extra work to prevent router annotations from being spoofed by user annotations.

Chuck Rolke added 14 commits July 7, 2017 10:37
Get rid of is_interrouter flag in favor of existing strip_annotations flags.
Pass strip_annotations_in through message to parse function.
Always provide four routing annotations by padding if necessary.
The flag is only set false and is not needed.
Router message annotation uses some of map keys and will at most
use QD_MA_N_KEYS annotation entries.

The longest key strlen is QD_MA_MAX_KEY_LEN bytes.

Router message annotation keys are at the end of the annotation
section. Code uses a sliding window to avoid searching each key
for the router prefix that indicates a router annotation. The
size of the sliding filter is QD_MA_FILTER_LEN map entries.

When QD_MA_FILTER_LEN is larger than QD_MA_N_KEYS then the extra
space may hold a future router version's new keys and successfully
strip them from the input stream.
Copy link
Member

@ted-ross ted-ross left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good Chuck

@asfgit asfgit merged commit 50637b7 into apache:master Jul 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants