This is a user error, where they passed negative Id for StakedNodeId . It should have returned INVALID_STAKING_ID. But, because we construct new Node() without checking if the value is negative, we threw an IllegalArgumentException .
We should fix it here
2024-06-20 19:15:37.855 ERROR 660 HandleWorkflow - Possibly CATASTROPHIC failure while handling a user transaction
java.lang.IllegalArgumentException: id must be non-negative
at com.swirlds.common.platform.NodeId.<init>(NodeId.java:69) ~[swirlds-common-0.50.0.jar:?]
at com.hedera.node.app.info.NetworkInfoImpl.nodeInfo(NetworkInfoImpl.java:92) ~[?:?]
at com.hedera.node.app.service.token.impl.validators.StakingValidator.validateStakedId(StakingValidator.java:130) ~[app-service-token-impl-0.50.0.jar:?]
at com.hedera.node.app.service.token.impl.validators.StakingValidator.validateStakedIdForUpdate(StakingValidator.java:108) ~[app-service-token-impl-0.50.0.jar:?]
at com.hedera.node.app.service.token.impl.handlers.CryptoUpdateHandler.validateFields(CryptoUpdateHandler.java:309) ~[app-service-token-impl-0.50.0.jar:?]
at com.hedera.node.app.service.token.impl.handlers.CryptoUpdateHandler.validateSemantics(CryptoUpdateHandler.java:244) ~[app-service-token-impl-0.50.0.jar:?]
at com.hedera.node.app.service.token.impl.handlers.CryptoUpdateHandler.handle(CryptoUpdateHandler.java:162) ~[app-service-token-impl-0.50.0.jar:?]
at com.hedera.node.app.workflows.dispatcher.TransactionDispatcher.dispatchHandle(TransactionDispatcher.java:146) ~[?:?]
at com.hedera.node.app.workflows.handle.HandleWorkflow.handleUserTransaction(HandleWorkflow.java:600) ~[?:?]
at com.hedera.node.app.workflows.handle.HandleWorkflow.handlePlatformTransaction(HandleWorkflow.java:322) ~[?:?]
at com.hedera.node.app.workflows.handle.HandleWorkflow.handleRound(HandleWorkflow.java:288) ~[?:?]
at com.hedera.node.app.Hedera.onHandleConsensusRound(Hedera.java:954) ~[?:?]
at com.hedera.node.app.state.HederaLifecyclesImpl.onHandleConsensusRound(HederaLifecyclesImpl.java:110) ~[?:?]
at com.hedera.node.app.state.merkle.MerkleHederaState.handleConsensusRound(MerkleHederaState.java:328) ~[?:?]
at com.swirlds.platform.state.TransactionHandler.handleRound(TransactionHandler.java:60) ~[swirlds-platform-core-0.50.0.jar:?]
at com.swirlds.platform.state.SwirldStateManager.handleConsensusRound(SwirldStateManager.java:122) ~[swirlds-platform-core-0.50.0.jar:?]
at com.swirlds.platform.eventhandling.ConsensusRoundHandler.handleConsensusRound(ConsensusRoundHandler.java:212) ~[swirlds-platform-core-0.50.0.jar:?]
at com.swirlds.common.wiring.wires.input.BindableInputWire.lambda$bind$1(BindableInputWire.java:111) ~[swirlds-common-0.50.0.jar:?]
at com.swirlds.common.wiring.schedulers.internal.SequentialThreadTask.handle(SequentialThreadTask.java:34) ~[swirlds-common-0.50.0.jar:?]
at com.swirlds.common.wiring.schedulers.internal.SequentialThreadTaskScheduler.run(SequentialThreadTaskScheduler.java:191) ~[swirlds-common-0.50.0.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]```
This is a user error, where they passed negative Id for StakedNodeId . It should have returned INVALID_STAKING_ID. But, because we construct new Node() without checking if the value is negative, we threw an IllegalArgumentException . We should fix it here