Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

ProtobufJsonPayloadConverter does not work correctly with shaded artifact

Aperta
#2,792 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
java
Ambito
backend

Direzione di ricerca

Inizia da temporal-sdk/src/main/java/io/temporal/common/converter/ProtobufJsonPayloadConverter.java, al controllo di MessageOrBuilder descritto nell’issue. Esegui la riproduzione dello shaded-artifact usando StringValue.of("hello") e verifica il risultato del payload del converter. Il lavoro è completato quando i valori protobuf provenienti dal codice client vengono riconosciuti e la riproduzione segnala la presenza di un payload nello shaded-artifact.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Expected Behavior

The ProtobufJsonPayloadConverter does not work correctly when using the shaded Temporal artifact, which is sometimes necessary to avoid gRPC version conflicts.

The problem is: https://github.com/temporalio/sdk-java/blob/81f3cc33be8c4d6dbda48321cbb0b7aee3915e31/temporal-sdk/src/main/java/io/temporal/common/converter/ProtobufJsonPayloadConverter.java#L51-L53

Here, MessageOrBuilder is rewritten in the byte-code to be io.temporal.shaded.com.google.protobuf.MessageOrBuilder, and so passing in a non-shaded value (as certainly client code will be using) fails, and the converter fails to convert the value.

The converter, whether it is shaded or not, should correctly recognize protobuf values coming from client code.

Actual Behavior

Protobuf values coming from client code are ignored, and serialization fails.

Steps to Reproduce the Problem

Using the shaded temporal artifact, run this code:

import com.google.protobuf.StringValue;
import io.temporal.common.converter.ProtobufJsonPayloadConverter;

class Test {
    public static void main(String[] args) {
        var converter = new ProtobufJsonPayloadConverter();
        var msg = StringValue.of("hello");
        var payloadOpt = converter.toData(msg);
        System.out.println(payloadOpt.isPresent());
    }
}

We can see that the payload is not present.

Specifications

  • Version: 1.32.1
  • Platform: N/A
Lingua principale
Java
Stelle
434
Fork
252
Merge medio
2g 19h
PR unite (30g)
14

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di temporalio/sdk-java

Tutte le issue di temporalio/sdk-java

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.