It might be that it's filling because of the problem with current(). This problem goes away in the next release, which is real soon now...
 
Michael Kay
http://www.saxonica.com/


From: saxon-help-bounces@lists.sourceforge.net [mailto:saxon-help-bounces@lists.sourceforge.net] On Behalf Of Mark Gabriel
Sent: 24 October 2007 10:41
To: Mailing list for SAXON XSLT queries
Subject: Re: [saxon] NamePoolLimitException

I have been printing out the statistics and after running most bits of the system on my local application, which has a smallish generated data set, I got it up to the following after about 10 mins of clicking around:

 

NamePool contents: 3012 entries in 927 chains. 34 prefixes, 33 URIs

 

Is it the chains size that causes the Exception when any one gets full? When will it start to degrade performance or die?

I think the large number of uri is from calls to java functions.

 

I also did a few full dumps and did notice the current726527 typed names, so I am going to remove all usage of current(), I never really liked it anyway.

 

Mark

 

From: saxon-help-bounces@lists.sourceforge.net [mailto:saxon-help-bounces@lists.sourceforge.net] On Behalf Of Michael Kay
Sent: 23 October 2007 19:32
To: 'Mailing list for SAXON XSLT queries'
Subject: Re: [saxon] NamePoolLimitException

 

 

1) POSTED data from dynamic form. IE the user has designed their own form eg ‘company’ and ‘location’ in example below.

/user/create?name=mark&age=26&metadata:company=limehouse& metadata:location=London 

 

 

That doesn't look as bad as I thought - names being invented by users isn't quite the same as names being generated at random. 

 

 

Firstly just to make sure that the problem is the dynamic fields, and not our already large(ish) element set (SOAP, XHTML, FO, XSLT, LHS) is there any way that I can dump the full names from the NamePool? 

 

Yes, there's a method diagnosticDump() on the NamePool object (which you can find via the Configuration). It's worth checking this because there are other possible causes, for example there's a known problem in 8.9 with the use of the current() function causing names to be generated (and these really are random).

 

 

Performance so far has been good, is there a way that we could increase the NamePool size or for the NamePool to start recycling allocations for rarely used names?

 

The limits are based on the number of bits available in a word, so they're pretty inflexible! It's difficult to free any allocations because there's no way of telling whether a given integer code is still in use in some compiled stylesheet or in-memory document. One could try to allocate a part of the code space to names usedtransiently within the serialization pipeline - but that would be a fairly major undertaking and it's not clear how much benefit it would have.

 

Michael Kay




Mark Gabriel
Development

-------------------------------
mgabriel@limehousesoftware.co.uk
Limehouse Software Ltd

DDI: (020) 7566 3336
Main: (020) 7566 3320
Fax: (020) 7566 3321

Limehouse Software Ltd
4th Floor
1 London Bridge
London
SE1 9BG

www.limehousesoftware.co.uk - Unifying Information                

The information contained in this e-mail or in any attachments is confidential and is intended solely for the named addressee only. Access to this e-mail by anyone else is unauthorised. If you are not the intended recipient, please notify Limehouse Software Ltd immediately by returning this e-mail to sender or calling 020 7566 3320 and do not read, use or disseminate the information. Opinions expressed in this e-mail are those of the sender and not necessarily the company. Although an active anti-virus policy is operated, the company accepts no liability for any damage caused by any virus transmitted by this e-mail, including any attachments.

        

No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.488 / Virus Database: 269.15.8/1089 - Release Date: 23/10/2007 19:39