5
5
import java .util .concurrent .ScheduledExecutorService ;
6
6
import java .util .concurrent .TimeUnit ;
7
7
import lombok .extern .slf4j .Slf4j ;
8
+ import org .apache .commons .lang3 .BooleanUtils ;
8
9
import org .slf4j .Logger ;
9
10
import org .slf4j .LoggerFactory ;
10
11
import org .springframework .context .ApplicationContext ;
@@ -163,6 +164,18 @@ private void syncSolidityBlock() throws BadBlockException {
163
164
logger .info ("Sync with trust node completed!!!" );
164
165
}
165
166
167
+ private void resolveCompatibilityIssueIfUsingFullNodeDatabase () {
168
+ long lastSolidityBlockNum = dbManager .getDynamicPropertiesStore ().getLatestSolidifiedBlockNum ();
169
+ long headBlockNum = dbManager .getHeadBlockNum ();
170
+ logger .info ("headBlockNum:{}, solidityBlockNum:{}, diff:{}" ,
171
+ headBlockNum , lastSolidityBlockNum , headBlockNum - lastSolidityBlockNum );
172
+ if (lastSolidityBlockNum < headBlockNum ) {
173
+ logger .info ("use fullnode database, headBlockNum:{}, solidityBlockNum:{}, diff:{}" ,
174
+ headBlockNum , lastSolidityBlockNum , headBlockNum - lastSolidityBlockNum );
175
+ dbManager .getDynamicPropertiesStore ().saveLatestSolidifiedBlockNum (headBlockNum );
176
+ }
177
+ }
178
+
166
179
private void start (Args cfgArgs ) {
167
180
syncExecutor .scheduleWithFixedDelay (() -> {
168
181
try {
@@ -184,6 +197,8 @@ public static void main(String[] args) throws InterruptedException {
184
197
Args .setParam (args , Constant .TESTNET_CONF );
185
198
Args cfgArgs = Args .getInstance ();
186
199
200
+ logger .info ("index switch is {}" ,
201
+ BooleanUtils .toStringOnOff (BooleanUtils .toBoolean (cfgArgs .getStorage ().getIndexSwitch ())));
187
202
ch .qos .logback .classic .Logger root = (ch .qos .logback .classic .Logger )LoggerFactory
188
203
.getLogger (Logger .ROOT_LOGGER_NAME );
189
204
root .setLevel (Level .toLevel (cfgArgs .getLogLevel ()));
@@ -224,6 +239,7 @@ public static void main(String[] args) throws InterruptedException {
224
239
225
240
SolidityNode node = new SolidityNode ();
226
241
node .setDbManager (appT .getDbManager ());
242
+ node .resolveCompatibilityIssueIfUsingFullNodeDatabase ();
227
243
node .start (cfgArgs );
228
244
229
245
rpcApiService .blockUntilShutdown ();
0 commit comments