Thanks for the responses guys!

*>  Could you open a jira issue for this?*

Sure thing!
https://issues.apache.org/jira/browse/FELIX-5816


*>  You can also seed the SecureRandom yourself*

Interesting.  A friend suggested some options from a StackOverflow post
<https://stackoverflow.com/questions/49322948/slow-securerandom-initialization/49322949#49322949>
to avoid SecureRandom as the default security provider on Windows.  I was
able to implement this snippet of code as a temp workaround prior to
loading up Felix which has now shaved 1.5 seconds off of my startup time!

Optional.ofNullable( Security.getProvider( "SunMSCAPI" ) ).ifPresent( p->{
    Security.removeProvider( p.getName() );
    Security.insertProviderAt( p, 1 );
} );



Thanks!

~Brad

*Developer Advocate*
*Ortus Solutions, Corp *

E-mail: b...@coldbox.org
ColdBox Platform: http://www.coldbox.org
Blog: http://www.codersrevolution.com


On Thu, Mar 22, 2018 at 10:35 PM, Bernd Eckenfels <e...@zusammenkunft.net>
wrote:

> You can also seed the SecureRandom yourself (with current time and
> hostname and similar) but I think that’s a very specific driver/Hardware
> problem)
>
> Gruss
> Bernd
> --
> http://bernd.eckenfels.net
> ________________________________
> From: Karl Pauls <karlpa...@gmail.com>
> Sent: Friday, March 23, 2018 12:07:24 AM
> To: users@felix.apache.org
> Subject: Re: Felix startup performance on Windows due to secure random and
> network card MAC access
>
> I think we could probably just switch to using java.util.Random
> instead of SecureRandom. Could you open a jira issue for this?
>
> regards,
>
> Karl
>
> On Thu, Mar 22, 2018 at 11:45 PM, Brad Wood <bdw4...@gmail.com> wrote:
> > Hi all, first time poster here.  I'm working on a CLI project called
> > CommandBox ( https://www.ortussolutions.com/products/commandbox ) which
> is
> > based on a JSR-223 implementation of the JVM language Lucee Server (
> > http://lucee.org/ ).  Lucee uses Apache Felix internally when it starts
> up
> > and on my Windows machines I'm seeing a significant slowdown in startup
> > time due to accessing my Windows network adapter in order to read the Mac
> > address as part of SecureRandom which is used to generate a UUID for each
> > Felix instance.
> >
> > By significant slowdown, I'm talking about 1.5 seconds, which may go
> > unnoticed in a server startup, but is a week in CLI-startup years. :)
> Java
> > libs that want to access my network adapter's Mac address are a common
> > nemesis of my startup times, mostly due to Windows sucking from what I
> can
> > tell.
> >
> > This line here is where things start to go south:
> > https://github.com/apache/felix/blob/trunk/framework/src/
> main/java/org/apache/felix/framework/Felix.java#L675
> >
> > And the stack traces usually look similar to this right here:
> >
> > java.lang.Thread.State: RUNNABLE
> >   at java.net.NetworkInterface.getMacAddr0(Native Method)
> >   at java.net.NetworkInterface.getHardwareAddress(NetworkInterfac
> e.java:460)
> >   at sun.security.provider.SeedGenerator.addNetworkAdapterInfo(Se
> edGenerator.java:238)
> >   at sun.security.provider.SeedGenerator.access$000(SeedGenerator
> .java:80)
> >   at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:183)
> >   at sun.security.provider.SeedGenerator$1.run(SeedGenerator.java:168)
> >   at java.security.AccessController.doPrivileged(Native Method)
> >   at sun.security.provider.SeedGenerator.getSystemEntropy(SeedGen
> erator.java:168)
> >   at sun.security.provider.SecureRandom$SeederHolder.<clinit>(
> SecureRandom.java:201)
> >   at sun.security.provider.SecureRandom.engineNextBytes(SecureRan
> dom.java:221)
> >   - locked <0x00000007415f5f40> (a sun.security.provider.SecureRandom)
> >   at java.security.SecureRandom.nextBytes(SecureRandom.java:468)
> >   at org.apache.felix.framework.util.Util.randomUUID(Util.java:795)
> >   at org.apache.felix.framework.Felix.init(Felix.java:675)
> >   at org.apache.felix.framework.Felix.init(Felix.java:626)
> >   at org.apache.felix.framework.Felix.start(Felix.java:964)
> >   ... unrelated bootstrapping code...
> >
> > Based on the comments and a quick review of the code, I'm guessing the
> > generation of a UUID of some sort is unavoidable.  What are the
> > chances of switching to some other, much faster library for UUID
> > generation that doesn't need to drop down the rabbit hole of asking my
> > Windows networking stack for a Mac address?  This will make a huge
> > difference in my CLI startup times for sure.
> >
> > Perhaps a library like this could be used:
> >
> > https://github.com/jchambers/fast-uuid
> >
> > Thanks!
> >
> > ~Brad
> >
> > *Developer Advocate*
> > *Ortus Solutions, Corp *
> >
> > E-mail: b...@coldbox.org
> > ColdBox Platform: http://www.coldbox.org
> > Blog: http://www.codersrevolution.com
>
>
>
> --
> Karl Pauls
> karlpa...@gmail.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> For additional commands, e-mail: users-h...@felix.apache.org
>
>

Reply via email to