[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.technology.buckminster] Re: Strange exceptions using headless buckminster r07488

Hi Vaidas,
This should be fixed in core revision r07733. You will need the allowCircularDependency="true" advisorNode in the query since you indeed do have that, but you will no longer get the endless recursion from the LocalResolver.


In Buckminster, we use this layout instead:

+product.plugin
\-- ..

+product.feature
+--+product.product
+--+feature.xml
|  \--product.plugin
\-- ..

+other.plugins
\-- ..

We see the .product file more as an extension to the feature.

An alternative is to not use a feature at all and instead let the .product file define all plug-ins that should be included. Either way, you get rid of the circular dependency.

I'm uploading a new Buckminster version right now. It should be ready within the hour.

- thomas


vaidasn@xxxxxxxxx wrote:
Hi Thomas,

Indeed this is circular dependency most likely caused by support for
.product files. I have played a little more with it, here is what I get.

The project is structured in this way:

+product.plugin
+--+product.product
|  \--product.feature
\-- ..

+product.feature
+--+feature.xml
|  \--product.plugin
\-- ..

+other.plugins
\-- ..

Product file is in plugin. Product is feature based therefore it includes the product.feature. On the other hand product.feature lists product.plugin in its feature.xml. Before version 0.3.0 product files where not parsed so there was no problem with my layout.

I have tried several scenarios:

1) Materialize product.plugin. Then I get something working and I can perform buckminster actions. However product.feature does not get materialized. It seems that in this case product file is not considered by buckminster.

2) Materialize product.feature. I get this error at resolve and can not proceed further:

Circular component dependency detected. Chain is product.plugin -> product.feature -> product.plugin

3) I add advisor node to my cquery:

<advisorNode namePattern="product.feature" componentType="eclipse.feature" allowCircularDependency="true"/>

Then I materialize everything successfully but get endless recursion on perform action.


I hope this information helps,

Vaidas

Thomas Hallgren wrote:

Hi Vaidas,
This is odd. I can't recall I've modified anything that would have an
impact on the resolver. Are the things you're working on proprietary or is
there a chance for me to look at it? I must get some more info somehow in
order to address this.

 From the looks of it, you get an endless recursion in LocalResolver but
 I'm not sure why that would
happen. Any chance you have introduced a circular dependency? If you have,
it should be trapped and not result in a stack overflow so something is
definitely wrong, but I'm still curious.

Regards,
Thomas Hallgren

Vaidas Nargelas wrote:
Hi Thomas,

I have upgraded buckminster to r07488 and headless r07406 and I can no
longer perform an action. When I do perform plugin_x#bundle.jar I get
this exception:

java.lang.StackOverflowError
        at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:446)
        at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:517)
        at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
        at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:240)
        at java.lang.StringCoding.encode(StringCoding.java:272)
        at java.lang.String.getBytes(String.java:947)
        at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
        at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
        at java.io.File.exists(File.java:733)
        at org.eclipse.buckminster.core.metadata.WorkspaceInfo.getMaterialization(WorkspaceInfo.java:397)
        at org.eclipse.buckminster.core.metadata.WorkspaceInfo.getMaterialization(WorkspaceInfo.java:419)
        at org.eclipse.buckminster.core.resolver.LocalResolver.localResolve(LocalResolver.java:190)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:405)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
        at org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
        ...

I can successfully perform the action with r7034.

Thanks,

Vaidas