You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "mingleizhang (JIRA)" <ji...@apache.org> on 2017/08/05 03:56:00 UTC
[jira] [Commented] (FLINK-4534) Lack of synchronization in
BucketingSink#restoreState()
[ https://issues.apache.org/jira/browse/FLINK-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16115259#comment-16115259 ]
mingleizhang commented on FLINK-4534:
-------------------------------------
[~tedyu] Thanks for reporting this! One thing I need confirm, in restoreState(), I can not find what you said the code {{for (BucketState<T> bucketState : state.bucketStates.values()) {}}
All I can found is that the following, and I dont think it needs a synchronization for this, as it is just a local variable. What do you think of this ?
{code:java}
private void handleRestoredBucketState(State<T> restoredState) {
Preconditions.checkNotNull(restoredState);
for (BucketState<T> bucketState : restoredState.bucketStates.values()) {
{code}
Other than that {{state.bucketStates}} in {{close}} method indeed needs a synchronization. And I have done it.
> Lack of synchronization in BucketingSink#restoreState()
> -------------------------------------------------------
>
> Key: FLINK-4534
> URL: https://issues.apache.org/jira/browse/FLINK-4534
> Project: Flink
> Issue Type: Bug
> Components: Streaming Connectors
> Reporter: Ted Yu
> Assignee: mingleizhang
>
> Iteration over state.bucketStates is protected by synchronization in other methods, except for the following in restoreState():
> {code}
> for (BucketState<T> bucketState : state.bucketStates.values()) {
> {code}
> and following in close():
> {code}
> for (Map.Entry<String, BucketState<T>> entry : state.bucketStates.entrySet()) {
> closeCurrentPartFile(entry.getValue());
> {code}
> w.r.t. bucketState.pendingFilesPerCheckpoint , there is similar issue starting line 752:
> {code}
> Set<Long> pastCheckpointIds = bucketState.pendingFilesPerCheckpoint.keySet();
> LOG.debug("Moving pending files to final location on restore.");
> for (Long pastCheckpointId : pastCheckpointIds) {
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)