ansys / ansys/api-eigen-example
vector serialization does not take into account endianness
- Vorherrschende Sprache
- Python
- Sterne
- 8
- Forks
- 0
- Ø Merge
- 11 Std. 54 Min.
- Gemergte PRs (30 T.)
- 10
Beschreibung
The [gRPC protocol is defined](https://github.com/ansys/api-eigen-example/blob/108085fcaa860a9d1e27abbdc561c160a98e09e3/src/ansys/eigen/protos/grpcdemo.proto#L21) as sending over the bytes of arrays directly, but does not take into account endianness. This means the protocol will fail spectacularly (type 3 error, bad data with no error) if the client and server machines have different native endianness.
https://github.com/ansys/api-eigen-example/blob/108085fcaa860a9d1e27abbdc561c160a98e09e3/src/ansys/eigen/cpp/grpc/client/src/GRPCClient.cpp#L499
https://github.com/ansys/api-eigen-example/blob/108085fcaa860a9d1e27abbdc561c160a98e09e3/src/ansys/eigen/python/grpc/client.py#L280
Unless there is another reason, I recommend using gRPC arrays instead of bytes. gRPC can handle this for us.
Beitragsleitfaden
Rechercherichtung
Beginnen Sie mit der referenzierten grpcdemo.proto-Definition und den Serialisierungspunkten in src/ansys/eigen/cpp/grpc/client/src/GRPCClient.cpp und src/ansys/eigen/python/grpc/client.py. Vergleichen Sie die aktuelle bytes-basierte Darstellung mit gRPC-Arrays und bestimmen Sie das Verhalten bei unterschiedlicher Endianness, das erhalten bleiben muss. Die Aufgabe ist abgeschlossen, wenn Clients und Server mit unterschiedlicher nativer Endianness Vektordaten ohne stille Datenkorruption austauschen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp, grpc, python
- Bereich
- api, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100