ansys / ansys/api-eigen-example

vector serialization does not take into account endianness

Offen
#53 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
C++ gRPC Python
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.