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

[KafkaTrigger] Errors while retrieving function metadata using BindingName in cardinality=Cardinality.MANY mode

Aperta
#229 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

@arnabnandy7 ci sta già lavorando.

Dal 8/8/2026.

  • #241 di @arnabnandy7 — aperta

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
java
Ambito
backend

Direzione di ricerca

Inizia tracciando il percorso di conversione in DataOperations.apply, DataSource.computeByType e nelle classi RpcCollectionLongDataSource e RpcCollectionStringDataSource indicate nei trace. Riproduci il trigger Kafka con Cardinality.MANY e i binding OffsetArray e TopicArray. Il lavoro è completato quando questi array di metadati non causano più ClassCastException e i binding esistenti continuano a essere risolti correttamente.

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

Descrizione

area:java-functions

Kafka trigger function has these metadata: Offset (long), Topic (string), key, partition, timestamp and headers. I was able to retrieve all this data using a basic function:

public class KafkaTriggerJava {
  @FunctionName("KafkaTriggerJava")
  public void run(
      @KafkaTrigger(
              name = "kafkaTrigger",
              topic = "test-topic",
              brokerList = "localhost:9092",
              authenticationMode = BrokerAuthenticationMode.PLAIN,
              protocol = BrokerProtocol.PLAINTEXT,
              consumerGroup = "test-group")
          String kafkaEventData,
      @BindingName("Key") String key,
      @BindingName("Offset") int offset,
      @BindingName("Partition") int partition,
      final ExecutionContext context) {
    context.getLogger().info("Payload: " + kafkaEventData);
  }
}

Then I set cardinality=Cardinality.MANY and tried the following binding names:

           @BindingName("KeyArray") Object[] key,
           @BindingName("OffsetArray") Object[] offset,
           @BindingName("TopicArray") Object[] topic,
           @BindingName("PartitionArray") Object[] partition,
           @BindingName("TimestampArray") Object[] timestamp, 
           @BindingName("HeadersArray") String[] headers

While I was able to get some of the data, "OffsetArray" and "TopicArray" ran into data conversion errors.
Trace for "OffsetArray":

Exception: ClassCastException: class com.microsoft.azure.functions.shaded.com.google.protobuf.LongArrayList cannot be cast to class java.lang.String (com.microsoft.azure.functions.shaded.com.google.protobuf.LongArrayList is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
Stack: java.lang.ClassCastException: class com.microsoft.azure.functions.shaded.com.google.protobuf.LongArrayList cannot be cast to class java.lang.String (com.microsoft.azure.functions.shaded.com.google.protobuf.LongArrayList is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
[2025-10-29T05:03:58.349Z]      at com.microsoft.azure.functions.worker.binding.DataOperations.apply(DataOperations.java:99)
[2025-10-29T05:03:58.352Z]      at com.microsoft.azure.functions.worker.binding.DataSource.computeByType(DataSource.java:56)
[2025-10-29T05:03:58.354Z]      at com.microsoft.azure.functions.worker.binding.RpcCollectionLongDataSource.computeByType(RpcCollectionLongDataSource.java:10)
[2025-10-29T05:03:58.356Z]      at com.microsoft.azure.functions.worker.binding.DataSource.computeByName(DataSource.java:42)
[2025-10-29T05:03:58.359Z]      at com.microsoft.azure.functions.worker.binding.RpcCollectionLongDataSource.computeByName(RpcCollectionLongDataSource.java:10)
[2025-10-29T05:03:58.361Z]      at com.microsoft.azure.functions.worker.binding.BindingDataStore.getTriggerMetatDataByName(BindingDataStore.java:72)
[2025-10-29T05:03:58.363Z]      at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolve(ParameterResolver.java:47)
[2025-10-29T05:03:58.365Z]      at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolveArguments(ParameterResolver.java:22)
[2025-10-29T05:03:58.367Z]      at com.microsoft.azure.functions.worker.broker.EnhancedJavaMethodExecutorImpl.execute(EnhancedJavaMethodExecutorImpl.java:20)
[2025-10-29T05:03:58.370Z]      at com.microsoft.azure.functions.worker.chain.FunctionExecutionMiddleware.invoke(FunctionExecutionMiddleware.java:19)
[2025-10-29T05:03:58.372Z]      at com.microsoft.azure.functions.worker.chain.InvocationChain.doNext(InvocationChain.java:21)
[2025-10-29T05:03:58.374Z]      at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod(JavaFunctionBroker.java:198)
[2025-10-29T05:03:58.376Z]      at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:34)
[2025-10-29T05:03:58.378Z]      at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10)
[2025-10-29T05:03:58.380Z]      at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:44)
[2025-10-29T05:03:58.383Z]      at com.microsoft.azure.functions.worker.JavaWorkerClient$StreamingMessagePeer.lambda$onNext$0(JavaWorkerClient.java:94)
[2025-10-29T05:03:58.385Z]      at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[2025-10-29T05:03:58.387Z]      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[2025-10-29T05:03:58.390Z]      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[2025-10-29T05:03:58.392Z]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[2025-10-29T05:03:58.394Z]      at java.base/java.lang.Thread.run(Thread.java:834)

Trace for "TopicArray":

Exception: ClassCastException: class com.microsoft.azure.functions.shaded.com.google.protobuf.LazyStringArrayList cannot be cast to class java.lang.String (com.microsoft.azure.functions.shaded.com.google.protobuf.LazyStringArrayList is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
Stack: java.lang.ClassCastException: class com.microsoft.azure.functions.shaded.com.google.protobuf.LazyStringArrayList cannot be cast to class java.lang.String (com.microsoft.azure.functions.shaded.com.google.protobuf.LazyStringArrayList is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
[2025-10-29T04:43:25.493Z]      at com.microsoft.azure.functions.worker.binding.DataOperations.apply(DataOperations.java:99)
[2025-10-29T04:43:25.495Z]      at com.microsoft.azure.functions.worker.binding.DataSource.computeByType(DataSource.java:56)
[2025-10-29T04:43:25.498Z]      at com.microsoft.azure.functions.worker.binding.RpcCollectionStringDataSource.computeByType(RpcCollectionStringDataSource.java:10)
[2025-10-29T04:43:25.500Z]      at com.microsoft.azure.functions.worker.binding.DataSource.computeByName(DataSource.java:42)
[2025-10-29T04:43:25.503Z]      at com.microsoft.azure.functions.worker.binding.RpcCollectionStringDataSource.computeByName(RpcCollectionStringDataSource.java:10)
[2025-10-29T04:43:25.506Z]      at com.microsoft.azure.functions.worker.binding.BindingDataStore.getTriggerMetatDataByName(BindingDataStore.java:72)
[2025-10-29T04:43:25.509Z]      at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolve(ParameterResolver.java:47)
[2025-10-29T04:43:25.512Z]      at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolveArguments(ParameterResolver.java:22)
[2025-10-29T04:43:25.515Z]      at com.microsoft.azure.functions.worker.broker.EnhancedJavaMethodExecutorImpl.execute(EnhancedJavaMethodExecutorImpl.java:20)
[2025-10-29T04:43:25.518Z]      at com.microsoft.azure.functions.worker.chain.FunctionExecutionMiddleware.invoke(FunctionExecutionMiddleware.java:19)
[2025-10-29T04:43:25.521Z]      at com.microsoft.azure.functions.worker.chain.InvocationChain.doNext(InvocationChain.java:21)
[2025-10-29T04:43:25.525Z]      at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod(JavaFunctionBroker.java:198)
[2025-10-29T04:43:25.528Z]      at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:34)
[2025-10-29T04:43:25.532Z]      at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10)
[2025-10-29T04:43:25.536Z]      at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:44)
[2025-10-29T04:43:25.539Z]      at com.microsoft.azure.functions.worker.JavaWorkerClient$StreamingMessagePeer.lambda$onNext$0(JavaWorkerClient.java:94)
[2025-10-29T04:43:25.543Z]      at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[2025-10-29T04:43:25.547Z]      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[2025-10-29T04:43:25.550Z]      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[2025-10-29T04:43:25.553Z]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[2025-10-29T04:43:25.556Z]      at java.base/java.lang.Thread.run(Thread.java:834)
Lingua principale
Java
Stelle
45
Fork
49
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 Azure/azure-functions-java-library

Tutte le issue di Azure/azure-functions-java-library

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.