Project

General

Profile

« Previous | Next » 

Revision 6434

handle entryAdded (to hzSystemMetadata) to store sysmeta to local store when it is not already present

View differences:

CNodeService.java
28 28
import java.util.Set;
29 29

  
30 30
import org.apache.log4j.Logger;
31
import org.dataone.configuration.Settings;
32 31
import org.dataone.service.cn.v1.CNAuthorization;
33 32
import org.dataone.service.cn.v1.CNCore;
34 33
import org.dataone.service.cn.v1.CNRead;
......
65 64
import com.hazelcast.core.EntryListener;
66 65
import com.hazelcast.core.Hazelcast;
67 66
import com.hazelcast.core.IMap;
68
import com.hazelcast.core.IQueue;
69 67
import com.hazelcast.core.Member;
70 68
import com.hazelcast.partition.Partition;
71 69
import com.hazelcast.partition.PartitionService;
......
874 872
  }
875 873

  
876 874
  /**
877
   * Implement the EntryListener interface for Hazelcast, reponding to entry
878
   * added events in the hzSystemMetadata map.  Evaluate the entry and create
879
   * CNReplicationTasks as appropriate (for DATA, METADATA, RESOURCE)
880
   * 
881
   * @param event - The EntryEvent that occurred
882
   */
883
  @Override
884
  public void entryAdded(EntryEvent<Identifier, SystemMetadata> event) {
875
	 * Implement the EntryListener interface for Hazelcast, reponding to entry
876
	 * added events in the hzSystemMetadata map. Evaluate the entry and create
877
	 * CNReplicationTasks as appropriate (for DATA, METADATA, RESOURCE)
878
	 * 
879
	 * @param event - The EntryEvent that occurred
880
	 */
881
	@Override
882
	public void entryAdded(EntryEvent<Identifier, SystemMetadata> event) {
885 883

  
886
	  logMetacat.debug("Entry added to System Metadata map: " + event.getKey().getValue());
887
	  PartitionService partitionService = Hazelcast.getPartitionService();
888
	  Partition partition = partitionService.getPartition(event.getKey());
889
	  Member ownerMember = partition.getOwner();
890
	  if (!ownerMember.localMember()) {
891
		  // need to pull the entry into the local store
892
		  logMetacat.debug("Saving entry locally: " + event.getKey().getValue());
893
		  try {
894
			IdentifierManager.getInstance().createSystemMetadata(event.getValue());
895
		} catch (McdbDocNotFoundException e) {
896
			// TODO Auto-generated catch block
897
			e.printStackTrace();
884
		logMetacat.debug("Entry added to System Metadata map: " + event.getKey().getValue());
885
		PartitionService partitionService = Hazelcast.getPartitionService();
886
		Partition partition = partitionService.getPartition(event.getKey());
887
		Member ownerMember = partition.getOwner();
888
		if (!ownerMember.localMember()) {
889
			// need to pull the entry into the local store
890
			logMetacat.debug("Saving entry locally: " + event.getKey().getValue());
891
			try {
892
				if (!IdentifierManager.getInstance().identifierExists(event.getKey().getValue())) {
893
					IdentifierManager.getInstance().createSystemMetadata(event.getValue());
894
				} else {
895
					IdentifierManager.getInstance().updateSystemMetadata(event.getValue());
896
				}
897
			} catch (McdbDocNotFoundException e) {
898
				logMetacat.error(
899
						"Could not save System Metadata to local store.", e);
900
			}
898 901
		}
899
	  }
900
	  
901
    // TODO evaluate the type of system metadata change, decide if it warrants
902
    // a replication event, what type (DATA, METADATA, RESOURCE), 
903
    // iteratively lock the PID, create and submit the tasks, and expect a result back. 
904
    // Deal with exceptions.
905
    
906
  }
907 902

  
903
		// TODO evaluate the type of system metadata change, decide if it
904
		// warrants
905
		// a replication event, what type (DATA, METADATA, RESOURCE),
906
		// iteratively lock the PID, create and submit the tasks, and expect a
907
		// result back.
908
		// Deal with exceptions.
909
		boolean isMetadata = D1NodeService.isScienceMetadata(event.getValue());
910
		// TODO: do we need to do anything explicit here?
911
	}
912

  
908 913
  /**
909 914
   * Implement the EntryListener interface for Hazelcast, reponding to entry
910 915
   * evicted events in the hzSystemMetadata map.  Evaluate the entry and create

Also available in: Unified diff