Open hiroaki-yoshii opened 9 months ago
Thanks a lot for pointing out this issue. Can you also provide the configuration files used in your setup?
Is there any reason why you are still using the 1.X Components of BaSyx? With the update of the meta model & REST API by the IDTA to V3, they are becoming obsolete.
The new components conforming to the newest specifications by IDTA can be found here: https://github.com/eclipse-basyx/basyx-java-server-sdk
The configs of aas registry and aas server are as follows:
registry.backend=MongoDB
registry.id=aas-registry
registry.authorization=Disabled
registry.taggedDirectory=Disabled
aas.backend=MongoDB
aas.source=
aas.id=aas-server.local
aas.aasxUpload=Enabled
registry.path=http://aas-registry.local:4000/registry/
aas.authorization=Disabled
aas.delegation=Enabled
I would like to migrate to V3 in the future, but I am hesitant to do now due to the following reasons:
2.0.0-SNAPSHOT
. Therefore, in my understanding, a stable version has not been released yet.We will take a look based on your configuration and come back to you.
In regard to the migration:
Hi @hiroaki-yoshii ,
We tried to reproduce the issue based on the configurations and steps you provided, but we couldn't reproduce it at our end.
@mdanish98
Sorry, the json content in step 3(calling Submodel PUT API) of the process is incorrect. Please replace request json with the following json and perform steps 1 to 4 again.
Thanks for providing the updated requested body. We are analyzing it again, and we will get back to you with the analysis.
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.
.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.
Steps to reproduce
Environment
Docker compose settings
A sample procesure
API operation:
GET /aasServer/shells/https%2F%2Fexample.com%2Faas%2F0
response json
```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_sm1
request json
```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%2F0
request json
```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