[ 
https://issues.apache.org/jira/browse/NIFI-8212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mark Payne updated NIFI-8212:
-----------------------------
    Fix Version/s: 1.14.0

> Improve startup times for Stateless
> -----------------------------------
>
>                 Key: NIFI-8212
>                 URL: https://issues.apache.org/jira/browse/NIFI-8212
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework, NiFi Stateless
>            Reporter: Mark Payne
>            Assignee: Mark Payne
>            Priority: Major
>             Fix For: 1.14.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> There are a handful of things that happen in NiFi (and stateless) startup 
> that take quite a while that can be improved:
>  * We unpack all NAR's if they are not already unpacked. If they are 
> unpacked, we perform a hash of the nar to ensure that it matches with what 
> was unpacked. With stateless, though, we download nars on demand and name 
> them a temporary file until the download completes, then rename them. As a 
> result, we don't expect any hash conflicts unless it's a SNAPSHOT nar. We 
> should avoid calculating hashes against all of the nars on startup.
>  * We use the ServiceLoader to load all extensions. Given the number of 
> extensions that we have and the prevalence of things like ObjectMapper as 
> member variables, this can be rather expensive. We should instead just read 
> the ServiceLoader file and create the objects on-demand. The temp components 
> are needed for generating documentation, for example. But otherwise they are 
> not needed. And stateless doesn't bother generating docs (since there's no UI 
> to view them). This avoids creating lots of expensive objects and can also 
> prevent loading huge numbers of classes into memory.
>  * StringEncryptor is almost never used in stateless. We should lazy load it 
> if needed.
>  * Controller Service enabling is very slow in stateless. Currently, it 
> asynchronously starts all services. Then it keeps polling to see if services 
> are enabled and if not sleeps for a short period. We should instead move to a 
> method of using Futures or wait/notify, etc. so that service enablement can 
> completely quickly.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to