Skip to content

Commit 19221ee

Browse files
committed
refactoring tx processor
1 parent f703a4b commit 19221ee

15 files changed

+172
-155
lines changed

data/block.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package data
22

33
import (
4+
coreData "github.com/multiversx/mx-chain-core-go/data"
45
"github.com/multiversx/mx-chain-core-go/data/api"
56
)
67

@@ -72,6 +73,16 @@ type ExecutionResult struct {
7273
MiniBlocksDetails []*MiniBlocksDetails `json:"miniBlocksDetails,omitempty"`
7374
}
7475

76+
// HeaderData is the DTO that holds fields from header or execution result
77+
type HeaderData struct {
78+
Timestamp uint64
79+
TimestampMs uint64
80+
Round uint64
81+
ShardID uint32
82+
Epoch uint32
83+
MiniBlockHeaders []coreData.MiniBlockHeaderHandler
84+
}
85+
7586
// PreparedBlockResults is the DTO that holds all the results after processing a block
7687
type PreparedBlockResults struct {
7788
Block *Block

mock/dbTransactionsHandlerStub.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package mock
22

33
import (
4-
coreData "github.com/multiversx/mx-chain-core-go/data"
54
"github.com/multiversx/mx-chain-core-go/data/block"
65
"github.com/multiversx/mx-chain-core-go/data/outport"
76
"github.com/multiversx/mx-chain-es-indexer-go/data"
87
)
98

109
// DBTransactionProcessorStub -
1110
type DBTransactionProcessorStub struct {
12-
PrepareTransactionsForDatabaseCalled func(mbs []*block.MiniBlock, header coreData.HeaderHandler, pool *outport.TransactionPool) *data.PreparedResults
11+
PrepareTransactionsForDatabaseCalled func(mbs []*block.MiniBlock, headerData *data.HeaderData, pool *outport.TransactionPool) *data.PreparedResults
1312
SerializeReceiptsCalled func(recs []*data.Receipt, buffSlice *data.BufferSlice, index string) error
1413
SerializeScResultsCalled func(scrs []*data.ScResult, buffSlice *data.BufferSlice, index string) error
1514
}
@@ -20,16 +19,16 @@ func (tps *DBTransactionProcessorStub) SerializeTransactionsFeeData(_ map[string
2019
}
2120

2221
// PrepareTransactionsForDatabase -
23-
func (tps *DBTransactionProcessorStub) PrepareTransactionsForDatabase(mbs []*block.MiniBlock, header coreData.HeaderHandler, pool *outport.TransactionPool, _ bool, _ uint32, _ uint64) *data.PreparedResults {
22+
func (tps *DBTransactionProcessorStub) PrepareTransactionsForDatabase(mbs []*block.MiniBlock, headerData *data.HeaderData, pool *outport.TransactionPool, _ bool, _ uint32) *data.PreparedResults {
2423
if tps.PrepareTransactionsForDatabaseCalled != nil {
25-
return tps.PrepareTransactionsForDatabaseCalled(mbs, header, pool)
24+
return tps.PrepareTransactionsForDatabaseCalled(mbs, headerData, pool)
2625
}
2726

2827
return nil
2928
}
3029

3130
// GetHexEncodedHashesForRemove -
32-
func (tps *DBTransactionProcessorStub) GetHexEncodedHashesForRemove(_ coreData.HeaderHandler, _ *block.Body) ([]string, []string) {
31+
func (tps *DBTransactionProcessorStub) GetHexEncodedHashesForRemove(_ *data.HeaderData, _ *block.Body) ([]string, []string) {
3332
return nil, nil
3433
}
3534

process/elasticproc/elasticProcessor.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,15 @@ func (ei *elasticProcessor) RemoveMiniblocks(header coreData.HeaderHandler, body
332332

333333
// RemoveTransactions will remove transaction that are in miniblock from the elasticsearch server
334334
func (ei *elasticProcessor) RemoveTransactions(header coreData.HeaderHandler, body *block.Body, timestampMs uint64) error {
335-
encodedTxsHashes, encodedScrsHashes := ei.transactionsProc.GetHexEncodedHashesForRemove(header, body)
335+
headerData := &data.HeaderData{
336+
Timestamp: header.GetTimeStamp(),
337+
TimestampMs: timestampMs,
338+
Round: header.GetRound(),
339+
ShardID: header.GetShardID(),
340+
Epoch: header.GetEpoch(),
341+
MiniBlockHeaders: header.GetMiniBlockHeaderHandlers(),
342+
}
343+
encodedTxsHashes, encodedScrsHashes := ei.transactionsProc.GetHexEncodedHashesForRemove(headerData, body)
336344
shardID := header.GetShardID()
337345

338346
err := ei.removeIfHashesNotEmpty(elasticIndexer.TransactionsIndex, encodedTxsHashes, shardID)
@@ -434,7 +442,16 @@ func (ei *elasticProcessor) SaveTransactions(obh *outport.OutportBlockWithHeader
434442
headerTimestamp := obh.Header.GetTimeStamp()
435443

436444
miniBlocks := append(obh.BlockData.Body.MiniBlocks, obh.BlockData.IntraShardMiniBlocks...)
437-
preparedResults := ei.transactionsProc.PrepareTransactionsForDatabase(miniBlocks, obh.Header, obh.TransactionPool, ei.isImportDB(), obh.NumberOfShards, obh.BlockData.TimestampMs)
445+
446+
headerData := &data.HeaderData{
447+
Timestamp: headerTimestamp,
448+
TimestampMs: obh.BlockData.TimestampMs,
449+
Round: obh.Header.GetRound(),
450+
ShardID: obh.Header.GetShardID(),
451+
Epoch: obh.Header.GetEpoch(),
452+
MiniBlockHeaders: obh.Header.GetMiniBlockHeaderHandlers(),
453+
}
454+
preparedResults := ei.transactionsProc.PrepareTransactionsForDatabase(miniBlocks, headerData, obh.TransactionPool, ei.isImportDB(), obh.NumberOfShards)
438455
logsData := ei.logsAndEventsProc.ExtractDataFromLogs(obh.TransactionPool.Logs, preparedResults, headerTimestamp, obh.Header.GetShardID(), obh.NumberOfShards, obh.BlockData.TimestampMs)
439456

440457
buffers := data.NewBufferSlice(ei.bulkRequestMaxSize)

process/elasticproc/elasticProcessor_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"testing"
1212

1313
"github.com/multiversx/mx-chain-core-go/core"
14-
coreData "github.com/multiversx/mx-chain-core-go/data"
1514
dataBlock "github.com/multiversx/mx-chain-core-go/data/block"
1615
"github.com/multiversx/mx-chain-core-go/data/outport"
1716
"github.com/multiversx/mx-chain-core-go/data/transaction"
@@ -560,7 +559,7 @@ func TestElasticProcessor_SaveTransactionNoDataShouldNotDoRequest(t *testing.T)
560559
called := false
561560
arguments := createMockElasticProcessorArgs()
562561
arguments.TransactionsProc = &mock.DBTransactionProcessorStub{
563-
PrepareTransactionsForDatabaseCalled: func(mbs []*dataBlock.MiniBlock, header coreData.HeaderHandler, pool *outport.TransactionPool) *data.PreparedResults {
562+
PrepareTransactionsForDatabaseCalled: func(mbs []*dataBlock.MiniBlock, headerData *data.HeaderData, pool *outport.TransactionPool) *data.PreparedResults {
564563
return &data.PreparedResults{
565564
Transactions: nil,
566565
ScResults: nil,

process/elasticproc/interface.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,12 @@ type DBBlockHandler interface {
6060
type DBTransactionsHandler interface {
6161
PrepareTransactionsForDatabase(
6262
miniBlocks []*block.MiniBlock,
63-
header coreData.HeaderHandler,
63+
headerData *data.HeaderData,
6464
pool *outport.TransactionPool,
6565
isImportDB bool,
6666
numOfShards uint32,
67-
timestampMS uint64,
6867
) *data.PreparedResults
69-
GetHexEncodedHashesForRemove(header coreData.HeaderHandler, body *block.Body) ([]string, []string)
68+
GetHexEncodedHashesForRemove(headerData *data.HeaderData, body *block.Body) ([]string, []string)
7069

7170
SerializeReceipts(receipts []*data.Receipt, buffSlice *data.BufferSlice, index string) error
7271
SerializeTransactions(transactions []*data.Transaction, txHashStatusInfo map[string]*outport.StatusInfo, selfShardID uint32, buffSlice *data.BufferSlice, index string) error

process/elasticproc/transactions/checkers.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88

99
"github.com/multiversx/mx-chain-core-go/core"
1010
"github.com/multiversx/mx-chain-core-go/core/check"
11-
coreData "github.com/multiversx/mx-chain-core-go/data"
1211
"github.com/multiversx/mx-chain-core-go/data/outport"
1312
"github.com/multiversx/mx-chain-es-indexer-go/data"
1413
elasticIndexer "github.com/multiversx/mx-chain-es-indexer-go/process/dataindexer"
@@ -50,13 +49,8 @@ func areESDTValuesOK(values []string) bool {
5049
}
5150

5251
func checkPrepareTransactionForDatabaseArguments(
53-
header coreData.HeaderHandler,
5452
pool *outport.TransactionPool,
5553
) error {
56-
57-
if check.IfNil(header) {
58-
return elasticIndexer.ErrNilHeaderHandler
59-
}
6054
if pool == nil {
6155
return elasticIndexer.ErrNilPool
6256
}

process/elasticproc/transactions/checkers_test.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import (
66
"testing"
77

88
"github.com/multiversx/mx-chain-core-go/core"
9-
coreData "github.com/multiversx/mx-chain-core-go/data"
10-
"github.com/multiversx/mx-chain-core-go/data/block"
119
"github.com/multiversx/mx-chain-core-go/data/outport"
1210
"github.com/multiversx/mx-chain-es-indexer-go/data"
1311
"github.com/multiversx/mx-chain-es-indexer-go/mock"
@@ -72,20 +70,13 @@ func TestCheckTxsProcessorArg(t *testing.T) {
7270

7371
tests := []struct {
7472
name string
75-
args func() (header coreData.HeaderHandler, pool *outport.TransactionPool)
73+
args func() (pool *outport.TransactionPool)
7674
exErr error
7775
}{
78-
{
79-
name: "NilHeaderHandler",
80-
args: func() (header coreData.HeaderHandler, pool *outport.TransactionPool) {
81-
return nil, &outport.TransactionPool{}
82-
},
83-
exErr: elasticIndexer.ErrNilHeaderHandler,
84-
},
8576
{
8677
name: "NilPool",
87-
args: func() (header coreData.HeaderHandler, pool *outport.TransactionPool) {
88-
return &block.Header{}, nil
78+
args: func() (pool *outport.TransactionPool) {
79+
return nil
8980
},
9081
exErr: elasticIndexer.ErrNilPool,
9182
},

process/elasticproc/transactions/smartContractResultsProcessor.go

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"strconv"
66

77
"github.com/multiversx/mx-chain-core-go/core"
8-
coreData "github.com/multiversx/mx-chain-core-go/data"
98
"github.com/multiversx/mx-chain-core-go/data/block"
109
"github.com/multiversx/mx-chain-core-go/data/outport"
1110
"github.com/multiversx/mx-chain-core-go/hashing"
@@ -44,10 +43,9 @@ func newSmartContractResultsProcessor(
4443

4544
func (proc *smartContractResultsProcessor) processSCRs(
4645
miniBlocks []*block.MiniBlock,
47-
header coreData.HeaderHandler,
46+
headerData *indexerData.HeaderData,
4847
scrs map[string]*outport.SCRInfo,
4948
numOfShards uint32,
50-
timestampMs uint64,
5149
) []*indexerData.ScResult {
5250
allSCRs := make([]*indexerData.ScResult, 0, len(scrs))
5351

@@ -58,14 +56,13 @@ func (proc *smartContractResultsProcessor) processSCRs(
5856
continue
5957
}
6058

61-
indexerSCRs := proc.processSCRsFromMiniblock(header, mb, workingSCRSMap, numOfShards, timestampMs)
59+
indexerSCRs := proc.processSCRsFromMiniblock(headerData, mb, workingSCRSMap, numOfShards)
6260

6361
allSCRs = append(allSCRs, indexerSCRs...)
6462
}
6563

66-
selfShardID := header.GetShardID()
6764
for scrHashHex, noMBScrInfo := range workingSCRSMap {
68-
indexerScr := proc.prepareSmartContractResult(scrHashHex, nil, noMBScrInfo, header, selfShardID, selfShardID, numOfShards, timestampMs)
65+
indexerScr := proc.prepareSmartContractResult(scrHashHex, nil, noMBScrInfo, headerData, headerData.ShardID, headerData.ShardID, numOfShards)
6966

7067
allSCRs = append(allSCRs, indexerScr)
7168
}
@@ -74,11 +71,10 @@ func (proc *smartContractResultsProcessor) processSCRs(
7471
}
7572

7673
func (proc *smartContractResultsProcessor) processSCRsFromMiniblock(
77-
header coreData.HeaderHandler,
74+
headerData *indexerData.HeaderData,
7875
mb *block.MiniBlock,
7976
scrs map[string]*outport.SCRInfo,
8077
numOfShards uint32,
81-
timestampMs uint64,
8278
) []*indexerData.ScResult {
8379
mbHash, err := core.CalculateHash(proc.marshalizer, proc.hasher, mb)
8480
if err != nil {
@@ -97,7 +93,7 @@ func (proc *smartContractResultsProcessor) processSCRsFromMiniblock(
9793
continue
9894
}
9995

100-
indexerSCR := proc.prepareSmartContractResult(hex.EncodeToString(scrHash), mbHash, scrInfo, header, mb.SenderShardID, mb.ReceiverShardID, numOfShards, timestampMs)
96+
indexerSCR := proc.prepareSmartContractResult(hex.EncodeToString(scrHash), mbHash, scrInfo, headerData, mb.SenderShardID, mb.ReceiverShardID, numOfShards)
10197
indexerSCRs = append(indexerSCRs, indexerSCR)
10298

10399
delete(scrs, scrHashHex)
@@ -110,11 +106,10 @@ func (proc *smartContractResultsProcessor) prepareSmartContractResult(
110106
scrHashHex string,
111107
mbHash []byte,
112108
scrInfo *outport.SCRInfo,
113-
header coreData.HeaderHandler,
109+
headerData *indexerData.HeaderData,
114110
senderShard uint32,
115111
receiverShard uint32,
116112
numOfShards uint32,
117-
timestampMs uint64,
118113
) *indexerData.ScResult {
119114
scr := scrInfo.SmartContractResult
120115
hexEncodedMBHash := ""
@@ -159,7 +154,7 @@ func (proc *smartContractResultsProcessor) prepareSmartContractResult(
159154
esdtValues = res.ESDTValues
160155
}
161156

162-
isRelayed := res.IsRelayed && header.GetEpoch() < proc.relayedV1V2DisableEpoch
157+
isRelayed := res.IsRelayed && headerData.ShardID < proc.relayedV1V2DisableEpoch
163158

164159
feeInfo := getFeeInfo(scrInfo)
165160
return &indexerData.ScResult{
@@ -181,7 +176,7 @@ func (proc *smartContractResultsProcessor) prepareSmartContractResult(
181176
CallType: strconv.Itoa(int(scr.CallType)),
182177
CodeMetadata: scr.CodeMetadata,
183178
ReturnMessage: string(scr.ReturnMessage),
184-
Timestamp: header.GetTimeStamp(),
179+
Timestamp: headerData.Timestamp,
185180
SenderAddressBytes: scr.SndAddr,
186181
SenderShard: senderShard,
187182
ReceiverShard: receiverShard,
@@ -199,8 +194,8 @@ func (proc *smartContractResultsProcessor) prepareSmartContractResult(
199194
GasRefunded: feeInfo.GasRefunded,
200195
ExecutionOrder: int(scrInfo.ExecutionOrder),
201196
UUID: converters.GenerateBase64UUID(),
202-
Epoch: header.GetEpoch(),
203-
TimestampMs: timestampMs,
197+
Epoch: headerData.Epoch,
198+
TimestampMs: headerData.TimestampMs,
204199
}
205200
}
206201

process/elasticproc/transactions/smartContractResultsProcessor_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"math/big"
66
"testing"
77

8-
"github.com/multiversx/mx-chain-core-go/data/block"
98
"github.com/multiversx/mx-chain-core-go/data/outport"
109
"github.com/multiversx/mx-chain-core-go/data/smartContractResult"
1110
"github.com/multiversx/mx-chain-es-indexer-go/data"
@@ -56,10 +55,12 @@ func TestPrepareSmartContractResult(t *testing.T) {
5655
},
5756
}
5857

59-
header := &block.Header{TimeStamp: 100}
60-
6158
mbHash := []byte("hash")
62-
scRes := scrsProc.prepareSmartContractResult(scHash, mbHash, scrInfo, header, 0, 1, 3, 100000)
59+
headerData := &data.HeaderData{
60+
Timestamp: 100,
61+
TimestampMs: 100000,
62+
}
63+
scRes := scrsProc.prepareSmartContractResult(scHash, mbHash, scrInfo, headerData, 0, 1, 3)
6364
scRes.UUID = ""
6465

6566
senderAddr, err := pubKeyConverter.Encode(sndAddr)

0 commit comments

Comments
 (0)