576 |
576 |
int count = 0;
|
577 |
577 |
|
578 |
578 |
// was there a failure? log it
|
579 |
|
if ( failure != null && status == ReplicationStatus.FAILED ) {
|
|
579 |
if ( failure != null && status.equals(ReplicationStatus.FAILED) ) {
|
580 |
580 |
String msg = "The replication request of the object identified by " +
|
581 |
581 |
pid.getValue() + " failed. The error message was " +
|
582 |
582 |
failure.getMessage() + ".";
|
... | ... | |
585 |
585 |
if (replicas.size() > 0 && replicas != null) {
|
586 |
586 |
// find the target replica index in the replica list
|
587 |
587 |
for (Replica replica : replicas) {
|
588 |
|
String replicaNodeStr = replica.getReplicaMemberNode()
|
589 |
|
.getValue();
|
|
588 |
String replicaNodeStr = replica.getReplicaMemberNode().getValue();
|
590 |
589 |
String targetNodeStr = targetNode.getValue();
|
591 |
|
logMetacat.debug("Comparing " + replicaNodeStr + " to "
|
592 |
|
+ targetNodeStr);
|
|
590 |
logMetacat.debug("Comparing " + replicaNodeStr + " to " + targetNodeStr);
|
593 |
591 |
|
594 |
592 |
if (replicaNodeStr.equals(targetNodeStr)) {
|
595 |
593 |
replicaEntryIndex = count;
|
... | ... | |
609 |
607 |
for ( Node node : nodes ) {
|
610 |
608 |
|
611 |
609 |
NodeReference nodeReference = node.getIdentifier();
|
612 |
|
logMetacat.debug("In setReplicationStatus(), Node reference is: " + nodeReference.getValue());
|
|
610 |
logMetacat.debug("In setReplicationStatus(), Node reference is: " +
|
|
611 |
nodeReference.getValue());
|
613 |
612 |
|
614 |
613 |
// allow target MN certs
|
615 |
|
if (targetNode.getValue().equals(nodeReference.getValue()) &&
|
616 |
|
node.getType() == NodeType.MN) {
|
|
614 |
if ( targetNode.getValue().equals(nodeReference.getValue() ) &&
|
|
615 |
node.getType().equals(NodeType.MN)) {
|
617 |
616 |
List<Subject> nodeSubjects = node.getSubjectList();
|
618 |
617 |
|
619 |
618 |
// check if the session subject is in the node subject list
|
... | ... | |
624 |
623 |
|
625 |
624 |
// lastly limit to COMPLETED, INVALIDATED,
|
626 |
625 |
// and FAILED status updates from MNs only
|
627 |
|
if ( status == ReplicationStatus.COMPLETED ||
|
628 |
|
status == ReplicationStatus.INVALIDATED ||
|
629 |
|
status == ReplicationStatus.FAILED) {
|
|
626 |
if ( status.equals(ReplicationStatus.COMPLETED) ||
|
|
627 |
status.equals(ReplicationStatus.INVALIDATED) ||
|
|
628 |
status.equals(ReplicationStatus.FAILED)) {
|
630 |
629 |
allowed = true;
|
631 |
630 |
break;
|
632 |
631 |
|
... | ... | |
666 |
665 |
|
667 |
666 |
// don't allow status to change from COMPLETED to anything other
|
668 |
667 |
// than INVALIDATED: prevents overwrites from race conditions
|
669 |
|
if ( targetReplica.getReplicationStatus() == ReplicationStatus.COMPLETED &&
|
670 |
|
status != ReplicationStatus.INVALIDATED) {
|
|
668 |
if ( targetReplica.getReplicationStatus().equals(ReplicationStatus.COMPLETED) &&
|
|
669 |
!status.equals(ReplicationStatus.INVALIDATED)) {
|
671 |
670 |
throw new InvalidRequest("4730", "Status state change from " +
|
672 |
671 |
targetReplica.getReplicationStatus() + " to " +
|
673 |
672 |
status.toString() + "is prohibited for identifier " +
|
... | ... | |
699 |
698 |
systemMetadata.setDateSysMetadataModified(Calendar.getInstance().getTime());
|
700 |
699 |
HazelcastService.getInstance().getSystemMetadataMap().put(systemMetadata.getIdentifier(), systemMetadata);
|
701 |
700 |
|
702 |
|
if ( status != ReplicationStatus.QUEUED && status != ReplicationStatus.REQUESTED) {
|
|
701 |
if ( !status.equals(ReplicationStatus.QUEUED) &&
|
|
702 |
!status.equals(ReplicationStatus.REQUESTED)) {
|
703 |
703 |
|
704 |
704 |
logMetacat.trace("METRICS:\tREPLICATION:\tEND REQUEST:\tPID:\t" + pid.getValue() +
|
705 |
705 |
"\tNODE:\t" + targetNode.getValue() +
|
... | ... | |
711 |
711 |
"\tSIZE:\t" + systemMetadata.getSize().intValue());
|
712 |
712 |
}
|
713 |
713 |
|
714 |
|
if ( status == ReplicationStatus.FAILED && failure != null ) {
|
|
714 |
if ( status.equals(ReplicationStatus.FAILED) && failure != null ) {
|
715 |
715 |
logMetacat.warn("Replication failed for identifier " + pid.getValue() +
|
716 |
716 |
" on target node " + targetNode + ". The exception was: " +
|
717 |
717 |
failure.getMessage());
|
718 |
718 |
}
|
719 |
719 |
|
720 |
720 |
// update the replica nodes about the completed replica when complete
|
721 |
|
if (status == ReplicationStatus.COMPLETED) {
|
|
721 |
if (status.equals(ReplicationStatus.COMPLETED)) {
|
722 |
722 |
broadcastSystemMetadataChange(systemMetadata);
|
723 |
723 |
}
|
724 |
724 |
|
... | ... | |
765 |
765 |
NodeReference nodeId = replica.getReplicaMemberNode();
|
766 |
766 |
try {
|
767 |
767 |
for (Node node : nodes) {
|
768 |
|
if (node.getIdentifier() == nodeId) {
|
769 |
|
if ( node.getType() == NodeType.MN) {
|
|
768 |
if ( node.getIdentifier().equals(nodeId) ) {
|
|
769 |
if ( node.getType().equals(NodeType.MN) ) {
|
770 |
770 |
MNode replicaNode = D1Client.getMN(nodeId);
|
771 |
771 |
// call MN.systemMetadataChanged();
|
772 |
772 |
replicaNode.systemMetadataChanged(null,
|
... | ... | |
1565 |
1565 |
if ( replicaNode.getValue().equals(listedReplica.getReplicaMemberNode().getValue())) {
|
1566 |
1566 |
// don't allow status to change from COMPLETED to anything other
|
1567 |
1567 |
// than INVALIDATED: prevents overwrites from race conditions
|
1568 |
|
if ( listedReplica.getReplicationStatus() != replicaStatus &&
|
1569 |
|
listedReplica.getReplicationStatus() == ReplicationStatus.COMPLETED &&
|
1570 |
|
replicaStatus != ReplicationStatus.INVALIDATED ) {
|
|
1568 |
if ( !listedReplica.getReplicationStatus().equals(replicaStatus) &&
|
|
1569 |
listedReplica.getReplicationStatus().equals(ReplicationStatus.COMPLETED) &&
|
|
1570 |
!replicaStatus.equals(ReplicationStatus.INVALIDATED) ) {
|
1571 |
1571 |
throw new InvalidRequest("4853", "Status state change from " +
|
1572 |
1572 |
listedReplica.getReplicationStatus() + " to " +
|
1573 |
1573 |
replicaStatus.toString() + "is prohibited for identifier " +
|
... | ... | |
1593 |
1593 |
HazelcastService.getInstance().getSystemMetadataMap().put(systemMetadata.getIdentifier(), systemMetadata);
|
1594 |
1594 |
|
1595 |
1595 |
// inform replica nodes of the change if the status is complete
|
1596 |
|
if ( replicaStatus == ReplicationStatus.COMPLETED ) {
|
|
1596 |
if ( replicaStatus.equals(ReplicationStatus.COMPLETED) ) {
|
1597 |
1597 |
broadcastSystemMetadataChange(systemMetadata);
|
1598 |
1598 |
|
1599 |
1599 |
}
|
Merging the METACAT_2_0_6_BRANCH changes for [M|C]NodeService into the trunk.