Hi Matt, thanks for your explanations. I was coding with some misconceptions but after your answer I rewrote my script and now it's working like a charm.
Thanks!! Em qui, 28 de mar de 2019 às 14:22, Matt Burgess <[email protected]> escreveu: > Eric, > > Here are some answers to your questions: > > 1) The same flowfile will not be present to both threads. > > 2) Any flow files retrieved from a session have to be handled with > that session. You'd either have to keep a reference to the session and > the flow file(s) -- see MergeContent and MergeRecord for examples -- > or you can keep a map from FlowFile UUID to an attribute map, then > update the flow file with the attributes when it is time to transfer > it. In the meantime you'd either rollback the session or transfer the > flow file to SELF. > > 3) No, any flow files retrieved from a session have to be handled with > that session, either by transfer/commit or remove. > > 4) Not sure what you mean by mark/lock/hide, but each flow file > retrieved from a session is associated only with that session/thread. > It's kind of "locked" in the sense that while the session is active, > no other thread/session knows about it. > > 5) Not sure what's going on there, but it seems related to the content > repository so I assume you're updating the flow file contents at the > time? Maybe put some logging statements around some of the > session/flowfile operations to see if you can narrow down what's going > on there. Also, what content repository implementation are you using? > I think there's a new one that's not yet the default but works better. > > Regards, > Matt > > On Wed, Mar 27, 2019 at 3:12 PM Eric Chaves <[email protected]> wrote: > > > > Hi folks, > > > > I'd like to write InvokeScriptedProcessor that inspect all files in the > incoming queue without actually processing/transfering them until a given > business condition is met. > > > > So I looked for some examples of how could I get all flowfiles in a > queue using session.get(FlowFileFilter) and I would like to confirm if I'm > getting it right. > > > > 1) If I have more than one thread executing my processor calling > session.get(FlowFileFilter) can the same flowfile be present to both > threads? > > > > 2) If I retrieve some flowfiles using session.get(FlowFileFilter) can I > add/modify their attributes but keep them in the current queue (ie set > attributes but don't transfer them to any relationship)? > > > > 3) Am I correct that session.get(FlowFileFilter) don't requires neither > session.commit nor session.rollback? Those were required only if I modify > the flowfile. > > > > 4) When obtain a list of flowfiles using session.get(FlowFileFilter) > does it marks/lock/hides the selected files in anyway? > > > > 5) I'm playing with this concept with some groovy script using a > InvokeScriptedProcessor and very often, after the second or third > processor's on trigger execution I'm receiving an error > java.io.IOException: All Partitions have been blacklisted due to failures > when attempting to update. If the Write-Ahead Log is able to perform a > checkpoint, this issue may resolve itself. Otherwise, manual intervention > will be required. What could be the source of this error? Could it be > related to the use of session.get(FlowFileFilter)? I'm having a hard time > to detect what I'm doing that raises this error. > > > > Thanks in advance! > > > > > > >
