nickva commented on a change in pull request #3940:
URL: https://github.com/apache/couchdb/pull/3940#discussion_r814356307
##########
File path: src/couch/src/couch_httpd_multipart.erl
##########
@@ -134,6 +138,10 @@ mp_abort_parse_atts(_, _) ->
maybe_send_data({Ref, Chunks, Offset, Counters, Waiting}) ->
receive
+ {hello_from_writer, Ref, WriterPid} ->
+ WriterRef = erlang:monitor(process, WriterPid),
+ NewCounters = orddict:store(WriterPid, {WriterRef, 0}, Counters),
Review comment:
Yeah, agree. It seems we'd want to initialize each separate follows
parser only once. Then I think it could work?
So, for example, we could fold over all docs [1] and all the attachments and
keep a map of `#{ParserPid => Ref}`. If the `ParserPid` is not in the map, we
send the `{hello_from_writer, Ref, WriterPid}` and start monitoring it. Then we
use its `Ref` in the `receive` `DOWN'` inside the closure. If, `ParserPid` is
in the map ,then we skip sending the `hello` message and just use its existing
`Ref` in the `receive DOWN'`.
[1] It's seems it's not just a doc with multiple attachment but it could
also be multiple docs, each with multiple attachments?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]