Hi Koji, I also didn't find anything related to the unexpected shutdown in
my logs, is there anything I could do  to make NIFI log more verbose
information to the logs?

Regards,
Ben

2017-12-25 14:56 GMT+08:00 Koji Kawamura <ijokaruma...@gmail.com>:

> Hi Ben,
>
> I looked at the log and I expected to see some indication for the
> cause of shutdown, but couldn't find any.
> The PersistentProvenanceRepository rate warning is just a warning, and
> it shouldn't be the trigger of an unexpected shutdown. I suspect other
> reasons such as OOM killer, but I can't do any further investigation
> with only these logs.
>
> Thanks,
> Koji
>
> On Mon, Dec 25, 2017 at 3:46 PM, 尹文才 <batman...@gmail.com> wrote:
> > Hi Koji, one more thing, do you have any idea why my first issue leads to
> > the unexpected shutdown of NIFI? according to the words, it will just
> slow
> > down the flow. thanks.
> >
> > Regards,
> > Ben
> >
> > 2017-12-25 14:31 GMT+08:00 尹文才 <batman...@gmail.com>:
> >
> >> Hi Koji, thanks for your help, for the first issue, I will switch to use
> >> the WriteAheadProvenanceReopsitory implementation.
> >>
> >> For the second issue, I have uploaded the relevant part of my log file
> >> onto my google drive, the link is:
> >> https://drive.google.com/open?id=1oxAkSUyYZFy6IWZSeWqHI8e9Utnw1XAj
> >>
> >> You mean a custom processor could possibly process a flowfile twice only
> >> when it's trying to commit the session but it's interrupted so the
> flowfile
> >> still remains inside the original queue(like NIFI went down)?
> >>
> >> If you need to see the full log file, please let me know, thanks.
> >>
> >> Regards,
> >> Ben
> >>
> >> 2017-12-25 13:51 GMT+08:00 Koji Kawamura <ijokaruma...@gmail.com>:
> >>
> >>> Hi Ben,
> >>>
> >>> For your 2nd issue, NiFi commits a process session in Processor
> >>> onTrigger when it's executed by NiFi flow engine by calling
> >>> session.commit().
> >>> https://github.com/apache/nifi/blob/master/nifi-api/src/main
> >>> /java/org/apache/nifi/processor/AbstractProcessor.java#L28
> >>> Once a process session is committed, the FlowFile state (including
> >>> which queue it is in) is persisted to disk.
> >>>
> >>> It's possible for a Processor to process the same FlowFile more than
> >>> once, if it has done its job, but failed to commit the session.
> >>> For example, if your custom processor created a temp table from a
> >>> FlowFile. Then before the process session is committed, something
> >>> happened and NiFi process session was rollback. In this case, the
> >>> target database is already updated (the temp table is created), but
> >>> NiFi FlowFile stays in the incoming queue. If the FlowFile is
> >>> processed again, the processor will get an error indicating the table
> >>> already exists.
> >>>
> >>> I tried to look at the logs you attached, but attachments do not seem
> >>> to be delivered to this ML. I don't see anything attached.
> >>>
> >>> Thanks,
> >>> Koji
> >>>
> >>>
> >>> On Mon, Dec 25, 2017 at 1:43 PM, Koji Kawamura <ijokaruma...@gmail.com
> >
> >>> wrote:
> >>> > Hi Ben,
> >>> >
> >>> > Just a quick recommendation for your first issue, 'The rate of the
> >>> > dataflow is exceeding the provenance recording rate' warning message.
> >>> > I'd recommend using WriteAheadProvenanceRepository instead of
> >>> > PersistentProvenanceRepository. WriteAheadProvenanceRepository
> >>> > provides better performance.
> >>> > Please take a look at the documentation here.
> >>> > https://nifi.apache.org/docs/nifi-docs/html/administration-g
> >>> uide.html#provenance-repository
> >>> >
> >>> > Thanks,
> >>> > Koji
> >>> >
> >>> > On Mon, Dec 25, 2017 at 12:56 PM, 尹文才 <batman...@gmail.com> wrote:
> >>> >> Hi guys, I'm using nifi 1.4.0 to do some ETL work in my team and I
> have
> >>> >> encountered 2 problems during my testing.
> >>> >>
> >>> >> The first problem is I found the nifi bulletin board was showing the
> >>> >> following warning to me:
> >>> >>
> >>> >> 2017-12-25 01:31:00,460 WARN [Provenance Maintenance Thread-1]
> >>> >> o.a.n.p.PersistentProvenanceRepository The rate of the dataflow is
> >>> exceeding
> >>> >> the provenance recording rate. Slowing down flow to accommodate.
> >>> Currently,
> >>> >> there are 96 journal files (158278228 bytes) and threshold for
> >>> blocking is
> >>> >> 80 (1181116006 bytes)
> >>> >>
> >>> >> I don't quite understand what this means, and I found also inside
> the
> >>> >> bootstrap log that nifi restarted itself:
> >>> >>
> >>> >> 2017-12-25 01:31:19,249 WARN [main] org.apache.nifi.bootstrap.
> RunNiFi
> >>> Apache
> >>> >> NiFi appears to have died. Restarting...
> >>> >>
> >>> >> Is there anything I could do so solve this problem?
> >>> >>
> >>> >> The second problem is about the FlowFiles inside my flow, I actually
> >>> >> implemented a few custom processors to do the ETL work. one is to
> >>> extract
> >>> >> multiple tables from sql server and for each flowfile out of it, it
> >>> contains
> >>> >> an attribute
> >>> >> specifying the name of the temp ods table to create, and the second
> >>> >> processor is to get all flowfiles from the first processor and
> create
> >>> all
> >>> >> the temp ods tables specified in the flowfiles' attribute.
> >>> >> I found inside the app log that one of the temp table name already
> >>> existed
> >>> >> when trying to create the temp table, and it caused sql exception.
> >>> >> After taking some time investigating in the log, I found the sql
> query
> >>> was
> >>> >> executed twice in the second processor, once before nifi restart,
> the
> >>> second
> >>> >> execution was done right after nifi restart:
> >>> >>
> >>> >> 2017-12-25 01:32:35,639 ERROR [Timer-Driven Process Thread-7]
> >>> >> c.z.nifi.processors.ExecuteSqlCommand
> >>> >> ExecuteSqlCommand[id=3c97dfd8-aaa4-3a37-626e-fed5a4822d14]
> >>> 执行sql语句失败:SELECT
> >>> >> TOP 0 * INTO tmp.ods_bd_e_reason_20171225013007005_5567 FROM
> >>> >> dbo.ods_bd_e_reason;
> >>> >>
> >>> >>
> >>> >> I have read the document of nifi in depth but I'm still not very
> aware
> >>> of
> >>> >> nifi's internal mechanism, my suspect is nifi didn't manage to
> >>> checkpoint
> >>> >> the flowfile's state(which queue it was in) in memory into flowfile
> >>> >> repository
> >>> >> before it was dead and after restarting it recovered the flowfile's
> >>> state
> >>> >> from flowfile repository and then the flowfile went through the
> second
> >>> >> processor again and thus the sql was executed twice. Is this
> correct?
> >>> >>
> >>> >> I've attached the relevant part of app log, thanks.
> >>> >>
> >>> >> Regards,
> >>> >> Ben
> >>>
> >>
> >>
>

Reply via email to