kb-dk/KB-Cumulus-API

writeFieldMetadata spams the log with ERRORs and attempts to alter record state

Opened this issue · 0 comments

tokee commented

When using the CumulusRecord#writeFieldMetadata(OutputStream) method with read-only credentials, the the method logs the ERROR stated below.

This contaminates the log and it is quite worrying that a presumably read-only operation seemingly tries to modify the state of the record at the server!?

2019-11-21 09:56:59.115 ERROR dk.kb.cumulus.CumulusRecord - Could not set the value 'f44fa439-40da-4bd2-b46b-882ff522b571' for the field '{4f68838d-0e2f-471e-b8fc-b95ae2821912}'
com.canto.cumulus.exceptions.PermissionDeniedException: $ModifyItem: Permission denied
        at com.canto.cumulus.Item.save1(Native Method)
        at com.canto.cumulus.Item.save(Item.java:165)
        at com.canto.cumulus.Item.save(Item.java:151)
        at dk.kb.cumulus.CumulusRecord.setStringValueInField(CumulusRecord.java:422)
        at dk.kb.cumulus.CumulusRecord.setStringValueInField(CumulusRecord.java:139)
        at dk.kb.cumulus.FieldExtractor.extractBinaryField(FieldExtractor.java:292)
        at dk.kb.cumulus.FieldExtractor.getFieldValue(FieldExtractor.java:173)
        at dk.kb.cumulus.FieldExtractor.getFields(FieldExtractor.java:104)
        at dk.kb.cumulus.FieldExtractor.getFields(FieldExtractor.java:67)
        at dk.kb.cumulus.CumulusRecord.writeFieldMetadata(CumulusRecord.java:251)
        at dk.kb.ds.cumulus.export.CumulusStats.collect(CumulusStats.java:88)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.base/java.util.stream.SliceOps$1$1.accept(SliceOps.java:199)
        at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1812)
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at dk.kb.ds.cumulus.export.CumulusStats.<init>(CumulusStats.java:70)
        at dk.kb.ds.cumulus.export.CumulusStats.main(CumulusStats.java:50)