mit-pdos / noria

Fast web applications through dynamic, partially-stateful dataflow
Apache License 2.0
4.97k stars 241 forks source link

Build Errors when interfacing with the evmap crate #181

Open pratikfegade opened 3 years ago

pratikfegade commented 3 years ago

Hi,

I'm trying to build Noria on the following system:

OS and distribution: Lubuntu 20.10, Linux kernel 5.8.0-25-generic Rust: rustc 1.53.0-nightly (c051c5ddd 2021-04-06) Noria commit: cd639f57e8fa3fa1cdc1ca3a4c7ef3cedbe45c8c. This is the master's HEAD at the time of writing this issue.

I get the following compile errors. It seems all have to do with interfacing with the evmap crate

   Compiling noria-dataflow v0.7.0 (/home/ppf/Documents/noria/noria/server/dataflow)
error[E0603]: struct `ReadHandle` is private
   --> server/dataflow/src/backlog/multir.rs:7:19
    |
7   |     Single(evmap::ReadHandle<DataType, Vec<DataType>, i64, RandomState>),
    |                   ^^^^^^^^^^ private struct
    |
note: the struct `ReadHandle` is defined here

error[E0603]: struct `ReadHandle` is private
   --> server/dataflow/src/backlog/multir.rs:8:19
    |
8   |     Double(evmap::ReadHandle<(DataType, DataType), Vec<DataType>, i64, RandomState>),
    |                   ^^^^^^^^^^ private struct
    |
note: the struct `ReadHandle` is defined here

error[E0603]: struct `ReadHandle` is private
   --> server/dataflow/src/backlog/multir.rs:9:17
    |
9   |     Many(evmap::ReadHandle<Vec<DataType>, Vec<DataType>, i64, RandomState>),
    |                 ^^^^^^^^^^ private struct
    |
note: the struct `ReadHandle` is defined here

error[E0603]: struct `WriteHandle` is private
   --> server/dataflow/src/backlog/multiw.rs:7:19
    |
7   |     Single(evmap::WriteHandle<DataType, Vec<DataType>, i64, RandomState>),
    |                   ^^^^^^^^^^^ private struct
    |
note: the struct `WriteHandle` is defined here

error[E0603]: struct `WriteHandle` is private
   --> server/dataflow/src/backlog/multiw.rs:8:19
    |
8   |     Double(evmap::WriteHandle<(DataType, DataType), Vec<DataType>, i64, RandomState>),
    |                   ^^^^^^^^^^^ private struct
    |
note: the struct `WriteHandle` is defined here

error[E0603]: struct `WriteHandle` is private
   --> server/dataflow/src/backlog/multiw.rs:9:17
    |
9   |     Many(evmap::WriteHandle<Vec<DataType>, Vec<DataType>, i64, RandomState>),
    |                 ^^^^^^^^^^^ private struct
    |
note: the struct `WriteHandle` is defined here

warning: unnecessary trailing semicolon
   --> server/dataflow/src/ops/topk.rs:224:10
    |
224 |         };
    |          ^ help: remove this semicolon
    |
    = note: `#[warn(redundant_semicolons)]` on by default

error[E0308]: mismatched types
  --> server/dataflow/src/backlog/mod.rs:55:39
   |
55 |             (multir::Handle::$variant(r), multiw::Handle::$variant(w))
   |                                       ^ expected struct `ReadHandle`, found struct `evmap::handles::WriteHandle`
...
61 |         1 => make!(Single),
   |              ------------- in this macro invocation
   |
   = note: expected struct `ReadHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>`
              found struct `evmap::handles::WriteHandle<_, _, {integer}, ahash::RandomState>`
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
  --> server/dataflow/src/backlog/mod.rs:55:68
   |
55 |             (multir::Handle::$variant(r), multiw::Handle::$variant(w))
   |                                                                    ^ expected struct `evmap::handles::WriteHandle`, found struct `ReadHandle`
...
61 |         1 => make!(Single),
   |              ------------- in this macro invocation
   |
   = note: expected struct `evmap::handles::WriteHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>`
              found struct `ReadHandle<_, _, {integer}, ahash::RandomState>`
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
  --> server/dataflow/src/backlog/mod.rs:55:39
   |
55 |             (multir::Handle::$variant(r), multiw::Handle::$variant(w))
   |                                       ^ expected struct `ReadHandle`, found struct `evmap::handles::WriteHandle`
...
62 |         2 => make!(Double),
   |              ------------- in this macro invocation
   |
   = note: expected struct `ReadHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>`
              found struct `evmap::handles::WriteHandle<_, _, {integer}, ahash::RandomState>`
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
  --> server/dataflow/src/backlog/mod.rs:55:68
   |
55 |             (multir::Handle::$variant(r), multiw::Handle::$variant(w))
   |                                                                    ^ expected struct `evmap::handles::WriteHandle`, found struct `ReadHandle`
...
62 |         2 => make!(Double),
   |              ------------- in this macro invocation
   |
   = note: expected struct `evmap::handles::WriteHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>`
              found struct `ReadHandle<_, _, {integer}, ahash::RandomState>`
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
  --> server/dataflow/src/backlog/mod.rs:55:39
   |
55 |             (multir::Handle::$variant(r), multiw::Handle::$variant(w))
   |                                       ^ expected struct `ReadHandle`, found struct `evmap::handles::WriteHandle`
...
63 |         _ => make!(Many),
   |              ----------- in this macro invocation
   |
   = note: expected struct `ReadHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>`
              found struct `evmap::handles::WriteHandle<_, _, {integer}, ahash::RandomState>`
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
  --> server/dataflow/src/backlog/mod.rs:55:68
   |
55 |             (multir::Handle::$variant(r), multiw::Handle::$variant(w))
   |                                                                    ^ expected struct `evmap::handles::WriteHandle`, found struct `ReadHandle`
...
63 |         _ => make!(Many),
   |              ----------- in this macro invocation
   |
   = note: expected struct `evmap::handles::WriteHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>`
              found struct `ReadHandle<_, _, {integer}, ahash::RandomState>`
   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no method named `read` found for reference `&ReadHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
  --> server/dataflow/src/backlog/multir.rs:28:29
   |
28 |                 let map = h.read()?;
   |                             ^^^^ method not found in `&ReadHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>`

error[E0599]: no method named `read` found for reference `&ReadHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
  --> server/dataflow/src/backlog/multir.rs:57:33
   |
57 |                     let map = h.read()?;
   |                                 ^^^^ method not found in `&ReadHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>`

error[E0599]: no method named `read` found for reference `&ReadHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
  --> server/dataflow/src/backlog/multir.rs:64:29
   |
64 |                 let map = h.read()?;
   |                             ^^^^ method not found in `&ReadHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>`

warning: use of deprecated associated function `evmap::handles::WriteHandle::<K, V, M, S>::empty`: Renamed to remove_entry
  --> server/dataflow/src/backlog/multiw.rs:38:19
   |
38 |                 h.empty(key_to_single(k).into_owned());
   |                   ^^^^^
   |
   = note: `#[warn(deprecated)]` on by default

warning: use of deprecated associated function `evmap::handles::WriteHandle::<K, V, M, S>::empty`: Renamed to remove_entry
  --> server/dataflow/src/backlog/multiw.rs:41:19
   |
41 |                 h.empty(key_to_double(k).into_owned());
   |                   ^^^^^

warning: use of deprecated associated function `evmap::handles::WriteHandle::<K, V, M, S>::empty`: Renamed to remove_entry
  --> server/dataflow/src/backlog/multiw.rs:44:19
   |
44 |                 h.empty(k.into_owned());
   |                   ^^^^^

error[E0599]: no method named `refresh` found for mutable reference `&mut evmap::handles::WriteHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
  --> server/dataflow/src/backlog/multiw.rs:67:19
   |
67 |                 h.refresh();
   |                   ^^^^^^^ method not found in `&mut evmap::handles::WriteHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>`

error[E0599]: no method named `refresh` found for mutable reference `&mut evmap::handles::WriteHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
  --> server/dataflow/src/backlog/multiw.rs:70:19
   |
70 |                 h.refresh();
   |                   ^^^^^^^ method not found in `&mut evmap::handles::WriteHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>`

error[E0599]: no method named `refresh` found for mutable reference `&mut evmap::handles::WriteHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
  --> server/dataflow/src/backlog/multiw.rs:73:19
   |
73 |                 h.refresh();
   |                   ^^^^^^^ method not found in `&mut evmap::handles::WriteHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>`

error[E0599]: no method named `read` found for reference `&evmap::handles::WriteHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
  --> server/dataflow/src/backlog/multiw.rs:85:29
   |
85 |                 let map = h.read()?;
   |                             ^^^^ method not found in `&evmap::handles::WriteHandle<noria_common::DataType, Vec<noria_common::DataType>, i64, ahash::RandomState>`

error[E0599]: no method named `read` found for reference `&evmap::handles::WriteHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
   --> server/dataflow/src/backlog/multiw.rs:114:33
    |
114 |                     let map = h.read()?;
    |                                 ^^^^ method not found in `&evmap::handles::WriteHandle<(noria_common::DataType, noria_common::DataType), Vec<noria_common::DataType>, i64, ahash::RandomState>`

error[E0599]: no method named `read` found for reference `&evmap::handles::WriteHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>` in the current scope
   --> server/dataflow/src/backlog/multiw.rs:121:29
    |
121 |                 let map = h.read()?;
    |                             ^^^^ method not found in `&evmap::handles::WriteHandle<Vec<noria_common::DataType>, Vec<noria_common::DataType>, i64, ahash::RandomState>`
jonhoo commented 3 years ago

Ah, yes, this is probably because evmap has changed a fair amount since the latest commit on master, but it did so using additional alpha versions. I think you can fix this by changing the evmap dependency in Cargo.toml to start with a leading = so that you pin to that specific version of evmap!

pratikfegade commented 3 years ago

Thanks! That worked.