Closed ekala closed 11 years ago
Looking good but I have not been able to test this end to end yet since there is an issue with the filters modal on the web front end side side.
I would suggest that we use RabbitMQ's rpc pattern(http://bit.ly/LBa7qS) for the drop queue between semantics, media extract and the post processor:
I think this way we only post once to the droplet api when the drop is completely processed. We can stop using the droplet_processed field(bad for the river query) in the droplets table because only processed drops get posted.
Also because we keep the drop pending in the DROPLET_QUEUE until all processing is complete, we can use a simple in memory dict to keep track of the drop's processing's stage and only confirm when all processing is done to proceed. DROPLET_QUEUE is already durable, so no need for redis to store the drop while its being processed.
I switched the workflow to use normal persistent queues. The workflow is as follows:
The DropFilter needs to to use a lock whenever the in memory drop_filters dict is referenced.
Also a couple of changes in #17 for this.
@69mb I've merged the instrumentation changes from master and added support for the named filters.
Post-processor for the second-level filters (ushahidi/Swiftriver_v2#188).
The drop processing pipeline has been adjusted to work as follows:
droplet_raw
fielddroplet_content
field