Giacomo Pati wrote:
Backporting is finished.
I've deeply looked at the
org.apache.excalibur.store.impl.StoreJanitorImpl. The only way to have it use the RunnableManger is by copying the source :-( because that class isn't made for subclassing. I have one ready just to have me see how it could be implemented. To make the class subclassable we have to open up a bunch of getters/setter and overwrite the start and run method. But this is more or less having it copied.
An other approach would be to refactor the memory management logic into its own method and have the run method call it in its loop body (current impl.). That way subclassing would still overwrite the start and run method but the hole memory management logic will be hidden in its own protected method.
Please, give me some oppinions on how to proceed. Take into account that if we refactor the excalibur-store package we need to release that right together (or one day before) the cocoon 2.1.6 release if we want to have a StoreJanitor impl. that uses the RunnableManager (I've never released any of the Avalon/Excalibur packages, thus don't know how long it will take). Also remember that the Store is core to Cocoon and IMO the core should use the abilities of core components like the RunnableManager.
I know many of you don't see why this has any importance nor why that should happen. Most of us run Cocoon in Jetty or Tomcat. But there are also users with BWL and WAS which run Cocoon there in. Recently a commercial app servers vendor has begun to "sandbox" (via RACF!) the deployed servlets and has inhibited thread creation (IIRC the J2EE spec says "your app components may not spawn their own threads". By the single-class-for thread-creation approache used by the RunnableManager we can point them to where to relax the sandboxing to make Cocoon run again. I have evangelized people to use Cocoon as many of aou have as well. Now some of them need to migrate onto the app server release mentioned above out of strategic directions in their companies and of course they expect some support/help/suggestions.
Hmm, not sure what's best here - but afaik doing a release of excalibur-store might be not possible given the current time frame, so why not copy the source of the class for now, and provide at the same time a patch to excalibur? As soon as they're doing a release we can remove our copy again.
Should we migrate RunnableManager to Excalibur and update Janitor there to use it?
/me ducks and runs
Vadim
