AssertionError: Assertion failed when deserializing message from python in js
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript, node.js, python
- Área
- backend-api-design
Línea de trabajo
Comienza con el repositorio de ejemplo enlazado y ejecuta node test.js y python3 test.py después de instalar sus requisitos. Compara la ruta de deserialización en demo_pb.js con el resultado de Python, usando la secuencia de bytes y el stack trace indicados como reproducción. La tarea estará terminada cuando el mensaje se deserialice correctamente tanto en JavaScript como en Python sin que se produzca el AssertionError.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What version of protobuf and what language are you using?
Version: v.3.11.2
Language: Python, Javascript
What operating system (Linux, Windows, ...) and version?
MacOS High Sierra Version 10.13.6
What runtime / compiler are you using (e.g., python version or gcc version)
Python 3.7.3, NodeJS v13.3.0
What did you do?
Steps to reproduce the behavior:
- Defined these protos:
syntax = "proto2";
message B {
optional string b2 = 2;
}
message A {
optional B b = 1;
optional string id = 2;
}
- Attempted to deserialize this message in both js and python:
0a060a0131120131181e10a3c6ad8dcdeed0a274
Here's a sample repo to reproduce: https://github.com/bhainesva/protobuf-py-vs-js-demo (run node test.js / python3 test.py after installing requirements).
What did you expect to see
I expected the deserialization to succeed in both python and js.
What did you see instead?
Python deserialization succeeds but js deserialization produces this error:
/Users/bhaines/repo/proto-demo/node_modules/google-protobuf/google-protobuf.js:81
jspb.BinaryConstants.TWO_TO_32=4294967296;jspb.BinaryConstants.TWO_TO_52=4503599627370496;jspb.BinaryConstants.TWO_TO_63=0x7fffffffffffffff;jspb.BinaryConstants.TWO_TO_64=1.8446744073709552E19;jspb.BinaryConstants.ZERO_HASH="\x00\x00\x00\x00\x00\x00\x00\x00";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.debug={};goog.debug.Error=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a));this.reportErrorToServer=!0};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){goog.debug.Error.call(this,goog.asserts.subs_(a,b));this.messagePattern=a};goog.in
Error [AssertionError]: Assertion failed
at new goog.asserts.AssertionError (/Users/bhaines/repo/proto-demo/node_modules/google-protobuf/google-protobuf.js:81:876)
at Object.goog.asserts.doAssertFailure_ (/Users/bhaines/repo/proto-demo/node_modules/google-protobuf/google-protobuf.js:82:257)
at Object.goog.asserts.assert (/Users/bhaines/repo/proto-demo/node_modules/google-protobuf/google-protobuf.js:83:83)
at jspb.BinaryReader.readString (/Users/bhaines/repo/proto-demo/node_modules/google-protobuf/google-protobuf.js:394:64)
at Function.proto.A.deserializeBinaryFromReader (/Users/bhaines/repo/proto-demo/demo_pb.js:263:49)
at Function.proto.A.deserializeBinary (/Users/bhaines/repo/proto-demo/demo_pb.js:239:18)
at Object.<anonymous> (/Users/bhaines/repo/proto-demo/test.js:13:20)
at Module._compile (internal/modules/cjs/loader.js:1128:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
at Module.load (internal/modules/cjs/loader.js:983:32) {
message: 'Assertion failed',
reportErrorToServer: true,
messagePattern: 'Assertion failed'
}
Seems related to including unknown fields in messages but I'm not very familiar with protobuf, my understanding is that that's supported.
Potentially related to this issue? protocolbuffers/protobuf#4688.
- Lenguaje dominante
- JavaScript
- Estrellas
- 471
- Forks
- 91
- Merge medio
- 1 d 12 h
- PR fusionados (30 d)
- 6
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de protocolbuffers/protobuf-javascript
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
protocolbuffers/protobuf-javascript#248 · 1 comentario · 13 reacciones ·
-
question
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
protocolbuffers/protobuf-javascript#222 · 9 comentarios ·
-
Why map.js sort keys?Abiertoenhancement port-fix triaged
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
protocolbuffers/protobuf-javascript#185 · 1 comentario ·
-
enhancement port-fix triaged
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
protocolbuffers/protobuf-javascript#182 · 3 comentarios · 1 reacción ·
Todos los issues de protocolbuffers/protobuf-javascript
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
[quality] useFocusTrap's Shift+Tab wrap and non-Tab/non-Escape key arms are never driven end to endPosiblemente ocupada @hivecommons-hive la tomó hoy. Abiertoagent/quality hive/covered-by-pr hive/hosted-available-lke648397-260827-5n31 quality testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
[aw] Upgrade availableAbiertoagentic-workflows
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
githubnext/gh-aw-workshop#4220 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
JuliusBrussee/caveman#1189 ·
Los mantenedores suelen responder en 1 día
-
priority:low ready-for-dev
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
OpenHands/extensions#738 ·
Los mantenedores suelen responder en 1 día