[ 
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)

Reply via email to