[
https://issues.apache.org/jira/browse/SAMZA-938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15261298#comment-15261298
]
Jake Maes commented on SAMZA-938:
---------------------------------
Discussed this issue offline with [~nickpan47] and [~amitra123].
There were 4 options to deal with the backward incompatibility:
1. Back out the change until either a major release (backward incompatibility
ok) or we drop Java 1.7 support and can use the Java 1.8 Default Methods
feature.
2. Split the interface into a SeekableInterface which is implemented by
RocksDbKeyValueStore, CachedStore, and LoggedStore. This will be backward
compatible, and can be migrated to default methods later, but the code is
messier.
3. Create a dedicated KVStore implementation for the "queue" use case and keep
all interfaces the same. This will work for the queue use case but there are
upcoming cases for windowed join where seek with a prefix may be useful.
4. Force users to adapt their code on a minor release. This should be avoided
if possible.
I think we have agreement on option #1. So, [~nickpan47] you can commit the
attached patch to revert the change and I'll reopen SAMZA-813 to reapply the
patch for the next major release.
> KV-store API changes should be backward compatible to 0.10
> ----------------------------------------------------------
>
> Key: SAMZA-938
> URL: https://issues.apache.org/jira/browse/SAMZA-938
> Project: Samza
> Issue Type: Bug
> Affects Versions: 0.10.1
> Reporter: Yi Pan (Data Infrastructure)
> Assignee: Jake Maes
> Fix For: 0.10.1
>
> Attachments: SAMZA-938_1.patch
>
>
> SAMZA-813 introduced new methods in KeyValueStore and KeyValueIterator
> interface classes, which in JDK7, breaks the backward compatibility for
> customized implementation of KeyValueStore and KeyValueIterator.
> As 0.10.1 is a bug-fix release, we should make sure that the backward
> compatibility is retained. Hence, it would be better to have the extended
> interface classes to implement the seekable functions, instead of changing
> the existing classes.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)