[
https://issues.apache.org/jira/browse/BEAM-1461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15864666#comment-15864666
]
Thomas Groh commented on BEAM-1461:
-----------------------------------
Sure;
{{prepareForProcessing}} exists purely to support Aggregators - it sets up some
finalization details within the base DoFn class. However, we plan on removing
Aggregators, tracked in [BEAM-775]. Once that's done, we should remove the
parts of the SDK that exist to support Aggregators, which includes
{{prepareForProcessing}}. We should signal this now, and I believe making the
method final and deprecated is the most effective way to signal that it's an
implementation detail of the DoFn internals rather than the user-visible
processing method.
Additionally, overriding {{prepareForProcessing}} could lead to a lack of
precondition enforcement within DoFn, so it is not generally safe to override.
On an additional note, we probably would have missed the naming duplication in
prepareForProcessing as well as the fact that it's actually an Aggregator
method without this Jira, so thank you for posting it.
> duplication with StartBundle and prepareForProcessing in DoFn
> -------------------------------------------------------------
>
> Key: BEAM-1461
> URL: https://issues.apache.org/jira/browse/BEAM-1461
> Project: Beam
> Issue Type: Improvement
> Components: sdk-java-core
> Reporter: Xu Mingmin
> Assignee: Davor Bonaci
>
> There're one annotation `StartBundle`, and one public function
> `prepareForProcessing` in DoFn, which are called both before
> `ProcessElement`. It's confused which one should be implemented in a subclass.
> The call sequence seems as:
> prepareForProcessing -> StartBundle -> processElement
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)