1. 15 Mar, 2019 1 commit
    • Steven Allen's avatar
      remove ThreadSafeDatastore · 9f529bc3
      Steven Allen authored
      It's a lie! We:
      
      1. Assume that our datastores are thread-safe all over the place, not bothering
         to check for this interface.
      2. Implement this interface for, e.g., the mount datastore that _may not_ be
         thread-safe (depending on the sub-datastores).
      
      Basically, there's no sane way to to do something like this in go. What we
      _want_ is:
      
      ```rust
      pub trait ThreadSafe {}
      
      struct MyWrapper<D: Datastore> { ... }
      
      impl<D: Datastore> ThreadSafe for MyWrapper<D> where D: ThreadSafe {}
      ```
      
      Actually, we don't even need this because rust has already done all the hard
      work with the `Sync` trait.
      
      ....
      
      But we're using go which barely has types.
      
      ---
      
      For completeness, it's actually possible to do this in go:
      
      ```go
      type threadSafeMixin struct{}
      func (threadSafeMixin) ThreadSafe() {}
      
      func NewWrapper(d Datastore) Datastore {
        if _, ok := d.(ThreadSafe) {
          return &struct{myWrapper, threadSafeMixin}{myWrapper{d}, threadSafeMixin{}}
        }
        return &myWrapper{d}
      }
      ```
      
      Let's not.
      9f529bc3
  2. 28 Jan, 2019 1 commit
  3. 04 Oct, 2018 1 commit
    • Steven Allen's avatar
      add a GetSize method · 1cd3a342
      Steven Allen authored
      We can also add this as an extension but it's simple enough I'd like to add it
      directly to the Datastore.
      
      Use-case: The blockstore now has a GetSize and bitswap uses it for packing
      multiple blocks into a single message. Unfortunately, this means that bitswap is
      now calling blockstore.GetSize which calls datastore.Get which tends to be more
      expensive than datastore.Has.
      1cd3a342
  4. 13 Aug, 2018 1 commit
  5. 26 Jan, 2018 3 commits
  6. 24 Jan, 2018 1 commit
  7. 14 Oct, 2017 1 commit
  8. 04 Jul, 2017 1 commit
  9. 03 Jul, 2017 1 commit
  10. 28 Jun, 2017 1 commit
  11. 27 Jun, 2017 1 commit
  12. 01 Jan, 2016 1 commit
  13. 16 Jul, 2015 1 commit
  14. 02 Jul, 2015 1 commit
    • Jeromy's avatar
      add in support for batched writes · df0989a3
      Jeromy authored
      implement batch ops for different datastore types
      
      rename Transaction to Batch
      
      Revert "add in support for batched writes"
      
      add in benchmarks for put and batchput
      
      move batching into separate interface
      
      address concerns from PR
      
      regrab old code
      df0989a3
  15. 27 Jun, 2015 1 commit
  16. 26 Jun, 2015 2 commits
  17. 16 Mar, 2015 4 commits