From f867b44784ed41041b62ff5f3b0552ebbf278634 Mon Sep 17 00:00:00 2001 From: fubaa Date: Wed, 14 Feb 2024 17:07:08 +0530 Subject: [PATCH 1/3] GSS-269: Add implementation for S13 | TM --- .../java/org/yamcs/tctm/pus/PusTmManager.java | 6 +- .../services/tm/thirteen/ServiceThirteen.java | 70 +++++++++++++++++++ .../services/tm/thirteen/SubServiceOne.java | 58 +++++++++++++++ .../tm/thirteen/SubServiceSixteen.java | 53 ++++++++++++++ .../services/tm/thirteen/SubServiceThree.java | 59 ++++++++++++++++ .../services/tm/thirteen/SubServiceTwo.java | 58 +++++++++++++++ 6 files changed, 302 insertions(+), 2 deletions(-) create mode 100644 yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/ServiceThirteen.java create mode 100644 yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceOne.java create mode 100644 yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceSixteen.java create mode 100644 yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceThree.java create mode 100644 yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceTwo.java diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/PusTmManager.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/PusTmManager.java index 6dce3e78b12..eef9b914259 100644 --- a/yamcs-core/src/main/java/org/yamcs/tctm/pus/PusTmManager.java +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/PusTmManager.java @@ -20,15 +20,16 @@ import org.yamcs.yarch.Tuple; import org.yamcs.yarch.YarchDatabase; import org.yamcs.yarch.YarchDatabaseInstance; +import org.yamcs.time.Instant; import org.yamcs.tctm.pus.services.PusService; import org.yamcs.tctm.pus.services.PusSink; +import org.yamcs.tctm.pus.services.tm.PusTmCcsdsPacket; import org.yamcs.tctm.pus.services.tm.one.ServiceOne; import org.yamcs.tctm.pus.services.tm.two.ServiceTwo; -import org.yamcs.time.Instant; import org.yamcs.tctm.pus.services.tm.three.ServiceThree; -import org.yamcs.tctm.pus.services.tm.PusTmCcsdsPacket; import org.yamcs.tctm.pus.services.tm.five.ServiceFive; import org.yamcs.tctm.pus.services.tm.nine.ServiceNine; +import org.yamcs.tctm.pus.services.tm.thirteen.ServiceThirteen; public class PusTmManager extends AbstractYamcsService implements StreamSubscriber { @@ -121,6 +122,7 @@ private void initializePUSServices() { pusServices.put(3, new ServiceThree(yamcsInstance, serviceConfig.getConfigOrEmpty("three"))); pusServices.put(5, new ServiceFive(yamcsInstance, serviceConfig.getConfigOrEmpty("five"))); pusServices.put(9, new ServiceNine(yamcsInstance, serviceConfig.getConfigOrEmpty("nine"))); + pusServices.put(13, new ServiceThirteen(yamcsInstance, serviceConfig.getConfigOrEmpty("thirteen"))); } public void acceptTmPacket(TmPacket tmPacket, String tmLinkName, Stream stream) { diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/ServiceThirteen.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/ServiceThirteen.java new file mode 100644 index 00000000000..f25f9ffcfd3 --- /dev/null +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/ServiceThirteen.java @@ -0,0 +1,70 @@ +package org.yamcs.tctm.pus.services.tm.thirteen; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import org.yamcs.TmPacket; +import org.yamcs.YConfiguration; +import org.yamcs.commanding.PreparedCommand; +import org.yamcs.logging.Log; +import org.yamcs.tctm.pus.services.PusService; +import org.yamcs.tctm.pus.services.PusSubService; +import org.yamcs.tctm.pus.services.tm.PusTmCcsdsPacket; +import org.yamcs.yarch.Stream; +import org.yamcs.yarch.YarchDatabase; +import org.yamcs.yarch.YarchDatabaseInstance; + +public class ServiceThirteen implements PusService { + Log log; + Map pusSubServices = new HashMap<>(); + + String yamcsInstance; + YConfiguration config; + + protected static Stream s13In; + + protected final int DEFAULT_LARGE_PACKET_TRANSACTION_ID_SIZE = 2; + protected final int DEFAULT_PART_SEQUENCE_NUMBER = 2; + protected final String DEFAULT_S13_IN_STREAM = "s13_in"; + protected final int DEFAULT_FAILURE_REASON_SIZE = 1; + + protected static int largePacketTransactionIdSize; + protected static int partSequenceNumberSize; + protected static String s13InStream; + protected static int failureReasonSize; + + public ServiceThirteen(String yamcsInstance, YConfiguration config) { + this.yamcsInstance = yamcsInstance; + this.config = config; + + largePacketTransactionIdSize = config.getInt("largePacketTransactionIdSize", DEFAULT_LARGE_PACKET_TRANSACTION_ID_SIZE); + partSequenceNumberSize = config.getInt("partSequenceNumberSize", DEFAULT_PART_SEQUENCE_NUMBER); + failureReasonSize = config.getInt("failureReasonSize", DEFAULT_FAILURE_REASON_SIZE); + s13InStream = config.getString("s13InStream", DEFAULT_S13_IN_STREAM); + + initializeSubServices(); + + YarchDatabaseInstance ydb = YarchDatabase.getInstance(yamcsInstance); + s13In = ydb.getStream(s13InStream); + } + + public void initializeSubServices() { + pusSubServices.put(1, new SubServiceOne(yamcsInstance, config.getConfigOrEmpty("one"))); + pusSubServices.put(2, new SubServiceTwo(yamcsInstance, config.getConfigOrEmpty("two"))); + pusSubServices.put(3, new SubServiceThree(yamcsInstance, config.getConfigOrEmpty("three"))); + pusSubServices.put(16, new SubServiceSixteen(yamcsInstance, config.getConfigOrEmpty("sixteen"))); + } + + @Override + public ArrayList extractPusModifiers(TmPacket tmPacket) { + byte[] b = tmPacket.getPacket(); + return pusSubServices.get(PusTmCcsdsPacket.getMessageSubType(b)).process(tmPacket); + } + + @Override + public PreparedCommand addPusModifiers(PreparedCommand telecommand) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'addPusModifiers'"); + } +} diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceOne.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceOne.java new file mode 100644 index 00000000000..2967058da2f --- /dev/null +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceOne.java @@ -0,0 +1,58 @@ +package org.yamcs.tctm.pus.services.tm.thirteen; + +import static org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.S13_TM; + +import java.util.ArrayList; +import java.util.Arrays; + +import org.yamcs.TmPacket; +import org.yamcs.YConfiguration; +import org.yamcs.commanding.PreparedCommand; +import org.yamcs.tctm.pus.services.PusSubService; +import org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.PacketType; +import org.yamcs.tctm.pus.services.tm.PusTmCcsdsPacket; +import org.yamcs.utils.ByteArrayUtils; +import org.yamcs.yarch.Tuple; +import org.yamcs.yarch.TupleDefinition; + +public class SubServiceOne implements PusSubService { + String yamcsInstance; + + public SubServiceOne(String yamcsInstance, YConfiguration subServiceSixConfig) { + this.yamcsInstance = yamcsInstance; + } + + @Override + public PreparedCommand process(PreparedCommand pusTelecommand) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'process'"); + } + + @Override + public ArrayList process(TmPacket tmPacket) { + PusTmCcsdsPacket pkt = new PusTmCcsdsPacket(tmPacket.getPacket()); + + byte[] dataField = pkt.getDataField(); + + int largePacketTransactionId = (int) ByteArrayUtils.decodeCustomInteger(dataField, 0, ServiceThirteen.largePacketTransactionIdSize); + int partSequenceNumber = (int) ByteArrayUtils.decodeCustomInteger(dataField, ServiceThirteen.largePacketTransactionIdSize, ServiceThirteen.partSequenceNumberSize); + byte[] filePart = Arrays.copyOfRange(dataField, ServiceThirteen.largePacketTransactionIdSize + ServiceThirteen.partSequenceNumberSize, dataField.length); + int sourceId = largePacketTransactionId; + String packetType = PacketType.FIRST.getText(); + + TupleDefinition td = S13_TM.copy(); + ServiceThirteen.s13In.emitTuple(new Tuple(td, new Object[] { + largePacketTransactionId, + sourceId, + filePart, + partSequenceNumber, + packetType, + null + })); + + ArrayList pPkts = new ArrayList<>(); + pPkts.add(tmPacket); + + return pPkts; + } +} diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceSixteen.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceSixteen.java new file mode 100644 index 00000000000..487ef7248b4 --- /dev/null +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceSixteen.java @@ -0,0 +1,53 @@ +package org.yamcs.tctm.pus.services.tm.thirteen; + +import static org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.S13_TM; + +import java.util.ArrayList; + +import org.yamcs.TmPacket; +import org.yamcs.YConfiguration; +import org.yamcs.commanding.PreparedCommand; +import org.yamcs.tctm.pus.services.PusSubService; +import org.yamcs.tctm.pus.services.tm.PusTmCcsdsPacket; +import org.yamcs.utils.ByteArrayUtils; +import org.yamcs.yarch.Tuple; +import org.yamcs.yarch.TupleDefinition; + +public class SubServiceSixteen implements PusSubService { + String yamcsInstance; + + public SubServiceSixteen(String yamcsInstance, YConfiguration subServiceSixConfig) { + this.yamcsInstance = yamcsInstance; + } + + @Override + public PreparedCommand process(PreparedCommand pusTelecommand) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'process'"); + } + + @Override + public ArrayList process(TmPacket tmPacket) { + PusTmCcsdsPacket pkt = new PusTmCcsdsPacket(tmPacket.getPacket()); + + byte[] dataField = pkt.getDataField(); + + int largePacketTransactionId = (int) ByteArrayUtils.decodeCustomInteger(dataField, 0, ServiceThirteen.largePacketTransactionIdSize); + int failureReason = (int) ByteArrayUtils.decodeCustomInteger(dataField, ServiceThirteen.largePacketTransactionIdSize, ServiceThirteen.failureReasonSize); + + TupleDefinition td = S13_TM.copy(); + ServiceThirteen.s13In.emitTuple(new Tuple(td, new Object[] { + largePacketTransactionId, + null, + null, + null, + null, + failureReason + })); + + ArrayList pPkts = new ArrayList<>(); + pPkts.add(tmPacket); + + return pPkts; + } +} diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceThree.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceThree.java new file mode 100644 index 00000000000..f50c1ea19be --- /dev/null +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceThree.java @@ -0,0 +1,59 @@ +package org.yamcs.tctm.pus.services.tm.thirteen; + +import static org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.S13_TM; + +import java.util.ArrayList; +import java.util.Arrays; + +import org.yamcs.TmPacket; +import org.yamcs.YConfiguration; +import org.yamcs.commanding.PreparedCommand; +import org.yamcs.tctm.pus.services.PusSubService; +import org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.PacketType; +import org.yamcs.tctm.pus.services.tm.PusTmCcsdsPacket; +import org.yamcs.utils.ByteArrayUtils; +import org.yamcs.yarch.Tuple; +import org.yamcs.yarch.TupleDefinition; + +public class SubServiceThree implements PusSubService { + String yamcsInstance; + + public SubServiceThree(String yamcsInstance, YConfiguration subServiceSixConfig) { + this.yamcsInstance = yamcsInstance; + } + + @Override + public PreparedCommand process(PreparedCommand pusTelecommand) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'process'"); + } + + @Override + public ArrayList process(TmPacket tmPacket) { + PusTmCcsdsPacket pkt = new PusTmCcsdsPacket(tmPacket.getPacket()); + + byte[] dataField = pkt.getDataField(); + + int largePacketTransactionId = (int) ByteArrayUtils.decodeCustomInteger(dataField, 0, ServiceThirteen.largePacketTransactionIdSize); + int partSequenceNumber = (int) ByteArrayUtils.decodeCustomInteger(dataField, ServiceThirteen.largePacketTransactionIdSize, ServiceThirteen.partSequenceNumberSize); + byte[] filePart = Arrays.copyOfRange(dataField, ServiceThirteen.largePacketTransactionIdSize + ServiceThirteen.partSequenceNumberSize, dataField.length); + int sourceId = largePacketTransactionId; + String packetType = PacketType.LAST.getText(); + + TupleDefinition td = S13_TM.copy(); + ServiceThirteen.s13In.emitTuple(new Tuple(td, new Object[] { + largePacketTransactionId, + sourceId, + filePart, + partSequenceNumber, + packetType, + null + })); + + ArrayList pPkts = new ArrayList<>(); + pPkts.add(tmPacket); + + return pPkts; + } + +} diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceTwo.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceTwo.java new file mode 100644 index 00000000000..4f0583c7956 --- /dev/null +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/tm/thirteen/SubServiceTwo.java @@ -0,0 +1,58 @@ +package org.yamcs.tctm.pus.services.tm.thirteen; + +import static org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.S13_TM; + +import java.util.ArrayList; +import java.util.Arrays; + +import org.yamcs.TmPacket; +import org.yamcs.YConfiguration; +import org.yamcs.commanding.PreparedCommand; +import org.yamcs.tctm.pus.services.PusSubService; +import org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.PacketType; +import org.yamcs.tctm.pus.services.tm.PusTmCcsdsPacket; +import org.yamcs.utils.ByteArrayUtils; +import org.yamcs.yarch.Tuple; +import org.yamcs.yarch.TupleDefinition; + +public class SubServiceTwo implements PusSubService { + String yamcsInstance; + + public SubServiceTwo(String yamcsInstance, YConfiguration subServiceSixConfig) { + this.yamcsInstance = yamcsInstance; + } + + @Override + public PreparedCommand process(PreparedCommand pusTelecommand) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'process'"); + } + + @Override + public ArrayList process(TmPacket tmPacket) { + PusTmCcsdsPacket pkt = new PusTmCcsdsPacket(tmPacket.getPacket()); + + byte[] dataField = pkt.getDataField(); + + int largePacketTransactionId = (int) ByteArrayUtils.decodeCustomInteger(dataField, 0, ServiceThirteen.largePacketTransactionIdSize); + int partSequenceNumber = (int) ByteArrayUtils.decodeCustomInteger(dataField, ServiceThirteen.largePacketTransactionIdSize, ServiceThirteen.partSequenceNumberSize); + byte[] filePart = Arrays.copyOfRange(dataField, ServiceThirteen.largePacketTransactionIdSize + ServiceThirteen.partSequenceNumberSize, dataField.length); + int sourceId = largePacketTransactionId; + String packetType = PacketType.INTERMEDIATE.getText(); + + TupleDefinition td = S13_TM.copy(); + ServiceThirteen.s13In.emitTuple(new Tuple(td, new Object[] { + largePacketTransactionId, + sourceId, + filePart, + partSequenceNumber, + packetType, + null + })); + + ArrayList pPkts = new ArrayList<>(); + pPkts.add(tmPacket); + + return pPkts; + } +} From aa0fbbb293ea774ef66a1de5f9a1a9a39d9bad14 Mon Sep 17 00:00:00 2001 From: fubaa Date: Wed, 14 Feb 2024 17:09:50 +0530 Subject: [PATCH 2/3] GSS-269: Add checks to prevent multiple transactions for the same largePacketTransactionId (Upload / Download) --- .../thirteen/CompletedTransfer.java | 7 +- .../thirteen/S13OutgoingTransfer.java | 17 ++-- .../thirteen/S13TransactionId.java | 17 ++-- .../thirteen/ServiceThirteen.java | 81 +++++++++++++++---- .../thirteen/packets/DownlinkS13Packet.java | 45 +++++++++-- .../thirteen/requests/PutRequest.java | 17 ++-- 6 files changed, 138 insertions(+), 46 deletions(-) diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/CompletedTransfer.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/CompletedTransfer.java index 8579c4570cd..953081c1cae 100644 --- a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/CompletedTransfer.java +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/CompletedTransfer.java @@ -1,5 +1,7 @@ package org.yamcs.tctm.pus.services.filetransfer.thirteen; +import javax.xml.crypto.Data; + import org.yamcs.YamcsServer; import org.yamcs.filetransfer.FileTransfer; import org.yamcs.logging.Log; @@ -41,8 +43,8 @@ public class CompletedTransfer implements S13FileTransfer { static final String COL_CREATION_TIME = "creationTime"; static final String COL_ORIGIN = "origin"; static final String COL_TRANSFER_TYPE = "transferType"; - static final String COL_FAILURE_REASON = "failureReason"; + static final String SERVER_ID = YamcsServer.getServer().getServerId(); static { @@ -63,6 +65,7 @@ public class CompletedTransfer implements S13FileTransfer { TDEF.addColumn(COL_CREATION_TIME, DataType.TIMESTAMP); TDEF.addColumn(COL_ORIGIN, DataType.STRING); TDEF.addColumn(COL_TRANSFER_TYPE, DataType.STRING); + TDEF.addColumn(COL_FAILURE_REASON, DataType.STRING); } final Tuple tuple; @@ -126,7 +129,7 @@ public String getBucketName() { public S13TransactionId getTransactionId() { if (tuple.hasColumn(COL_FILE_TRANSFER_ID)) { return new S13TransactionId(tuple.getLongColumn(COL_SOURCE_ID), tuple.getLongColumn(COL_FILE_TRANSFER_ID), - tuple.getLongColumn(COL_LARGE_PACKET_TRANSACTION_ID)); + tuple.getLongColumn(COL_LARGE_PACKET_TRANSACTION_ID), getDirection()); } else { return null; } diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13OutgoingTransfer.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13OutgoingTransfer.java index e3c8e9fa54c..b87bdf9f9f0 100644 --- a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13OutgoingTransfer.java +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13OutgoingTransfer.java @@ -83,8 +83,8 @@ public S13OutgoingTransfer(String yamcsInstance, long initiatorEntityId, long tr EventProducer eventProducer, TransferMonitor monitor, String transferType, Map faultHandlerActions) { - super(yamcsInstance, transferId, creationTime, executor, config, makeTransactionId(initiatorEntityId, transferId, - largePacketTransactionId), request.getDestinationId(), eventProducer, monitor, transferType, faultHandlerActions); + super(yamcsInstance, transferId, creationTime, executor, config, makeTransactionId(request.getRemoteId(), transferId, largePacketTransactionId), + request.getRemoteId(), eventProducer, monitor, transferType, faultHandlerActions); this.request = request; this.bucket = bucket; this.origin = ServiceThirteen.origin; @@ -102,8 +102,8 @@ public S13OutgoingTransfer(String yamcsInstance, long initiatorEntityId, long tr lastPacketCmdName = config.getString("lastPacketCmdName", "LastUplinkPart"); } - private static S13TransactionId makeTransactionId(long sourceId, long transferId, long largePacketTransactionId) { - return new S13TransactionId(sourceId, transferId, largePacketTransactionId); + private static S13TransactionId makeTransactionId(long remoteId, long transferId, long largePacketTransactionId) { + return new S13TransactionId(remoteId, transferId, largePacketTransactionId, TransferDirection.UPLOAD); } /** @@ -141,7 +141,7 @@ private void sendS13Packet() { complete(ConditionCode.NO_ERROR); } else { // First Packet - fullyQualifiedCmdName = ServiceThirteen.constructFullyQualifiedCmdName(firstPacketCmdName, request.getDestinationId()); + fullyQualifiedCmdName = ServiceThirteen.constructFullyQualifiedCmdName(firstPacketCmdName, request.getRemoteId()); packet = new StartS13UplinkPacket(s13TransactionId, partSequenceNumber, fullyQualifiedCmdName, getFilePart()); sentPackets.add(packet); try{ @@ -165,7 +165,7 @@ private void sendS13Packet() { end = Math.min(offset + maxDataSize, request.getFileLength()); partSequenceNumber++; - fullyQualifiedCmdName = ServiceThirteen.constructFullyQualifiedCmdName(lastPacketCmdName, request.getDestinationId()); + fullyQualifiedCmdName = ServiceThirteen.constructFullyQualifiedCmdName(lastPacketCmdName, request.getRemoteId()); packet = new StartS13UplinkPacket(s13TransactionId, partSequenceNumber, fullyQualifiedCmdName, getFilePart()); sentPackets.add(packet); try { @@ -185,7 +185,7 @@ private void sendS13Packet() { end = Math.min(offset + maxDataSize, request.getFileLength()); partSequenceNumber++; - fullyQualifiedCmdName = ServiceThirteen.constructFullyQualifiedCmdName(intermediatePacketCmdName, request.getDestinationId()); + fullyQualifiedCmdName = ServiceThirteen.constructFullyQualifiedCmdName(intermediatePacketCmdName, request.getRemoteId()); packet = new StartS13UplinkPacket(s13TransactionId, partSequenceNumber, fullyQualifiedCmdName, getFilePart()); sentPackets.add(packet); try { @@ -250,9 +250,11 @@ private void handleFault(ConditionCode conditionCode) { switch (action) { case ABANDON: complete(conditionCode); + pushError(conditionCode.toString()); break; case CANCEL: cancel(conditionCode); + pushError(conditionCode.toString()); break; case SUSPEND: suspend(); @@ -266,7 +268,6 @@ protected void cancel(ConditionCode conditionCode) { switch (outTxState) { case START: case SENDING_DATA: - reasonForCancellation = conditionCode; suspended = false; // wake up if sleeping outTxState = OutTxState.CANCELING; changeState(TransferState.CANCELLING); diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13TransactionId.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13TransactionId.java index 32d7cd0b775..c02c398ad3b 100644 --- a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13TransactionId.java +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/S13TransactionId.java @@ -3,14 +3,17 @@ import java.util.Objects; import org.yamcs.filetransfer.FileTransferId; +import org.yamcs.protobuf.TransferDirection; public class S13TransactionId extends FileTransferId{ protected long largePacketTransactionId; - - public S13TransactionId(long initiatorEntityId, long transferId, long largePacketTransactionId) { - super(initiatorEntityId, transferId); + protected TransferDirection direction; + + public S13TransactionId(long remoteId, long transferId, long largePacketTransactionId, TransferDirection direction) { + super(remoteId, transferId); this.largePacketTransactionId = largePacketTransactionId; + this.direction = direction; } public boolean equals(Object o) { @@ -24,7 +27,7 @@ public boolean equals(Object o) { return false; } S13TransactionId other = (S13TransactionId) o; - return transferId == other.transferId && initiatorEntityId == other.initiatorEntityId && largePacketTransactionId == other.largePacketTransactionId; + return transferId == other.transferId && initiatorEntityId == other.initiatorEntityId && largePacketTransactionId == other.largePacketTransactionId && direction == other.direction; } public long getLargePacketTransactionId() { @@ -36,8 +39,12 @@ public int hashCode() { return Objects.hash(initiatorEntityId, transferId, largePacketTransactionId); } + public TransferDirection getTransferDirection() { + return direction; + } + @Override public String toString() { - return initiatorEntityId + "_" + transferId + "_" + largePacketTransactionId; + return "Remote ID: " + initiatorEntityId + "_" + "TransferId: " + transferId + "_" + "LPTId: " + largePacketTransactionId; } } diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/ServiceThirteen.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/ServiceThirteen.java index 540bbcc199b..7069f86acb7 100644 --- a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/ServiceThirteen.java +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/ServiceThirteen.java @@ -45,19 +45,19 @@ import org.yamcs.protobuf.FileTransferOption; import org.yamcs.protobuf.ListFilesResponse; import org.yamcs.protobuf.TransferState; +import org.yamcs.protobuf.TransferDirection; import org.yamcs.security.Directory; import org.yamcs.tctm.pus.services.filetransfer.thirteen.OngoingS13Transfer.FaultHandlingAction; import org.yamcs.tctm.pus.services.filetransfer.thirteen.S13FileTransfer.PredefinedTransferTypes; import org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet; +import org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.DownlinkS13Packet.PacketType; import org.yamcs.tctm.pus.services.filetransfer.thirteen.requests.CancelRequest; import org.yamcs.tctm.pus.services.filetransfer.thirteen.requests.FilePutRequest; import org.yamcs.tctm.pus.services.filetransfer.thirteen.requests.PauseRequest; import org.yamcs.tctm.pus.services.filetransfer.thirteen.requests.PutRequest; import org.yamcs.tctm.pus.services.filetransfer.thirteen.requests.ResumeRequest; import org.yamcs.utils.parser.ParseException; -import org.yamcs.xtce.XtceDb; import org.yamcs.yarch.Bucket; -import org.yamcs.yarch.Sequence; import org.yamcs.yarch.Stream; import org.yamcs.yarch.StreamSubscriber; import org.yamcs.yarch.Tuple; @@ -91,8 +91,8 @@ public class ServiceThirteen extends AbstractYamcsService private Stream dbStream; - Sequence fileTransferId; static final Map VALID_CODES = new HashMap<>(); + static final Map FAILURE_CODES = new HashMap<>(); static { VALID_CODES.put("CancelRequestReceived", ConditionCode.CANCEL_REQUEST_RECEIVED); @@ -103,6 +103,14 @@ public class ServiceThirteen extends AbstractYamcsService VALID_CODES.put("PreparedCommandNotFomed", ConditionCode.UNSUPPORTED_CHECKSUM_TYPE); } + static { + FAILURE_CODES.put(4, "FILESTORE_REJECTION_ONBOARD"); + FAILURE_CODES.put(5, "FILE_CHECKSUM_ERROR_ONBOARD"); + FAILURE_CODES.put(6, "FILE_SIZE_ERROR_ONBOARD"); + FAILURE_CODES.put(8, "INACTIVITY_DETECTED_ONBOARD"); + FAILURE_CODES.put(9, "INVALID_FILE_STRUCTURE_RECEIVED_ONBOARD"); + } + Map pendingTransfers = new ConcurrentHashMap<>(); FileDownloadRequests fileDownloadRequests = new FileDownloadRequests(); @@ -209,7 +217,6 @@ public void init(String yamcsInstance, String serviceName, YConfiguration config initSrcDst(config); eventProducer = EventProducerFactory.getEventProducer(yamcsInstance, "PusService-13", 10000); - fileTransferId = ydb.getSequence(SEQUENCE_NAME, true); if (config.containsKey("senderFaultHandlers")) { senderFaultHandlers = readFaultHandlers(config.getMap("senderFaultHandlers")); } else { @@ -362,6 +369,26 @@ public FileTransfer getFileTransfer(long id) { } } + public FileTransfer getOngoingUploadFileTransfer(long largePacketTransactionId) { + Optional r = pendingTransfers.values().stream() + .filter(c -> c.getTransactionId().getLargePacketTransactionId() == largePacketTransactionId) + .filter(c -> c.getTransactionId().getTransferDirection() == TransferDirection.UPLOAD).findAny(); + if (r.isPresent()) { + return r.get(); + } + return null; + } + + public FileTransfer getOngoingDownloadFileTransfer(long largePacketTransactionId) { + Optional r = pendingTransfers.values().stream() + .filter(c -> c.getTransactionId().getLargePacketTransactionId() == largePacketTransactionId) + .filter(c -> c.getTransactionId().getTransferDirection() == TransferDirection.DOWNLOAD).findAny(); + if (r.isPresent()) { + return r.get(); + } + return null; + } + private FileTransfer searchInArchive(long id) { YarchDatabaseInstance ydb = YarchDatabase.getInstance(yamcsInstance); try { @@ -453,10 +480,23 @@ private OngoingS13Transfer processCancelRequest(CancelRequest request) { return transfer; } - @Override public void onTuple(Stream stream, Tuple tuple) { DownlinkS13Packet packet = DownlinkS13Packet.fromTuple(tuple); + + // Check if it is an Uplink abortion packet + if (packet.getPacketType() == PacketType.ABORTION) { + FileTransfer filetransfer = getOngoingUploadFileTransfer(packet.getTransactionId().getTransferId()); + if (filetransfer != null) { + S13OutgoingTransfer outgoingTransfer = (S13OutgoingTransfer) filetransfer; + outgoingTransfer.cancel(ConditionCode.readConditionCode((byte) packet.getFailureCode().byteValue())); + + } else { + log.warn("Erroneous Uplink abortion request received"); + } + return; + } + S13TransactionId id = packet.getTransactionId(); OngoingS13Transfer transfer = null; @@ -511,9 +551,10 @@ private OngoingS13Transfer instantiateIncomingTransaction(DownlinkS13Packet pack final FileSaveHandler fileSaveHandler = new FileSaveHandler(yamcsInstance, bucket, fileDownloadRequests, false, false, false, maxExistingFileRenames); - return new S13IncomingTransfer(yamcsInstance, fileTransferId.next(), creationTime, executor, config, + return new S13IncomingTransfer(yamcsInstance, txId.getLargePacketTransactionId(), creationTime, executor, config, packet.getTransactionId(), packet.getTransactionId().getInitiatorEntityId(), - remoteEntity.getName(), fileSaveHandler, eventProducer, this, PredefinedTransferTypes.DOWNLOAD_LARGE_FILE_TRANSFER.toString(), contentTypeMap.get(remoteEntity.getId()), receiverFaultHandlers); + remoteEntity.getName(), fileSaveHandler, eventProducer, this, PredefinedTransferTypes.DOWNLOAD_LARGE_FILE_TRANSFER.toString(), + contentTypeMap.get(remoteEntity.getId()), receiverFaultHandlers); } public EntityConf getRemoteEntity(long entityId) { @@ -681,20 +722,22 @@ public FileTransfer startUpload(String source, Bucket bucket, String objectName, if (objData == null) { throw new InvalidRequestException("No object named '" + objectName + "' in bucket " + bucket.getName()); } + + long sourceId = getEntityFromName(source, localEntities).getId(); + long destinationId = getEntityFromName(destination, remoteEntities).getId(); + String absoluteDestinationPath = getAbsoluteDestinationPath(destinationPath, objectName); if (!allowConcurrentFileOverwrites) { if (pendingTransfers.values().stream() .filter(ServiceThirteen::isRunning) - .anyMatch(trsf -> trsf.getRemotePath().equals(absoluteDestinationPath))) { + .anyMatch(trsf -> getEntityFromId(trsf.getTransactionId() + .getLargePacketTransactionId(), remoteEntities).getId() == destinationId)) { throw new InvalidRequestException( - "There is already a transfer ongoing to '" + absoluteDestinationPath - + "' and allowConcurrentFileOverwrites is false"); + "There is already a transfer ongoing to '" + getEntityFromName(destination, remoteEntities).getId() + " - " + getEntityFromName( + destination, remoteEntities).getName() + "'"); } } - long sourceId = getEntityFromName(source, localEntities).getId(); - long destinationId = getEntityFromName(destination, remoteEntities).getId(); - // For backwards compatibility var booleanOptions = new HashMap<>(Map.of( CREATE_PATH_OPTION, options.isCreatePath() @@ -709,7 +752,7 @@ public FileTransfer startUpload(String source, Bucket bucket, String objectName, Double packetSize = optionValues.doubleOptions.get(PACKET_SIZE_OPTION); Double pduDelay = optionValues.doubleOptions.get(PACKET_DELAY_OPTION); - return processPutRequest(sourceId, fileTransferId.next(), destinationId, creationTime, request, bucket, PredefinedTransferTypes.UPLOAD_LARGE_FILE_TRANSFER.toString(), + return processPutRequest(sourceId, destinationId, destinationId, creationTime, request, bucket, PredefinedTransferTypes.UPLOAD_LARGE_FILE_TRANSFER.toString(), packetSize != null ? packetSize.intValue() : null, pduDelay != null ? pduDelay.intValue() : null); } @@ -739,7 +782,15 @@ public FileTransfer startDownload(String sourceEntity, String sourcePath, String Double packetDelay = optionValues.doubleOptions.get(PACKET_DELAY_OPTION); PutRequest request = new PutRequest(sourceId); - S13TransactionId transactionId = request.process(destinationId, fileTransferId.next(), sourceId, config); + S13TransactionId transactionId = request.process(sourceId, sourceId, sourceId, config); + + if (getOngoingUploadFileTransfer(transactionId.getLargePacketTransactionId()) != null) { + throw new InvalidRequestException("Downloading and Uploading from the same largePacketTransactionId: " + transactionId.getLargePacketTransactionId() + " is not allowed"); + } + + if (getOngoingDownloadFileTransfer(transactionId.getLargePacketTransactionId()) != null) { + throw new InvalidRequestException("Downloading for the largePacketTransactionId: " + transactionId.getLargePacketTransactionId() + " is already underway. Simultaneous downloads of the same largePacketTransactionId not permitted"); + } long creationTime = YamcsServer.getTimeService(yamcsInstance).getMissionTime(); diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/packets/DownlinkS13Packet.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/packets/DownlinkS13Packet.java index fbf2487124c..d48be7588f8 100644 --- a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/packets/DownlinkS13Packet.java +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/packets/DownlinkS13Packet.java @@ -4,12 +4,32 @@ import org.yamcs.yarch.DataType; import org.yamcs.yarch.Tuple; import org.yamcs.yarch.TupleDefinition; +import org.yamcs.protobuf.TransferDirection; public class DownlinkS13Packet extends FileTransferPacket { public static final TupleDefinition S13_TM = new TupleDefinition(); public static enum PacketType { - FIRST, INTERMEDIATE, LAST + FIRST("FIRST"), INTERMEDIATE("INTERMEDIATE"), LAST("LAST"), ABORTION("ABORTION"); + + private String packetType; + + PacketType(String packetType) { + this.packetType = packetType; + } + + public String getText() { + return this.packetType; + } + + public static PacketType fromString(String text) { + for (PacketType b : PacketType.values()) { + if (b.packetType.equalsIgnoreCase(text)) { + return b; + } + } + return null; + } } static final String COL_LARGE_PACKET_TRANSACTION_ID = "largePacketTransactionId"; @@ -17,6 +37,7 @@ public static enum PacketType { static final String COL_FILE_PART = "filePart"; static final String COL_PART_SEQUENCE_NUMBER = "partSequenceNumber"; static final String COL_PACKET_TYPE = "packetType"; + static final String COL_FAILURE_REASON = "failureReason"; static { S13_TM.addColumn(COL_LARGE_PACKET_TRANSACTION_ID, DataType.LONG); @@ -24,29 +45,32 @@ public static enum PacketType { S13_TM.addColumn(COL_FILE_PART, DataType.BINARY); S13_TM.addColumn(COL_PART_SEQUENCE_NUMBER, DataType.LONG); S13_TM.addColumn(COL_PACKET_TYPE, DataType.ENUM); + S13_TM.addColumn(COL_FAILURE_REASON, DataType.INT); } protected PacketType packetType; protected long partSequenceNumber; protected byte[] filePart; + protected Integer failureCode; - DownlinkS13Packet(S13TransactionId transactionId, long partSequenceNumber, byte[] filePart, PacketType packetType) { + DownlinkS13Packet(S13TransactionId transactionId, long partSequenceNumber, byte[] filePart, PacketType packetType, Integer failureCode) { super(transactionId); - this.packetType = packetType; this.partSequenceNumber = partSequenceNumber; this.filePart = filePart; + this.failureCode = failureCode; } public static DownlinkS13Packet fromTuple(Tuple t) { - long largePacketTransactionId = (long) t.getLongColumn(COL_LARGE_PACKET_TRANSACTION_ID); - long sourceId = (long) t.getLongColumn(COL_SOURCE_ID); - long partSequenceNumber = (long) t.getLongColumn(COL_PART_SEQUENCE_NUMBER); + Long largePacketTransactionId = (Long) t.getLongColumn(COL_LARGE_PACKET_TRANSACTION_ID); + Long sourceId = (Long) t.getLongColumn(COL_SOURCE_ID); + Long partSequenceNumber = (Long) t.getLongColumn(COL_PART_SEQUENCE_NUMBER); byte[] filePart = (byte[]) t.getColumn(COL_FILE_PART); - PacketType packetType = PacketType.valueOf((String) t.getColumn(COL_PACKET_TYPE)); + PacketType packetType = PacketType.fromString((String) t.getColumn(COL_PACKET_TYPE)); + Integer failureCode = (Integer) t.getColumn(COL_FAILURE_REASON); return new DownlinkS13Packet(new S13TransactionId(sourceId, - largePacketTransactionId, largePacketTransactionId), partSequenceNumber, filePart, packetType); + largePacketTransactionId, largePacketTransactionId, TransferDirection.DOWNLOAD), partSequenceNumber, filePart, packetType, failureCode); } public PacketType getPacketType() { @@ -60,4 +84,9 @@ public byte[] getFilePart() { public long getPartSequenceNumber() { return partSequenceNumber; } + + public Integer getFailureCode() { + return failureCode; + } + } diff --git a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/requests/PutRequest.java b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/requests/PutRequest.java index 4b652c59a1d..a8640a8abaf 100644 --- a/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/requests/PutRequest.java +++ b/yamcs-core/src/main/java/org/yamcs/tctm/pus/services/filetransfer/thirteen/requests/PutRequest.java @@ -5,11 +5,12 @@ import org.yamcs.tctm.pus.services.filetransfer.thirteen.ServiceThirteen; import org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.StartS13DownlinkPacket; import org.yamcs.tctm.pus.services.filetransfer.thirteen.packets.UplinkS13Packet; +import org.yamcs.protobuf.TransferDirection; public class PutRequest extends S13Request { // Required fields - private final long destinationId; + private final long remoteId; // Optional fields private String sourceFileName; @@ -18,13 +19,13 @@ public class PutRequest extends S13Request { // ========== Extra fields ========== private UplinkS13Packet fdrPacket; - public PutRequest(long destinationId) { + public PutRequest(long remoteId) { super(S13RequestType.PUT); - this.destinationId = destinationId; + this.remoteId = remoteId; } - public PutRequest(long destinationId, String sourceFileName, String destinationFileName) { - this(destinationId); + public PutRequest(long remoteId, String sourceFileName, String destinationFileName) { + this(remoteId); this.sourceFileName = sourceFileName; this.destinationFileName = destinationFileName; } @@ -41,7 +42,7 @@ public PutRequest(long destinationId, String sourceFileName, String destinationF * @return */ public S13TransactionId process(long initiatorEntityId, long transferId, long largePacketTransactionId, YConfiguration config) { - S13TransactionId s13TransactionId = new S13TransactionId(initiatorEntityId, transferId, largePacketTransactionId); + S13TransactionId s13TransactionId = new S13TransactionId(initiatorEntityId, transferId, largePacketTransactionId, TransferDirection.UPLOAD); String fullyQualifiedCmdName = ServiceThirteen.constructFullyQualifiedCmdName(ServiceThirteen.startDownlinkCmdName, largePacketTransactionId); fdrPacket = new StartS13DownlinkPacket(s13TransactionId, fullyQualifiedCmdName); @@ -49,8 +50,8 @@ public S13TransactionId process(long initiatorEntityId, long transferId, long la return s13TransactionId; } - public long getDestinationId() { - return destinationId; + public long getRemoteId() { + return remoteId; } public String getSourceFileName() { From af4594dbd4fb217ecc264ac06016d9e322d32413 Mon Sep 17 00:00:00 2001 From: fubaa Date: Wed, 14 Feb 2024 17:22:13 +0530 Subject: [PATCH 3/3] Prepare for relese v5.8.9-Pixxel.SNAPSHOT-1.6.0 --- distribution/pom.xml | 2 +- examples/cascading/pom.xml | 2 +- examples/ccsds-frames/pom.xml | 2 +- examples/cfdp-udp/pom.xml | 2 +- examples/cfdp/pom.xml | 2 +- examples/perftest1/pom.xml | 2 +- examples/perftest2/pom.xml | 2 +- examples/pom.xml | 2 +- examples/pus/pom.xml | 2 +- examples/replication1/pom.xml | 2 +- examples/replication2/pom.xml | 2 +- examples/replication3/pom.xml | 2 +- examples/simulation/pom.xml | 2 +- examples/snippets/pom.xml | 2 +- examples/templates/pom.xml | 2 +- packet-viewer/pom.xml | 2 +- pom.xml | 2 +- simulator/pom.xml | 2 +- tests/pom.xml | 2 +- yamcs-api/pom.xml | 2 +- yamcs-client/pom.xml | 2 +- yamcs-core/pom.xml | 2 +- yamcs-tse/pom.xml | 2 +- yamcs-web/pom.xml | 2 +- yamcs-xtce/pom.xml | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/distribution/pom.xml b/distribution/pom.xml index d1c43f451e5..883cdf12ad6 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -3,7 +3,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 distribution diff --git a/examples/cascading/pom.xml b/examples/cascading/pom.xml index 8b0c2e447d0..9747cd1c4e6 100644 --- a/examples/cascading/pom.xml +++ b/examples/cascading/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 cascading diff --git a/examples/ccsds-frames/pom.xml b/examples/ccsds-frames/pom.xml index 22a033e9e9d..3497f1a7f52 100644 --- a/examples/ccsds-frames/pom.xml +++ b/examples/ccsds-frames/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 ccsds-frames diff --git a/examples/cfdp-udp/pom.xml b/examples/cfdp-udp/pom.xml index 825ccbb8c72..689e3b7f6a0 100644 --- a/examples/cfdp-udp/pom.xml +++ b/examples/cfdp-udp/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 cfdp-udp diff --git a/examples/cfdp/pom.xml b/examples/cfdp/pom.xml index 6e4790a848b..f06a5a943cd 100644 --- a/examples/cfdp/pom.xml +++ b/examples/cfdp/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 cfdp diff --git a/examples/perftest1/pom.xml b/examples/perftest1/pom.xml index 76a07b9da26..e6a3b87595e 100644 --- a/examples/perftest1/pom.xml +++ b/examples/perftest1/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 perftest1 diff --git a/examples/perftest2/pom.xml b/examples/perftest2/pom.xml index 5bbe35c5465..fe1af5a1aaf 100644 --- a/examples/perftest2/pom.xml +++ b/examples/perftest2/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 perftest2 diff --git a/examples/pom.xml b/examples/pom.xml index 76a950a41b5..d2771e384d5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -5,7 +5,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 org.yamcs.examples diff --git a/examples/pus/pom.xml b/examples/pus/pom.xml index 149b01b7ab8..74e03ccf6fd 100644 --- a/examples/pus/pom.xml +++ b/examples/pus/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 pus diff --git a/examples/replication1/pom.xml b/examples/replication1/pom.xml index 739b6e03351..1205cb54e6b 100644 --- a/examples/replication1/pom.xml +++ b/examples/replication1/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 replication1 diff --git a/examples/replication2/pom.xml b/examples/replication2/pom.xml index 30384ba1796..94213de834a 100644 --- a/examples/replication2/pom.xml +++ b/examples/replication2/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 replication2 diff --git a/examples/replication3/pom.xml b/examples/replication3/pom.xml index f8f406e2148..29d2baf96a6 100644 --- a/examples/replication3/pom.xml +++ b/examples/replication3/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 replication3 diff --git a/examples/simulation/pom.xml b/examples/simulation/pom.xml index c9649043e43..9c94d901659 100644 --- a/examples/simulation/pom.xml +++ b/examples/simulation/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 simulation diff --git a/examples/snippets/pom.xml b/examples/snippets/pom.xml index a76a85031e2..e457bf7c9ae 100644 --- a/examples/snippets/pom.xml +++ b/examples/snippets/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 snippets diff --git a/examples/templates/pom.xml b/examples/templates/pom.xml index ae190317c7b..c95484f49b5 100644 --- a/examples/templates/pom.xml +++ b/examples/templates/pom.xml @@ -5,7 +5,7 @@ org.yamcs.examples examples - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 templates diff --git a/packet-viewer/pom.xml b/packet-viewer/pom.xml index b7cc3c365ad..c439422be4c 100644 --- a/packet-viewer/pom.xml +++ b/packet-viewer/pom.xml @@ -3,7 +3,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 packet-viewer diff --git a/pom.xml b/pom.xml index 11a603fce95..04ed685d2af 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 pom diff --git a/simulator/pom.xml b/simulator/pom.xml index a3e69e799b0..393a87ccbfa 100644 --- a/simulator/pom.xml +++ b/simulator/pom.xml @@ -5,7 +5,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 simulator diff --git a/tests/pom.xml b/tests/pom.xml index 3d1c8859424..fd66fb6b135 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -6,7 +6,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 tests diff --git a/yamcs-api/pom.xml b/yamcs-api/pom.xml index bbac99ab3e0..ab327a5e907 100644 --- a/yamcs-api/pom.xml +++ b/yamcs-api/pom.xml @@ -4,7 +4,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 yamcs-api diff --git a/yamcs-client/pom.xml b/yamcs-client/pom.xml index 662ced1ef0c..d7e3de044a6 100644 --- a/yamcs-client/pom.xml +++ b/yamcs-client/pom.xml @@ -3,7 +3,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 yamcs-client diff --git a/yamcs-core/pom.xml b/yamcs-core/pom.xml index a8c43c2650a..8e1571e28c4 100644 --- a/yamcs-core/pom.xml +++ b/yamcs-core/pom.xml @@ -3,7 +3,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 yamcs-core diff --git a/yamcs-tse/pom.xml b/yamcs-tse/pom.xml index 98aa2e60fac..f4c83e2a2a2 100644 --- a/yamcs-tse/pom.xml +++ b/yamcs-tse/pom.xml @@ -3,7 +3,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 yamcs-tse diff --git a/yamcs-web/pom.xml b/yamcs-web/pom.xml index 9d5440d5dc8..489137cac99 100644 --- a/yamcs-web/pom.xml +++ b/yamcs-web/pom.xml @@ -3,7 +3,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 yamcs-web diff --git a/yamcs-xtce/pom.xml b/yamcs-xtce/pom.xml index d0c876512a5..1054ef52e8b 100644 --- a/yamcs-xtce/pom.xml +++ b/yamcs-xtce/pom.xml @@ -5,7 +5,7 @@ org.yamcs yamcs - 5.8.9-Pixxel.SNAPSHOT-1.5.0 + 5.8.9-Pixxel.SNAPSHOT-1.6.0 yamcs-xtce