Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

ProtobufJsonPayloadConverter does not work correctly with shaded artifact

Ouverte
#2,792 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
java
Domaine
backend

Piste de recherche

Commencez par temporal-sdk/src/main/java/io/temporal/common/converter/ProtobufJsonPayloadConverter.java, au niveau de la vérification de MessageOrBuilder décrite dans l’issue. Exécutez la reproduction du shaded-artifact avec StringValue.of("hello") et vérifiez le résultat du payload du converter. C’est terminé lorsque les valeurs protobuf provenant du code client sont reconnues et que la reproduction signale la présence d’un payload dans le shaded-artifact.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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
Langage dominant
Java
Étoiles
434
Forks
252
Merge moyen
2 j 19 h
PR mergées (30 j)
14

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de temporalio/sdk-java

Toutes les issues de temporalio/sdk-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.