Giter Club home page Giter Club logo

Comments (5)

haydenyoung avatar haydenyoung commented on June 12, 2024 1

At a glance, the aggregate error would suggest an issue from reading records from the underlying IPFS blockstore. My hunch is that, for whatever reason, the in-memory blockstore is being unloaded and reloaded resulting in the inability for OrbitDB to read the blocks. Deleting a record may trigger a re-read of the blocks (perhaps for re-indexing).

Can I replicate the issue from deContact? If not, I'll hopefully have some time to try and set up a test to isolate the problem.

from orbitdb.

haydenyoung avatar haydenyoung commented on June 12, 2024 1

After testing with both @silkroadnomad and the libp2p devs, we are thinking the problem is related to the stream returned by libp2p.dial() prematurely breaking. According to the libp2p devs, the a connection should be re-established but this does not seem to be the case. The workaround suggestion is to provide some kind of keep-alive to ensure two peers are reconnected if the connection prematurely ends.

from orbitdb.

silkroadnomad avatar silkroadnomad commented on June 12, 2024

I'll try to give you some more info on how to reproduce it:

  1. it seems not reproducible when locally adding values to the documents db and then deleting it
  2. it seems connected with the 'del' operation and syncs between other orbitdb instances.
  3. it is sort of reproducible if I have a "clean" db (Chrome)
    • which was replicated before to another device
    • then dropped
    • new records added
    • replication re-replicates from db of the second device
    • then delete the manually added record (-> crash)
  4. Current Test-Szenario (which should reproduce it - unconfirmed yet) - between Brave and Opera
  • clean db with 2 records on device A
  • replicate it with another device B
  • drop the db on the on device A
  • add a new record on device A
  • wait for replication with device B
  • delete one replicated record (no problem)
  • delete one new record (db crashes and needs to be dropped again)
    (I repeat this procedure is at the time of writing my assumption but not 100% confirmed by another test with other browsers)
  1. After testing No 4 between Brave and Opera this scenario could not be reproduced. But problem is reproducable in my Chrome (maybe its just mine) doesn't make too much sense at the moment.
  2. Re-Test with Chrome with a fresh identity (no previous replication) resulted in a not reproducible scenario like described under No 4. -> Reproducibility for now not possible anymore
  3. Truying some "wild testing" again -> Result: At the moment impossible to crash the replication between 4 different browsers (Chrome, Firefox, Opera, Brave)
  4. Truying to use the same identity of Chrome now on the Android phone in the PWA (so both devices replicate each other)

from orbitdb.

silkroadnomad avatar silkroadnomad commented on June 12, 2024

I can't reproduce it anymore. But I guess it is hiding somewhere around the corner. But until then I'll close the issue to reduce the whole noise it makes. ;)

from orbitdb.

silkroadnomad avatar silkroadnomad commented on June 12, 2024

Just made another test with two Brave browsers (one Mac - one Linux) with a collegue and could reproduce the problem one more time in the following scenario:

  1. I added a record on my Brave (fresh identity with fresh and clean db)
  2. Collegue added a record (fresh identity with fresh and clean db)
  3. College replicated my db and wrote a record into my db
  4. I replicated his db and wrote a record into his db
  5. Replications ok - I deleted his record in my db -> db crash

I will try now to reproduce this with another person! At least this proofs now that my Chrome is not some sort of strangely misconfigured since I used a completely empty Brave for that.

from orbitdb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.