Project

General

Profile

Bug #7130

Metacat allows partial storage of objects when the object's system metadata is incomplete

Added by Mark Servilla almost 9 years ago. Updated almost 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
cn_metacat
Start date:
2015-05-26
Due date:
% Done:

100%

Story Points:
Sprint:

Description

During testing of the urn:node:mnTestSEAD MN, two objects (sead-Martin-John-f1dbc3df-c27c-4647-b05a-4b1f05c99a24 and seadva-ZhouQuan388469d5-33bb-491c-867b-c515ff715594) were only partially synchronized (see attached files) on cn-stage when the system metadata for each object was found to be missing the "dateUploaded" field. Each object and corresponding system metadata are available through the REST API (it is hypothesized that the system metadata only resides in the memory part of the Hazelcast Map) and the object was written to Metacat storage (see below); however, the object's system metadata failed to be stored by Metacat due to an Null Pointer Exception resulting from the missing field (see below).

metacat=# select * from identifier where guid='sead-Martin-John-f1dbc3df-c27c-4647-b05a-4b1f05c99a24' or guid='seadva-ZhouQuan388469d5-33bb-491c-867b-c515ff715594';
guid | docid | rev
-------------------------------------------------------+-----------------------------+-----
sead-Martin-John-f1dbc3df-c27c-4647-b05a-4b1f05c99a24 | autogen.2015051814451035801 | 1
seadva-ZhouQuan388469d5-33bb-491c-867b-c515ff715594 | autogen.2015051814451070502 | 1
(2 rows)

metacat 20150518-21:45:15: [ERROR]: Error while creating systemmetadata record:
sead-Martin-John-f1dbc3df-c27c-4647-b05a-4b1f05c99a24 [edu.ucsb.nceas.metacat.Id
entifierManager]
java.lang.NullPointerException
at edu.ucsb.nceas.metacat.IdentifierManager.updateSystemMetadata(Identif
ierManager.java:1192)
at edu.ucsb.nceas.metacat.IdentifierManager.insertOrUpdateSystemMetadata
(IdentifierManager.java:981)
at edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService.saveLocally
(HazelcastService.java:455)
at edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService.entryUpdate
d(HazelcastService.java:437)
at edu.ucsb.nceas.metacat.dataone.hazelcast.HazelcastService.entryAdded(
HazelcastService.java:363)
at com.hazelcast.impl.ListenerManager.callListener(ListenerManager.java:
392)
at com.hazelcast.impl.ListenerManager.callListeners(ListenerManager.java
:334)
at com.hazelcast.impl.BaseManager$2.run(BaseManager.java:1394)
at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorI
mpl$ExecutionSegment.run(ParallelExecutorService.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:615)
at java.lang.Thread.run(Thread.java:745)
at com.hazelcast.impl.ExecutorThreadFactory$1.run(ExecutorThreadFactory.
java:45)

Metacat should not allow partial object storage when the object's system metadata is incomplete and fails to be recorded in the appropriate system metadata table.


Related issues

Related to Test Resources - Task #7144: Ensure the Webtester infrastructure tests for incomplete system metadata Closed 2015-06-02

History

#1 Updated by Jing Tao almost 9 years ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

The code was committed to both the svn trunk and 2.4 branch.

#2 Updated by Mark Servilla almost 9 years ago

  • Related to Task #7144: Ensure the Webtester infrastructure tests for incomplete system metadata added

#3 Updated by Skye Roseboom almost 9 years ago

  • Target version changed from CCI-1.5.2 to CCI-1.5.3

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 14.8 MB)