go-ethereum/core/rawdb
rjl493456442 e04d63ebd3
core/rawdb: fsync head data file before closing it (#26490)
This PR fixes an issue which might result in data lost in freezer.

Whenever mutation happens in freezer, all data will be written into head data file
and it will be rotated with a new one in case the size of file reaches the threshold.

Theoretically, the rotated old data file should be fsync'd to prevent data loss.
In freezer.Sync function, we only fsync: (1) index file (2) meta file and (3) head
data file. So this PR forcibly fsync the head data file if mutation happens in the
boundary of data file.
2023-01-13 05:55:50 -05:00
..
testdata core/rawdb: avoid unnecessary receipt processing for log filtering (#23147) 2021-09-28 12:54:49 +02:00
accessors_chain.go core: drop legacy receipt types (#26225) 2022-12-03 21:42:11 +01:00
accessors_chain_test.go all: fix some typos (#25551) 2022-08-19 09:00:21 +03:00
accessors_indexes.go core/rawdb: fix logs to print block number, not address (#23328) 2021-08-04 11:10:37 +03:00
accessors_indexes_test.go core/rawdb: single point of maintenance for writing and deleting tx lookup indexes (#21480) 2020-09-15 10:37:01 +02:00
accessors_metadata.go all: cleanup the APIs for initializing genesis (#25473) 2022-08-09 12:44:39 +03:00
accessors_snapshot.go core/rawdb: add specified key length iterator (#24535) 2022-03-15 10:28:26 +02:00
accessors_state.go core/rawdb: add HasCode, HashTrieNode and use them where possible (#24454) 2022-03-09 00:39:34 +01:00
accessors_sync.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
ancient_scheme.go core/rawdb: refactor db inspector for extending multiple ancient store (#25896) 2022-10-28 10:23:49 +02:00
ancient_utils.go core/rawdb: refactor db inspector for extending multiple ancient store (#25896) 2022-10-28 10:23:49 +02:00
chain_freezer.go core/rawdb: fsync head data file before closing it (#26490) 2023-01-13 05:55:50 -05:00
chain_iterator.go core/blockchain: downgrade tx indexing and unindexing logs (#25832) 2022-09-21 09:49:17 +02:00
chain_iterator_test.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
database.go core/rawdb: refactor db inspector for extending multiple ancient store (#25896) 2022-10-28 10:23:49 +02:00
database_test.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
freezer.go core/rawdb: fix freezer validation (#26251) 2022-11-25 09:10:31 +01:00
freezer_batch.go core/rawdb: untie freezer and ancient chain data (#24684) 2022-05-06 13:28:42 +02:00
freezer_meta.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
freezer_meta_test.go all: update license headers and AUTHORS from git history (#24947) 2022-05-24 20:39:40 +02:00
freezer_resettable.go core/rawdb: implement resettable freezer (#26324) 2022-12-19 04:59:12 -05:00
freezer_resettable_test.go core/rawdb: implement resettable freezer (#26324) 2022-12-19 04:59:12 -05:00
freezer_table.go core/rawdb: fsync head data file before closing it (#26490) 2023-01-13 05:55:50 -05:00
freezer_table_test.go cmd, core, ethdb, node: move chain freezer one folder deeper (#25487) 2022-08-08 12:08:36 +03:00
freezer_test.go core/rawdb: fsync head data file before closing it (#26490) 2023-01-13 05:55:50 -05:00
freezer_utils.go all: replace uses of ioutil with io and os (#24869) 2022-05-16 11:59:35 +02:00
freezer_utils_test.go all: more linters (#24783) 2022-06-13 16:24:45 +02:00
key_length_iterator.go core/rawdb: add specified key length iterator (#24535) 2022-03-15 10:28:26 +02:00
key_length_iterator_test.go core/rawdb: add specified key length iterator (#24535) 2022-03-15 10:28:26 +02:00
schema.go core/rawdb: refactor db key prefix (#26000) 2022-10-19 09:53:09 +02:00
table.go core/rawdb: untie freezer and ancient chain data (#24684) 2022-05-06 13:28:42 +02:00
table_test.go all: simplify and fix database iteration with prefix/start (#20808) 2020-04-15 14:08:53 +03:00