eclipse-iceoryx / iceoryx2

Eclipse iceoryx2™ - true zero-copy inter-process-communication in pure Rust
https://iceoryx.io
Apache License 2.0
449 stars 22 forks source link

Starting Subscriber leads to `ExceedsMaxBorrowedSamples` #132

Closed elfenpiff closed 3 months ago

elfenpiff commented 4 months ago

Required information

Operating system: Linux 6.7.3-arch1-2

Rust version: rustc 1.76.0 (07dca489a 2024-02-04)

Cargo version: rustc 1.76.0 (07dca489a 2024-02-04)

iceoryx2 version: main branch

Observed result or behaviour: When a subscriber starts, it thinks it can only borrow 0 samples and therefore emits an error when receiving new samples.

Expected result or behaviour: The amount of borrowed samples is parsed correctly.

Conditions where it occurred / Performed steps:

       11 [T] SharedMemory { name: FileName { value: FixedSizeByteString<255> { len: 60, data: "iox2_18018_1427533032182014834768991936413080.
              publisher_data" } }, size: 4621245, base_address: 0x757f6076e000, has_ownership: false, file_descriptor: FileDescriptor { value:
               6, is_owned: true }, memory_lock: None }
              | open
       12 [D] Receiver { shared_memory: SharedMemory { name: FileName { value: FixedSizeByteString<255> { len: 85, data: "iox2_142753303218201
              4834768991936413080_1432365950095384959362232936474399.connection" } }, size: 190, base_address: 0x757f60e12000, has_ownership: 
              false, file_descriptor: FileDescriptor { value: 3, is_owned: true }, memory_lock: None }, borrow_counter: UnsafeCell { .. }, nam
              e: FileName { value: FixedSizeByteString<255> { len: 69, data: "1427533032182014834768991936413080_14323659500953849593622329364
              74399" } } }
              | Unable to receive another sample since already 0 samples were borrowed and this would exceed the max borrow value of 0.
       13 [D] Subscriber { dynamic_subscriber_handle: ContainerHandle { index: 0, container_id: 0 }, publisher_connections: PublisherConnectio
              ns { connections: [UnsafeCell { .. }, UnsafeCell { .. }], subscriber_id: UniqueSubscriberId(UniqueSystemId { value: 143236595009
              5384959362232936474399 }), config: Config { global: Global { root_path_unix: "/tmp/iceoryx2/", root_path_windows: "c:\\Temp\\ice
              oryx2\\", prefix: "iox2_", service: Service { directory: "services", publisher_data_segment_suffix: ".publisher_data", static_co
              nfig_storage_suffix: ".service", dynamic_config_storage_suffix: ".dynamic", creation_timeout: 500ms, connection_suffix: ".connec
              tion" } }, defaults: Defaults { publish_subscribe: PublishSubscribe { max_subscribers: 8, max_publishers: 2, subscriber_max_buff
              er_size: 2, subscriber_max_borrowed_samples: 2, publisher_max_loaned_samples: 2, publisher_history_size: 1, enable_safe_overflow
              : true, unable_to_deliver_strategy: Block }, event: Event { max_listeners: 2, max_notifiers: 16 } } }, static_config: StaticConf
              ig { max_subscribers: 8, max_publishers: 2, history_size: 1, subscriber_max_buffer_size: 2, subscriber_max_borrowed_samples: 2, 
              enable_safe_overflow: true, type_name: "publish_subscribe_publisher::BigMessage" } }, dynamic_storage: Storage { shm: SharedMemo
              ry { name: FileName { value: FixedSizeByteString<255> { len: 53, data: "iox2_b61bd15e8c3ea16146985e960906a8e125156a73.dynamic" }
               }, size: 422, base_address: 0x757f60e13000, has_ownership: false, file_descriptor: FileDescriptor { value: 5, is_owned: true },
               memory_lock: None }, name: FileName { value: FixedSizeByteString<255> { len: 40, data: "b61bd15e8c3ea16146985e960906a8e125156a7
              3" } }, _phantom_data: PhantomData<iceoryx2::service::dynamic_config::DynamicConfig> }, service: Service { state: ServiceState {
               static_config: StaticConfig { uuid: "b61bd15e8c3ea16146985e960906a8e125156a73", service_name: ServiceName { value: FixedSizeByt
              eString<255> { len: 19, data: "My/Funk/ServiceName" } }, messaging_pattern: PublishSubscribe(StaticConfig { max_subscribers: 8, 
              max_publishers: 2, history_size: 1, subscriber_max_buffer_size: 2, subscriber_max_borrowed_samples: 2, enable_safe_overflow: tru
              e, type_name: "publish_subscribe_publisher::BigMessage" }) }, global_config: Config { global: Global { root_path_unix: "/tmp/ice
              oryx2/", root_path_windows: "c:\\Temp\\iceoryx2\\", prefix: "iox2_", service: Service { directory: "services", publisher_data_se
              gment_suffix: ".publisher_data", static_config_storage_suffix: ".service", dynamic_config_storage_suffix: ".dynamic", creation_t
              imeout: 500ms, connection_suffix: ".connection" } }, defaults: Defaults { publish_subscribe: PublishSubscribe { max_subscribers:
               8, max_publishers: 2, subscriber_max_buffer_size: 2, subscriber_max_borrowed_samples: 2, publisher_max_loaned_samples: 2, publi
              sher_history_size: 1, enable_safe_overflow: true, unable_to_deliver_strategy: Block }, event: Event { max_listeners: 2, max_noti
              fiers: 16 } } }, dynamic_storage: Storage { shm: SharedMemory { name: FileName { value: FixedSizeByteString<255> { len: 53, data
              : "iox2_b61bd15e8c3ea16146985e960906a8e125156a73.dynamic" } }, size: 422, base_address: 0x757f60e13000, has_ownership: false, fi
              le_descriptor: FileDescriptor { value: 5, is_owned: true }, memory_lock: None }, name: FileName { value: FixedSizeByteString<255
              > { len: 40, data: "b61bd15e8c3ea16146985e960906a8e125156a73" } }, _phantom_data: PhantomData<iceoryx2::service::dynamic_config:
              :DynamicConfig> }, static_storage: Storage { name: FileName { value: FixedSizeByteString<255> { len: 40, data: "b61bd15e8c3ea161
              46985e960906a8e125156a73" } }, config: Configuration { path: Path { value: FixedSizeByteString<4096> { len: 22, data: "/tmp/iceo
              ryx2/services" } }, suffix: FileName { value: FixedSizeByteString<255> { len: 8, data: ".service" } }, prefix: FileName { value:
               FixedSizeByteString<255> { len: 5, data: "iox2_" } } }, has_ownership: false, file: File { path: Some(FilePath { value: FixedSi
              zeByteString<4096> { len: 76, data: "/tmp/iceoryx2/services/iox2_b61bd15e8c3ea16146985e960906a8e125156a73.service" } }), file_de
              scriptor: FileDescriptor { value: 4, is_owned: true }, has_ownership: false }, len: 352 } } }, degration_callback: None, publish
              er_list_state: UnsafeCell { .. }, _phantom_message_type: PhantomData<publish_subscribe_publisher::BigMessage> }
              | Unable to receive another sample since it would exceed the maximum 2 of borrowed samples.