Gabor Gevay created FLINK-2527:
----------------------------------
Summary: If a VertexUpdateFunction calls setNewVertexValue more
than once, the MessagingFunction will only see the first value set
Key: FLINK-2527
URL: https://issues.apache.org/jira/browse/FLINK-2527
Project: Flink
Issue Type: Bug
Components: Gelly
Reporter: Gabor Gevay
Assignee: Gabor Gevay
Fix For: 0.10, 0.9.1
The problem is that if setNewVertexValue is called more than once, it sends
each new value to the out Collector, and these all end up in the workset, but
then the coGroups in the two descendants of MessagingUdfWithEdgeValues use only
the first value in the state Iterable. I see three ways to resolve this:
1. Add it to the documentation that setNewVertexValue should only be called
once, and optionally add a check for this.
2. In setNewVertexValue, do not send the newValue to the out Collector at once,
but only record it in outVal, and send the last recorded value after
updateVertex returns.
3. Iterate over the entire Iterable in MessagingUdfWithEVsSimpleVV.coGroup and
MessagingUdfWithEVsVVWithDegrees.coGroup. (This would probably still need some
documentation addition.)
I like 2. the best. What are your opinions?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)