[ 
https://issues.apache.org/jira/browse/CLEREZZA-617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13105293#comment-13105293
 ] 

Daniel Spicar commented on CLEREZZA-617:
----------------------------------------

Yes, the WebRenderingService Component does not cause this issue per se. The 
issue arises from SSPs using a WebRenderingService. When these SSPs are 
compiled, Felix creates a dependency on the package providing the 
WebRenderingService (which is correct and to be expected). The issue is 
however, that in the current implementation not the WebRenderingConsumer is 
wired to the WebRenderingService but instead the Scala Scripting bundle is 
wired to the WebRenderingService. Because many bundles import (depend on) the 
Scala scripting bundle, this causes a cascade of refreshes, when the 
WebRenderingService Provider bundle is refreshed and as a consequence the Scala 
scripting bundle is refreshed as well.

I did not yet try what sorts of side effects would appear but just using the 
classloader of the bundle that provides the SSP when an SSP is compiled, will 
have an effect on dependencies created for every bundle registering an SSP. In 
the described case with the Webrenderingservice, we should get the expected 
dependency of the consumer on the provider. But irrespective of whether any 
webrenderingservice is used, dependencies inside SSPs will not not be wired 
from scala scripting to the respective packages but from the bundles that 
register the SSP to the respective packages. Now I did not try this but I would 
expect all bundles registering an SSP to be wired to various scala packages at 
least and possibly other ones. While this seems to be correct logically it is 
different from how it used to be until now. Therefore I say there may be 
unwanted side effects but I don't know. It needs to be tested. 

> Bug in org.apache.clerezza.platform.typerendering.WebRenderingService causes 
> a refresh of all bundles
> -----------------------------------------------------------------------------------------------------
>
>                 Key: CLEREZZA-617
>                 URL: https://issues.apache.org/jira/browse/CLEREZZA-617
>             Project: Clerezza
>          Issue Type: Bug
>         Environment: Mac OSx 10.6.6
> java version "1.6.0_26"
> Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425)
> Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)
>            Reporter: Tsuyoshi Ito
>            Priority: Critical
>         Attachments: refreshes.png, renderingservice.zip
>
>
> Updating a bundle which provides a WebrenderingService causes an update of 
> all bundles (after refresh). Even thougth there are no dependencies between 
> most of the bundles.
> test bundles to reproduce the bug attached.
> How to reproduce it:
> parent version 0.3-incubating-SNAPSHOT is used in test bundles (probably you 
> need  0.2-incubating-SNAPSHOT).
> attempt 1
> 1. Install and start bundle org.clerezza.app.webrenderingservice
> 2. Install and start bundle org.clerezza.app.webrenderingserviceconsumer
> 3. Go to http://localhost:8080/admin/renderingtest, The WebrenderingService 
> produces the text "hello test". WebrenderingService is used in an ssp in the 
> webrenderingserviceconsumer bundle
> 4. update org.clerezza.app.webrenderingservice, 
> 5. enter ":f refresh", a refresh is necessary. all bundles are updated
> Furthermore the following error occured, which makes Clerezza Console 
> unavailable.
> org.apache.clerezza.shell.InterruptibleInputStream$$anon$1@2053076f: caught 
> java.io.IOException: Bad file descriptor
> java.io.IOException: Bad file descriptor
>       at sun.nio.ch.FileDispatcher.read0(Native Method)
>       at sun.nio.ch.FileDispatcher.read(FileDispatcher.java:26)
>       at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:202)
>       at sun.nio.ch.IOUtil.read(IOUtil.java:175)
>       at sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:144)
>       at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:48)
>       at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:92)
>       at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:86)
>       at java.io.InputStream.read(InputStream.java:85)
>       at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:64)
>       at 
> org.apache.clerezza.shell.InterruptibleInputStream$$anon$1$$anonfun$act$1$$anonfun$apply$1.apply(InterruptibleInputStream.scala:40)
>       at 
> org.apache.clerezza.shell.InterruptibleInputStream$$anon$1$$anonfun$act$1$$anonfun$apply$1.apply(InterruptibleInputStream.scala:35)
>       at scala.actors.ReactorTask.run(ReactorTask.scala:34)
>       at scala.actors.Reactor$class.resumeReceiver(Reactor.scala:129)
>       at 
> org.apache.clerezza.shell.InterruptibleInputStream$$anon$1.scala$actors$ReplyReactor$$super$resumeReceiver(InterruptibleInputStream.scala:32)
>       at scala.actors.ReplyReactor$class.resumeReceiver(ReplyReactor.scala:69)
>       at 
> org.apache.clerezza.shell.InterruptibleInputStream$$anon$1.resumeReceiver(InterruptibleInputStream.scala:32)
>       at scala.actors.Actor$class.searchMailbox(Actor.scala:478)
>       at 
> org.apache.clerezza.shell.InterruptibleInputStream$$anon$1.searchMailbox(InterruptibleInputStream.scala:32)
>       at 
> scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply(Reactor.scala:114)
>       at 
> scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply(Reactor.scala:114)
>       at scala.actors.ReactorTask.run(ReactorTask.scala:36)
>       at 
> scala.concurrent.forkjoin.ForkJoinPool$AdaptedRunnable.exec(ForkJoinPool.java:611)
>       at 
> scala.concurrent.forkjoin.ForkJoinTask.quietlyExec(ForkJoinTask.java:422)
>       at 
> scala.concurrent.forkjoin.ForkJoinWorkerThread.mainLoop(ForkJoinWorkerThread.java:340)
>       at 
> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:325)
> Because Clerezza Console is unavailable I have used 
> http://localhost:8080/system/console/shell 
> attempt 2
> 1 .Update bundle org.clerezza.app.webrenderingservice again without visiting 
> http://localhost:8080/admin/renderingtest first (not compiling the ssp)
> 2. enter refresh => no refresh necessary

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to