Re: [equinox-dev] equinox ds

2015-02-20 Thread Cristiano GaviĆ£o

Hi Scott,

Felix SCR guys already implemented some tasks related to RFC 190:

https://issues.apache.org/jira/browse/FELIX-4403
https://issues.apache.org/jira/browse/FELIX-4769
https://issues.apache.org/jira/browse/FELIX-4405
https://issues.apache.org/jira/browse/FELIX-4391

Not done yet:
https://issues.apache.org/jira/browse/FELIX-4401

I have played a bit with the version 2.0.0-SNAPSHOT a month ago, but 
looking the code today it seems that they returned to 1.8.3-SNAPSHOT. 
Will question them about that.


regards,

Cristiano

On 19-02-2015 22:40, Scott Lewis wrote:

On 2/19/2015 5:26 PM, BJ Hargrave wrote:

See http://dev.eclipse.org/mhonarc/lists/equinox-dev/msg08088.html


Thanks.  I can't seem to find the SCR version at felix.apache.org that 
supports RFC190.  Would you please point me in the right direction there?


And given Thomas' plans for Mars (using Felix SCR version), how far 
along is the conversion work?  Are the SCR bundle(s) going to be in 
Orbit at some point?


Scott



___
equinox-dev mailing list
equinox-dev@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev


___
equinox-dev mailing list
equinox-dev@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Re: [equinox-dev] equinox ds

2015-02-19 Thread Scott Lewis

On 2/19/2015 5:26 PM, BJ Hargrave wrote:

See http://dev.eclipse.org/mhonarc/lists/equinox-dev/msg08088.html


Thanks.  I can't seem to find the SCR version at felix.apache.org that 
supports RFC190.  Would you please point me in the right direction there?


And given Thomas' plans for Mars (using Felix SCR version), how far 
along is the conversion work?  Are the SCR bundle(s) going to be in 
Orbit at some point?


Scott

___
equinox-dev mailing list
equinox-dev@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Re: [equinox-dev] Equinox DS Performance Problem

2014-12-01 Thread Thomas Watson
Thanks for opening the bug.

For a while now I have been contemplating replacing the Equinox DS 
implementation with the Felix SCR/DS implementation for use in 
Equinox/Eclipse.  There is no longer any active committers working on the 
Equinox SCR/DS implementation.  I work closely with one of the lead 
committers of the Felix SCR/DS implementations (who happens to work for 
the same company as me).  For that reason I don't have resources to spend 
on maintaining the Equinox SCR/DS implementation.  Nobody else has step 
forward to take over the implementation of Equinox DS.

For the Mars release I plan on moving the Felix implementation for 
Equinox/Eclipse.  So this is a last request to the community.  If you have 
interest, skills and time to contribute to the Equinox DS implementation 
let us know, otherwise I am moving forward with using the Felix SCR/DS 
implementation for Mars.

Tom





From:   Colin Williams col...@i9technologies.com
To: Equinox development mailing list equinox-dev@eclipse.org
Date:   11/25/2014 06:46 PM
Subject:Re: [equinox-dev] Equinox DS Performance Problem
Sent by:equinox-dev-boun...@eclipse.org



Done, thank you for the suggestion: 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=453256

On Tue, Nov 25, 2014 at 3:56 PM, Alex Blewitt alex.blew...@gmail.com 
wrote:
It would be better to create a bug report at bugs.eclipse.org and attach 
the files and description there. 

Alex

Sent from my iPhat 6

On 25 Nov 2014, at 21:26, Colin Williams col...@i9technologies.com 
wrote:

Hi everyone,

This is a follow-up to my forum post [1], because I have more information 
now and firmly believe this is a problem with Equinox, and not my code. I 
have a simplified test case that duplicates the problem [2], and have 
verified that Felix does not exhibit the same behavior.

When firing up a new instance of a Declarative Services component, either 
a regular component or a newInstance of a ComponentFactory, Equinox checks 
for dependency cycles ([3] and [4], for regular components and component 
factory instances, respectively). Unfortunately, it does this by walking 
the entire list of components and factory instances to check for 
dependencies, and then walking the entire dependency graph to check for 
cycles (see [5] and [6]). After checking for cycles, it then walks the 
entire list again [7] to check for components that may need to be disabled 
based on the new dependency graph. 

Now, I'm not sure why the dependency cycle checking is necessary when 
activating a new factory instance, since presumably it would have been 
checked when the component was resolved or at least the first time an 
instance of that factory was created. Even if it is necessary every time, 
though, wouldn't it only be necessary to check the portion of the 
dependency graph that is reachable from the new instance, rather than the 
entire dependency graph of all enabled components? And then furthermore, 
wouldn't it only be necessary to check the same list of potentially 
affected components for ones that need to be disabled, rather than all of 
them? 

As a result of this, Equinox exhibits O(n^2) runtime in activating new 
components or creating new instances of factory components, based on the 
number of components in the runtime and the complexity of the dependency 
graph. In my test case [2], a fairly simple dependency graph (B-C-D), 
which is then referenced by 3000 factory instances (A-B), takes minutes 
to start because of this (see [9]). Adding this bundle to a Felix 
container results in Felix starting the bundle and all 3000 factories 
instantly. 

I will say that I'm not particularly familiar with the Equinox internals, 
but I have added timing information into a local copy of the DS project, 
and can verify that findDependencyCycles and resolveEligible both take an 
excessive amount of time, proportionate to the number of total components 
in the system. I'm also not very familiar with the Felix internals, but I 
can't see that Felix does any dependency cycle checking when creating a 
new factory instance ([8]). 

I hope this was detailed enough to explain the problem I'm experiencing. 
Can anyone verify that this is an issue, or explain why it needs to be 
done? Or offer workaround suggestions to allow us to still use DS 
ComponentFactories with more than a few hundred services/factories?

Thanks,
--Colin

[1] - https://www.eclipse.org/forums/index.php/t/868856/
[2] - Attached
[3] - 
http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n476
[4] - 
http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1042
[5] - 
http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1073
[6] - 
http://git.eclipse.org/c/equinox

Re: [equinox-dev] Equinox DS Performance Problem

2014-11-25 Thread Alex Blewitt
It would be better to create a bug report at bugs.eclipse.org and attach the 
files and description there. 

Alex

Sent from my iPhat 6

 On 25 Nov 2014, at 21:26, Colin Williams col...@i9technologies.com wrote:
 
 Hi everyone,
 
 This is a follow-up to my forum post [1], because I have more information now 
 and firmly believe this is a problem with Equinox, and not my code. I have a 
 simplified test case that duplicates the problem [2], and have verified that 
 Felix does not exhibit the same behavior.
 
 When firing up a new instance of a Declarative Services component, either a 
 regular component or a newInstance of a ComponentFactory, Equinox checks for 
 dependency cycles ([3] and [4], for regular components and component factory 
 instances, respectively). Unfortunately, it does this by walking the entire 
 list of components and factory instances to check for dependencies, and then 
 walking the entire dependency graph to check for cycles (see [5] and [6]). 
 After checking for cycles, it then walks the entire list again [7] to check 
 for components that may need to be disabled based on the new dependency 
 graph. 
 
 Now, I'm not sure why the dependency cycle checking is necessary when 
 activating a new factory instance, since presumably it would have been 
 checked when the component was resolved or at least the first time an 
 instance of that factory was created. Even if it is necessary every time, 
 though, wouldn't it only be necessary to check the portion of the dependency 
 graph that is reachable from the new instance, rather than the entire 
 dependency graph of all enabled components? And then furthermore, wouldn't it 
 only be necessary to check the same list of potentially affected components 
 for ones that need to be disabled, rather than all of them? 
 
 As a result of this, Equinox exhibits O(n^2) runtime in activating new 
 components or creating new instances of factory components, based on the 
 number of components in the runtime and the complexity of the dependency 
 graph. In my test case [2], a fairly simple dependency graph (B-C-D), which 
 is then referenced by 3000 factory instances (A-B), takes minutes to start 
 because of this (see [9]). Adding this bundle to a Felix container results in 
 Felix starting the bundle and all 3000 factories instantly. 
 
 I will say that I'm not particularly familiar with the Equinox internals, but 
 I have added timing information into a local copy of the DS project, and can 
 verify that findDependencyCycles and resolveEligible both take an excessive 
 amount of time, proportionate to the number of total components in the 
 system. I'm also not very familiar with the Felix internals, but I can't see 
 that Felix does any dependency cycle checking when creating a new factory 
 instance ([8]). 
 
 I hope this was detailed enough to explain the problem I'm experiencing. Can 
 anyone verify that this is an issue, or explain why it needs to be done? Or 
 offer workaround suggestions to allow us to still use DS ComponentFactories 
 with more than a few hundred services/factories?
 
 Thanks,
 --Colin
 
 [1] - https://www.eclipse.org/forums/index.php/t/868856/
 [2] - Attached
 [3] - 
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n476
 [4] - 
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1042
 [5] - 
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1073
 [6] - 
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1140
 [7] - 
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n511
 [8] - 
 https://github.com/apache/felix/blob/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java#L120
 [9] - http://pastebin.com/CNrHFE8C
 [10] - http://pastebin.com/mb3AbP2S
 com.i9technologies.equinoxtest_1.0.0.201411251422.jar
 ___
 equinox-dev mailing list
 equinox-dev@eclipse.org
 To change your delivery options, retrieve your password, or unsubscribe from 
 this list, visit
 https://dev.eclipse.org/mailman/listinfo/equinox-dev
___
equinox-dev mailing list
equinox-dev@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Re: [equinox-dev] Equinox DS Performance Problem

2014-11-25 Thread Colin Williams
Done, thank you for the suggestion:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=453256

On Tue, Nov 25, 2014 at 3:56 PM, Alex Blewitt alex.blew...@gmail.com
wrote:

 It would be better to create a bug report at bugs.eclipse.org and attach
 the files and description there.

 Alex

 Sent from my iPhat 6

 On 25 Nov 2014, at 21:26, Colin Williams col...@i9technologies.com
 wrote:

 Hi everyone,

 This is a follow-up to my forum post [1], because I have more information
 now and firmly believe this is a problem with Equinox, and not my code. I
 have a simplified test case that duplicates the problem [2], and have
 verified that Felix does not exhibit the same behavior.

 When firing up a new instance of a Declarative Services component, either
 a regular component or a newInstance of a ComponentFactory, Equinox checks
 for dependency cycles ([3] and [4], for regular components and component
 factory instances, respectively). Unfortunately, it does this by walking
 the entire list of components and factory instances to check for
 dependencies, and then walking the entire dependency graph to check for
 cycles (see [5] and [6]). After checking for cycles, it then walks the
 entire list again [7] to check for components that may need to be disabled
 based on the new dependency graph.

 Now, I'm not sure why the dependency cycle checking is necessary when
 activating a new factory instance, since presumably it would have been
 checked when the component was resolved or at least the first time an
 instance of that factory was created. Even if it is necessary every time,
 though, wouldn't it only be necessary to check the portion of the
 dependency graph that is reachable from the new instance, rather than the
 entire dependency graph of all enabled components? And then furthermore,
 wouldn't it only be necessary to check the same list of potentially
 affected components for ones that need to be disabled, rather than all of
 them?

 As a result of this, Equinox exhibits O(n^2) runtime in activating new
 components or creating new instances of factory components, based on the
 number of components in the runtime and the complexity of the dependency
 graph. In my test case [2], a fairly simple dependency graph (B-C-D),
 which is then referenced by 3000 factory instances (A-B), takes minutes to
 start because of this (see [9]). Adding this bundle to a Felix container
 results in Felix starting the bundle and all 3000 factories instantly.

 I will say that I'm not particularly familiar with the Equinox internals,
 but I have added timing information into a local copy of the DS project,
 and can verify that findDependencyCycles and resolveEligible both take an
 excessive amount of time, proportionate to the number of total components
 in the system. I'm also not very familiar with the Felix internals, but I
 can't see that Felix does any dependency cycle checking when creating a new
 factory instance ([8]).

 I hope this was detailed enough to explain the problem I'm experiencing.
 Can anyone verify that this is an issue, or explain why it needs to be
 done? Or offer workaround suggestions to allow us to still use DS
 ComponentFactories with more than a few hundred services/factories?

 Thanks,
 --Colin

 [1] - https://www.eclipse.org/forums/index.php/t/868856/
 [2] - Attached
 [3] -
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n476
 [4] -
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1042
 [5] -
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1073
 [6] -
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n1140
 [7] -
 http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/tree/bundles/org.eclipse.equinox.ds/src/org/eclipse/equinox/internal/ds/Resolver.java#n511
 [8] -
 https://github.com/apache/felix/blob/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java#L120
 [9] - http://pastebin.com/CNrHFE8C
 [10] - http://pastebin.com/mb3AbP2S

 com.i9technologies.equinoxtest_1.0.0.201411251422.jar

 ___
 equinox-dev mailing list
 equinox-dev@eclipse.org
 To change your delivery options, retrieve your password, or unsubscribe
 from this list, visit
 https://dev.eclipse.org/mailman/listinfo/equinox-dev


 ___
 equinox-dev mailing list
 equinox-dev@eclipse.org
 To change your delivery options, retrieve your password, or unsubscribe
 from this list, visit
 https://dev.eclipse.org/mailman/listinfo/equinox-dev

___
equinox-dev mailing list
equinox-dev@eclipse.org
To change your delivery options,