You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Andrzej Jan Taramina <an...@chaeron.com> on 2004/03/21 15:54:08 UTC

Persistent store throwing exception on shutdown?

Hi all:

I've noticed a strange problem with Cocoon 2.1.4.  When I shut down Tomcat, 
it throws the following exception:

ERROR   (2004-03-21) 09:50.29:718   [core.store.persistent] (Unknown-URI) 
Unknown-thread/AbstractJispFilesystemStore: store(..): Exception
java.io.IOException: Cannot create a file when that file already exists
	at java.io.RandomAccessFile.length(Native Method)
	at 
com.coyotegulch.jisp.ObjectDatabaseFile.writeObject(ObjectDatabaseFile.java:22
7)
	at 
com.coyotegulch.jisp.IndexedObjectDatabase.write(IndexedObjectDatabase.java:19
9)
	at 
org.apache.excalibur.store.impl.AbstractJispFilesystemStore.doStore(AbstractJi
spFilesystemStore.java:183)
	at 
org.apache.excalibur.store.impl.AbstractReadWriteStore.store(AbstractReadWrite
Store.java:143)
	at 
org.apache.excalibur.store.impl.MRUMemoryStore.dispose(MRUMemoryStore.java:199
)

My cocoon.xconf entries for the store look like this:

<store logger="core.store">
	<parameter name="maxobjects" value="8000"/>	
</store>
	
<persistent-store logger="core.store.persistent">
	<parameter name="use-cache-directory" value="true"/>
	<parameter name="order" value="2701"/>
</persistent-store>

I've managed to resolve the problem by adding:

	<parameter name="use-persistent-cache" value="false"/>

To the <store> configuration, but would like to figure out what is causing 
this problem?

Thanks!


Andrzej Jan Taramina
Chaeron Corporation: Enterprise System Solutions
http://www.chaeron.com


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Persistent store throwing exception on shutdown?

Posted by Unico Hommes <un...@hippo.nl>.
The problem lies with ECM not respecting shutdown order based on 
dependency information. What happens is that some components, such as 
the default store, use the persistent store during the dispose() stage. 
But at that time the persistent store itself has already been disposed 
(nullifying its state - hence the NPE). I just discovered that the 
latest SourceResolverImpl also suffers from this limitation in ECM. When 
you release a Source in a dispose method the SourceResolver and its 
SourceFactories may have been already disposed itself, leading to NPE's 
and the like.

I don't see how this can be fixed short of implementing shutdown 
ordering based on dependency information in ECM. Off course we'd have to 
extend the component contract for that as well so that components should 
state their dependencies thus enabling the container to use that info 
for said purpose. Fortress does have this ablitity, maybe we could 
borrow some of its code and implement it in our own container solution 
(whatever that may turn out to be).

Thoughts?

--
Unico


Andrzej Jan Taramina wrote:

> Hi all:
>
> I've noticed a strange problem with Cocoon 2.1.4.  When I shut down 
> Tomcat,
> it throws the following exception:
>
> ERROR   (2004-03-21) 09:50.29:718   [core.store.persistent] (Unknown-URI)
> Unknown-thread/AbstractJispFilesystemStore: store(..): Exception
> java.io.IOException: Cannot create a file when that file already exists
>         at java.io.RandomAccessFile.length(Native Method)
>         at
> com.coyotegulch.jisp.ObjectDatabaseFile.writeObject(ObjectDatabaseFile.java:22
> 7)
>         at
> com.coyotegulch.jisp.IndexedObjectDatabase.write(IndexedObjectDatabase.java:19
> 9)
>         at
> org.apache.excalibur.store.impl.AbstractJispFilesystemStore.doStore(AbstractJi
> spFilesystemStore.java:183)
>         at
> org.apache.excalibur.store.impl.AbstractReadWriteStore.store(AbstractReadWrite
> Store.java:143)
>         at
> org.apache.excalibur.store.impl.MRUMemoryStore.dispose(MRUMemoryStore.java:199
> )
>
> My cocoon.xconf entries for the store look like this:
>
> <store logger="core.store">
>         <parameter name="maxobjects" value="8000"/>    
> </store>
>        
> <persistent-store logger="core.store.persistent">
>         <parameter name="use-cache-directory" value="true"/>
>         <parameter name="order" value="2701"/>
> </persistent-store>
>
> I've managed to resolve the problem by adding:
>
>         <parameter name="use-persistent-cache" value="false"/>
>
> To the <store> configuration, but would like to figure out what is causing
> this problem?
>
> Thanks!
>
>
> Andrzej Jan Taramina
> Chaeron Corporation: Enterprise System Solutions
> http://www.chaeron.com
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>


Re: Persistent store throwing exception on shutdown?

Posted by Unico Hommes <un...@hippo.nl>.
The problem lies with ECM not respecting shutdown order based on 
dependency information. What happens is that some components, such as 
the default store, use the persistent store during the dispose() stage. 
But at that time the persistent store itself has already been disposed 
(nullifying its state - hence the NPE). I just discovered that the 
latest SourceResolverImpl also suffers from this limitation in ECM. When 
you release a Source in a dispose method the SourceResolver and its 
SourceFactories may have been already disposed itself, leading to NPE's 
and the like.

I don't see how this can be fixed short of implementing shutdown 
ordering based on dependency information in ECM. Off course we'd have to 
extend the component contract for that as well so that components should 
state their dependencies thus enabling the container to use that info 
for said purpose. Fortress does have this ablitity, maybe we could 
borrow some of its code and implement it in our own container solution 
(whatever that may turn out to be).

Thoughts?

--
Unico


Andrzej Jan Taramina wrote:

> Hi all:
>
> I've noticed a strange problem with Cocoon 2.1.4.  When I shut down 
> Tomcat,
> it throws the following exception:
>
> ERROR   (2004-03-21) 09:50.29:718   [core.store.persistent] (Unknown-URI)
> Unknown-thread/AbstractJispFilesystemStore: store(..): Exception
> java.io.IOException: Cannot create a file when that file already exists
>         at java.io.RandomAccessFile.length(Native Method)
>         at
> com.coyotegulch.jisp.ObjectDatabaseFile.writeObject(ObjectDatabaseFile.java:22
> 7)
>         at
> com.coyotegulch.jisp.IndexedObjectDatabase.write(IndexedObjectDatabase.java:19
> 9)
>         at
> org.apache.excalibur.store.impl.AbstractJispFilesystemStore.doStore(AbstractJi
> spFilesystemStore.java:183)
>         at
> org.apache.excalibur.store.impl.AbstractReadWriteStore.store(AbstractReadWrite
> Store.java:143)
>         at
> org.apache.excalibur.store.impl.MRUMemoryStore.dispose(MRUMemoryStore.java:199
> )
>
> My cocoon.xconf entries for the store look like this:
>
> <store logger="core.store">
>         <parameter name="maxobjects" value="8000"/>    
> </store>
>        
> <persistent-store logger="core.store.persistent">
>         <parameter name="use-cache-directory" value="true"/>
>         <parameter name="order" value="2701"/>
> </persistent-store>
>
> I've managed to resolve the problem by adding:
>
>         <parameter name="use-persistent-cache" value="false"/>
>
> To the <store> configuration, but would like to figure out what is causing
> this problem?
>
> Thanks!
>
>
> Andrzej Jan Taramina
> Chaeron Corporation: Enterprise System Solutions
> http://www.chaeron.com
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org