eclipse-aaspe / server

C# based server for AASX packages
Other
72 stars 52 forks source link

Code is very fragile. it crashes entire server if a bad assx upload or used #214

Open EmilAlipiev opened 9 months ago

EmilAlipiev commented 9 months ago

If i have many aasx files and one of them is bad formatted, server is crashing without any information. Not even throwing any exception or writing anything to console. This makes the code not very useable. I give a simple example; download https://www.admin-shell-io.com/samples/aasx/13_DKE.aasx and try to use it in the server. Server will crash at the \aasx-server\src\AasxCsharpLibrary\AdminShellPackageEnv.cs ln:591 this is just 1 out of many other examples. Instead of just crashing entire server without any information, it will be nice to ignore this aasx with a warning or error message only for this aasx thrown.

martafullen commented 9 months ago

Also observed here:

Trace from aasx-server:
System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
  Source=AasxCsharpLibrary
  StackTrace:
   at Extensions.ExtendISubmodelElement.BasicConversionFromV20(ISubmodelElement submodelElement, SubmodelElement sourceSubmodelElement) in D:\idta\aasx-server\aasx-server\src\AasxCsharpLibrary\Extensions\ExtendISubmodelElement.cs:line 524
juileetikekar commented 9 months ago

Hi @martafullen,

The issue corresponding to https://github.com/eclipse-aaspe/aaspe/issues/37 has been fixed in AASX Server as well.

juileetikekar commented 9 months ago

Hi @EmilAlipiev,

We have tried to test the file https://www.admin-shell-io.com/samples/aasx/13_DKE.aasx in the server. However, the file consists of NO AASs, only submodels. The server does not fail to load the file, but it fails while initializing the Timeseries (AASXServerStandardBib/Program.cs 1390) and SecurityClient init (AASXServerStandardBib/Program.cs 1403).

We will investigate it in more detail and keep you informed.

juileetikekar commented 9 months ago

Related issue #210

EmilAlipiev commented 8 months ago

For me the most frustrating part is when I work with Docker, if i have a single malformed aasx in the docker, entire container is crashing and not restarting until i destroy and recreate. it is very expensive process if i am for example testing Post File aasx endpoint. Could it better if just malformed aasx throws exception and logged in the logs and ignore while server is up and running without it. So if i provide an import assx functionality on my UI and user uploads a bad file, Server will be down every time.