You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When multiple users access one AAS, the submodel GET API hangs due to a certain pattern of access, does not return a response, and also does not output logs.
the problem is not resolved even after retrying, because a data integrity problem may be occurred .
Specifically, if you call the BaSyx AAS Repository API in the order below, no response will be returned in step 4.
User A calls the API to get AAS "C" and retains its contents
User B calls the API to add submodel "D" to AAS "C"
User A modifies some of the results in 1. and calls AAS "C" modification API.
Call API to get submodel "D" of AAS "C"
This seems to be because the property .submodels in AAS GET API reponse is different from the submodel database.
Impact of this issue
Applications using BaSyx cannot be deployed in an environment with multiple users, therefore it is not possible to move from Proof of Concept to the next step.
A User add a Submodel (idShort: test_sm1) to a AAS (ID: https//example.com/aas/0).
API operation: PUT /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0/aas/submodels/test_sm1
A User change a AAS's idShort property (ID: https//example.com/aas/0) based on procesure 1. But, submodels property is empty because of calling AAS GET API before calling Submodel PUT API.
API operation: PUT /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0
User cannot access a submodel (idShort: test_sm1) data.
API Operation: GET /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0/aas/submodels/test_sm1/submodel
Overview
When multiple users access one AAS, the submodel GET API hangs due to a certain pattern of access, does not return a response, and also does not output logs.
the problem is not resolved even after retrying, because a data integrity problem may be occurred .
Specifically, if you call the BaSyx AAS Repository API in the order below, no response will be returned in step 4.
This seems to be because the property
.submodelsin AAS GET API reponse is different from the submodel database.Impact of this issue
Applications using BaSyx cannot be deployed in an environment with multiple users, therefore it is not possible to move from Proof of Concept to the next step.
Steps to reproduce
Environment
Docker compose settings
A sample procesure
API operation:
GET /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0response json
{ "conceptDictionary": [], "identification": { "idType": "Custom", "id": "https//example.com/aas/0" }, "idShort": "test", "dataSpecification": [], "modelType": { "name": "AssetAdministrationShell" }, "asset": { "identification": { "idType": "Custom", "id": "https//example.com/asset/0" }, "idShort": "test_asset0", "kind": "Instance", "dataSpecification": [], "modelType": { "name": "Asset" }, "embeddedDataSpecifications": [] }, "embeddedDataSpecifications": [], "views": [], "submodels": [] }API operation:
PUT /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0/aas/submodels/test_sm1request json
{ "parent": { "keys": [ { "idType": "Custom", "type": "AssetAdministrationShell", "value": "https//example.com/aas/0", "local": true } ] }, "identification": { "idType": "Custom", "id": "https//example.com/submodel/1" }, "idShort": "test_sm1", "kind": "Instance", "dataSpecification": [], "modelType": { "name": "Submodel" }, "embeddedDataSpecifications": [], "submodelElements": [ { "parent": { "keys": [ { "idType": "Custom", "type": "Submodel", "value": "https//example.com/submodel/1", "local": true } ] }, "identification": { "idType": "Custom", "id": "https//example.com/submodelelement/0" }, "idShort": "test_element0", "kind": "Instance", "valueType": "integer", "modelType": { "name": "Property" }, "value": 12347 } ] }API operation:
PUT /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0request json
{ "conceptDictionary": [], "identification": { "idType": "Custom", "id": "https//example.com/aas/0" }, "idShort": "hoge", "dataSpecification": [], "modelType": { "name": "AssetAdministrationShell" }, "asset": { "identification": { "idType": "Custom", "id": "https//example.com/asset/0" }, "idShort": "test_asset0", "kind": "Instance", "dataSpecification": [], "modelType": { "name": "Asset" }, "embeddedDataSpecifications": [] }, "embeddedDataSpecifications": [], "views": [], "submodels": [] }API Operation:
GET /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0/aas/submodels/test_sm1/submodel