erigon-pulse/erigon-lib
battlmonstr 1914b52de0
mdbx: race conditions in MdbxKV.Close (#8409) (#9244)
In the previous code WaitGroup db.wg.Add(), Wait() and db.closed were
not treated in sync. In particular, it was theoretically possible to
first check closed, then set closed and Wait, and then call wg.Add()
while waiting (leading to WaitGroup panic).
In theory it was also possible that db.env.BeginTxn() is called on a
closed or nil db.env, because db.wg.Add() was called only after BeginTxn
(db.wg.Wait() could already return).

WaitGroup is replaced with a Cond variable.
Now it is not possible to increase the active transactions count on a
closed database. It is also not possible to call BeginTxn on a closed
database.
2024-01-17 15:28:37 +01:00
..
.github/workflows Update mingw cmake version for windows (#8856) 2023-11-29 19:10:49 +07:00
bptree Add 'erigon-lib/' from commit '93d9c9d9fe4bd8a49f7a98a6bce0f0da7094c7d3' 2023-09-20 14:50:25 +02:00
chain Implement PIP-33: Napoli Hardfork (#8975) 2024-01-17 14:13:16 +01:00
commitment Add 'erigon-lib/' from commit '93d9c9d9fe4bd8a49f7a98a6bce0f0da7094c7d3' 2023-09-20 14:50:25 +02:00
common polygon/sync: canonical chain builder (#9117) 2024-01-04 10:44:57 +01:00
compress E2 snapshot uploading (#9056) 2023-12-27 22:05:09 +00:00
crypto Sentinel refactor (#8296) 2023-10-22 01:17:18 +02:00
diagnostics dvovk/updsync (#9134) 2024-01-08 10:43:04 +01:00
direct glob filter (#9148) 2024-01-07 12:03:17 -06:00
downloader fix udpOrHttpTrackers amount (#9245) 2024-01-17 14:21:39 +07:00
etl etl: more tests (#8534) 2023-10-20 13:54:46 +07:00
gointerfaces glob filter (#9148) 2024-01-07 12:03:17 -06:00
kv mdbx: race conditions in MdbxKV.Close (#8409) (#9244) 2024-01-17 15:28:37 +01:00
metrics refactor(erigon-lib/metrics): replace strings.IndexByte with strings.Cut (#9202) 2024-01-12 13:07:49 +00:00
mmap Fixes for Bor Block Production Synchronization (#9162) 2024-01-10 17:12:15 +00:00
patricia Upgrade libp2p (enables go 1.21 support) (#8288) 2023-09-29 22:11:13 +02:00
pedersen_hash Sentinel refactor (#8296) 2023-10-22 01:17:18 +02:00
recsplit recsplit: reduce ram pressure (#9218) 2024-01-12 11:26:20 +01:00
rlp Fix rlp.EncodeString for length 56 (#8528) 2023-10-19 11:45:19 +02:00
rlp2 rlp2 (#8643) 2023-11-04 09:22:11 +07:00
sais Add 'erigon-lib/' from commit '93d9c9d9fe4bd8a49f7a98a6bce0f0da7094c7d3' 2023-09-20 14:50:25 +02:00
state recsplit: reduce ram pressure (#9218) 2024-01-12 11:26:20 +01:00
tools sys deps up (#8695) 2023-11-11 15:04:18 +03:00
txpool Move blob cache check in txpool (#9250) 2024-01-17 17:46:02 +04:00
types sys deps up (#8695) 2023-11-11 15:04:18 +03:00
wrap [E3] Some fixes for the in-memory database when working with Caplin (… (#9164) 2024-01-09 08:26:26 +07:00
.gitignore Add 'erigon-lib/' from commit '93d9c9d9fe4bd8a49f7a98a6bce0f0da7094c7d3' 2023-09-20 14:50:25 +02:00
.golangci.yml sys deps up (#8695) 2023-11-11 15:04:18 +03:00
go.mod return 1 lost mainnet file (#9242) 2024-01-17 14:21:51 +07:00
go.sum return 1 lost mainnet file (#9242) 2024-01-17 14:21:51 +07:00
LICENSE Add 'erigon-lib/' from commit '93d9c9d9fe4bd8a49f7a98a6bce0f0da7094c7d3' 2023-09-20 14:50:25 +02:00
Makefile ci: go mod tidy check (#8263) 2023-09-22 14:04:25 +07:00
README.md make: refactor erigon-lib make tasks (#8249) 2023-09-21 13:50:59 +02:00
rules.go fix-rules-typo (#8681) 2023-11-09 07:40:24 +03:00
tools.go erigon-lib: cleanup unnnecessary import in tools.go added in prev PR (#9190) 2024-01-10 19:16:25 +07:00

erigon-lib

Parts of Erigon codebase, written from scratch and licensed under Apache 2.0.

License requirements

erigon-lib dependencies use various open source licenses compatible with Apache 2.0. This is checked on CI using make lint-licenses.

In order to keep license purity it is not allowed to refer to the code in the erigon root module from erigon-lib. This is ensured by the go.mod separation.

It is not allowed to copy or move code from erigon to erigon-lib unless all original authors agree to relief the code license from GPL to Apache 2.0.

Code migration policy

It is encouraged to write new erigon code inside erigon-lib.

It is encouraged to move and relicense parts of the code from erigon to erigon-lib that are safe and easy to move. For example, code written from scratch by erigon core contributors that has no significant external contributions could be refactored and moved.