@@ -34,31 +34,32 @@ public class SolidityNode {
34
34
35
35
private Manager dbManager ;
36
36
37
- private Args cfgArgs ;
37
+ private Args cfgArgs = Args . getInstance () ;
38
38
39
39
private DatabaseGrpcClient databaseGrpcClient ;
40
40
41
41
private AtomicLong ID = new AtomicLong ();
42
42
43
43
private Map <Long , Block > blockMap = Maps .newConcurrentMap ();
44
44
45
- private LinkedBlockingDeque < Block > blockQueue = new LinkedBlockingDeque ( 10000 );
45
+ private int syncThreadNum = cfgArgs . getSolidSyncThreadNum ( );
46
46
47
- private LinkedBlockingDeque <Block > blockBakQueue = new LinkedBlockingDeque (10000 );
47
+ private int blockCacheSize = cfgArgs .getSolidBlockCacheSize ();
48
+
49
+ private LinkedBlockingDeque <Block > blockQueue = new LinkedBlockingDeque (blockCacheSize );
50
+
51
+ private LinkedBlockingDeque <Block > blockBakQueue = new LinkedBlockingDeque (blockCacheSize );
48
52
49
53
private AtomicLong remoteLastSolidityBlockNum = new AtomicLong ();
50
54
51
55
private AtomicLong lastSolidityBlockNum = new AtomicLong ();
52
56
53
- private int maxBlockCacheSize = 10_000 ;
54
-
55
57
private volatile boolean syncFlag = true ;
56
58
57
59
private volatile boolean flag = true ;
58
60
59
- public SolidityNode (Manager dbManager , Args cfgArgs ) {
61
+ public SolidityNode (Manager dbManager ) {
60
62
this .dbManager = dbManager ;
61
- this .cfgArgs = cfgArgs ;
62
63
resolveCompatibilityIssueIfUsingFullNodeDatabase ();
63
64
lastSolidityBlockNum .set (dbManager .getDynamicPropertiesStore ().getLatestSolidifiedBlockNum ());
64
65
ID .set (lastSolidityBlockNum .get ());
@@ -68,16 +69,16 @@ public SolidityNode(Manager dbManager, Args cfgArgs) {
68
69
69
70
private void start () {
70
71
try {
71
- for (int i = 0 ; i < 50 ; i ++) {
72
+ for (int i = 0 ; i < syncThreadNum ; i ++) {
72
73
new Thread (() -> getSyncBlock ()).start ();
73
74
}
74
75
new Thread (() -> getAdvBlock ()).start ();
75
76
new Thread (() -> pushBlock ()).start ();
76
77
new Thread (() -> processBlock ()).start ();
77
78
new Thread (() -> processTrx ()).start ();
78
- logger .info (
79
- "Success to start solid node, lastSolidityBlockNum : {}, ID : {}, remoteLastSolidityBlockNum : {}." ,
80
- lastSolidityBlockNum , ID .get (), remoteLastSolidityBlockNum );
79
+ logger .info ( "Success to start solid node, lastSolidityBlockNum: {}, ID: {}, "
80
+ + "remoteLastSolidityBlockNum : {}, syncThreadNum : {}, blockCacheSize : {}." ,
81
+ lastSolidityBlockNum , ID .get (), remoteLastSolidityBlockNum , syncThreadNum , blockCacheSize );
81
82
} catch (Exception e ) {
82
83
logger .error ("Failed to start solid node, address: {}." , cfgArgs .getTrustNodeAddr ());
83
84
System .exit (0 );
@@ -88,7 +89,7 @@ private void getSyncBlock() {
88
89
long blockNum = getNextSyncBlockId ();
89
90
while (blockNum != 0 ) {
90
91
try {
91
- if (blockMap .size () > maxBlockCacheSize ) {
92
+ if (blockMap .size () > blockCacheSize ) {
92
93
sleep (1000 );
93
94
continue ;
94
95
}
@@ -136,7 +137,7 @@ private void getAdvBlock() {
136
137
long blockNum = ID .incrementAndGet ();
137
138
while (flag ) {
138
139
try {
139
- if (blockNum > remoteLastSolidityBlockNum .get () || blockMap .size () > maxBlockCacheSize ) {
140
+ if (blockNum > remoteLastSolidityBlockNum .get () || blockMap .size () > blockCacheSize ) {
140
141
sleep (3000 );
141
142
remoteLastSolidityBlockNum .set (getLastSolidityBlockNum ());
142
143
continue ;
@@ -324,7 +325,7 @@ public static void main(String[] args) {
324
325
NodeManager nodeManager = context .getBean (NodeManager .class );
325
326
nodeManager .close ();
326
327
327
- SolidityNode node = new SolidityNode (appT .getDbManager (), cfgArgs );
328
+ SolidityNode node = new SolidityNode (appT .getDbManager ());
328
329
node .start ();
329
330
330
331
rpcApiService .blockUntilShutdown ();
0 commit comments