Skip to content

[Bug] [Master] Master task dispatch failed due to a null map key, which is not allowed in JsonSerializer #17710

@njnu-seafish

Description

@njnu-seafish

Search before asking

  • I had searched in the issues and found no similar issues.

What happened

Master task dispatch failed: encountered a null key in a parameter map, which violates JSON serialization rules;
The dolphinscheduler-master.log log file contains a large number of the following error messages
.

`
[WI-751315][TI-2077572] - 2025-11-19 17:00:08.610 ERROR [WorkerGroupTaskDispatcher-default] o.a.d.e.b.s.JsonSerializer:[67] - serializeToString exception!
com.fasterxml.jackson.databind.JsonMappingException: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?) (through reference chain: org.apache.dolphinscheduler.task.executor.operations.TaskExecutorDispatchRequest["taskExecutionContext"]->org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext["prepareParamsMap"]->java.util.HashMap["null"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:283)
at com.fasterxml.jackson.databind.SerializerProvider.mappingException(SerializerProvider.java:1370)
at com.fasterxml.jackson.databind.SerializerProvider.reportMappingProblem(SerializerProvider.java:1266)
at com.fasterxml.jackson.databind.ser.impl.FailingSerializer.serialize(FailingSerializer.java:32)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:791)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:764)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:720)
at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:35)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:732)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:772)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:732)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:772)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:479)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:318)
at com.fasterxml.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4719)
at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3964)
at org.apache.dolphinscheduler.extract.base.serialize.JsonSerializer.serialize(JsonSerializer.java:65)
at org.apache.dolphinscheduler.extract.base.StandardRpcRequest.of(StandardRpcRequest.java:42)
at org.apache.dolphinscheduler.extract.base.client.SyncClientMethodInvoker.invoke(SyncClientMethodInvoker.java:43)
at org.apache.dolphinscheduler.extract.base.client.ClientInvocationHandler.invoke(ClientInvocationHandler.java:56)
at com.sun.proxy.$Proxy209.dispatchTask(Unknown Source)
at org.apache.dolphinscheduler.server.master.engine.task.client.PhysicalTaskExecutorClientDelegator.dispatch(PhysicalTaskExecutorClientDelegator.java:78)
at org.apache.dolphinscheduler.server.master.engine.task.client.TaskExecutorClient.dispatch(TaskExecutorClient.java:54)
at org.apache.dolphinscheduler.server.master.engine.task.dispatcher.WorkerGroupDispatcher.doDispatchTask(WorkerGroupDispatcher.java:94)
at org.apache.dolphinscheduler.server.master.engine.task.dispatcher.WorkerGroupDispatcher.run(WorkerGroupDispatcher.java:79)
[WI-751315][TI-2077572] - 2025-11-19 17:00:08.611 ERROR [WorkerGroupTaskDispatcher-default] o.a.d.s.m.e.t.d.WorkerGroupDispatcher:[102] - Dispatch Task: 2077572 failed will retry after: 60000/ms

`

What you expected to happen

The Master is able to dispatch this task normally

How to reproduce

Whenever there is a parameter with a null key.

mysql> select id,task_type,workflow_instance_id,task_params from t_ds_task_instance where id = 2077572 \G;
*************************** 1. row ***************************
id: 2077572
task_type: SHELL
workflow_instance_id: 751315
task_params: {"localParams":[],"rawScript":"#!/bin/bash\nset -e\n\n\n \necho "===================================="","resourceList":[{"resourceName":"hdfs://xxx/dolphinscheduler/default/resources/123.sql"}]}

mysql> select global_params from t_ds_workflow_instance where id = 751315 \G;
*************************** 1. row ***************************
global_params: [{"prop":null,"direct":"IN","type":"VARCHAR","value":""}]

Anything else

No response

Version

dev

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

Labels

backendbugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions