Repository: hashgraph/hedera-services
Issue: AllProtectedFilesUpdate-NIReconnect-1-12m: ReconnectStreamValidator failed with IndexOutOfBoundException

**Summary of the defect**
There are two errors as listed below. They don't seem to be related, but needs more investigation to confirm. 

**How to reproduce (if possible)**

slack link: https://hedera-hashgraph.slack.com/archives/CKWHL8R9A/p1620199578241600

Summary link: https://hedera-hashgraph.slack.com/archives/C018Y4E6ADT/p1620211779064500

**Service logs (if applicable)**
```
---- ReconnectStreamValidator failed with an exception:
java.lang.IndexOutOfBoundsException: index should be within [0, -1]
    at com.swirlds.regression.validators.StreamSigsInANode.getSigFileName(StreamSigsInANode.java:50)
    at com.swirlds.regression.validators.ReconnectStreamValidator.validateNode(ReconnectStreamValidator.java:115)
    at com.swirlds.regression.validators.ReconnectStreamValidator.validate(ReconnectStreamValidator.java:88)
    at com.swirlds.regression.Experiment.doValidation(Experiment.java:692)
    at com.swirlds.regression.Experiment.validateTest(Experiment.java:617)
    at com.swirlds.regression.Experiment.runRemoteExperiment(Experiment.java:1118)
    at com.swirlds.regression.RegressionMain.runExperiments(RegressionMain.java:271)
    at com.swirlds.regression.RegressionMain.RunCloudExperiment(RegressionMain.java:145)
    at com.swirlds.regression.RegressionMain.RunRegression(RegressionMain.java:117)
    at com.swirlds.regression.RegressionMain.main(RegressionMain.java:538)
...


```

Another error from client log:

```
2021-05-05 07:16:57.116 INFO   311  HapiApiSpec - 'UpdateAllProtectedFilesDuringReconnect' finished initial execution of CustomSpecAssert
2021-05-05 07:17:09.660 INFO   208  HapiSpecOperation - Node 0.0.8 is unavailable as expected!
2021-05-05 07:17:09.660 INFO   311  HapiApiSpec - 'UpdateAllProtectedFilesDuringReconnect' finished initial execution of HapiGetAccountBalance{node=0.0.8, account=GENESIS}
2021-05-05 07:17:09.660 INFO   64   NodeLivenessTimeout - Requiring node 0.0.8 to be available in 300 SECONDS
2021-05-05 07:17:49.662 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 10 SECONDS
2021-05-05 07:18:19.664 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 20 SECONDS
2021-05-05 07:18:49.867 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 50 SECONDS
2021-05-05 07:19:19.893 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 80 SECONDS
2021-05-05 07:19:49.919 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 110 SECONDS
2021-05-05 07:20:19.948 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 140 SECONDS
2021-05-05 07:20:49.976 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 170 SECONDS
2021-05-05 07:21:20.006 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 200 SECONDS
2021-05-05 07:21:50.031 INFO   83   NodeLivenessTimeout -  --> Node 0.0.8 not available after 230 SECONDS
2021-05-05 07:22:10.051 WARN   214  HapiSpecOperation - 'UpdateAllProtectedFilesDuringReconnect' - NodeLivenessTimeoutNode 0.0.8 wasn't available in 300 SECONDS! failed {}!
2021-05-05 07:22:10.122 INFO   330  HapiApiSpec - 'UpdateAllProtectedFilesDuringReconnect' - final status: FAILED!
2021-05-05 07:22:10.123 INFO   174  UpdateAllProtectedFilesDuringReconnect - -------------- RESULTS OF UpdateAllProtectedFilesDuringReconnect SUITE --------------
2021-05-05 07:22:10.123 INFO   176  UpdateAllProtectedFilesDuringReconnect - Spec{name=UpdateAllProtectedFilesDuringReconnect, status=FAILED}
2021-05-05 07:22:10.129 INFO   526  SuiteRunner - ============== sync run results ==============

```

**Environment:**
- OS: [e.g. Ubuntu 18.04]
- Java: [e.g. OpenJDK 11.0.4]
- Hedera Services Version: [e.g. 0.0.5]
- HAPI Version: [e.g. 0.0.5]

**Additional Context**
Add any other context about the problem here. Attach any logs here, if applicable.


Changed files:
hedera-node/src/main/java/com/hedera/services/queries/validation/QueryFeeCheck.java
test-clients/src/main/java/com/hedera/services/bdd/spec/queries/HapiQueryOp.java

diff --git a/hedera-node/src/main/java/com/hedera/services/queries/validation/QueryFeeCheck.java b/hedera-node/src/main/java/com/hedera/services/queries/validation/QueryFeeCheck.java
index 263eecd777..9e947c0e31 100644
--- a/hedera-node/src/main/java/com/hedera/services/queries/validation/QueryFeeCheck.java
+++ b/hedera-node/src/main/java/com/hedera/services/queries/validation/QueryFeeCheck.java
@@ -70,7 +70,7 @@ public class QueryFeeCheck {
 		}
 		// number of beneficiaries in query transfer transaction can be greater than one.
 		// validate if node gets the required query payment
-		if (transfers.stream().noneMatch(adj -> adj.getAmount() > 0 && adj.getAccountID().equals(node))) {
+		if (transfers.stream().noneMatch(adj -> adj.getAmount() >= 0 && adj.getAccountID().equals(node))) {
 			return INVALID_RECEIVING_NODE_ACCOUNT;
 		}
 		if (transfers.stream().anyMatch(adj -> adj.getAccountID().equals(node) && adj.getAmount() < queryFee)) {
diff --git a/test-clients/src/main/java/com/hedera/services/bdd/spec/queries/HapiQueryOp.java b/test-clients/src/main/java/com/hedera/services/bdd/spec/queries/HapiQueryOp.java
index e379661d59..39230a6bfb 100644
--- a/test-clients/src/main/java/com/hedera/services/bdd/spec/queries/HapiQueryOp.java
+++ b/test-clients/src/main/java/com/hedera/services/bdd/spec/queries/HapiQueryOp.java
@@ -24,7 +24,9 @@ import com.hedera.services.bdd.spec.HapiPropertySource;
 import com.hedera.services.bdd.spec.exceptions.HapiQueryCheckStateException;
 import com.hedera.services.bdd.spec.exceptions.HapiQueryPrecheckStateException;
 import com.hedera.services.bdd.spec.transactions.crypto.HapiCryptoTransfer;
+import com.hedera.services.usage.crypto.CryptoTransferUsage;
 import com.hederahashgraph.api.proto.java.CryptoTransferTransactionBody;
+import com.hederahashgraph.api.proto.java.FeeData;
 import com.hederahashgraph.api.proto.java.HederaFunctionality;
 import com.hederahashgraph.api.proto.java.Key;
 import com.hederahashgraph.api.proto.java.Response;
@@ -39,6 +41,7 @@ import com.hedera.services.bdd.spec.fees.Payment;
 import com.hedera.services.bdd.spec.keys.ControlForKey;
 import com.hedera.services.bdd.spec.keys.SigMapGenerator;
 import com.hedera.services.bdd.spec.stats.QueryObs;
+import com.hederahashgraph.fee.SigValueObj;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.junit.Assert;
@@ -207,8 +210,15 @@ public abstract class HapiQueryOp<T extends HapiQueryOp<T>> extends HapiSpecOper
 	protected long feeFor(HapiApiSpec spec, Transaction txn, int numPayerKeys) throws Throwable {
 		return spec.fees().forActivityBasedOp(
 				HederaFunctionality.CryptoTransfer,
-				cryptoFees::getCryptoTransferTxFeeMatrices,
-				txn, numPayerKeys);
+				(_txn, _svo) -> usageEstimate(_txn, _svo, spec.fees().tokenTransferUsageMultiplier()),
+				txn,
+				numPayerKeys);
+	}
+
+	private FeeData usageEstimate(TransactionBody txn, SigValueObj svo, int multiplier) {
+		return CryptoTransferUsage.newEstimate(txn, suFrom(svo))
+				.givenTokenMultiplier(multiplier)
+				.get();
 	}
 
 	private Transaction fittedPayment(HapiApiSpec spec) throws Throwable {