Now I see. So in the configuration of the ExecuteStreamCommand there was
one thing we had not touched on, and it allowed this to work: Ignore STDIN
must be set to true. I did that, I set my Command Arguments to
e;/mnt/in/${filename} , and it worked as expected.
Thanks again Mike.
Jim

On Wed, Sep 21, 2022 at 11:50 AM Mike Thomsen <[email protected]>
wrote:

> > ExecuteStreamCommand works on the contents of the incoming flowfile, is
> that understanding correct?
>
> 7za can't read the file from stdin. That's the problem AFAICT in your
> scenario.
>
> On Wed, Sep 21, 2022 at 11:26 AM James McMahon <[email protected]>
> wrote:
> >
> > Thank you Mike. May I ask a few follow-up Qs after trying this and
> failing still?
> >
> > ExecuteStreamCommand works on the contents of the incoming flowfile, is
> that understanding correct? If so, then why does it matter where the file
> sits on the filesystem if it will apply /bin/7za to the flowfile in the
> stream?
> >
> > So I have /bin/7za in the /bin directory, it's an executable program,
> and the user that the nif jvm is running as - user named nifi - has /bin in
> its path.
> >
> > I have an archive file I created in directory /mnt/in, and it is named
> testArchive.7z. I am successfully able to read that archive file in with a
> ListFile / FetchFile, and do get it in my stream. These are its attributes:
> > absolute.path   /mnt/in/
> > filename   testArchive.7z
> >
> > Is this java io exception telling us that it can't find the /bin/7za
> program, or it can't find the data itself? And if ExecuteStreamCommand is
> supposed to be applying that command to the flowfile in the stream, why is
> it important that the archive file exists on disk where
> ExecuteStreamCommand can find it?
> >
> > On Wed, Sep 21, 2022 at 11:07 AM Mike Thomsen <[email protected]>
> wrote:
> >>
> >> To do this, you need to do UpdateAttribute (to set the temp folder
> >> location) -> PutFile -> ExecuteStreamCommand to ensure the flowfile's
> >> contents are staged where 7za can find them.
> >>
> >> I think the appropriate parameter would be something like this:
> >>
> >> Command Arguments: e;${path}/${filename}
> >>
> >> Assuming ";" is the argument delimiter.
> >>
> >> On Wed, Sep 21, 2022 at 10:45 AM James McMahon <[email protected]>
> wrote:
> >> >
> >> > Hello. I have a program /bin/7za that I need to apply to flowfiles
> that were created by 7za. One of them is testArchive.7z.
> >> >
> >> > I try to employ an ExecuteStreamCommand to extract from an incoming
> flowfile to into N output flowfiles in output stream, each representing one
> file from the contents in the flowfile.
> >> >
> >> > ESC throws error=2, No such file or directory.
> >> >
> >> > java.io.Exception: Cannot run program "/bin/7za"": error=2, No such
> file or directory
> >> >
> >> > My ExecuteStreamCommand processor has this configuration:
> >> > Command Arguments    e
> >> > Command Path   /bin/7za
> >> > Ignore STDIN   false
> >> > working Directory   no value set
> >> > Argument Delimiter   ;
> >> > (I do not set an Output Destination Delimiter, intending to send the
> output to output path "output stream" as separate flowfiles)
> >> >
> >> > How can I fix this problem?
> >> >
> >> > Thanks in advance,
> >> > Jim
>

Reply via email to