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

Mget binary support #221

Merged
merged 6 commits into from
May 30, 2018
Merged

Conversation

balajivenki
Copy link
Contributor

@ipapapa and @shailesh33 I have implemented the mget with support for byte[] keys. Here are the summary of changes

  • Implementing MultiKeyBinaryCommands interface and providing implementation for mget with byte[]
  • Modified MultiKeyOperation to take binaryKey and assign it based on the first key in the List passed.
  • The earlier assumption for String keys will not be null and now added null check
  • CompressionValueMultiKeyOperation is modified to support changes from MultiKeyOperation
  • I did a unit test with String mget and byte[] mget and the keys are span across multiple nodes. The result was correct.
  • Now that we are implementing MultiKeyBinaryCommands this opens the door for byte[] implementation for other missing REDIS commands too and I will add them at later stage.

Please review the PR and let me know if anything needs to be added or modified.

Copy link
Contributor

@shailesh33 shailesh33 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 to me

@shailesh33
Copy link
Contributor

@ipapapa please review this PR

this.binaryKeys = null;
}
} else {
this.keys = null;
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a case that the firstKey is null and the rest are not?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ipapapa good point. I have addd the null filter to address it and when all nulls sent it fails. Even the old implementation had this issue.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ipapapa Even when we filter nulls the change for this is across all places where ever we use MultiKeyOperation and CompressionValueMultiKeyOperation and it will fail saying

redis.clients.jedis.exceptions.JedisDataException: value sent to redis cannot be null

so its a known behavior even with current implementation. If you want I can go ahead and add a Collections filter on all places before passing the keys down further. Please let me know.

@ipapapa
Copy link
Contributor

ipapapa commented May 30, 2018

Seems we are seeing the same issue in Travis as in #222

@balajivenki
Copy link
Contributor Author

@ipapapa I think it is to do with nebula dependency. In my local I can see it can be fixed by upgrading nebula.netflixoss to 5.0.0

@ipapapa
Copy link
Contributor

ipapapa commented May 30, 2018

Can you update Nebula in this PR to fix it?

@balajivenki
Copy link
Contributor Author

@ipapapa Yes upgrading to nebula 5.0.0 fixed the issue. I have removed the single line I added for filtering null as it is causing an exception. I will add it though, rest changes stays the same. Between is dyno jdk 8.0 supported? I see #185 is merged though. Please let me know. This is for using stream.filter.

@ipapapa ipapapa merged commit 465685f into Netflix:master May 30, 2018
@ipapapa ipapapa mentioned this pull request May 30, 2018
@balajivenki
Copy link
Contributor Author

Thanks a lot @ipapapa and @shailesh33

@ipapapa
Copy link
Contributor

ipapapa commented May 31, 2018

Would you like me to draft an RC?

mgddp added a commit to mgddp/dyno that referenced this pull request May 31, 2018
@balajivenki
Copy link
Contributor Author

Yes @ipapapa I was going to ask RC too.

@ipapapa
Copy link
Contributor

ipapapa commented Jun 1, 2018

Since #223 was fired at the same date. Let us wait to get this is approved as well and I will draft an RC tomorrow.

@balajivenki
Copy link
Contributor Author

Thanks for the update @ipapapa

@ipapapa
Copy link
Contributor

ipapapa commented Jun 1, 2018

@balajivenki
Copy link
Contributor Author

Thanks @ipapapa Still not available maven repo, waiting for it to be available there.

@balajivenki
Copy link
Contributor Author

@ipapapa and @shailesh33 Can you please push the new rc into maven repo?

We only have till rc.2 there(https://mvnrepository.com/artifact/com.netflix.dyno/dyno-core)

@ipapapa
Copy link
Contributor

ipapapa commented Jun 4, 2018

@balajivenki
Copy link
Contributor Author

Not sure why I am not able to see it in maven repo website though.

image

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