Bug #5793
closedSystemMetadata missing for updated EML doc
0%
Description
Following the procedure outlined in #5792, we do not see the record for SystemMetadata in the Metacat systemMetadata table. I can see an error when inserting it into the table, the odd thing is that it is present in the HZ map so you can actually retrieve the SM even though it does not show in the listObjects result or in the backing table.
knb 20130118-19:28:04: [ERROR]: Error while creating systemmetadata record: tao.392 [edu.ucsb.nceas.metacat.IdentifierManager]
Related issues
Updated by ben leinfelder almost 12 years ago
Here is the full stacktrace:
knb 20130118-19:28:04: [ERROR]: Error while creating systemmetadata record: tao.392 [edu.ucsb.nceas.metacat.IdentifierManager]
java.lang.NullPointerException
at edu.ucsb.nceas.metacat.IdentifierManager.updateSystemMetadataFields(IdentifierManager.java:1082)
at edu.ucsb.nceas.metacat.IdentifierManager.updateSystemMetadata(IdentifierManager.java:1190)
at edu.ucsb.nceas.metacat.IdentifierManager.insertOrUpdateSystemMetadata(IdentifierManager.java:979)
at edu.ucsb.nceas.metacat.dataone.hazelcast.SystemMetadataMap.store(SystemMetadataMap.java:44)
at edu.ucsb.nceas.metacat.dataone.hazelcast.SystemMetadataMap.store(SystemMetadataMap.java:25)
at com.hazelcast.impl.concurrentmap.MapStoreWrapper.store(MapStoreWrapper.java:114)
at com.hazelcast.impl.ConcurrentMapManager$PutOperationHandler$PutStorer.doMapStoreOperation(ConcurrentMapManager.java:3156)
at com.hazelcast.impl.ConcurrentMapManager$AbstractMapStoreOperation.run(ConcurrentMapManager.java:3860)
at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at com.hazelcast.impl.ExecutorThreadFactory$1.run(ExecutorThreadFactory.java:38)
Updated by ben leinfelder almost 12 years ago
It looks like this is because the SM.serialVersion value was null.
We can fix this in Morpho by using a real value, but Metacat should also handle the case where it is not provided.
Updated by ben leinfelder almost 12 years ago
Two pronged approach to this:
-updated Metacat's MN.update() implementation to set the SM.serialVersion to default value if it is not provided. (MN.create() had already been setting the default)
-updated Morpho to set SM.serialVersion if it is not set before calling either MN.create() or MN.update().