IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
354: add DHT get and put r=koivunej a=ljedrz
While I'm looking at the curious Windows crashes with `/dns` and `/resolve`, we can expand territories elsewhere: I've had these functionalities implemented in a branch building one the recently merged PRs; there's no counterpart HTTP endpoints yet, as the conformance tests use functionalities that we're not implementing yet; these features are less interesting for the HTTP API anyway.
Co-authored-by: ljedrz <ljedrz@gmail.com>
359: This PR uses libp2p dns, so that /dns4 and /dns6 multiaddrs can be dialed. r=koivunej a=rklaehn
Not quite sure how to best test this without having a test that uses the dns of the CI server. Any ideas?
Co-authored-by: Rüdiger Klaehn <rklaehn@protonmail.com>
360: test: common fs and mem pinstore tests r=aphelionz a=koivunej
Continues the long chain of pin PRs from #358. Refactors the previously custom tempdir hack and system polluting repo tests into a macro based which can be re-generated for each datastore implementation. Of course this revealed issues on both fs and mem pinstores but they were more about me not understanding the rules before three implementations :) Lets fix later if we find out more inconsistencies.
The macro approach is the only one I can see, looks pretty bad and if there are errors those will be even uglier.
Co-authored-by: Joonas Koivunen <joonas@equilibrium.co>
Co-authored-by: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
358: feat: fs pinstore r=aphelionz a=koivunej
Adds filesystem based pin store. See adec0a8a75a6512e9ace4a953240a399962da25e for TL;DR.
Builds upon #357. Only last N commits are new after including 159a1c5ca7fcb478b029eb031c6f2012c7506822. Even windows seems ok. base32lower is used to encode the cid names.
TODO:
- [x] at least the tests written for ipfs::repo::mem but will post another PR
The differences to other impls are not explained as I am not sure if I am up to date with the other implementations.
Co-authored-by: Joonas Koivunen <joonas@equilibrium.co>
this allows using the owned permit and more importantly moving it to the
threadpool thread, which is not necessarily bound to the task lifetime.
there is just one permit per datastore at the moment, but making this
per cid for example shouldn't be too difficult.
having a global lock will be needed later on, not sure how to implement
it though.
this is implemented using a blockstore alike sharding implementation.
for recursive pins, a json Vec<String> is stored and used mostly
linearly (eh, something to improve). for direct pins, empty files are
used. the pin files have different file extensions.
lets see if this works in windows as well.
357: refactor: move recursive pinning details below r=aphelionz a=koivunej
Builds on #355; does not select the strategy for fs pinstore.
This does change the locking on ipfs::repo::mem but not so that it would be caught in the conformance tests. Probably the change is for the better.
Relevant 4 commits: 588e020236..159a1c5ca7
Co-authored-by: Joonas Koivunen <joonas@equilibrium.co>
this was a fault in the first inmem run. now the APIs are looking a
bit more suitable for a fs implementation: instead of walking over the
refs in ipfs::Ipfs level a stream is passed over to repo level for the
operation.
355: fix: fs blockstore r=aphelionz a=koivunej
This fixes the racing writers issue which the implementation has had for a long time; multiple writers would come in and all would write over the same file, multiple times, allowing readers to observe partial writes in the meantime. This covers most of the changes.
In addition ipfs-http now uses the file block store. There was some transient macosx failures.
### Checklist (can be deleted from PR description once items are checked)
- [x] **New** code is “linted” i.e. code formatting via rustfmt and language idioms via clippy
- [x] There are no extraneous changes like formatting, line reordering, etc. Keep the patch sizes small!
- [x] There are functional and/or unit tests written, and they are passing
- [x] There is suitable documentation. In our case, this means:
- [ ] Each command has a usage example and API specification
- [ ] Rustdoc tests are passing on all code-level comments
- [ ] Differences between Rust’s IPFS implementation and the Go or JS implementations are explained
Co-authored-by: Joonas Koivunen <joonas@equilibrium.co>
Co-authored-by: Joonas Koivunen <joonas.koivunen@gmail.com>
quite similar issues as with subscriptionfutures, how to get the
synchronization key removed from the map. trying with similar but
perhaps simpler drop guard.
using repocid wrapper is more correct than not having one. there is
still a chance in this to fail, since we are writing the cidv1 to disk
but the repocid will block on multihash. Hmm.. This might be ok
after all.