Hi All,

   comments in-line:

On Fri, Jan 5, 2018 at 8:31 PM, Brian Stansberry <brian.stansberry@redhat.com> wrote:
Thanks, Richard. Comments in-line.

On Thu, Jan 4, 2018 at 7:56 AM, Richard Opalka <ropalka@redhat.com> wrote:
Hi everyone,

   I would like to outline a brief JBoss MSC Plans for Year 2018.

Goals defined below address both:
 * Cloud First Effort
   - Reduce WildFly memory footprint

Do you have a sense of how much we're talking about here, e.g. from a standalone server using the standalone-full.xml config and no deployments?

If we'd replace injections, values and injectors with new MSC2 like dependencies than I think we would be still talking about just small memory improvements.
But such change might have better impact on MSC performance (from concurrency point of view).
Anyway main reason of doing it is to approach MSC1 to MSC2 as much as possible.
Then potential switch from MSC1 to MSC2 in the future would be more straightforward process.
 
 
   - Speed up WildFly boot time

Same question here. A reload takes a couple hundred ms of which my guess is MSC is a quite small part.

The improvement here might be better comparing to memory improvements.
Simplified MSC state machine (and less MSC states) results in less context switches.
I have a local prototype where we have been able to eliminate one third of MSC states
(and I believe we could simplify MSC state machine even further in the future).
I don't have numbers yet but this change should improve WildFly boot process and deployments.
 
 
 * Potential Migration to MSC 2

MSC Library Goals:
 * SHORT TERM GOALS (MSC 1.2.x, 1.3.x)
   [1] simplify MSC state machine - deprecate useless MSC internal states
       (e.g. REMOVED, WONT_START, WAITING, REMOVING, STOPPING maybe others)
   [2] deprecate API exposing MSC internals
       (e.g. replace ServiceListener with LifecycleListener)
   [3] deprecate MSC Values, Injections & Injectors and provide alternative API
       (alternative API should have same minimalistic memory requirements like MSC 2)
 * LONG TERM GOALS (MSC 1.4.x)
   [4] remove deprecated APIs and all deprecated stuff

WildFly MSC Integration Goals:
 + SHORT TERM GOALS (WildFly 12)
   * replace ServiceListeners with LifecycleListeners (LifecycleListeners don't expose MSC internals)
   * eliminate MSC optional dependencies from WildFLy Core

Sounds good. The basic issue there is the modeling of optional module dependencies using MSC services, and IIRC you have an alternate approach in mind.

I didn't give it much thinking yet, but at the moment there are two alternatives I am aware of:
1) Let JBoss Modules do handling of optional dependencies on its own and don't map optional modules to MSC optional dependencies
    - the idea is present in this commit: https://github.com/ropalka/wildfly-core/commit/c65841c1892f02e14a14101cca4035f89c932ce5
      (and all WildFly-Core and WildFly testsuites are passing with this commit)
2) Workaround MSC optional dependencies for optional modules somehow
    - that's my next TODO task

DomainModelControllerService also has one for some reason but I figure that can be eliminated easily enough.

This I hope should be easy to workaround via capabilities (i.e. install REQUIRED dependency iff some capability is present).
 
 
   * eliminate MSC Values, Injections & Injectors and migrate to alternative API

This sounds like a very large task for WF 12, for which only some weeks of dev time remain.

This sounds more complex than it is. But of course there can be use cases that might complicate this task.
 
 
   * WildFly Management Layer should not expose MSC APIs as its public API
     (complicates potential migration to MSC2 and breaks encapsulation)

I can't see this happening in WildFly 12. Let's talk about it when we meet up at the end of the month.

We definitely need to talk about it and come to a conclusion.
 

 + LONG TERM GOALS (WildFly versions targeting next major EAP)
   * eliminate MSC optional dependencies from WildFly (probably via Capabilities)
     (MSC Optional Dependencies have been fixed recently but there's still performance issue
     - in worst case scenario if service A has N optional dependencies
     it may happen service A is restarted N times before it is stabilized in UP state)

Feedback and comments more than welcome!

--
Rio


_______________________________________________
wildfly-dev mailing list
wildfly-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/wildfly-dev



--
Brian Stansberry
Manager, Senior Principal Software Engineer
Red Hat

Thanks for asking.

--
Rio