Am 27.06.2016 um 20:55 schrieb Stahle, Patrick:
Hi,

We have a relatively heavily threaded application which is calling pdfbox to 
stamp certain pdf files. We have been in production for a little over a week 
and have run into a few threads getting stuck. The stack trace is the following:

### Thread id=34, name="dispatch_2_20160626211454_1064"
# ThreadInfo: "dispatch_2_20160626211454_1064" Id=34 RUNNABLE
# CPU: threadCpuTime=49,541,548.824 ms, threadUserTime=49,538,533.066 ms
# Contention: blockedCount=33 , blockedTime=123 ms
# Contention: lockName=null , lockOwnerId=-1, lockOwnerName=null
java.util.HashMap.put(HashMap.java:473)
java.util.HashSet.add(HashSet.java:217)
java.util.AbstractCollection.addAll(AbstractCollection.java:334)
org.apache.pdfbox.pdmodel.font.encoding.Encoding.contains(Encoding.java:109)
org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:343)
org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:286)
org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:315)
com.tycoelectronics.emcs.stamppdf.StampEnginePDFBox.getLongestTextWidth(StampEnginePDFBox.java:1369)
:
:

We seem to be getting stuck in PDFont classes HashMap which is unsynchronized 
class.

Any suggestions?

We are using PDFBox 2.0.0 release...
Update to 2.0.2. What PDFont are you using? One of the predefined "standard 14"? If yes, then this code

    public boolean contains(String name)
    {
// we have to wait until all add() calls are done before building the name cache
        // otherwise /Differences won't be accounted for
        if (names == null)
        {
            names = new HashSet<String>(codeToName.size());
            names.addAll(codeToName.values());
        }
        return names.contains(name);
    }

might be risky :-( Workaround idea: call contains("space") for the fonts you're using before the real business starts.

Tilman

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to