[
https://issues.apache.org/jira/browse/MINIFI-253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15952231#comment-15952231
]
marco polo commented on MINIFI-253:
-----------------------------------
[~aldrin] [[email protected]]
https://github.com/phrocker/nifi-minifi-cpp/commit/0d3388d0136c51abb97a12cde22ed94cf3688e8e
is a commit to begin the discussion:
I believe MINIFI-253 is tantamount to the JAVA classloader. It functions as the
capability that drives load and reloading of classes. I think it's reasonable
to envision C2 as being the driver. Architecturally, C2 would be the enforcer
of reloads, whether it is a simple trigger or more in terms of full control of
what is run/restarted. Currently we lack the foundation to support the basic
process of loading, reloading, or unloading. MINIFI-253 is a small step toward
this goal and does not obviate any work in MINIFI-64 or for the implementing an
extension registry. In reality it is a supplement to these discussions.
With that said, knowing that C2 may architecturally control this, the commit
I've provided includes a basic "Default Class Loader." This functions as the
system class loader, but requires processors to REGISTER themselves. This isn't
very different from the large if/else statement we had previously. When any
type of change is requested by C2 we would simply create child class loader(s)
with self registering objects and instantiate them in the same way. In a larger
discussion we could discuss capabilities, but the goal of MINIFI-253 is mean to
allow operations such as eventual unloading and reloading of objects that were
replaced by C2 due to rolling upgrades, for example. There is still more to be
discussed and implemented, but knowing that we can eventually replace several
components would be useful.
One utility of the work here is knowing that we may have devices in the wild
with very little bandwidth. If we could ship a small shared object with
replacement code we could potentially resolve bugs or implement functionality
without a difficult rollout. Again...still a lot needs to be done to facilitate
an "extension registry" but we might want to take a step back and consider the
need that this "extension registry" also functions as a "core component
registry" whereby we can replace core functionality if a defect arises. Pulling
this functionality back to all levels might facilitate this.
> Make Processors pluggable
> --------------------------
>
> Key: MINIFI-253
> URL: https://issues.apache.org/jira/browse/MINIFI-253
> Project: Apache NiFi MiNiFi
> Issue Type: Improvement
> Components: C++
> Reporter: marco polo
>
> Processors are currently Hardcoded and created within a large if statement
> within FlowController. Once processors are contributed and can be removed, we
> need to have the ability to a pluggable way to inject processors, be it from
> a shared object, configuration file, or compiled in.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)