Skip to content

Commit 342cacd

Browse files
committed
Fix consumerBandwidth method that didn't work
1 parent 6d63bd6 commit 342cacd

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

src/main/java/org/tron/core/db/Manager.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,6 @@ public synchronized boolean pushTransactions(final TransactionCapsule trx)
420420
throw new DupTransactionException("dup trans");
421421
}
422422

423-
424423
if (!trx.validateSignature()) {
425424
throw new ValidateSignatureException("trans sig validate failed");
426425
}
@@ -465,7 +464,7 @@ public void consumeBandwidth(TransactionCapsule trx) throws ValidateBandwidthExc
465464
}
466465
long bandwidthPerTransaction = getDynamicPropertiesStore().getBandwidthPerTransaction();
467466
if (bandwidth < bandwidthPerTransaction) {
468-
throw new ValidateBandwidthException("bandwidth is not enough");
467+
throw new ValidateBandwidthException("bandwidth is not enough");
469468
}
470469
accountCapsule.setBandwidth(bandwidth - bandwidthPerTransaction);
471470
accountCapsule.setLatestOperationTime(Time.getCurrentMillis());
@@ -525,7 +524,7 @@ public void eraseBlock() throws BadItemException, ItemNotFoundException {
525524
}
526525

527526
private void applyBlock(BlockCapsule block)
528-
throws ContractValidateException, ContractExeException, ValidateSignatureException {
527+
throws ContractValidateException, ContractExeException, ValidateSignatureException, ValidateBandwidthException {
529528
processBlock(block);
530529
this.blockStore.put(block.getBlockId().getBytes(), block);
531530
this.blockIndexStore.put(block.getBlockId());
@@ -559,6 +558,8 @@ private void switchFork(BlockCapsule newHead) {
559558
try (Dialog tmpDialog = revokingStore.buildDialog()) {
560559
applyBlock(item);
561560
tmpDialog.commit();
561+
} catch (ValidateBandwidthException e) {
562+
logger.error("high freq", e);
562563
} catch (ValidateSignatureException e) {
563564
logger.debug(e.getMessage(), e);
564565
} catch (ContractValidateException e) {
@@ -583,7 +584,7 @@ private synchronized void filterPendingTrx(List<TransactionCapsule> listTrx) {
583584
*/
584585
public synchronized void pushBlock(final BlockCapsule block)
585586
throws ValidateSignatureException, ContractValidateException, ContractExeException,
586-
UnLinkedBlockException, ValidateScheduleException {
587+
UnLinkedBlockException, ValidateScheduleException, ValidateBandwidthException {
587588

588589
try (PendingManager pm = new PendingManager(this)) {
589590

@@ -798,7 +799,7 @@ public boolean hasBlocks() {
798799
* Process transaction.
799800
*/
800801
public boolean processTransaction(final TransactionCapsule trxCap)
801-
throws ValidateSignatureException, ContractValidateException, ContractExeException {
802+
throws ValidateSignatureException, ContractValidateException, ContractExeException, ValidateBandwidthException {
802803

803804
if (trxCap == null) {
804805
return false;
@@ -809,6 +810,8 @@ public boolean processTransaction(final TransactionCapsule trxCap)
809810
final List<Actuator> actuatorList = ActuatorFactory.createActuator(trxCap, this);
810811
TransactionResultCapsule ret = new TransactionResultCapsule();
811812

813+
consumeBandwidth(trxCap);
814+
812815
for (Actuator act : actuatorList) {
813816
act.validate();
814817
act.execute(ret);
@@ -835,7 +838,7 @@ public BlockCapsule getBlockByNum(final long num) throws ItemNotFoundException,
835838
public synchronized BlockCapsule generateBlock(
836839
final WitnessCapsule witnessCapsule, final long when, final byte[] privateKey)
837840
throws ValidateSignatureException, ContractValidateException, ContractExeException,
838-
UnLinkedBlockException, ValidateScheduleException {
841+
UnLinkedBlockException, ValidateScheduleException, ValidateBandwidthException {
839842

840843
final long timestamp = this.dynamicPropertiesStore.getLatestBlockHeaderTimestamp();
841844
final long number = this.dynamicPropertiesStore.getLatestBlockHeaderNumber();
@@ -936,7 +939,7 @@ private void setUtxoStore(final UtxoStore utxoStore) {
936939
* process block.
937940
*/
938941
public void processBlock(BlockCapsule block)
939-
throws ValidateSignatureException, ContractValidateException, ContractExeException {
942+
throws ValidateSignatureException, ContractValidateException, ContractExeException, ValidateBandwidthException {
940943
// todo set revoking db max size.
941944
this.updateDynamicProperties(block);
942945
this.updateSignedWitness(block);

src/main/java/org/tron/core/net/node/NodeDelegateImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public synchronized LinkedList<Sha256Hash> handleBlock(BlockCapsule block, boole
6262
return null;
6363
}
6464

65+
} catch (ValidateBandwidthException e) {
66+
throw new BadBlockException("Validate Bandwidth exception");
6567
} catch (ValidateScheduleException e) {
6668
throw new BadBlockException("validate schedule exception");
6769
} catch (ValidateSignatureException e) {

src/test/java/org/tron/core/db/ManagerTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.tron.core.exception.HeaderNotFound;
3131
import org.tron.core.exception.ItemNotFoundException;
3232
import org.tron.core.exception.UnLinkedBlockException;
33+
import org.tron.core.exception.ValidateBandwidthException;
3334
import org.tron.core.exception.ValidateScheduleException;
3435
import org.tron.core.exception.ValidateSignatureException;
3536
import org.tron.core.witness.WitnessController;
@@ -82,7 +83,7 @@ public static void removeDb() {
8283
@Test
8384
public void setBlockReference()
8485
throws ContractExeException, UnLinkedBlockException, ValidateScheduleException,
85-
ContractValidateException, ValidateSignatureException, BadItemException, ItemNotFoundException {
86+
ContractValidateException, ValidateSignatureException, BadItemException, ItemNotFoundException, ValidateBandwidthException {
8687

8788
BlockCapsule blockCapsule =
8889
new BlockCapsule(
@@ -207,7 +208,7 @@ public void updateWits() {
207208
public void fork()
208209
throws ValidateSignatureException, ContractValidateException, ContractExeException,
209210
UnLinkedBlockException, ValidateScheduleException, BadItemException,
210-
ItemNotFoundException, HeaderNotFound {
211+
ItemNotFoundException, HeaderNotFound, ValidateBandwidthException {
211212
Args.setParam(new String[]{"--witness"}, Constant.TEST_CONF);
212213
long size = dbManager.getBlockStore().dbSource.allKeys().size();
213214
System.out.print("block store size:" + size + "\n");

0 commit comments

Comments
 (0)