diff options
author | Péter Szilágyi <peterke@gmail.com> | 2019-05-17 07:13:50 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-17 07:13:50 +0800 |
commit | 2f855bfa2893ad0e0fbb0072d317340385091868 (patch) | |
tree | 16e0efe677f6b984c8eb7ee7d39f036951e1a9c8 /eth | |
parent | 8cce620311cdd17f388e8d258a02eb8ccb35adb5 (diff) | |
parent | f35975ea21d4018ea5dccfdce3c420de5b5f5140 (diff) | |
download | go-tangerine-2f855bfa2893ad0e0fbb0072d317340385091868.tar go-tangerine-2f855bfa2893ad0e0fbb0072d317340385091868.tar.gz go-tangerine-2f855bfa2893ad0e0fbb0072d317340385091868.tar.bz2 go-tangerine-2f855bfa2893ad0e0fbb0072d317340385091868.tar.lz go-tangerine-2f855bfa2893ad0e0fbb0072d317340385091868.tar.xz go-tangerine-2f855bfa2893ad0e0fbb0072d317340385091868.tar.zst go-tangerine-2f855bfa2893ad0e0fbb0072d317340385091868.zip |
Merge pull request #19591 from karalabe/64bit-align
core/rawdb, eth/downloader: align 64bit atomic fields
Diffstat (limited to 'eth')
-rw-r--r-- | eth/downloader/downloader.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 495fa0e74..321c4473b 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -98,6 +98,13 @@ var ( ) type Downloader struct { + // WARNING: The `rttEstimate` and `rttConfidence` fields are accessed atomically. + // On 32 bit platforms, only 64-bit aligned fields can be atomic. The struct is + // guaranteed to be so aligned, so take advantage of that. For more information, + // see https://golang.org/pkg/sync/atomic/#pkg-note-BUG. + rttEstimate uint64 // Round trip time to target for download requests + rttConfidence uint64 // Confidence in the estimated RTT (unit: millionths to allow atomic ops) + mode SyncMode // Synchronisation mode defining the strategy used (per sync cycle) mux *event.TypeMux // Event multiplexer to announce sync operation events @@ -109,9 +116,6 @@ type Downloader struct { stateDB ethdb.Database // Database to state sync into (and deduplicate via) stateBloom *trie.SyncBloom // Bloom filter for fast trie node existence checks - rttEstimate uint64 // Round trip time to target for download requests - rttConfidence uint64 // Confidence in the estimated RTT (unit: millionths to allow atomic ops) - // Statistics syncStatsChainOrigin uint64 // Origin block number where syncing started at syncStatsChainHeight uint64 // Highest block number known when syncing started |