diff --git a/httpret/src/api4/binned.rs b/httpret/src/api4/binned.rs
index c293dbd..5c60fe9 100644
--- a/httpret/src/api4/binned.rs
+++ b/httpret/src/api4/binned.rs
@@ -45,7 +45,7 @@ async fn binned_json(url: Url, req: Request
, node_config: &NodeConfigCache
span1.in_scope(|| {
debug!("begin");
});
- let item = streams::timebinnedjson::timebinned_json(&query, &chconf, &node_config.node_config.cluster)
+ let item = streams::timebinnedjson::timebinned_json(query, chconf, node_config.node_config.cluster.clone())
.instrument(span1)
.await?;
let buf = serde_json::to_vec(&item)?;
diff --git a/items_0/src/timebin.rs b/items_0/src/timebin.rs
index e22778e..46ba27c 100644
--- a/items_0/src/timebin.rs
+++ b/items_0/src/timebin.rs
@@ -20,7 +20,7 @@ pub trait TimeBins {
fn ts_min_max(&self) -> Option<(u64, u64)>;
}
-pub trait TimeBinnerTy: fmt::Debug + Unpin {
+pub trait TimeBinnerTy: fmt::Debug + Send + Unpin {
type Input: fmt::Debug;
type Output: fmt::Debug;
@@ -44,7 +44,7 @@ pub trait TimeBinnerTy: fmt::Debug + Unpin {
fn empty(&self) -> Option;
}
-pub trait TimeBinnableTy: fmt::Debug + Sized {
+pub trait TimeBinnableTy: fmt::Debug + Send + Sized {
type TimeBinner: TimeBinnerTy;
fn time_binner_new(&self, binrange: BinnedRangeEnum, do_time_weight: bool) -> Self::TimeBinner;
diff --git a/items_0/src/transform.rs b/items_0/src/transform.rs
index 428f317..4127e94 100644
--- a/items_0/src/transform.rs
+++ b/items_0/src/transform.rs
@@ -157,6 +157,22 @@ impl TimeBinnableStreamTrait for TimeBinnableStreamBox {}
pub struct CollectableStreamBox(pub Pin>);
+impl Stream for CollectableStreamBox {
+ type Item = Sitemty>;
+
+ fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll