Comments (2)
From an earlier email conversation:
Concerning the bug with the sequence numbers. There are two problems.
-
A peer made two messages and gave them the wrong global time value.
This probably results from someone removing their dispersy database
but not their private key. Hence they start creating messages
starting at sequence number 1 again.This could also be a cause of drops, since there are now two
messages, both with the same sequence number. Johan's statistics
picture shows 8866 undo-own message drops by duplicate sequence
number.I vaguely recall that we decided, several years ago, that this
scenario would not occur for normal users. Perhaps we should revise
this? If so we can solve this problem by generating a new
public/private key whenever a user removes the dispersy database. If
no one objects I will implement this for the new version. -
A bigger problem is that apparently peers will accept messages that
have the correct sequence number order but with the wrong global time
order. This I will fix and I will implement a database check for
peers that update to a new tribler version that will find and remove
these invalid messages from the database.
from tribler.
r31912 | boudewijn | 2013-03-11 14:33:13 +0100 (Mon, 11 Mar 2013) | 19 lines
Previously messages that had sequence numbers enabled would not check
the global time ordering. This has resulted in some peers accepting
message A@10#1 and B@9#2. In other words, where the global time
ordering is the reverse of the sequence number ordering.
This problem can occur when a user removes the dispersy.db file but
keeps the files containing the public/private keys. Resulting in a
'reset' of the sequence numbers, and possibly creation of out-of-order
messages.
- bugfix: incoming messages that have sequence numbers enabled (mostly
undo-own and undo-other messages) will now also check the global
time ordering, rejecting those that do not match. - improvement: database upgrade from 15 -> 16 will ensure any
conflicting messages are removed from the database. - improvement: unit tests have been made to verify the above bugfix.
from tribler.
Related Issues (20)
- Blockchain Engineering - class of 2024 - Team Democracy-1: blockchain networking (b) HOT 18
- Blockchain Engineering - class of 2024 - Team Democracy-4: networking of crypto core HOT 18
- Outdated documentation: `state.rst`
- Fix MacOS build on main branch HOT 1
- Json error HOT 2
- Failed to install `ipv8-rust-tunnels` HOT 1
- Error when updating Tribler saying it contains virus or potentially unwanted software HOT 1
- [7.13.3][IPv8] AttributeError: 'socket' object has no attribute 'is_closing' (in UDPEndpoint.close) HOT 3
- [7.13.2] PermissionError when unlinking processes.sqlite "The process cannot access the file because it is being used by another process" HOT 2
- Please add docker version HOT 1
- [ERROR rust_endpoint] Could not send packet to <IP>:<PORT>: Operation not permitted (os error 1)
- Installation failure of requirements on Python 3.10
- ValueError in `query_http_uri`: Can redirect only to http or https HOT 2
- [7.13.3] CoreCrashedError on Linux with error code 4: Interrupted system call (Unterbrechung während des Betriebssystemaufrufs) HOT 2
- [7.13.3] Some database queries can be very slow HOT 1
- [7.13.3] Investigating reasons for CoreConnectTimeoutError
- Segfault on MacOS on main branch build HOT 3
- Popular Page is empty. HOT 1
- UI Layout for the Add Torrent button is corrupted HOT 2
- Reports to Sentry are silently ignored on some Tribler installations
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tribler.