Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

πŸš€ 0.22.0 Release #756

Closed
15 of 22 tasks
daviddias opened this issue Feb 7, 2017 · 18 comments
Closed
15 of 22 tasks

πŸš€ 0.22.0 Release #756

daviddias opened this issue Feb 7, 2017 · 18 comments

Comments

@daviddias
Copy link
Member

daviddias commented Feb 7, 2017

We are close to cut a 0.22.0 release that includes a ton of bug fixes and new features in IPLD land.

Highlights

βœ… New API: DAG - Manipulate all your IPLD format objects

Now you can use a new DAG API to create dag-pb, dag-cbor or any IPLD Format compatible node really! Consult https://github.com/ipfs/interface-ipfs-core/tree/master/API/dag to learn how to use this new API.

βœ… Test codebase refactor

We've removed a lot of duplicated and dead code from tests in js-ipfs and js-ipfs-api, tests now run faster and are more easy to write. This refactor also fixed a release bug on js-ipfs-api that would make the process run out of memory when running aegir-release.

βœ… WebWorker support. πŸ’– @dryajov

βœ… Documentation

The README was updated to make it more clear where the project roadmap lives and how the codebase is structured. You can now find a diagram for the code architecture too.

Examples were updated and polished.

βœ… --hashAlg and --format support on the Block API. πŸ’– @kumavis

βœ… Railing is now optional

Enable Railing (connecting to the bootstrapers) is now an 'experimental' feature, enable it with the BOOTSTRAP env variable. This enables you to fetch content with js-ipfs that is available on the gateways.

βœ… Bug fixes

  • files.get and files.add now work for recursive dirs with empty files. πŸ’– @pgte

Release check list

What you can do to help get release done faster

Test your code against js-ipfs master and let us know if you find any hiccups?

@daviddias daviddias changed the title πŸš€ 0.22.0 release πŸš€ 0.22.0 Release Feb 10, 2017
@daviddias
Copy link
Member Author

daviddias commented Feb 10, 2017

@kumavis how is the testing on ipld/js-ipld#78 going? I'm really tempted in cutting this release and enable people to experiment the DAG API plus not have troubles installing it from npm and then releasing a patch version with all the ethereum resolvers.

Thoughts?

@daviddias daviddias added the status/ready Ready to be worked label Feb 10, 2017
@daviddias
Copy link
Member Author

daviddias commented Feb 10, 2017

@kumavis
Copy link
Contributor

kumavis commented Feb 11, 2017

eth-resolvers are ready to go

@daviddias
Copy link
Member Author

Last mile for this release, Orbit testing with the new js-ipfs :)

orbit-db

Currently, not every test of orbit-db passes on master, before the link

  orbit-db replication
    two peers
Waiting for peers...
      1) replicates database of 1 entry
Waiting for peers...
      2) replicates database of 100 entries


  108 passing (2m)
  2 failing

  1) orbit-db replication two peers replicates database of 1 entry:
     Error: Timeout of 40000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.


  2) orbit-db replication two peers replicates database of 100 entries:
     Error: Timeout of 40000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

orbit-core

It fails on test:

  1) Orbit "before all" hook:
     TypeError: Cannot create property 'EXPERIMENTAL' on string './ipfs'
      at new IPFS (/Users/koruza/code/js-ipfs/src/core/index.js:22:29)
      at Promise (node_modules/ipfs-daemon/src/ipfs-node-daemon.js:40:22)
      at IpfsNodeDaemon._initDaemon (node_modules/ipfs-daemon/src/ipfs-node-daemon.js:39:12)
      at IpfsNodeDaemon._start (node_modules/ipfs-daemon/src/ipfs-node-daemon.js:24:17)
      at new IpfsNodeDaemon (node_modules/ipfs-daemon/src/ipfs-node-daemon.js:20:10)
      at Context.<anonymous> (test/orbit.test.js:49:14)

This is due to the change on IPFS creation, now when you create an instance, you have to do:

const node = new IPFS({
  repo: <repo path>
  EXPERIMENTAL: {
    pubsub: true
  }
})

@haadcode could you prepare orbit-core for the new version?

ipfs-log

Same problem as orbit-core

 Entry with js-ipfs
TypeError: Cannot create property 'EXPERIMENTAL' on string '/tmp/ipfs-log-test'
    at new IPFS (/Users/koruza/code/js-ipfs/src/core/index.js:22:29)
    at Promise (/Users/koruza/code/ipfs-log/node_modules/i

@haadcode
Copy link
Member

Working on it

@haadcode
Copy link
Member

@diasdavid I updated all repos for this. You should be able to run the tests with latest ipfs by doing:

cd <project>/
rm -rf node_modules/
npm i
npm link ipfs
npm test

I ran tests for all the above repos with js-ipfs from master and they all succeed except one. The one failing is the replication test in orbit-db which syncs the databases via pubsub. There's a pre-condition for the test that the peers must be connected and this is checked with ipfs.pubsub.peers(dbname) which never seem to return any peers. Perhaps something in pubsub was changed?

@kumavis
Copy link
Contributor

kumavis commented Feb 14, 2017

- [ ] Integrate remaining eth resolvers ipld/js-ipld-resolver#71 (comment)

just need to bump dep ipld-resolver to 0.9.0

@daviddias
Copy link
Member Author

daviddias commented Feb 15, 2017

ipfs.pubsub.peers(dbname) which never seem to return any peers. Perhaps something in pubsub was changed?

@haadcode that is an easy fix, pubsub is now behind an EXPERIMENTAL boolean as recommended by @whyrusleeping

Let me know if you have success after enabling PubSub, which is disabled by default.

As for the rest, AWESOME πŸ‘ŒπŸ½πŸ€˜πŸ½

@haadcode
Copy link
Member

@diasdavid I added the flag to the IPFS init sequence as described in the doc: https://github.com/haadcode/ipfs-daemon/blob/master/src/ipfs-node-daemon.js#L40. Did I miss something?

@daviddias
Copy link
Member Author

Oh, that means something is broken. What does ipfs.swarm.peers return you?

@haadcode
Copy link
Member

What does ipfs.swarm.peers return you?

Empty array, []

@daviddias
Copy link
Member Author

It means that your peers are not connected. Where is the swarm.connect call? Can you verify that it returns with success?

@haadcode
Copy link
Member

It means that your peers are not connected. Where is the swarm.connect call? Can you verify that it returns with success?

There's no swarm.connect call. Previously, the peers always found each other automatically.

@daviddias
Copy link
Member Author

Can you do a config.get of your node for me?

@daviddias
Copy link
Member Author

daviddias commented Feb 15, 2017

Found the issue, you were subscribing to a topic and waiting for peers in another topic, that is why there was peers in the swarm but never in the topic pool:

  orbit-db replication
Swarm listening on /ip4/127.0.0.1/tcp/51980
Swarm listening on /ip4/192.168.2.29/tcp/51980
Swarm listening on /ip4/192.168.2.215/tcp/51980
Swarm listening on /ip4/127.0.0.1/tcp/51981
Swarm listening on /ip4/192.168.2.29/tcp/51981
Swarm listening on /ip4/192.168.2.215/tcp/51981
    two peers
GOING TO SUBSCRIBE oribt-db-tests
GOING TO SUBSCRIBE oribt-db-tests
Waiting for peers for 'oribt-db-tests2'...

Removing the + 2 makes the test successful https://github.com/haadcode/orbit-db/blob/master/test/replicate.test.js#L96

@daviddias
Copy link
Member Author

Got greenlight from @haadcode ✳️

@daviddias
Copy link
Member Author

daviddias commented Feb 15, 2017

\o/ https://github.com/ipfs/js-ipfs/releases v0.22.0

@whyrusleeping
Copy link
Member

πŸ‘‹ "Wow" πŸ‘‹

@daviddias daviddias removed the status/ready Ready to be worked label Feb 15, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants