EOSIO / eos

An open source smart contract platform
https://developers.eos.io/manuals/eos
MIT License
11.27k stars 3.6k forks source link

I found some repeated transaction_traces in db by mongo-plugin #5667

Closed TamirTian closed 6 years ago

TamirTian commented 6 years ago

@heifner

Question

I found some repeated transaction_traces in db by mongo-plugin, and they had the same trx_id.

Hint

1. Strange log

docker log

{"log":"2018-09-13T16:17:04.931 thread-0   binaryen.hpp:608              translate_one        ] misaligned reference\n","stream":"stderr","time":"2018-09-13T16:17:04.93189774Z"}

2. Two of same ids in the transaction_traces

The action_traces has been hidden, it's too long

{
    "_id" : ObjectId("5b9a5e36be0eaf0001b25360"), 
    "id" : "b7fbd98b7fa7f2f7b90ae1bae044c02908d4b5dbcc14582d3013e0f47dcef4f2", 
    "receipt" : {
        "status" : "executed", 
        "cpu_usage_us" : NumberInt(5059), 
        "net_usage_words" : NumberInt(27)
    }, 
    "elapsed" : NumberInt(5059), 
    "net_usage" : NumberInt(216), 
    "scheduled" : false, 
    "action_traces" :[...],
    "except" : null, 
    "createdAt" : ISODate("2018-09-13T12:55:18.602+0000")
},
{
    "_id" : ObjectId("5b9a5e36be0eaf0001b2537e"), 
    "id" : "b7fbd98b7fa7f2f7b90ae1bae044c02908d4b5dbcc14582d3013e0f47dcef4f2", 
    "receipt" : {
        "status" : "executed", 
        "cpu_usage_us" : NumberInt(6291), 
        "net_usage_words" : NumberInt(27)
    }, 
    "elapsed" : NumberInt(5585), 
    "net_usage" : NumberInt(216), 
    "scheduled" : false, 
    "action_traces" : [],
    "except" : null, 
    "createdAt" : ISODate("2018-09-13T12:55:18.850+0000")
}

3. Strange action of transaction_traces's action_traces

{
    "receipt" : {
        "receiver" : "", 
        "act_digest" : "0000000000000000000000000000000000000000000000000000000000000000", 
        "global_sequence" : NumberInt(0), 
        "recv_sequence" : NumberInt(0), 
        "auth_sequence" : [

        ], 
        "code_sequence" : NumberInt(0), 
        "abi_sequence" : NumberInt(0)
    }, 
    "act" : {
        "account" : "", 
        "name" : "", 
        "authorization" : [

        ], 
        "data" : ""
    }, 
    "elapsed" : NumberInt(0), 
    "cpu_usage" : NumberInt(0), 
    "console" : "", 
    "total_cpu_usage" : NumberInt(0), 
    "trx_id" : "0000000000000000000000000000000000000000000000000000000000000000", 
    "inline_traces" : [

    ]
}

Env

docker-compose.yml

version: "3"

services:
  nodeosd:
    restart: always
    stop_grace_period: 20m
    image: eosio/eos:v1.2.1
    command: "/opt/eosio/bin/nodeos --mongodb-uri mongodb://xxx/xx --data-dir /opt/eosio/bin/data-dir/ --config-dir=/etc/nodeos --mongodb-queue-size 20480 --mongodb-abi-cache-size 40960"
    volumes:
      - /data/nodeos1.2.1-data-dir/:/opt/eosio/bin/data-dir/
      - ./config.ini:/etc/nodeos/config.ini:ro

config.ini

## MAYBi CHANGE THESE
http-server-address = 0.0.0.0:8888
p2p-listen-endpoint = 0.0.0.0:9876

## USUALLY DONT CHANGE THESE
blocks-dir = "blocks"
abi-serializer-max-time-ms = 3000
chain-state-db-size-mb = 8192
reversible-blocks-db-size-mb = 1024
contracts-console = false
p2p-max-nodes-per-host = 5
allowed-connection = any
max-clients = 100
network-version-match = 1
sync-fetch-span = 2000
connection-cleanup-period = 30
max-implicit-request = 1500
http-validate-host = false

plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin
plugin = eosio::history_api_plugin
plugin = eosio::mongo_db_plugin

## PEERS
#p2p-peer-address = 47.104.169.45:9876
#p2p-peer-address = bp.antpool.com:443
#p2p-peer-address = fullnode.bp.lambda.im:9876
#p2p-peer-address = node.eoswing.io:9876
p2p-peer-address = node1.eoswonders.com:59876
#p2p-peer-address = mainnet.eosoasis.io:9876
#p2p-peer-address = peer.oraclechain.io:19876
#p2p-peer-address = peer2.eoshuobipool.com:18181
#p2p-peer-address = peer1.eoshuobipool.com:18181
#p2p-peer-address = bp.eosbeijing.one:8080
#p2p-peer-address = node2.zbeos.com:9876
#p2p-peer-address = node1.zbeos.com:9876
#p2p-peer-address = p2p.prod.eosgravity.com:80
#p2p-peer-address = p2p.bp.fish:9786
#p2p-peer-address = fullnode.eoslaomao.com:443
#p2p-peer-address = bp.eosbeijing.one:8080
#p2p-peer-address = bp.eos.zhizhu.top:9876
#p2p-peer-address = node1.eoswonders.com:59876
#p2p-peer-address = peer.ono.chat:9876

# ==== p2p ====

# 1eostheworld: US, Texas
p2p-peer-address = pub1.eostheworld.io:9876

# acroeos12345: KR, Seoul, Korea
p2p-peer-address = seed.acroeos.one:9876

# alohaeosprod: GB, London
p2p-peer-address = peer.main.alohaeos.com:9876

# argentinaeos: AR, eosargentina
p2p-peer-address = p2p.eosargentina.io:5222

# atticlabeosb: UA, Kyiv
p2p-peer-address = eosbp-0.atticlab.net:9876

# auroraeoscom: US, Virginia
p2p-peer-address = mainnet.auroraeos.com:9870

# aus1genereos: AU, Sydney
p2p-peer-address = p2p.genereos.io:9876

# bitfinexeos1: GB, London
p2p-peer-address = eos-bp.bitfinex.com:9876

# bitspacenode: GB, London
p2p-peer-address = p2p.eos.bitspace.no:9876

# blockchained: DE, EOSBLCKCHND
p2p-peer-address = p2p-eos.blckchnd.com:19876

# blockgenesys: GB, London
p2p-peer-address = node1.blockgenesys.com:9876

# blockmatrix1: US, N. Virginia
p2p-peer-address = eosapi.blockmatrix.network:13546

# blocksmithio: US, Oklahoma
p2p-peer-address = anvil.eosblocksmith.io:9876

# bpeosindexio: DE, Falkenstein
p2p-peer-address = node1.bp.eosindex.io:9876

# cryptolions1: DE, Germany-Finland
p2p-peer-address = bp.cryptolions.io:9876

# cypherglasss: US, Minneapolis, MN
p2p-peer-address = publicnode.cypherglass.com:9876

# eos42freedom: GB, London
p2p-peer-address = seed1.eos42.io:9876

# eos42freedom: GB, London
p2p-peer-address = seed2.eos42.io:9876

# eosafricaone: ZA, CPT
p2p-peer-address = peer.dpos.africa:9876

# eosamsterdam: DE, Saarbruecken
p2p-peer-address = mainnet.eosamsterdam.net:9876

# eosantpoolbp: SG, Singapore
p2p-peer-address = bp.antpool.com:443

# eosasia11111: TW, Changhua
p2p-peer-address = peering1.mainnet.eosasia.one:80

# eosasia11111: TW, Changhua
p2p-peer-address = peering2.mainnet.eosasia.one:80

# eosauthority: GB, London
p2p-peer-address = node869-mainnet.eosauthority.com:9393

# eosbarcelona: DE, Germany
p2p-peer-address = mainnet.eosbcn.com:2095

# eosbeijingbp: JP, Tokyo
p2p-peer-address = bp.eosbeijing.one:8080

# eosbixinboot: CN, HongKong
p2p-peer-address = mars.fnp2p.eosbixin.com:443

# eoscafeblock: CA, Calgary
p2p-peer-address = mainnet.eoscalgary.io:5222

# eoscanadacom: CA, Montreal, Canada
p2p-peer-address = peering.mainnet.eoscanada.com:9876

# eoscannonchn: HK, Hong Kong
p2p-peer-address = node1.eoscannon.io:59876

# eoschaintech: CN, Unknown
p2p-peer-address = eoschaintech.net:19876

# eoscleanerbp: JP, okyo Node A-seed
p2p-peer-address = seed.eoscleaner.com:19876

# eosdacserver: RO, Bucharest
p2p-peer-address = eu.eosdac.io:49876

# eosdacserver: KR, Seoul
p2p-peer-address = as1.eosdac.io:49876

# eosdotwikibp: SG, Singapore
p2p-peer-address = api.eos.wiki:39876

# eosdublinwow: IE, Dublin
p2p-peer-address = eos-seed.eosdublin.io:9876

# eoseouldotio: KR, EOSSeoul-seed1
p2p-peer-address = api-full1.eoseoul.io:9876

# eoseouldotio: KR, EOSSeoul-seed2
p2p-peer-address = api-full2.eoseoul.io:9876

# eosfishrocks: HK, HongKong
p2p-peer-address = p2p.bp.fish:9786

# eosflareiobp: US, GlobalDAC
p2p-peer-address = node.eosflare.io:1883

# eosflytomars: JP, Tokyo
p2p-peer-address = p2p.bitmars.one:8080

# eosgenblockp: IS, Iceland
p2p-peer-address = eos.genesis-mining.com:19876

# eosgermanybp: DE, Falkenstein
p2p-peer-address = p2p.eosgermany.online:9876

# eoshuobipool: CN, HuobiNode1
p2p-peer-address = peer1.eoshuobipool.com:18181

# eoshuobipool: CN, HuobiNode2
p2p-peer-address = peer2.eoshuobipool.com:18181

# eosimperabpi: IT, Italy
p2p-peer-address = eosimpera.com:9876

# eosiodetroit: US, EOS Detroit NP1
p2p-peer-address = p2p.eosdetroit.io:3018

# eosiomeetone: JP, Tokyo
p2p-peer-address = p2p.meet.one:9876

# eosiosg11111: TW, Taiwan
p2p-peer-address = peer.eosio.sg:80

# eosisgravity: SG, Singapore
p2p-peer-address = p2p-mainnet.eosgravity.com:8001

# eoslambdacom: CN, Beijing
p2p-peer-address = fullnode.bp.lambda.im:9876

# eoslaomaocom: US, NewYork
p2p-peer-address = fullnode.eoslaomao.com:443

# eosliquideos: IL, Israel - Center
p2p-peer-address = node2.liquideos.com:9876

# eoslithuania: LT, Unknown
p2p-peer-address = node.eosio.lt:9878

# eosmesodotio: GT, Guatemala City
p2p-peer-address = node.eosmeso.io:9876

# eosmetaliobp: IE, Ireland
p2p-peer-address = api1.eosmetal.io:19877

# eosnationftw: CA, Toronto
p2p-peer-address = peer.eosn.io:9876

# eosnewyorkio: BR, primary
p2p-peer-address = node1.eosnewyork.io:6987

# eosnigeriago: NG, Nigeria
p2p-peer-address = bp.eosnigeria.io:9876

# eosnodeonebp: KR, Seoul
p2p-peer-address = 807534da.eosnodeone.io:19872

# eosonoeosono: JP, Tokyo
p2p-peer-address = peer.ono.chat:9876

# eospaceioeos: US, LosAngelesSeed1
p2p-peer-address = p2p.mainnet.eospace.io:88

# eospacificbp: JP, Tokyo, Japan
p2p-peer-address = eos.nodepacific.com:9876

# eosphereiobp: AU, Sydney, Australia
p2p-peer-address = peer1.eosphere.io:9876

# eosphereiobp: AU, Sydney, Australia
p2p-peer-address = peer2.eosphere.io:9876

# eosriobrazil: BR, Rio de Janeiro
p2p-peer-address = br.eosrio.io:9876

# eossv12eossv: US, Oregon
p2p-peer-address = fn001.eossv.org:443

# eosswedenorg: SE, Sweden
p2p-peer-address = p2p.eossweden.se:9876

# eosthushuimu: ??, Tokyo
p2p-peer-address = peer1.eosthu.com:8080

# eosthushuimu: ??, Tokyo
p2p-peer-address = peer2.eosthu.com:8080

# eostitanprod: CA, Toronto
p2p-peer-address = boot.eostitan.com:9876

# eostribeprod: US, Cheyenne, WY
p2p-peer-address = api2.eostribe.io:9115

# eosukblocpro: DE, Falkenstein
p2p-peer-address = api.eosuk.io:12000

# eosunion1111: ??, London
p2p-peer-address = mainnet1.eos.ren:9376

# eosvenezuela: VE, Unknown
p2p-peer-address = node.eosvenezuela.io:9875

# eosvibesbloc: ??, Gravelines
p2p-peer-address = node1.eosvibes.io:9876

# eoswinwinwin: JP, Tokyo
p2p-peer-address = peer.eoswin.info:9876

# eoswondersbp: CN, Shanghai
p2p-peer-address = node1.eoswonders.com:59876

# eosyskoreabp: KR, Seoul
p2p-peer-address = pub0.eosys.io:6637

# eosyskoreabp: KR, Seoul
p2p-peer-address = pub1.eosys.io:6637

# eoszhizhutop: CN, Hangzhou
p2p-peer-address = bp.eos.zhizhu.top:9876

# eoszonrussia: RU, Novosibirsk
p2p-peer-address = v.rito.su:9876

# foodtokeneos: CA, Montreal, Canada
p2p-peer-address = mainnet.eos.foodtoken.io:9876

# franceosysbp: GB, London
p2p-peer-address = peer2.franceos.fr:19876

# helloeoscnbp: JP, Tokyo
p2p-peer-address = peer2.mainnet.helloeos.com.cn:80

# hkeoshkeosbp: SG, Singapore
p2p-peer-address = p2p.hkeos.com:9876

# jedaaaaaaaaa: JP, Tokyo
p2p-peer-address = m.jeda.one:3322

# jrrcryptoeos: JP, eosjrr_tokyo
p2p-peer-address = peer.eosjrr.io:9876

# kunablockprd: UA, Ukraine
p2p-peer-address = eosbp.kuna.io:9876

# libertyblock: CA, Toronto, Canada
p2p-peer-address = mainnet.libertyblock.io:9800

# libertyblock: CA, Toronto, Canada
p2p-peer-address = p2p.libertyblock.io:9800

# moreisfuture: ??, Shenzhen
p2p-peer-address = peering.mainnet.more.top:443

# oasisproduce: CN, Beijing
p2p-peer-address = mainnet.eosoasis.io:9876

# onechaindapp: ??, chongqing
p2p-peer-address = eosdapp.oneeos.org:9000

# oraclegogogo: CN, Beijing
p2p-peer-address = peer.oraclechain.io:19876

# privexinceos: ??, Falkenstein
p2p-peer-address = eos-seed-de.privex.io:9876

# sheos21sheos: IE, Dublin
p2p-peer-address = p2p.proxy1a.sheos.org:5556

# stakedstaked: US, Virginia
p2p-peer-address = eos.staked.us:9870

# starteosiobp: US, Ohio
p2p-peer-address = node1.starteos.io:9876

# starteosiobp: JP, Tokyo
p2p-peer-address = node2.starteos.io:9876

# superoneiobp: CN, Shenzhen, China
p2p-peer-address = bp.superone.io:57576

# swedencornet: NL, Amsterdam
p2p-peer-address = p2p2.eossweden.eu:9966

# switzerlanda: CH, Geneva
p2p-peer-address = peer.eosgeneva.io:9876

# teamgreymass: GB, GB
p2p-peer-address = seed1.greymass.com:9876

# teamgreymass: US, US
p2p-peer-address = seed2.greymass.com:9876

# tokenika4eos: PL, Poland
p2p-peer-address = api.tokenika.io:9876

# unlimitedeos: JP, Tokyo
p2p-peer-address = eos.unlimitedeos.com:15555

# zbeosbp11111: ??, ZBnode1
p2p-peer-address = node1.zbeos.com:9876

# zbeosbp11111: ??, ZBnode2
p2p-peer-address = node2.zbeos.com:9876
firesWu commented 6 years ago

I think we meet same issue. #5660

heifner commented 6 years ago

Use read-mode = read-only to avoid duplicate transaction_traces.

TamirTian commented 6 years ago

ok, i will try it.

TamirTian commented 6 years ago

Will other collections be repeated if i did't use 'read-onl'? action action_traces transactions? @heifner

heifner commented 6 years ago

action_traces and transaction_traces = yes. Other collections it depends on your version of the code. In the upcoming 1.3 release and the 1.2.5 release all other collections are update not insert.

SpadeRoy commented 6 years ago

@heifner v1.3.0, i use read-mode = read-only, but action_traces found some repeated.

{
        "_id" : ObjectId("5bab4314a96bf30bb08b77c7"),
        "receipt" : {
                "receiver" : "eosio.token",
                "act_digest" : "24ea12634b08f1eacb81fd168032d3b3f8637b2794c1ec371a47a7c9df60fa8b",
                "global_sequence" : 469513299,
                "recv_sequence" : 20101618,
                "auth_sequence" : [
                        [
                                "eosilsee1234",
                                135379
                        ]
                ],
                "code_sequence" : 2,
                "abi_sequence" : 2
        },
        "act" : {
                "account" : "eosio.token",
                "name" : "transfer",
                "authorization" : [
                        {
                                "actor" : "eosilsee1234",
                                "permission" : "active"
                        }
                ],
                "data" : {
                        "from" : "eosilsee1234",
                        "to" : "liuhaoqiang1",
                        "quantity" : "0.0001 EOS",
                        "memo" : "[ https://luckyos.io ][EOS, BLACK, EOSDAC, HORUS] [*Dice, RSP] [MORE *Rewards* than other sites] Betting games. 首款EOS智能合约一元夺宝,熊市不孤单"
                },
                "hex_data" : "4086084ae1e8305510d834ce52d3b48b010000000000000004454f5300000000a3015b2068747470733a2f2f6c75636b796f732e696f205d5b454f532c20424c41434b2c20454f534441432c20484f5255535d205b2a446963652c205253505d205b4d4f5245202a526577617264732a207468616e206f746865722073697465735d2042657474696e672067616d65732e20e9a696e6acbe454f53e699bae883bde59088e7baa6e4b880e58583e5a4bae5ae9defbc8ce7868ae5b882e4b88de5ada4e58d95"
        },
        "context_free" : false,
        "elapsed" : 590,
        "cpu_usage" : 0,
        "console" : "",
        "total_cpu_usage" : 0,
        "trx_id" : "c8b076c2873e1e5d87821f909d3d9f3c0577acf6140638492780d0546434a8c0",
        "block_num" : 18274149,
        "block_time" : "2018-09-25T13:00:02.000",
        "producer_block_id" : "0116d7656b5a1bc10d9c3b64038de0794366337c40a432e419107329ae71d2e3",
        "account_ram_deltas" : [ ],
        "trx_status" : "executed",
        "createdAt" : ISODate("2018-09-26T08:28:04.966Z")
}
{
        "_id" : ObjectId("5bab4314a96bf30bb08b77c8"),
        "receipt" : {
                "receiver" : "eosilsee1234",
                "act_digest" : "24ea12634b08f1eacb81fd168032d3b3f8637b2794c1ec371a47a7c9df60fa8b",
                "global_sequence" : 469513300,
                "recv_sequence" : 45163,
                "auth_sequence" : [
                        [
                                "eosilsee1234",
                                135380
                        ]
                ],
                "code_sequence" : 2,
                "abi_sequence" : 2
        },
        "act" : {
                "account" : "eosio.token",
                "name" : "transfer",
                "authorization" : [
                        {
                                "actor" : "eosilsee1234",
                                "permission" : "active"
                        }
                ],
                "data" : {
                        "from" : "eosilsee1234",
                        "to" : "liuhaoqiang1",
                        "quantity" : "0.0001 EOS",
                        "memo" : "[ https://luckyos.io ][EOS, BLACK, EOSDAC, HORUS] [*Dice, RSP] [MORE *Rewards* than other sites] Betting games. 首款EOS智能合约一元夺宝,熊市不孤单"
                },
                "hex_data" : "4086084ae1e8305510d834ce52d3b48b010000000000000004454f5300000000a3015b2068747470733a2f2f6c75636b796f732e696f205d5b454f532c20424c41434b2c20454f534441432c20484f5255535d205b2a446963652c205253505d205b4d4f5245202a526577617264732a207468616e206f746865722073697465735d2042657474696e672067616d65732e20e9a696e6acbe454f53e699bae883bde59088e7baa6e4b880e58583e5a4bae5ae9defbc8ce7868ae5b882e4b88de5ada4e58d95"
        },
        "context_free" : false,
        "elapsed" : 6,
        "cpu_usage" : 0,
        "console" : "",
        "total_cpu_usage" : 0,
        "trx_id" : "c8b076c2873e1e5d87821f909d3d9f3c0577acf6140638492780d0546434a8c0",
        "block_num" : 18274149,
        "block_time" : "2018-09-25T13:00:02.000",
        "producer_block_id" : "0116d7656b5a1bc10d9c3b64038de0794366337c40a432e419107329ae71d2e3",
        "account_ram_deltas" : [ ],
        "trx_status" : "executed",
        "createdAt" : ISODate("2018-09-26T08:28:04.966Z")
}
{
        "_id" : ObjectId("5bab4314a96bf30bb08b77c9"),
        "receipt" : {
                "receiver" : "liuhaoqiang1",
                "act_digest" : "24ea12634b08f1eacb81fd168032d3b3f8637b2794c1ec371a47a7c9df60fa8b",
                "global_sequence" : 469513301,
                "recv_sequence" : 66,
                "auth_sequence" : [
                        [
                                "eosilsee1234",
                                135381
                        ]
                ],
                "code_sequence" : 2,
                "abi_sequence" : 2
        },
        "act" : {
                "account" : "eosio.token",
                "name" : "transfer",
                "authorization" : [
                        {
                                "actor" : "eosilsee1234",
                                "permission" : "active"
                        }
                ],
                "data" : {
                        "from" : "eosilsee1234",
                        "to" : "liuhaoqiang1",
                        "quantity" : "0.0001 EOS",
                        "memo" : "[ https://luckyos.io ][EOS, BLACK, EOSDAC, HORUS] [*Dice, RSP] [MORE *Rewards* than other sites] Betting games. 首款EOS智能合约一元夺宝,熊市不孤单"
                },
                "hex_data" : "4086084ae1e8305510d834ce52d3b48b010000000000000004454f5300000000a3015b2068747470733a2f2f6c75636b796f732e696f205d5b454f532c20424c41434b2c20454f534441432c20484f5255535d205b2a446963652c205253505d205b4d4f5245202a526577617264732a207468616e206f746865722073697465735d2042657474696e672067616d65732e20e9a696e6acbe454f53e699bae883bde59088e7baa6e4b880e58583e5a4bae5ae9defbc8ce7868ae5b882e4b88de5ada4e58d95"
        },
        "context_free" : false,
        "elapsed" : 12,
        "cpu_usage" : 0,
        "console" : "",
        "total_cpu_usage" : 0,
        "trx_id" : "c8b076c2873e1e5d87821f909d3d9f3c0577acf6140638492780d0546434a8c0",
        "block_num" : 18274149,
        "block_time" : "2018-09-25T13:00:02.000",
        "producer_block_id" : "0116d7656b5a1bc10d9c3b64038de0794366337c40a432e419107329ae71d2e3",
        "account_ram_deltas" : [ ],
        "trx_status" : "executed",
        "createdAt" : ISODate("2018-09-26T08:28:04.966Z")
}
firesWu commented 6 years ago

their receipt. receiver is different.

SpadeRoy commented 6 years ago

oh.. i want to get some account all transactions(newaccount, transfer, delegate...), but now i found some repeated actions. can you help me ? @firesWu

firesWu commented 6 years ago

you can return data where receipt. receiver == act.account

SpadeRoy commented 6 years ago

that's a good idea, thx. @firesWu