Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update v0.6 branch with latest fixes/improvements #787

Merged
merged 19 commits into from
Jan 20, 2021
Merged

Update v0.6 branch with latest fixes/improvements #787

merged 19 commits into from
Jan 20, 2021

Conversation

smukil
Copy link
Contributor

@smukil smukil commented Jan 20, 2021

No description provided.

Lorenz Nickel and others added 19 commits May 26, 2019 22:15
Old link was 404
Link in the form http:https://help.github.com/creating-a-pull-request (like the previous) does not exist as far as I know
http instead of https (like the previous)

See also: Netflix/conductor@3bc54fd
Add short hint in the README that the used YAML parser does not support YAML 1.2
Add hint for YAML version compatibility
1. redis_fragment_argx() is in charge of fragmenting multi commands
   (like mset, mget, etc.) as they may belong to different dyno
   servers. As part of this, it cuts out multiple small mbufs and
   links them to cumulatively make a single node request.

   Eg: Assume 2 nodes (NODE1, NODE2)
       Query: "MGET key1 key2 key3"
       If 'key1' and 'key3' belong to NODE1, there will be 3 mbufs under
       the fragmented request sent to NODE1.

       MBUF1: *3\r\n$4\r\nMGET\r\n
       MBUF2: $4\r\nkey1
       MBUF3: $4\r\nkey2

       Similarly, the frag'd request for NODE2 will have 2 linked mbufs.

       The mbufs are cut from the original request and linked to the
       fragmented ones for efficiency, and hence multiple MBUFs.

       Now to the problem. Since dynomite has this behavior of encrypting
       each individual mbuf, we also need to symmetrically decrypt one
       mbuf at a time. However, since the fragmented mbufs are small, they
       will be received into one large mbuf which will fail to decrypt
       as a whole.

       This patch fixes this by making sure all fragmented queries fit into
       a single mbuf unless it really needs 2.
       TODO: This is less efficient because of copying data around. Switch
             back to multiple small MBUFs if the crypto scheme is fixed.

2. Since the fragmented query could also carry with it a key exchange, it
   could permanently disable cross-region communication between regions
   if the key exchange fails. This patch also fixes this.
   TODO: The crypto scheme should be more robust
Updates README.md with svg badge
Update build status location
Fragmented queries silently fail cross-region replication
Add log level for dyn_crypto hex dumps
Dynomite assumes the instance its running on is secure, so we default
to letting logs be editable by other users as well. This is motivated
by the need to allow other agents on the instance to rotate old log
files.
Allow logs to be read by others
@smukil smukil self-assigned this Jan 20, 2021
@smukil smukil merged commit 82f86e4 into v0.6 Jan 20, 2021
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.

None yet

5 participants