Repository: golemfactory/yagna (language: python)

Issue:
VPN Goth tests are failing: connection problem
Goth test using VPN was failing on branch:  https://github.com/golemfactory/yapapi/tree/0.10/bump-goth


Locally it was passing.
Interesting error in logs:
`On forward failed: NodeEntry for node id 0x14e2058288b25cf986dba56568c7babf0a149778 not found`
Hypothesis: it indicates some problem with `ya-relay-client`
`ya-relay-client` was update after `pre-rel-v0.12.0-rc5`
Client was bumped up last time here: https://github.com/golemfactory/yagna/commit/1f3721dae89a2ac40b486d5a72e0e320e4d00922
It included this change: https://github.com/golemfactory/ya-relay/pull/220/files

Running `pre-rel-v0.12.0-rc5` on Github Actions solves problem: https://github.com/golemfactory/yapapi/actions/runs/3749231233


Discussion / hints:
confirming the tests to be consistently failing on 0.12-rc6 and consistently passing on 0.12-rc5
It seems that the problem is introduced by: https://github.com/golemfactory/ya-relay/pull/220
Branch in yapapi: evik42/yagna-test-please-build (PR: https://github.com/golemfactory/yapapi/pull/1112)
Branch in yagna: evik42/testing-2387
Branch in ya-relay: evik42/testing-2387

To test changes in ya-relay / yagna:
- change the code in ya-relay
- change the hash of ya-relay in yagna\core\net\Cargo.toml
- tag the yagna commit with a pre-rel tag so a release is built
- wait for release build ~ 60 minutes
- in `yapapi\pyproject.yml` change the tag in the poe task called: `test_yagna_problem`
- you can cancel the other matrix workflow that checks if everything builds on various platforms with different python versions, the only interesting build on the yapapi PR is `Goth (PR and push) / Run integration tests`

This build passes:
https://github.com/golemfactory/yapapi/actions/runs/4427724078/jobs/7765756870
It uses yagna with tag: pre-rel-v0.12.0-testing-2387-8
This yagna tag is pre-rel-v0.12.0-rc5 plus ya-relay includes a test only commit. ya-relay hash used: `4d8b5e59`.

This build fails:
https://github.com/golemfactory/yapapi/actions/runs/4417076562/jobs/7742266412
It uses yagna with tag: pre-rel-v0.12.0-testing-2387-7
This yagna tag is having the request deduplication code in but commented out, one log changed from trace to info and cloning the request so it can be logged later. There is also a rust version pin in the workflow file but that does not affect code compiled by yagna workflows. The ya-relay hash used: `c36e8604`.

This is the diff between the two ya-relay hashes:
```
$ git diff c36e8604 4d8b5e59
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index 042af50..403ba61 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -10,9 +10,6 @@ on:
       - main
       - release/*
 
-env:
-  rust_stable: 1.64.0
-
 jobs:
   build:
     name: Tests
@@ -29,10 +26,10 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v1
 
-      - name: Install Rust ${{ env.rust_stable }}
+      - name: Install last stable Rust
         uses: actions-rs/toolchain@v1
         with:
-          toolchain: ${{ env.rust_stable }}
+          toolchain: stable
           components: rustfmt, clippy
 
 #      - name: Install openssl ( Windows only )
diff --git a/client/src/session_manager.rs b/client/src/session_manager.rs
index 11fc528..7fc6614 100644
--- a/client/src/session_manager.rs
+++ b/client/src/session_manager.rs
@@ -3,11 +3,11 @@ use futures::channel::mpsc;
 use futures::future::{AbortHandle, LocalBoxFuture};
 use futures::{FutureExt, SinkExt, TryFutureExt};
 use std::cell::RefCell;
-use std::collections::{HashMap, HashSet}; //, VecDeque};
+use std::collections::{HashMap, HashSet};
 use std::convert::{TryFrom, TryInto};
 use std::net::SocketAddr;
 use std::rc::Rc;
-use std::sync::{Arc}; //, Mutex};
+use std::sync::Arc;
 use tokio::sync::RwLock;
 
 use ya_relay_core::challenge::{self, ChallengeDigest, RawChallenge, CHALLENGE_DIFFICULTY};
@@ -32,8 +32,6 @@ use crate::session_guard::GuardedSessions;
 use crate::session_start::StartingSessions;
 use crate::virtual_layer::{PortType, TcpLayer};
 
-// type ReqFingerprint = (Vec<u8>, u64);
-
 /// This is the only layer, that should know real IP addresses and ports
 /// of other peers. Other layers should use higher level abstractions
 /// like `NodeId` or `SlotId`.
@@ -48,8 +46,6 @@ pub struct SessionManager {
     virtual_tcp_fast_lane: Rc<RefCell<HashSet<(SocketAddr, SlotId)>>>,
     guarded: GuardedSessions,
     state: Arc<RwLock<SessionManagerState>>,
-
-    // processed_requests: Arc<Mutex<VecDeque<ReqFingerprint>>>,
 }
 
 #[derive(Default)]
@@ -95,7 +91,6 @@ impl SessionManager {
             registry: NodesRegistry::default(),
             guarded: Default::default(),
             state: Arc::new(RwLock::new(state)),
-            // processed_requests: Arc::new(Mutex::new(VecDeque::new())),
         }
     }
 
@@ -158,24 +153,6 @@ impl SessionManager {
         ids
     }
 
-    // fn record_duplicate(&self, session_id: Vec<u8>, request_id: u64) {
-    //     const REQ_DEDUPLICATE_BUF_SIZE: usize = 32;
-
-    //     let mut processed_requests = self.processed_requests.lock().unwrap();
-    //     processed_requests.push_back((session_id, request_id));
-    //     if processed_requests.len() > REQ_DEDUPLICATE_BUF_SIZE {
-    //         processed_requests.pop_front();
-    //     }
-    // }
-
-    // fn is_request_duplicate(&self, session_id: &Vec<u8>, request_id: u64) -> bool {
-    //     self.processed_requests
-    //         .lock()
-    //         .unwrap()
-    //         .iter()
-    //         .any(|(sess_id, req_id)| *req_id == request_id && sess_id == session_id)
-    // }
-
     async fn init_session(
         &self,
         addr: SocketAddr,
@@ -1354,9 +1331,9 @@ impl Handler for SessionManager {
         request: proto::Request,
         from: SocketAddr,
     ) -> Option<LocalBoxFuture<'static, ()>> {
-        log::debug!("Received request packet from {}: {:?}", from, request);
+        log::trace!("Received request packet from {}: {:?}", from, request);
 
-        let (request_id, kind) = match request.clone() {
+        let (request_id, kind) = match request {
             proto::Request {
                 request_id,
                 kind: Some(kind),
@@ -1364,12 +1341,6 @@ impl Handler for SessionManager {
             _ => return None,
         };
 
-        // if self.is_request_duplicate(&session_id, request_id) {
-        //     log::info!("Packet looks duplicate {:?}", request);
-        //     return None;
-        // }
-        // self.record_duplicate(session_id.clone(), request_id);
-
         let fut = match kind {
             proto::request::Kind::Ping(request) => {
                 async move { self.on_ping(session_id, request_id, from, request).await }
```

The diff between the two yagna versions (is only the ya-relay hash):
```
$ git diff pre-rel-v0.12.0-testing-2387-7 pre-rel-v0.12.0-testing-2387-8
diff --git a/Cargo.lock b/Cargo.lock
index efb47917..24a9070d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -7966,7 +7966,7 @@ dependencies = [
 [[package]]
 name = "ya-relay-client"
 version = "0.4.0"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604c429fe00758ef1f7404186688f14b32f"
+source = "git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59088efcd0dd8eefb25b52ebee04dee420"
 dependencies = [
  "anyhow",
  "chrono",
@@ -7981,13 +7981,13 @@ dependencies = [
  "url",
  "ya-relay-core",
  "ya-relay-proto",
- "ya-relay-stack 0.4.1 (git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f)",
+ "ya-relay-stack 0.4.1 (git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420)",
 ]
 
 [[package]]
 name = "ya-relay-core"
 version = "0.3.1"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604c429fe00758ef1f7404186688f14b32f"
+source = "git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59088efcd0dd8eefb25b52ebee04dee420"
 dependencies = [
  "anyhow",
  "chrono",
@@ -8011,13 +8011,13 @@ dependencies = [
  "uuid",
  "ya-client-model",
  "ya-relay-proto",
- "ya-relay-stack 0.4.1 (git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f)",
+ "ya-relay-stack 0.4.1 (git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420)",
 ]
 
 [[package]]
 name = "ya-relay-proto"
 version = "0.4.1"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604c429fe00758ef1f7404186688f14b32f"
+source = "git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59088efcd0dd8eefb25b52ebee04dee420"
 dependencies = [
  "anyhow",
  "bytes 1.2.1",
@@ -8029,13 +8029,13 @@ dependencies = [
  "thiserror",
  "tokio 1.21.1",
  "tokio-util 0.7.4",
- "ya-relay-util 0.1.0 (git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f)",
+ "ya-relay-util 0.1.0 (git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420)",
 ]
 
 [[package]]
 name = "ya-relay-stack"
 version = "0.4.1"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=6e2c55808f363c948805c99b90d47c9c2a3eed7d#6e2c55808f363c948805c99b90d47c9c2a3eed7d"
+source = "git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59088efcd0dd8eefb25b52ebee04dee420"
 dependencies = [
  "derive_more",
  "futures 0.3.24",
@@ -8049,13 +8049,13 @@ dependencies = [
  "thiserror",
  "tokio 1.21.1",
  "tokio-stream",
- "ya-relay-util 0.1.0 (git+https://github.com/golemfactory/ya-relay.git?rev=6e2c55808f363c948805c99b90d47c9c2a3eed7d)",
+ "ya-relay-util 0.1.0 (git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420)",
 ]
 
 [[package]]
 name = "ya-relay-stack"
 version = "0.4.1"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604c429fe00758ef1f7404186688f14b32f"
+source = "git+https://github.com/golemfactory/ya-relay.git?rev=6e2c55808f363c948805c99b90d47c9c2a3eed7d#6e2c55808f363c948805c99b90d47c9c2a3eed7d"
 dependencies = [
  "derive_more",
  "futures 0.3.24",
@@ -8069,13 +8069,13 @@ dependencies = [
  "thiserror",
  "tokio 1.21.1",
  "tokio-stream",
- "ya-relay-util 0.1.0 (git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f)",
+ "ya-relay-util 0.1.0 (git+https://github.com/golemfactory/ya-relay.git?rev=6e2c55808f363c948805c99b90d47c9c2a3eed7d)",
 ]
 
 [[package]]
 name = "ya-relay-util"
 version = "0.1.0"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=6e2c55808f363c948805c99b90d47c9c2a3eed7d#6e2c55808f363c948805c99b90d47c9c2a3eed7d"
+source = "git+https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59088efcd0dd8eefb25b52ebee04dee420"
 dependencies = [
  "bytes 1.2.1",
  "derive_more",
@@ -8084,7 +8084,7 @@ dependencies = [
 [[package]]
 name = "ya-relay-util"
 version = "0.1.0"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604c429fe00758ef1f7404186688f14b32f"
+source = "git+https://github.com/golemfactory/ya-relay.git?rev=6e2c55808f363c948805c99b90d47c9c2a3eed7d#6e2c55808f363c948805c99b90d47c9c2a3eed7d"
 dependencies = [
  "bytes 1.2.1",
  "derive_more",
diff --git a/core/net/Cargo.toml b/core/net/Cargo.toml
index 0f71ddd5..42481d7d 100644
--- a/core/net/Cargo.toml
+++ b/core/net/Cargo.toml
@@ -17,7 +17,7 @@ ya-core-model = { version = "^0.8", features=["net", "identity"] }
 # ya-relay-client = "0.4"
 # ya-relay-client = { path = "../../../ya-relay/client" }
 # ya-relay-client = { git = "https://github.com/golemfactory/ya-relay.git", rev = "f1009ec013d27795a56c6493447836a851352b72" }
-ya-relay-client = { git = "https://github.com/golemfactory/ya-relay.git", rev = "c36e8604c429fe00758ef1f7404186688f14b32f" }
+ya-relay-client = { git = "https://github.com/golemfactory/ya-relay.git", rev = "4d8b5e59088efcd0dd8eefb25b52ebee04dee420" }
 
 
 ya-sb-proto = { version = "0.6" }
```

This is confirmed by looking at the diff of `cargo tree` for both tags:
```
$ diff tree.commented_deduplication.c36e8604.txt tree.before_deduplication.4d8b5e59.txt 
888c888
< │   │   ├── ya-relay-client v0.4.0 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604)
---
> │   │   ├── ya-relay-client v0.4.0 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59)
901c901
< │   │   │   ├── ya-relay-core v0.3.1 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604)
---
> │   │   │   ├── ya-relay-core v0.3.1 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59)
956c956
< │   │   │   │   ├── ya-relay-proto v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604)
---
> │   │   │   │   ├── ya-relay-proto v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59)
966c966
< │   │   │   │   │   └── ya-relay-util v0.1.0 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604)
---
> │   │   │   │   │   └── ya-relay-util v0.1.0 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59)
991c991
< │   │   │   │   └── ya-relay-stack v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604)
---
> │   │   │   │   └── ya-relay-stack v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59)
1012,1014c1012,1014
< │   │   │   │       └── ya-relay-util v0.1.0 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604) (*)
< │   │   │   ├── ya-relay-proto v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604) (*)
< │   │   │   └── ya-relay-stack v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=c36e8604c429fe00758ef1f7404186688f14b32f#c36e8604) (*)
---
> │   │   │   │       └── ya-relay-util v0.1.0 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59) (*)
> │   │   │   ├── ya-relay-proto v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59) (*)
> │   │   │   └── ya-relay-stack v0.4.1 (https://github.com/golemfactory/ya-relay.git?rev=4d8b5e59088efcd0dd8eefb25b52ebee04dee420#4d8b5e59) (*)
```

I've gotten the ya-relay branch to work by replacing one `log::trace!` with `log::debug!`, see commit `348bd213e066f971abe3cd27d854990e9f5a6b98` on branch `kek/testing-2387` in ya-relay.

```diff
diff --git a/client/src/session_manager.rs b/client/src/session_manager.rs
index 7fc6614..9364e95 100644
--- a/client/src/session_manager.rs
+++ b/client/src/session_manager.rs
@@ -1331,7 +1331,7 @@ impl Handler for SessionManager {
         request: proto::Request,
         from: SocketAddr,
     ) -> Option<LocalBoxFuture<'static, ()>> {
-        log::trace!("Received request packet from {}: {:?}", from, request);
+        log::debug!("Received request packet from {}: {:?}", from, request);

         let (request_id, kind) = match request {
             proto::Request {
```

I assume this works because we don't collect trace logs by default, but we do this for debug, meaning this change makes this path take a lock on stdout, which in turn might act as a band-aid for missing synchronization elsewhere in the code.

Ps. A notable example of software utilizing a [giant lock](https://en.wikipedia.org/wiki/Giant_lock) is FreeBSD, an operating system used with great success on routers, firewalls etc. (the migration to fine-grained locking has only happened in parts whose performance is critical).
~@kamirr - timebox till 07.04~
Involving @pwalski to help out @kamirr and to take over this topic during his absence next week.
As suggested by Jacek, maybe we should align with whole team to brainstorm (Refinement topic?)
Currently Przemek will look into logs.,
If won't able to find anything we need to increase speed of iterating build in CI. 

It is difficult to report status, because the test passed once on `0.12-rc6` after increasing some timeouts, but besides that it fails either because assert waiting on http service start is timeouting (5 min.), or because when it starts it cannot access db (even if db has started already, does not seems as if to stopped, and ip address is correct).

Passing run on `rc6` (GH action fails because of log cleanup - I placed exe-unit work dir to log folder) https://github.com/golemfactory/yapapi/actions/runs/4698987446/jobs/8331925038

4 failing runs for 2 different reasons https://github.com/golemfactory/yapapi/actions/runs/4699121842
The problem seems to be environment related.
Because it is planned to migrate to new `goth` runners first this PR https://github.com/golemfactory/yagna/pull/2534 will be addressed and later yapapi goth tests will be updated to new runners.
https://github.com/golemfactory/yapapi/actions/runs/4699121842
First run (goth_20230414_110545+0000)

Goth is changing Nodes' default identity and restarting yagna.
provider-1 `0xf60b6a2ba6c1e5184b9b0a750f9f5fb24636f35c` changed to -> `0xd1d84f0e28d6fedf03c73151f98df95139700aa7`
requestor `0xeac3aeb6e6f35004855e840b5934f283f89f296e` changed to -> `0x63fc2ad3d021a4d7e64323529a55a9442c444da0`

It seems such a change happened during attempt to close session on `provider_1`, which interacted with attempt to establish new connection after restart by `requestor` (from changed identity).

Logs from `provider_1`
```
[2023-04-14T11:06:19.253+0000 DEBUG ya_relay_client::session_manager] Got Disconnected from 172.19.0.6:11500
[2023-04-14T11:06:19.253+0000 INFO  ya_relay_client::session_manager] Closing session 744d8aac635e8bff0649f2aa51d4b90e (172.19.0.6:11500)
[2023-04-14T11:06:19.253+0000 DEBUG ya_relay_client::session_manager] Removing Node [0xeac3aeb6e6f35004855e840b5934f283f89f296e] information. Stopping communication..
[2023-04-14T11:06:19.253+0000 DEBUG ya_relay_client::session_manager] [0xeac3aeb6e6f35004855e840b5934f283f89f296e] forward (U): disconnected from: 172.19.0.6:11500
[2023-04-14T11:06:19.253+0000 DEBUG ya_relay_client::session_manager] Removing Node [0xeac3aeb6e6f35004855e840b5934f283f89f296e] information. Stopping communication..
[2023-04-14T11:06:20.026+0000 DEBUG ya_market::matcher::cyclic] Broadcasted 0 Offers including 0 ours.
[2023-04-14T11:06:22.342+0000 INFO  ya_relay_client::session_start] Node [0x63fc2ad3d021a4d7e64323529a55a9442c444da0] (172.19.0.6:11500) tries to establish p2p session.
[2023-04-14T11:06:22.342+0000 DEBUG ya_relay_client::session_start] Challenge sent to Node at address: 172.19.0.6:11500
[2023-04-14T11:06:22.531+0000 DEBUG ya_relay_client::session_start] Got challenge response from Node at address: 172.19.0.6:11500
[2023-04-14T11:06:22.542+0000 DEBUG ya_relay_client::session_start] Challenge from Node: [0x63fc2ad3d021a4d7e64323529a55a9442c444da0], address: 172.19.0.6:11500 verified.
[2023-04-14T11:06:22.544+0000 DEBUG ya_relay_client::session_start] Session 80031f371b714d715576225a74b5e95d (node = 0x63fc2ad3d021a4d7e64323529a55a9442c444da0) is awaiting a ResumeForwarding message
[2023-04-14T11:06:22.556+0000 DEBUG ya_relay_client::session_manager] Forwarding resumed for session 80031f371b714d715576225a74b5e95d
[2023-04-14T11:06:22.556+0000 DEBUG ya_relay_client::session_manager] On forward failed: NodeEntry for node id 0xeac3aeb6e6f35004855e840b5934f283f89f296e not found.
[2023-04-14T11:06:22.556+0000 INFO  ya_relay_client::session_start] Incoming P2P session 80031f371b714d715576225a74b5e95d with Node: [0x63fc2ad3d021a4d7e64323529a55a9442c444da0], address: 172.19.0.6:11500 established.
[2023-04-14T11:06:22.556+0000 DEBUG ya_relay_client::session_guard] Stop guarding session initialization with: [0x63fc2ad3d021a4d7e64323529a55a9442c444da0]
[2023-04-14T11:06:22.556+0000 DEBUG ya_relay_client::session_guard] Sending session init finish notification for Node: 0x63fc2ad3d021a4d7e64323529a55a9442c444da0
```

`provider_1` gets 
```
[2023-04-14T11:06:22.556+0000 DEBUG ya_relay_client::session_manager] On forward failed: NodeEntry for node id 0xeac3aeb6e6f35004855e840b5934f283f89f296e not found.
```
all the time, but no packets from new (0x63fc2ad3d021a4d7e64323529a55a9442c444da0) identity can be found.
On `requestor` side we see that GSB calls are made from correct identity.
That means that state on `provider_1` must be de-synchronized. Mapping between SocketAddr and NodeId must be incorrect in `SessionManagerState::nodes_addr`.

As the result `requestor` can't communicate with `provider_1` at all.

It is consistent with discovery in this comment: https://github.com/golemfactory/yagna/issues/2387#issuecomment-1488448844
because session initialization is the exact path, that would last longer due to this log being printed.

Fix patch:
diff --git a/Cargo.lock b/Cargo.lock
index 8ba3c4de71..5451f497f0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1991,6 +1991,17 @@ dependencies = [
  "winapi 0.3.9",
 ]
 
+[[package]]
+name = "errno"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
 [[package]]
 name = "errno-dragonfly"
 version = "0.1.2"
@@ -2132,7 +2143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8ef1a30ae415c3a691a4f41afddc2dbcd6d70baf338368d85ebc1e8ed92cedb9"
 dependencies = [
  "cfg-if 1.0.0",
- "rustix",
+ "rustix 0.36.8",
  "windows-sys 0.45.0",
 ]
 
@@ -2543,7 +2554,7 @@ dependencies = [
 
 [[package]]
 name = "gftp"
-version = "0.3.1"
+version = "0.3.2"
 dependencies = [
  "actix-rt",
  "anyhow",
@@ -3258,7 +3269,7 @@ checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef"
 dependencies = [
  "hermit-abi 0.3.1",
  "io-lifetimes",
- "rustix",
+ "rustix 0.36.8",
  "windows-sys 0.45.0",
 ]
 
@@ -3442,6 +3453,12 @@ version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
 
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+
 [[package]]
 name = "local-channel"
 version = "0.1.3"
@@ -5298,6 +5315,15 @@ dependencies = [
  "bitflags",
 ]
 
+[[package]]
+name = "redox_syscall"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+dependencies = [
+ "bitflags",
+]
+
 [[package]]
 name = "redox_users"
 version = "0.4.3"
@@ -5530,7 +5556,21 @@ dependencies = [
  "errno 0.2.8",
  "io-lifetimes",
  "libc",
- "linux-raw-sys",
+ "linux-raw-sys 0.1.4",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "rustix"
+version = "0.37.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b24138615de35e32031d041a09032ef3487a616d901ca4db224e7d557efae2"
+dependencies = [
+ "bitflags",
+ "errno 0.3.1",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys 0.3.8",
  "windows-sys 0.45.0",
 ]
 
@@ -6588,16 +6628,15 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.3.0"
+version = "3.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
 dependencies = [
  "cfg-if 1.0.0",
  "fastrand",
- "libc",
- "redox_syscall 0.2.16",
- "remove_dir_all",
- "winapi 0.3.9",
+ "redox_syscall 0.3.5",
+ "rustix 0.37.3",
+ "windows-sys 0.45.0",
 ]
 
 [[package]]
@@ -7717,13 +7756,13 @@ version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.42.1",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm 0.42.1",
+ "windows_x86_64_msvc 0.42.1",
 ]
 
 [[package]]
@@ -7732,7 +7771,16 @@ version = "0.45.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.42.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.0",
 ]
 
 [[package]]
@@ -7741,13 +7789,28 @@ version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.42.1",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm 0.42.1",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
 ]
 
 [[package]]
@@ -7756,42 +7819,84 @@ version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
 
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
 [[package]]
 name = "windows_aarch64_msvc"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
 
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
 [[package]]
 name = "windows_i686_gnu"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
 
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
 [[package]]
 name = "windows_i686_msvc"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
 
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
 [[package]]
 name = "windows_x86_64_gnu"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
 
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
 [[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
 
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
 [[package]]
 name = "windows_x86_64_msvc"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
 
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
 [[package]]
 name = "winreg"
 version = "0.7.0"
@@ -7886,6 +7991,20 @@ dependencies = [
 [[package]]
 name = "ya-agreement-utils"
 version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed1538aa108bb3d1a87ec91c5abc9414e2032e390f9e583aaa8d1ae543f6a0d"
+dependencies = [
+ "regex",
+ "serde",
+ "serde_json",
+ "serde_yaml 0.8.26",
+ "thiserror",
+ "ya-client-model",
+]
+
+[[package]]
+name = "ya-agreement-utils"
+version = "0.5.0"
 dependencies = [
  "anyhow",
  "chrono",
@@ -7948,7 +8067,7 @@ dependencies = [
 
 [[package]]
 name = "ya-compile-time-utils"
-version = "0.2.0"
+version = "0.2.1"
 dependencies = [
  "git-version",
  "metrics 0.12.1",
@@ -7958,7 +8077,7 @@ dependencies = [
 
 [[package]]
 name = "ya-core-model"
-version = "0.8.1"
+version = "0.9.0"
 dependencies = [
  "bigdecimal 0.2.2",
  "bitflags",
@@ -8094,12 +8213,12 @@ dependencies = [
  "tokio-util 0.7.7",
  "url",
  "winapi 0.3.9",
- "ya-agreement-utils",
+ "ya-agreement-utils 0.4.1",
  "ya-client-model",
  "ya-compile-time-utils",
  "ya-core-model",
  "ya-manifest-utils",
- "ya-packet-trace",
+ "ya-packet-trace 0.1.0 (git+https://github.com/golemfactory/ya-packet-trace)",
  "ya-runtime-api",
  "ya-sb-router",
  "ya-service-bus",
@@ -8222,7 +8341,7 @@ dependencies = [
  "base64 0.13.1",
  "openssl",
  "tar",
- "ya-agreement-utils",
+ "ya-agreement-utils 0.4.1",
  "ya-manifest-utils",
 ]
 
@@ -8255,7 +8374,7 @@ dependencies = [
  "test-case 3.1.0",
  "thiserror",
  "url",
- "ya-agreement-utils",
+ "ya-agreement-utils 0.4.1",
  "ya-client-model",
  "ya-manifest-test-utils",
  "ya-utils-path",
@@ -8301,7 +8420,7 @@ dependencies = [
  "thiserror",
  "tokio 1.25.0",
  "uuid 0.8.2",
- "ya-agreement-utils",
+ "ya-agreement-utils 0.5.0",
  "ya-client",
  "ya-core-model",
  "ya-diesel-utils",
@@ -8330,7 +8449,7 @@ dependencies = [
  "semver 0.11.0",
  "serde_json",
  "thiserror",
- "ya-agreement-utils",
+ "ya-agreement-utils 0.4.1",
 ]
 
 [[package]]
@@ -8387,7 +8506,7 @@ dependencies = [
  "url",
  "ya-client-model",
  "ya-core-model",
- "ya-packet-trace",
+ "ya-packet-trace 0.1.0 (git+https://github.com/golemfactory/ya-packet-trace)",
  "ya-relay-client",
  "ya-sb-proto",
  "ya-sb-router",
@@ -8401,7 +8520,18 @@ dependencies = [
 [[package]]
 name = "ya-packet-trace"
 version = "0.1.0"
-source = "git+https://github.com/golemfactory/ya-packet-trace#cf7583725930df57298088caa6d0f468037909da"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a9e5444475d519a584d2adaf6f281cb3deeb0ceb41503db28be4d081afb714c"
+dependencies = [
+ "chrono",
+ "fxhash",
+ "log",
+]
+
+[[package]]
+name = "ya-packet-trace"
+version = "0.1.0"
+source = "git+https://github.com/golemfactory/ya-packet-trace#bcd1a2f2921f058783c7b6594204db539602a621"
 dependencies = [
  "chrono",
  "fxhash",
@@ -8440,7 +8570,7 @@ dependencies = [
  "tokio 1.25.0",
  "uint 0.7.1",
  "uuid 0.8.2",
- "ya-agreement-utils",
+ "ya-agreement-utils 0.5.0",
  "ya-client",
  "ya-client-model",
  "ya-core-model",
@@ -8559,6 +8689,7 @@ dependencies = [
  "strum_macros 0.24.3",
  "sys-info",
  "tempdir",
+ "tempfile",
  "test-case 2.2.2",
  "thiserror",
  "tokio 1.25.0",
@@ -8566,7 +8697,7 @@ dependencies = [
  "url",
  "walkdir",
  "winapi 0.3.9",
- "ya-agreement-utils",
+ "ya-agreement-utils 0.5.0",
  "ya-client",
  "ya-client-model",
  "ya-compile-time-utils",
@@ -8584,8 +8715,9 @@ dependencies = [
 
 [[package]]
 name = "ya-relay-client"
-version = "0.5.0"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=9d958f3c68b337a16dc7a13dd09772cb5c079667#9d958f3c68b337a16dc7a13dd09772cb5c079667"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48d0c86cd2a4430f08bc60aeeccabcf9448b5e08189b3d2bdce36bb3d67910e0"
 dependencies = [
  "anyhow",
  "chrono",
@@ -8598,7 +8730,7 @@ dependencies = [
  "tokio 1.25.0",
  "tokio-stream",
  "url",
- "ya-packet-trace",
+ "ya-packet-trace 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "ya-relay-core",
  "ya-relay-proto",
  "ya-relay-stack",
@@ -8606,9 +8738,9 @@ dependencies = [
 
 [[package]]
 name = "ya-relay-core"
-version = "0.3.1"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8a32521e0c31afc839265e88aadba475a773731732b275edcca2f6ea8bcbf18"
+checksum = "323db96bf4ba4e671dee28d2776fba25e5e8ec61f16a0ffbdfc2647b357fc7c9"
 dependencies = [
  "anyhow",
  "chrono",
@@ -8656,8 +8788,9 @@ dependencies = [
 
 [[package]]
 name = "ya-relay-stack"
-version = "0.4.1"
-source = "git+https://github.com/golemfactory/ya-relay.git?rev=9d958f3c68b337a16dc7a13dd09772cb5c079667#9d958f3c68b337a16dc7a13dd09772cb5c079667"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e75d44b70bb97ef73b62b8545212533fc417cc8eb7edec8a9e0c6d7b1bd0e644"
 dependencies = [
  "derive_more",
  "futures 0.3.26",
@@ -8686,7 +8819,7 @@ dependencies = [
 
 [[package]]
 name = "ya-runtime-api"
-version = "0.6.0"
+version = "0.7.0"
 dependencies = [
  "anyhow",
  "bytes 1.4.0",
@@ -8842,7 +8975,7 @@ dependencies = [
  "tokio-util 0.7.7",
  "url",
  "uuid 0.8.2",
- "ya-packet-trace",
+ "ya-packet-trace 0.1.0 (git+https://github.com/golemfactory/ya-packet-trace)",
  "ya-sb-proto",
  "ya-sb-util",
 ]
@@ -9076,7 +9209,7 @@ dependencies = [
  "ya-client-model",
  "ya-core-model",
  "ya-net",
- "ya-packet-trace",
+ "ya-packet-trace 0.1.0 (git+https://github.com/golemfactory/ya-packet-trace)",
  "ya-persistence",
  "ya-service-api",
  "ya-service-api-interfaces",
@@ -9125,7 +9258,7 @@ dependencies = [
 
 [[package]]
 name = "yagna"
-version = "0.11.0"
+version = "0.12.1"
 dependencies = [
  "actix-rt",
  "actix-service",
diff --git a/Cargo.toml b/Cargo.toml
index 7f83d23ca3..6ff25d7103 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "yagna"
-version = "0.11.0"
+version = "0.12.1"
 description = "Open platform and marketplace for distributed computations"
 readme = "README.md"
 authors = ["Golem Factory <contact@golem.network>"]
@@ -33,7 +33,7 @@ path = "core/serv/src/main.rs"
 [dependencies]
 ya-activity = "0.4"
 ya-compile-time-utils = "0.2"
-ya-core-model = { version = "^0.8" }
+ya-core-model = { version = "^0.9" }
 ya-dummy-driver = { version = "0.3", optional = true }
 ya-file-logging = "0.1"
 ya-gsb-api = "0.1"
@@ -60,7 +60,7 @@ ya-utils-networking = "0.2"
 ya-fd-metrics = { path = "utils/fd-metrics" }
 ya-version = "0.2"
 ya-vpn = "0.2"
-ya-client = "0.7"
+ya-client = "0.7.1"
 ya-client-model = "0.5"
 
 gftp = { version = "0.3.1", optional = true }      # just to enable gftp build for cargo-deb
@@ -259,11 +259,8 @@ ya-sb-util = { git = "https://github.com/golemfactory/ya-service-bus.git", rev =
 #ya-client-model = { git = "https://github.com/golemfactory/ya-client.git", rev = "2a6350f62cf8d926721225a3451822731456e3fe" }
 
 ## RELAY and networking stack
-ya-relay-stack = { git = "https://github.com/golemfactory/ya-relay.git", rev = "9d958f3c68b337a16dc7a13dd09772cb5c079667" }
-ya-relay-client = { git = "https://github.com/golemfactory/ya-relay.git", rev = "9d958f3c68b337a16dc7a13dd09772cb5c079667" }
-
-#ya-relay-stack = { path = "../ya-relay/crates/stack" }
-#ya-relay-client = { path = "../ya-relay/client" }
+#ya-relay-stack = { git = "https://github.com/golemfactory/ya-relay.git", rev = "9d958f3c68b337a16dc7a13dd09772cb5c079667" }
+#ya-relay-client = { git = "https://github.com/golemfactory/ya-relay.git", rev = "9d958f3c68b337a16dc7a13dd09772cb5c079667" }
 
 ## OTHERS
 gftp = { path = "core/gftp" }
diff --git a/agent/provider/Cargo.toml b/agent/provider/Cargo.toml
index 6d5146b1c7..97da5fc9a7 100644
--- a/agent/provider/Cargo.toml
+++ b/agent/provider/Cargo.toml
@@ -13,12 +13,12 @@ name = "ya-provider"
 path = "src/main.rs"
 
 [dependencies]
-ya-agreement-utils = { version = "0.4.1" }
+ya-agreement-utils = { version = "0.5.0" }
 ya-manifest-utils = { version = "0.2" }
 ya-client = { version = "0.7", features = ['cli'] }
 ya-client-model = "0.5"
 ya-compile-time-utils = "0.2"
-ya-core-model = { version = "^0.8", features = ['activity', 'payment'] }
+ya-core-model = { version = "^0.9", features = ['activity', 'payment'] }
 ya-file-logging = "0.1"
 ya-utils-actix = "0.2"
 ya-utils-cli = "0.1"
@@ -84,6 +84,7 @@ predicates = "2.1"
 serial_test = "0.9"
 shlex = "1.1"
 tempdir = "0.3"
+tempfile = "3.5.0"
 pretty_assertions = "1.3"
 
 ya-manifest-test-utils = "0.1"
diff --git a/agent/provider/src/cli/clean.rs b/agent/provider/src/cli/clean.rs
index d9a4fa6605..65c1b33f6c 100644
--- a/agent/provider/src/cli/clean.rs
+++ b/agent/provider/src/cli/clean.rs
@@ -6,11 +6,11 @@ use crate::startup_config::ProviderConfig;
 #[derive(StructOpt, Clone, Debug)]
 #[structopt(rename_all = "kebab-case")]
 pub struct CleanConfig {
-    /// Expression in the following format:
+    /// Age of files which will be removed expressed in the following format:
     /// <number>P, e.g. 30d
     /// where P: s|m|h|d|w|M|y or empty for days
     #[structopt(default_value = "30d")]
-    pub expr: String,
+    pub age: String,
     /// Perform a dry run
     #[structopt(long)]
     pub dry_run: bool,
@@ -21,7 +21,7 @@ impl CleanConfig {
         let data_dir = config.data_dir.get_or_create()?;
         println!("Using data dir: {}", data_dir.display());
 
-        let freed = clean_provider_dir(&data_dir, &self.expr, true, self.dry_run)?;
+        let freed = clean_provider_dir(&data_dir, &self.age, true, self.dry_run)?;
         let human_freed = bytesize::to_string(freed, false);
 
         if self.dry_run {
diff --git a/agent/provider/src/dir.rs b/agent/provider/src/dir.rs
index ddd9cc4c4a..96d99bf393 100644
--- a/agent/provider/src/dir.rs
+++ b/agent/provider/src/dir.rs
@@ -1,9 +1,11 @@
-use crate::startup_config::{CERT_DIR, GLOBALS_JSON, HARDWARE_JSON, PRESETS_JSON};
+use crate::startup_config::{GLOBALS_JSON, HARDWARE_JSON, PRESETS_JSON};
 use anyhow::{bail, Result};
 use std::path::Path;
 use std::time::{Duration, SystemTime};
 use walkdir::WalkDir;
 
+/// Cleans Provider DATA_DIR and returns amount of freed disk space (in bytes).
+/// Fails if DATA_DIR does not contain Provider's config files.
 pub fn clean_provider_dir<P: AsRef<Path>, S: AsRef<str>>(
     dir: P,
     expr: S,
@@ -14,7 +16,7 @@ pub fn clean_provider_dir<P: AsRef<Path>, S: AsRef<str>>(
     if check_dir && !is_provider_dir(&dir)? {
         bail!("Not a provider data directory: {}", dir.as_ref().display());
     }
-    Ok(clean_dir(dir, 2, lifetime, dry_run))
+    Ok(clean_data_dir(dir, lifetime, dry_run))
 }
 
 fn is_provider_dir<P: AsRef<Path>>(dir: P) -> Result<bool> {
@@ -22,7 +24,6 @@ fn is_provider_dir<P: AsRef<Path>>(dir: P) -> Result<bool> {
         (HARDWARE_JSON, false),
         (PRESETS_JSON, false),
         (GLOBALS_JSON, false),
-        (CERT_DIR, false),
     ];
 
     dir.as_ref()
@@ -40,12 +41,18 @@ fn is_provider_dir<P: AsRef<Path>>(dir: P) -> Result<bool> {
     Ok(files.iter().all(|pair| pair.1))
 }
 
-fn clean_dir<P: AsRef<Path>>(dir: P, min_depth: usize, lifetime: Duration, dry_run: bool) -> u64 {
+fn clean_data_dir<P: AsRef<Path>>(data_dir: P, lifetime: Duration, dry_run: bool) -> u64 {
+    let work_dir = crate::execution::exe_unit_work_dir(&data_dir);
+    let cache_dir = crate::execution::exe_unit_cache_dir(&data_dir);
+    clean_dir(work_dir, lifetime, dry_run) + clean_dir(cache_dir, lifetime, dry_run)
+}
+
+fn clean_dir<P: AsRef<Path>>(dir: P, lifetime: Duration, dry_run: bool) -> u64 {
     let mut dirs = Vec::new();
     let deadline = SystemTime::now() - lifetime;
 
     let total_bytes = WalkDir::new(dir.as_ref())
-        .min_depth(min_depth)
+        .min_depth(1)
         .into_iter()
         .filter_map(|result| result.ok())
         .filter_map(|entry| match entry.metadata() {
@@ -84,3 +91,137 @@ fn clean_dir<P: AsRef<Path>>(dir: P, min_depth: usize, lifetime: Duration, dry_r
 
     total_bytes
 }
+
+#[cfg(test)]
+mod tests {
+    use super::clean_provider_dir;
+    use crate::startup_config::{GLOBALS_JSON, HARDWARE_JSON, PRESETS_JSON};
+    use std::{
+        fs::File,
+        io::Write,
+        path::{Path, PathBuf},
+    };
+
+    #[test]
+    fn test_empty_dir_fail() {
+        let dir = tempfile::tempdir().unwrap().into_path();
+        let expected = anyhow::anyhow!("Not a provider data directory: {}", dir.display());
+        let error = clean_provider_dir(&dir, "1d", true, false);
+        assert_eq!(expected.to_string(), error.err().unwrap().to_string());
+        assert!(dir.exists());
+    }
+
+    #[test]
+    fn test_empty_exe_unit_dir_cleanup() {
+        let dirs = create_data_dir_w_exe_unit();
+        let removed_bytes =
+            clean_provider_dir(dirs.data_dir.dir, "1d", true, false).expect("Is ok");
+
+        assert_eq!(0, removed_bytes);
+        assert!(dirs.data_dir.globals_json.exists());
+        assert!(dirs.data_dir.hardware_json.exists());
+        assert!(dirs.data_dir.presets_json.exists());
+        assert!(dirs.work_dir.exists());
+        assert!(dirs.cache_dir.exists());
+    }
+
+    #[test]
+    fn test_exe_unit_dir_cleanup_of_old_files() {
+        let dirs = create_data_dir_w_exe_unit();
+        let work_dir_file = create_file(&dirs.work_dir, "a.txt", "a");
+        let work_dir_dir = create_dir(&dirs.work_dir, "a");
+        let cache_dir_file = create_file(&dirs.cache_dir, "b.txt", "b");
+        let cache_dir_dir = create_dir(&dirs.cache_dir, "b");
+        let removed_bytes: u64 =
+            clean_provider_dir(dirs.data_dir.dir, "0us", true, false).expect("Is ok");
+
+        assert_eq!(2, removed_bytes);
+        assert!(dirs.data_dir.globals_json.exists());
+        assert!(dirs.data_dir.hardware_json.exists());
+        assert!(dirs.data_dir.presets_json.exists());
+        assert!(dirs.work_dir.exists());
+        assert!(dirs.cache_dir.exists());
+        assert!(!work_dir_dir.exists());
+        assert!(!work_dir_file.exists());
+        assert!(!cache_dir_dir.exists());
+        assert!(!cache_dir_file.exists());
+    }
+
+    #[test]
+    fn test_exe_unit_dir_cleanup_does_not_remove_files() {
+        let dirs = create_data_dir_w_exe_unit();
+        let work_dir_file = create_file(&dirs.work_dir, "a.txt", "a");
+        let work_dir_dir = create_dir(&dirs.work_dir, "a");
+        let cache_dir_file = create_file(&dirs.cache_dir, "b.txt", "b");
+        let cache_dir_dir = create_dir(&dirs.cache_dir, "b");
+        let cache_dir_dir_file = create_file(&cache_dir_dir, "c.txt", "c");
+        let removed_bytes: u64 =
+            clean_provider_dir(dirs.data_dir.dir, "1h", true, false).expect("Is ok");
+
+        assert_eq!(0, removed_bytes);
+        assert!(dirs.data_dir.globals_json.exists());
+        assert!(dirs.data_dir.hardware_json.exists());
+        assert!(dirs.data_dir.presets_json.exists());
+        assert!(dirs.work_dir.exists());
+        assert!(dirs.cache_dir.exists());
+        assert!(!work_dir_dir.exists(), "Empty directory removed.");
+        assert!(work_dir_file.exists());
+        assert!(cache_dir_dir.exists());
+        assert!(cache_dir_file.exists());
+        assert!(cache_dir_dir_file.exists());
+    }
+
+    struct DataDir {
+        dir: PathBuf,
+        hardware_json: PathBuf,
+        presets_json: PathBuf,
+        globals_json: PathBuf,
+    }
+
+    struct ExeUnitDirs {
+        data_dir: DataDir,
+        cache_dir: PathBuf,
+        work_dir: PathBuf,
+    }
+
+    fn create_data_dir_w_exe_unit() -> ExeUnitDirs {
+        let data_dir = create_data_dir();
+        let work_dir = crate::execution::exe_unit_work_dir(&data_dir.dir);
+        std::fs::create_dir_all(&work_dir).unwrap();
+        let cache_dir = crate::execution::exe_unit_cache_dir(&data_dir.dir);
+        std::fs::create_dir_all(&cache_dir).unwrap();
+        ExeUnitDirs {
+            data_dir,
+            cache_dir,
+            work_dir,
+        }
+    }
+
+    fn create_data_dir() -> DataDir {
+        let dir = tempfile::tempdir().unwrap().into_path();
+        let hardware_json = create_file(&dir, HARDWARE_JSON, "a");
+        let presets_json = create_file(&dir, PRESETS_JSON, "b");
+        let globals_json = create_file(&dir, GLOBALS_JSON, "c");
+        DataDir {
+            dir,
+            hardware_json,
+            presets_json,
+            globals_json,
+        }
+    }
+
+    fn create_dir(dir: &Path, name: &str) -> PathBuf {
+        let path = dir.join(name);
+        std::fs::create_dir_all(&path).unwrap();
+        path
+    }
+
+    fn create_file(dir: &Path, name: &str, content: &str) -> PathBuf {
+        let path = dir.join(name);
+        let mut file = File::create(&path).unwrap();
+        if !content.is_empty() {
+            file.write_all(content.as_bytes()).unwrap();
+        }
+        path
+    }
+}
diff --git a/agent/provider/src/execution.rs b/agent/provider/src/execution.rs
index cc5722e36a..7296271b1d 100644
--- a/agent/provider/src/execution.rs
+++ b/agent/provider/src/execution.rs
@@ -5,6 +5,8 @@ pub use task_runner::{
 
 pub use self::registry::Configuration;
 pub use self::registry::{ExeUnitDesc, ExeUnitsRegistry};
+pub use self::task_runner::exe_unit_cache_dir;
+pub use self::task_runner::exe_unit_work_dir;
 
 mod exeunit_instance;
 mod registry;
diff --git a/agent/provider/src/execution/task_runner.rs b/agent/provider/src/execution/task_runner.rs
index 16fa2392d8..96f2474cd4 100644
--- a/agent/provider/src/execution/task_runner.rs
+++ b/agent/provider/src/execution/task_runner.rs
@@ -31,6 +31,10 @@ use crate::market::provider_market::NewAgreement;
 use crate::market::Preset;
 use crate::tasks::{AgreementBroken, AgreementClosed};
 
+const EXE_UNIT_DIR: &str = "exe-unit";
+const WORK_DIR: &str = "work";
+const CACHE_DIR: &str = "cache";
+
 // =========================================== //
 // Public exposed messages
 // =========================================== //
@@ -161,8 +165,8 @@ impl TaskRunner {
         data_dir: P,
     ) -> Result<TaskRunner> {
         let data_dir = data_dir.as_ref();
-        let tasks_dir = data_dir.join("exe-unit").join("work");
-        let cache_dir = data_dir.join("exe-unit").join("cache");
+        let tasks_dir = exe_unit_work_dir(data_dir);
+        let cache_dir = exe_unit_cache_dir(data_dir);
 
         log::debug!("TaskRunner config: {:?}", config);
 
@@ -514,6 +518,16 @@ impl TaskRunner {
     }
 }
 
+pub fn exe_unit_work_dir<P: AsRef<Path>>(data_dir: P) -> PathBuf {
+    let data_dir = data_dir.as_ref();
+    data_dir.join(EXE_UNIT_DIR).join(WORK_DIR)
+}
+
+pub fn exe_unit_cache_dir<P: AsRef<Path>>(data_dir: P) -> PathBuf {
+    let data_dir = data_dir.as_ref();
+    data_dir.join(EXE_UNIT_DIR).join(CACHE_DIR)
+}
+
 fn exe_unit_name_from(agreement: &AgreementView) -> Result<String> {
     let runtime_key_str = "/offer/properties/golem/runtime/name";
     Ok(agreement.pointer_typed::<String>(runtime_key_str)?)
diff --git a/agent/provider/src/startup_config.rs b/agent/provider/src/startup_config.rs
index ae72d501e6..2e8746add4 100644
--- a/agent/provider/src/startup_config.rs
+++ b/agent/provider/src/startup_config.rs
@@ -243,7 +243,7 @@ pub enum Commands {
     Keystore(KeystoreConfig),
     /// Manage domain whitelist
     Whitelist(WhitelistConfig),
-    /// Clean up disk space
+    /// Free up disk space by removing old exe-unit files
     Clean(CleanConfig),
     /// Manage Rule config
     Rule(RuleCommand),
diff --git a/core/activity/Cargo.toml b/core/activity/Cargo.toml
index f5cd5fd5e8..4f01697d00 100644
--- a/core/activity/Cargo.toml
+++ b/core/activity/Cargo.toml
@@ -5,7 +5,7 @@ authors = ["Golem Factory <contact@golem.network>"]
 edition = "2018"
 
 [dependencies]
-ya-core-model = { version = "0.8", features = ["activity", "market"] }
+ya-core-model = { version = "0.9", features = ["activity", "market"] }
 ya-client-model = { version = "0.5", features = ["sgx"] }
 ya-net = "0.3"
 ya-persistence = "0.3"
diff --git a/core/gftp/Cargo.toml b/core/gftp/Cargo.toml
index 21a8179889..6eb22299ef 100644
--- a/core/gftp/Cargo.toml
+++ b/core/gftp/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "gftp"
-version = "0.3.1"
+version = "0.3.2"
 authors = ["Golem Factory <contact@golem.network>"]
 edition = "2018"
 homepage = "https://github.com/golemfactory/yagna"
@@ -19,7 +19,7 @@ required-features=['bin']
 
 [dependencies]
 ya-compile-time-utils = "0.2"
-ya-core-model = { version = "^0.8", features = ["gftp", "identity", "net"] }
+ya-core-model = { version = "^0.9", features = ["gftp", "identity", "net"] }
 ya-service-bus = "0.6.1"
 
 actix-rt = "2.7"
diff --git a/core/gsb-api/Cargo.toml b/core/gsb-api/Cargo.toml
index 57e6e44812..e8b42dfe77 100644
--- a/core/gsb-api/Cargo.toml
+++ b/core/gsb-api/Cargo.toml
@@ -31,7 +31,7 @@ bytes = "1"
 tokio = { version = "1", features=["macros"] }
 
 [dev-dependencies]
-ya-core-model = { version = "0.8", features = ["gftp"] }
+ya-core-model = { version = "^0.9", features = ["gftp"] }
 
 actix-test = "0.1"
 awc = "3"
diff --git a/core/identity/Cargo.toml b/core/identity/Cargo.toml
index bc7ba042f9..c78db1c600 100644
--- a/core/identity/Cargo.toml
+++ b/core/identity/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2018"
 
 [dependencies]
 ya-client-model = { version = "0.5", features = ["with-diesel"] }
-ya-core-model = { version = "^0.8", features = ["identity", "appkey"] }
+ya-core-model = { version = "^0.9", features = ["identity", "appkey"] }
 ya-persistence = "0.3"
 ya-service-api = "0.1"
 ya-service-api-interfaces = "0.2"
diff --git a/core/market/Cargo.toml b/core/market/Cargo.toml
index 2e8515c5a3..727875c389 100644
--- a/core/market/Cargo.toml
+++ b/core/market/Cargo.toml
@@ -10,9 +10,9 @@ test-suite = []
 bcast-singleton = []
 
 [dependencies]
-ya-agreement-utils = { version = "0.4.1" }
+ya-agreement-utils = { version = "0.5.0" }
 ya-client = "0.7"
-ya-core-model = { version = "^0.8", features = ["market", "net"] }
+ya-core-model = { version = "^0.9", features = ["market", "net"] }
 ya-diesel-utils = { version = "0.1" }
 ya-market-resolver = "0.2"
 ya-net = "0.3"
diff --git a/core/metrics/Cargo.toml b/core/metrics/Cargo.toml
index b398501d8f..ad8be075f8 100644
--- a/core/metrics/Cargo.toml
+++ b/core/metrics/Cargo.toml
@@ -10,7 +10,7 @@ repository = "https://github.com/golemfactory/yagna"
 license = "LGPL-3.0"
 
 [dependencies]
-ya-core-model = { version = "^0.8", features = ["identity"] }
+ya-core-model = { version = "^0.9", features = ["identity"] }
 ya-service-api = "0.1"
 ya-service-api-interfaces = "0.2"
 ya-service-bus = "0.6.1"
diff --git a/core/model/Cargo.toml b/core/model/Cargo.toml
index 11eaa907c3..22b6380a29 100644
--- a/core/model/Cargo.toml
+++ b/core/model/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "ya-core-model"
-version = "0.8.1"
+version = "0.9.0"
 authors = ["Golem Factory <contact@golem.network>"]
 edition = "2018"
 homepage = "https://github.com/golemfactory/yagna"
diff --git a/core/net/Cargo.toml b/core/net/Cargo.toml
index c062926ff1..4125b058ee 100644
--- a/core/net/Cargo.toml
+++ b/core/net/Cargo.toml
@@ -16,9 +16,9 @@ packet-trace-enable = [
 
 [dependencies]
 ya-client-model = "0.5"
-ya-core-model = { version = "^0.8", features=["net", "identity"] }
+ya-core-model = { version = "^0.9", features=["net", "identity"] }
 
-ya-relay-client = "0.5"
+ya-relay-client = "0.6"
 #ya-relay-client = { path = "../../../ya-relay/client" }
 
 ya-sb-proto = { version = "0.6.1" }
diff --git a/core/payment-driver/base/Cargo.toml b/core/payment-driver/base/Cargo.toml
index b52f953d63..ae3cd4d437 100644
--- a/core/payment-driver/base/Cargo.toml
+++ b/core/payment-driver/base/Cargo.toml
@@ -30,7 +30,7 @@ tokio = { version = "1", features = ["macros"] }
 
 ## yagna dependencies
 ya-client-model = "0.5"
-ya-core-model = { version = "^0.8", features = ["driver", "identity", "payment"] }
+ya-core-model = { version = "^0.9", features = ["driver", "identity", "payment"] }
 ya-persistence = "0.3"
 ya-service-bus = "0.6.1"
 
diff --git a/core/payment-driver/dummy/Cargo.toml b/core/payment-driver/dummy/Cargo.toml
index a107949e87..3f406fea3d 100644
--- a/core/payment-driver/dummy/Cargo.toml
+++ b/core/payment-driver/dummy/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2018"
 default = []
 
 [dependencies]
-ya-core-model = { version = "^0.8", features = ["driver", "identity", "payment"] }
+ya-core-model = { version = "^0.9", features = ["driver", "identity", "payment"] }
 ya-client-model = { version = "0.5" }
 ya-payment-driver = "0.3"
 ya-persistence = "0.3"
diff --git a/core/payment/Cargo.toml b/core/payment/Cargo.toml
index a1c9721cf4..46fabed86d 100644
--- a/core/payment/Cargo.toml
+++ b/core/payment/Cargo.toml
@@ -8,9 +8,9 @@ edition = "2018"
 default = []
 
 [dependencies]
-ya-agreement-utils = { version = "0.4.1" }
+ya-agreement-utils = { version = "0.5.0" }
 ya-client-model = { version = "0.5", features = ["with-diesel"] }
-ya-core-model = { version = "^0.8", features = [ "activity", "driver", "identity", "market", "payment" ] }
+ya-core-model = { version = "^0.9", features = [ "activity", "driver", "identity", "market", "payment" ] }
 ya-net = "0.3"
 ya-metrics = "0.2"
 ya-persistence = "0.3"
diff --git a/core/persistence/Cargo.toml b/core/persistence/Cargo.toml
index 6c804954c2..c5b91ea14c 100644
--- a/core/persistence/Cargo.toml
+++ b/core/persistence/Cargo.toml
@@ -10,7 +10,7 @@ service = ["ya-service-api", "ya-service-api-interfaces", "ya-utils-process", "s
 
 [dependencies]
 ya-client-model = { version = "0.5", features = [ "with-diesel" ] }
-ya-core-model = { version = "0.8" }
+ya-core-model = { version = "0.9" }
 ya-service-api = { version = "0.1", optional = true }
 ya-service-api-interfaces = { version = "0.2", optional = true }
 ya-utils-process = { version = "0.2", features = ["lock"], optional = true }
diff --git a/core/serv-api/web/Cargo.toml b/core/serv-api/web/Cargo.toml
index 5aeb3b0ee7..1148c348e2 100644
--- a/core/serv-api/web/Cargo.toml
+++ b/core/serv-api/web/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2018"
 
 [dependencies]
 ya-client = "0.7"
-ya-core-model = { version = "^0.8", features = ["appkey"] }
+ya-core-model = { version = "^0.9", features = ["appkey"] }
 ya-service-api = "0.1"
 ya-service-bus = "0.6.1"
 
diff --git a/core/sgx/Cargo.toml b/core/sgx/Cargo.toml
index 2811644d12..79f64cf9cd 100644
--- a/core/sgx/Cargo.toml
+++ b/core/sgx/Cargo.toml
@@ -8,5 +8,5 @@ edition = "2018"
 anyhow = "1.0"
 graphene-sgx = { version = "0.3.3", features = [ "ias" ] }
 ya-client-model = "0.5"
-ya-core-model = { version = "^0.8", features = ["sgx"] }
+ya-core-model = { version = "^0.9", features = ["sgx"] }
 ya-service-bus = "0.6.1"
diff --git a/core/version/Cargo.toml b/core/version/Cargo.toml
index 6f59444efd..7e4653fc4f 100644
--- a/core/version/Cargo.toml
+++ b/core/version/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2018"
 [dependencies]
 ya-client = "0.7"
 ya-compile-time-utils = "0.2"
-ya-core-model = { version = "^0.8", features = ["version"] }
+ya-core-model = { version = "^0.9", features = ["version"] }
 ya-persistence = "0.3"
 ya-service-api = "0.1"
 ya-service-api-interfaces = "0.2"
diff --git a/core/vpn/Cargo.toml b/core/vpn/Cargo.toml
index 7778869a83..e53f46653e 100644
--- a/core/vpn/Cargo.toml
+++ b/core/vpn/Cargo.toml
@@ -5,7 +5,7 @@ authors = ["Golem Factory <contact@golem.network>"]
 edition = "2018"
 
 [dependencies]
-ya-core-model = { version = "^0.8", features = ["activity", "market"] }
+ya-core-model = { version = "^0.9", features = ["activity", "market"] }
 ya-client-model = { version = "0.5", features = ["sgx"] }
 ya-net = "0.3"
 ya-persistence = "0.3"
diff --git a/exe-unit/Cargo.toml b/exe-unit/Cargo.toml
index 6b20762596..78dd11810f 100644
--- a/exe-unit/Cargo.toml
+++ b/exe-unit/Cargo.toml
@@ -33,8 +33,8 @@ ya-agreement-utils = "0.4.1"
 ya-manifest-utils = { version = "0.2" }
 ya-client-model = "0.5"
 ya-compile-time-utils = "0.2"
-ya-core-model = { version = "^0.8", features = ["activity", "appkey"] }
-ya-runtime-api = { version = "0.6", path = "runtime-api", features = ["server"] }
+ya-core-model = { version = "^0.9", features = ["activity", "appkey"] }
+ya-runtime-api = { version = "0.7", path = "runtime-api", features = ["server"] }
 ya-service-bus = "0.6.1"
 ya-transfer = "0.3"
 ya-utils-path = "0.1"
@@ -79,7 +79,7 @@ url = "2.1"
 yansi = "0.5.0"
 
 [dev-dependencies]
-ya-runtime-api = { version = "0.6", path = "runtime-api", features = ["codec", "server"] }
+ya-runtime-api = { version = "0.7", path = "runtime-api", features = ["codec", "server"] }
 ya-sb-router = "0.6.1"
 
 actix-files = "0.6"
diff --git a/exe-unit/examples/transfer.rs b/exe-unit/examples/transfer.rs
index 9ce3401673..4d8b798516 100644
--- a/exe-unit/examples/transfer.rs
+++ b/exe-unit/examples/transfer.rs
@@ -198,7 +198,7 @@ async fn main() -> anyhow::Result<()> {
 
     let agreement = Agreement {
         inner: AgreementView {
-            id: String::new(),
+            agreement_id: String::new(),
             json: Value::Null,
         },
         task_package: Some(format!(
diff --git a/exe-unit/examples/transfer_abort.rs b/exe-unit/examples/transfer_abort.rs
index a694c4f351..f877f82227 100644
--- a/exe-unit/examples/transfer_abort.rs
+++ b/exe-unit/examples/transfer_abort.rs
@@ -159,7 +159,7 @@ async fn main() -> anyhow::Result<()> {
 
     let agreement = Agreement {
         inner: AgreementView {
-            id: String::new(),
+            agreement_id: String::new(),
             json: serde_json::Value::Null,
         },
         task_package: None,
diff --git a/exe-unit/runtime-api/Cargo.toml b/exe-unit/runtime-api/Cargo.toml
index 950f4d9431..e908b0f50f 100644
--- a/exe-unit/runtime-api/Cargo.toml
+++ b/exe-unit/runtime-api/Cargo.toml
@@ -1,7 +1,7 @@
 [package]
 name = "ya-runtime-api"
 description = "Communication API between the Runtime and ExeUnit Supervisor. Provides server implementation for Runtime and client implementation for Supervisor."
-version = "0.6.0"
+version = "0.7.0"
 authors = ["Golem Factory <contact@golem.network>"]
 edition = "2018"
 license = "GPL-3.0"
diff --git a/exe-unit/src/network/inet.rs b/exe-unit/src/network/inet.rs
index 04be0af2fb..dbc7594aef 100644
--- a/exe-unit/src/network/inet.rs
+++ b/exe-unit/src/network/inet.rs
@@ -338,9 +338,13 @@ async fn inet_egress_handler<E: std::fmt::Display>(
         let frame = event.payload.into_vec();
 
         let desc = dispatch_desc(&frame)
-            .map(|desc| format!("{desc}"))
+            .map(|desc| format!("{desc:?}"))
             .unwrap_or_else(|_| "error".to_string());
-        log::trace!("[inet] egress -> runtime packet {} B, {desc}", frame.len());
+        log::trace!(
+            "[inet] egress -> runtime packet {} B, {}",
+            frame.len(),
+            desc
+        );
 
         if let Err(e) = fwd.send(Ok(frame)) {
             log::debug!("[inet] egress -> runtime error: {e}");
@@ -602,7 +606,7 @@ impl Proxy {
 
         print_sockets(&network);
 
-        log::debug!("[inet] connect to {desc}, using handle: {handle}");
+        log::debug!("[inet] connect to {desc:?}, using handle: {handle}");
 
         let (ip, port) = (
             conv_ip_addr(meta.local.addr).map_err(|e| ProxyingError::routeable(conn, e))?,
diff --git a/golem_cli/Cargo.toml b/golem_cli/Cargo.toml
index 3b27e62254..1fde23a1b2 100644
--- a/golem_cli/Cargo.toml
+++ b/golem_cli/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2018"
 [dependencies]
 ya-client = { version = "0.7", features = ['cli'] }
 ya-compile-time-utils = "0.2"
-ya-core-model = { version = "^0.8", features=["payment", "version"] }
+ya-core-model = { version = "^0.9", features=["payment", "version"] }
 ya-provider = "0.3"
 ya-utils-path = "0.1.0"
 ya-utils-process = { version = "0.2", features = ["lock"] }
diff --git a/utils/agreement-utils/Cargo.toml b/utils/agreement-utils/Cargo.toml
index 7b339ee29f..4bfa49ca34 100644
--- a/utils/agreement-utils/Cargo.toml
+++ b/utils/agreement-utils/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "ya-agreement-utils"
-version = "0.4.1"
+version = "0.5.0"
 authors = ["Golem Factory <contact@golem.network>"]
 edition = "2018"
 homepage = "https://github.com/golemfactory/yagna"
diff --git a/utils/compile-time-utils/Cargo.toml b/utils/compile-time-utils/Cargo.toml
index 2fd413f292..fd2e0586af 100644
--- a/utils/compile-time-utils/Cargo.toml
+++ b/utils/compile-time-utils/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "ya-compile-time-utils"
-version = "0.2.0"
+version = "0.2.1"
 authors = ["Golem Factory <contact@golem.network>"]
 edition = "2018"
 homepage = "https://github.com/golemfactory/yagna/utils/compile-time-utils"
diff --git a/utils/networking/Cargo.toml b/utils/networking/Cargo.toml
index a875446569..17f16f1b12 100644
--- a/utils/networking/Cargo.toml
+++ b/utils/networking/Cargo.toml
@@ -15,7 +15,7 @@ lazy_static = "1.4"
 log = "0.4"
 regex = "1"
 
-ya-relay-stack = { version = "0.4.1", optional = true }
+ya-relay-stack = { version = "0.5.0", optional = true }
 
 anyhow = { version = "1.0", optional = true }
 trust-dns-resolver = { version = "0.21", optional = true }
diff --git a/utils/transfer/Cargo.toml b/utils/transfer/Cargo.toml
index c7ede9c86e..493b23fbb1 100644
--- a/utils/transfer/Cargo.toml
+++ b/utils/transfer/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2018"
 
 [dependencies]
 ya-client-model = "0.5"
-ya-core-model = { version = "^0.8" }
+ya-core-model = { version = "^0.9" }
 ya-service-bus = "0.6.1"
 ya-utils-path = "0.1"
 gftp = { version = "^0.3" }


Test patch:
diff --git a/utils/manifest-utils/test-utils/Cargo.toml b/utils/manifest-utils/test-utils/Cargo.toml
index e88f264466..cb8906f3ec 100644
--- a/utils/manifest-utils/test-utils/Cargo.toml
+++ b/utils/manifest-utils/test-utils/Cargo.toml
@@ -14,4 +14,4 @@ tar = "0.4"
 openssl = "0.10"
 
 ya-manifest-utils = "0.2"
-ya-agreement-utils = "0.4.1"
\ No newline at end of file
+ya-agreement-utils = "0.4.1"