cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carsten Ziegeler" <cziege...@s-und-n.de>
Subject [BUG]: Multithreading problems during regeneration of sitemap
Date Wed, 06 Feb 2002 13:48:37 GMT
Hi,

I just found out this problem with the asynchronous sitemap generation:

If you change the sitemap in a running system the sitemap is regenerated
in the background. In the meantime all incomming requests are served with
the old sitemap until the new one is finished. This is nice.

But, if a new request enters the old sitemap and is in the processing of
this
sitemap and if at the same time the regeneration is finished, the old
sitemap
is released by the sitemap.handler class.

>> taken from the run() method <<
            if (this.sitemap != null) {
                programGenerator.release((CompiledComponent)this.sitemap);
            }
<<

This release causes a dispose on the Sitemap object which in turn resets the
sitemap object and for example sets the manager to null.
But the new requests is currently processing with the old sitemap object
which
then results sooner or later with a NPE (as the manager is now null).

This is easily reproducable. just change the sitemap and hit several times
on
reload.

Now, I see two solutions:
a) Each request looksup and releases the sitemap, so the release in the
run()
method of the handler will not dispose the old sitemap until all requests
still
using that old sitemap are finished.
b) Remove the asynchron regeneration.

Any suggestions?

Carsten


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


Mime
View raw message