[ 
https://issues.apache.org/jira/browse/FLINK-5478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16876472#comment-16876472
 ] 

Ton van Bart edited comment on FLINK-5478 at 7/1/19 8:27 PM:
-------------------------------------------------------------

I think calling {{getCommandDescription()}} on every call to {{invoke()}} would 
be wrong, as this would mean that also the Redis command to use could change on 
every call. My suggestion would be to enhance the RedisMapper with an extra 
method {{getAdditionalKey(T data)}} which returns {{Optional<String>}} and give 
the interface a {{default}} implementation which returns {{Optional.empty()}}. 
This way the interface remains backwards compatible with existing 
implementations of it. 

In {{RedisSink}} the only change would be to change {{this.additionalKey}} with 
{{optAdditionalKey.orElse(this.additionalKey)}} for the applicable methods; 
this also will give backwards compatibility with any existing code that uses 
this class.

I tested this change on my fork and all the tests still pass.


was (Author: tonvanbart):
I think calling {{getCommandDescription()}} on every call to {{invoke()}} would 
be wrong, as this would mean that also the Redis command to use could change on 
every call. My suggestion would be to enhance the RedisMapper with an extra 
method {{getAdditionalKey(T data)}} which returns {{Optional<String>}} and give 
the interface a {{default}} implementation which returns {{Optional.empty()}}. 
This way the interface remains backwards compatible with existing 
implementations of it. 

In {{RedisSink}} the only change would be to change {{this.additionalKey}} with 
{{optAdditionalKey.orElse(this.additionalKey)}} for the applicable methods; 
this also will give backwards compatibility with any existing code that uses 
this class.

> Redis Sink Connector should allow update of command without reinstatiation
> --------------------------------------------------------------------------
>
>                 Key: FLINK-5478
>                 URL: https://issues.apache.org/jira/browse/FLINK-5478
>             Project: Flink
>          Issue Type: Improvement
>          Components: Connectors / Common
>    Affects Versions: 1.1.4
>            Reporter: Atharva Inamdar
>            Priority: Major
>
> `getCommandDescription()` gets called when RedisSink is instantiated. This 
> happens only once and thus doesn't allow the command to be updated during run 
> time.
> Use Case:
> As a dev I want to store some data by day. So each key will have some date 
> specified. this will change over course of time. for example: 
> `counts_for_1484265600000` for 2017-01-13. This is not limited to any 
> particular command. 
> connector: 
> https://github.com/apache/bahir-flink/blob/master/flink-connector-redis/src/main/java/org/apache/flink/streaming/connectors/redis/RedisSink.java#L114
> I wish `getCommandDescription()` could be called in `invoke()` so that the 
> key can be updated without having to restart.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to