[ https://issues.apache.org/jira/browse/CLEREZZA-617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13107986#comment-13107986 ]
Daniel Spicar edited comment on CLEREZZA-617 at 9/19/11 5:09 PM: ----------------------------------------------------------------- I have been making changes to pass the caller-bundlecontext to the scala compiler service. But just letting the SSP's bundle load the compiled SSP does not work because it doesn't know about SRenderlet and CompiledScalaServerPage classes. Next I wrote some (not very nice) code to get a bundle's class loader (it's not that easy, I used java reflection) and tried to make a custom ClassLoader. The idea is to use the Bundle's class loader as parent class loader with the custom class loqader. The custom classloader was at first the currently used AbstractFileClassLoader which enabled the CompiledScalaServerPage class to be resolved. However it still does not resolve the SRenderlet class. I started extending the custom class loader to load all classes in the scala scripting bundle's classpath but so far I failed at making it work in Scala. I am still working on it. All this code is very prototypical and probably is not very efficient. The idea was more the see if it can be done. was (Author: daniel.spicar): I have been making changes to pass the called bundlecontext to the scala compiler service. But just letting the SSP's bundle load the compiled SSP does not work because it doesn't know about SRenderlet and CompiledScalaServerPage classes. Next I wrote some (not very nice) code to get a bundle's class loader (it's not that easy, I used java reflection) and tried to make a custom ClassLoader. The idea is to use the Bundle's class loader as parent class loader with the custom class loqader. The custom classloader was at first the currently used AbstractFileClassLoader which enabled the CompiledScalaServerPage class to be resolved. However it still does not resolve the SRenderlet class. I started extending the custom class loader to load all classes in the scala scripting bundle's classpath but so far I failed at making it work in Scala. I am still working on it. All this code is very prototypical and probably is not very efficient. The idea was more the see if it can be done. > 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