Skip to content

Instantly share code, notes, and snippets.

@joehand
Created March 15, 2019 17:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joehand/ad9d3a3dc7f7d7ab611307d396025fbe to your computer and use it in GitHub Desktop.
Save joehand/ad9d3a3dc7f7d7ab611307d396025fbe to your computer and use it in GitHub Desktop.
var hyperdrive = require('hyperdrive')
var pump = require('pump')
var fs = require('fs')
var storage = require('dat-storage')
var source = hyperdrive('./source')
source.ready(() => {
var dest = hyperdrive(storage('./dest'), source.key, {
latest: true, sparse: false
})
dest.on('syncing', () => {
console.log('dest syncing')
console.log(' dest version:', dest.version)
console.log(' source version:', source.version)
})
dest.on('sync', () => {
console.log('dest sync, version:', dest.version)
})
setInterval(() => {
source.readFile('hi.txt', 'utf8', (err,data) => {
if (!data) data = ''
source.writeFile('hi.txt', data + new Date() + '\n')
})
}, 1000)
var stream = dest.replicate({live: true})
stream.pipe(source.replicate()).pipe(stream)
})
{
"name": "latest-cpu",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"dat-storage": "^1.1.1",
"hyperdrive": "^9.14.2",
"pump": "^3.0.0"
}
}
@joehand
Copy link
Author

joehand commented Mar 15, 2019

Run:

node index.js

With each import you'll see more syncing and sync outputs.

@joehand
Copy link
Author

joehand commented Mar 15, 2019

Example output:

dest syncing
  dest version: 10
  source version: 10
dest syncing
  dest version: 10
  source version: 10
dest sync, version: 10
dest sync, version: 10
dest syncing
  dest version: 11
  source version: 11
dest syncing
  dest version: 11
  source version: 11
dest syncing
  dest version: 11
  source version: 11
dest syncing
  dest version: 11
  source version: 11
dest sync, version: 11
dest sync, version: 11
dest sync, version: 11
dest sync, version: 11
dest syncing
  dest version: 12
  source version: 12
dest syncing
  dest version: 12
  source version: 12
dest syncing
  dest version: 12
  source version: 12
dest syncing
  dest version: 12
  source version: 12
dest syncing
  dest version: 12
  source version: 12
dest syncing
  dest version: 12
  source version: 12
dest syncing
  dest version: 12
  source version: 12
dest syncing
  dest version: 12
  source version: 12
dest sync, version: 12
dest sync, version: 12
dest sync, version: 12
dest sync, version: 12
dest sync, version: 12
dest sync, version: 12
dest sync, version: 12
dest sync, version: 12
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest syncing
  dest version: 13
  source version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest sync, version: 13
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest syncing
  dest version: 14
  source version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14
dest sync, version: 14

@allain
Copy link

allain commented Mar 15, 2019

If it helps the issue persists with random-access-memory as the storage backend.

@jedahan
Copy link

jedahan commented Mar 15, 2019

Interesting enough, when I switched to the v10 branch and changed 'syncing' to 'update', things look okay:

dest syncing
  dest version: 290
  source version: 290
dest syncing
  dest version: 291
  source version: 291
dest syncing
  dest version: 292
  source version: 292
dest syncing
  dest version: 293
  source version: 293
dest syncing
  dest version: 294
  source version: 294
dest syncing
  dest version: 295
  source version: 295
dest syncing
  dest version: 296
  source version: 296
dest syncing
  dest version: 297
  source version: 297
dest syncing
  dest version: 298
  source version: 298
dest syncing
  dest version: 299
  source version: 299

@jedahan
Copy link

jedahan commented Mar 15, 2019

It might be great to include this in the general hyperdrive tests

@joehand
Copy link
Author

joehand commented Mar 15, 2019

Hmmm @jedahan I still saw the same bug with node v10.

@joehand
Copy link
Author

joehand commented Mar 15, 2019

@allain, ya seems this is happening whenever latest: true regardless of storage.

@allain
Copy link

allain commented Mar 16, 2019

_fetchVersion callback is called multiple times https://github.com/mafintosh/hyperdrive/blob/acf7d5416d4a189170a13073012176b5c5c4c0cd/index.js#L184

That should help narrow down the bug.

It happens on node v9, v10, and v11 for me.

@jedahan
Copy link

jedahan commented Mar 16, 2019

@joehand @allain sorry, I meant node 11, but the v10 branch of hyperdrive

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment