15
15
use std:: { ops:: Deref , sync:: atomic:: Ordering :: Relaxed , time:: Duration } ;
16
16
17
17
use rand:: Rng ;
18
- use zenoh_core :: bail ;
18
+ use tracing :: error ;
19
19
use zenoh_result:: ZResult ;
20
20
21
21
pub mod common;
22
22
use common:: { execute_concurrent, CpuLoad } ;
23
23
use zenoh_shm:: {
24
+ api:: provider:: types:: ZAllocError ,
24
25
metadata:: {
25
26
descriptor:: MetadataDescriptor , storage:: GLOBAL_METADATA_STORAGE ,
26
27
subscription:: GLOBAL_METADATA_SUBSCRIPTION ,
27
28
} ,
28
29
watchdog:: { confirmator:: GLOBAL_CONFIRMATOR , validator:: GLOBAL_VALIDATOR } ,
29
30
} ;
30
31
31
- fn metadata_alloc_fn ( ) -> impl Fn ( usize , usize ) -> ZResult < ( ) > + Clone + Send + Sync + ' static {
32
- |_task_index : usize , _iteration : usize | -> ZResult < ( ) > {
32
+ fn metadata_alloc_fn (
33
+ ) -> impl Fn ( usize , usize ) -> Result < ( ) , ZAllocError > + Clone + Send + Sync + ' static {
34
+ |_task_index : usize , _iteration : usize | {
33
35
let _allocated_metadata = GLOBAL_METADATA_STORAGE . read ( ) . allocate ( ) ?;
34
36
Ok ( ( ) )
35
37
}
@@ -45,7 +47,8 @@ fn metadata_alloc_concurrent() {
45
47
execute_concurrent ( 100 , 1000 , metadata_alloc_fn ( ) ) ;
46
48
}
47
49
48
- fn metadata_link_fn ( ) -> impl Fn ( usize , usize ) -> ZResult < ( ) > + Clone + Send + Sync + ' static {
50
+ fn metadata_link_fn (
51
+ ) -> impl Fn ( usize , usize ) -> Result < ( ) , ZAllocError > + Clone + Send + Sync + ' static {
49
52
|_task_index : usize , _iteration : usize | {
50
53
let allocated_metadata = GLOBAL_METADATA_STORAGE . read ( ) . allocate ( ) ?;
51
54
let descr = MetadataDescriptor :: from ( allocated_metadata. deref ( ) ) ;
@@ -64,8 +67,8 @@ fn metadata_link_concurrent() {
64
67
execute_concurrent ( 100 , 1000 , metadata_link_fn ( ) ) ;
65
68
}
66
69
67
- fn metadata_link_failure_fn ( ) -> impl Fn ( usize , usize ) -> ZResult < ( ) > + Clone + Send + Sync + ' static
68
- {
70
+ fn metadata_link_failure_fn (
71
+ ) -> impl Fn ( usize , usize ) -> Result < ( ) , ZAllocError > + Clone + Send + Sync + ' static {
69
72
|_task_index : usize , _iteration : usize | {
70
73
let allocated_metadata = GLOBAL_METADATA_STORAGE . read ( ) . allocate ( ) ?;
71
74
let descr = MetadataDescriptor :: from ( allocated_metadata. deref ( ) ) ;
@@ -93,7 +96,7 @@ fn metadata_link_failure_concurrent() {
93
96
}
94
97
95
98
fn metadata_check_memory_fn ( parallel_tasks : usize , iterations : usize ) {
96
- let task_fun = |_task_index : usize , _iteration : usize | -> ZResult < ( ) > {
99
+ let task_fun = |_task_index : usize , _iteration : usize | -> Result < ( ) , ZAllocError > {
97
100
let allocated_metadata = GLOBAL_METADATA_STORAGE . read ( ) . allocate ( ) ?;
98
101
let descr = MetadataDescriptor :: from ( allocated_metadata. deref ( ) ) ;
99
102
let linked_metadata = GLOBAL_METADATA_SUBSCRIPTION . read ( ) . link ( & descr) ?;
@@ -136,8 +139,9 @@ fn metadata_check_memory_concurrent() {
136
139
const VALIDATION_PERIOD : Duration = Duration :: from_millis ( 100 ) ;
137
140
const CONFIRMATION_PERIOD : Duration = Duration :: from_millis ( 50 ) ;
138
141
139
- fn watchdog_confirmed_fn ( ) -> impl Fn ( usize , usize ) -> ZResult < ( ) > + Clone + Send + Sync + ' static {
140
- |_task_index : usize , _iteration : usize | -> ZResult < ( ) > {
142
+ fn watchdog_confirmed_fn (
143
+ ) -> impl Fn ( usize , usize ) -> Result < ( ) , ZAllocError > + Clone + Send + Sync + ' static {
144
+ |_task_index : usize , _iteration : usize | {
141
145
let allocated = GLOBAL_METADATA_STORAGE . read ( ) . allocate ( ) ?;
142
146
let confirmed = GLOBAL_CONFIRMATOR . read ( ) . add ( allocated. clone ( ) ) ;
143
147
@@ -146,7 +150,8 @@ fn watchdog_confirmed_fn() -> impl Fn(usize, usize) -> ZResult<()> + Clone + Sen
146
150
std:: thread:: sleep ( VALIDATION_PERIOD ) ;
147
151
let valid = confirmed. owned . test_validate ( ) != 0 ;
148
152
if !valid {
149
- bail ! ( "Invalid watchdog, iteration {i}" ) ;
153
+ error ! ( "Invalid watchdog, iteration {i}" ) ;
154
+ return Err ( ZAllocError :: Other ) ;
150
155
}
151
156
}
152
157
Ok ( ( ) )
@@ -185,8 +190,9 @@ fn watchdog_confirmed_dangling() {
185
190
}
186
191
}
187
192
188
- fn watchdog_validated_fn ( ) -> impl Fn ( usize , usize ) -> ZResult < ( ) > + Clone + Send + Sync + ' static {
189
- |_task_index : usize , _iteration : usize | -> ZResult < ( ) > {
193
+ fn watchdog_validated_fn (
194
+ ) -> impl Fn ( usize , usize ) -> Result < ( ) , ZAllocError > + Clone + Send + Sync + ' static {
195
+ |_task_index : usize , _iteration : usize | {
190
196
let allocated = GLOBAL_METADATA_STORAGE . read ( ) . allocate ( ) ?;
191
197
let confirmed = GLOBAL_CONFIRMATOR . read ( ) . add ( allocated. clone ( ) ) ;
192
198
@@ -200,7 +206,8 @@ fn watchdog_validated_fn() -> impl Fn(usize, usize) -> ZResult<()> + Clone + Sen
200
206
. watchdog_invalidated
201
207
. load ( std:: sync:: atomic:: Ordering :: SeqCst )
202
208
{
203
- bail ! ( "Invalid watchdog, iteration {i}" ) ;
209
+ error ! ( "Invalid watchdog, iteration {i}" ) ;
210
+ return Err ( ZAllocError :: Other ) ;
204
211
}
205
212
}
206
213
0 commit comments