Skip to content

NPE for Map serializing #998

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
2 of 4 tasks
cmdjulian opened this issue May 15, 2025 · 2 comments
Open
2 of 4 tasks

NPE for Map serializing #998

cmdjulian opened this issue May 15, 2025 · 2 comments
Labels

Comments

@cmdjulian
Copy link

Search before asking

  • I searched in the issues and found nothing similar.
  • I have confirmed that the same problem is not reproduced if I exclude the KotlinModule.
  • I searched in the issues of databind and other modules used and found nothing similar.
  • I have confirmed that the problem does not reproduce in Java and only occurs when using Kotlin and KotlinModule.

Describe the bug

Hey,

I found the following closed issue: FasterXML/jackson-databind#4878
I encounter the same issue, but only after upgrading from Jackson 2.18.4 to 2.19.0, downgrading to 2.18.4 fixes it.

This is my stack trace:

Exception in thread "main" java.lang.IllegalArgumentException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["namespace"])
	at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4663)
	at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4594)
	at io.fabric8.kubernetes.client.utils.KubernetesSerialization.asYaml(KubernetesSerialization.java:237)
	at com.etalytics.etadeploy.render.KustomizeManifestRenderer.render(KustomizeManifestRenderer.kt:24)
	at com.etalytics.etadeploy.render.renderers.sealedsecrets.SealedSecretsManifestRenderer.render(SealedSecretsManifestRenderer.kt:77)
	at com.etalytics.etadeploy.render.KubernetesManifestRenderer$renderManifests$2$1.invokeSuspend(KubernetesManifestRenderer.kt:152)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:820)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
	Suppressed: java.lang.IllegalArgumentException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["namespace"])
		at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4663)
		at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4594)
		at io.fabric8.kubernetes.client.utils.KubernetesSerialization.asYaml(KubernetesSerialization.java:237)
		at com.etalytics.etadeploy.render.KustomizeManifestRenderer.render(KustomizeManifestRenderer.kt:24)
		at com.etalytics.etadeploy.render.renderers.traefik.TraefikManifestRenderer.render(TraefikManifestRenderer.kt:83)
		... 9 more
	Caused by: com.fasterxml.jackson.databind.JsonMappingException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["namespace"])
		at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:400)
		at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:359)
		at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:324)
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:810)
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:763)
		at com.fasterxml.jackson.databind.ser.AnyGetterWriter.getAndSerialize(AnyGetterWriter.java:81)
		at com.fasterxml.jackson.databind.ser.AnyGetterWriter.serializeAsField(AnyGetterWriter.java:89)
		at io.fabric8.kubernetes.model.jackson.BeanPropertyWriterDelegate.serializeAsField(BeanPropertyWriterDelegate.java:68)
		at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:760)
		at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:183)
		at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:503)
		at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:342)
		at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4641)
		... 13 more
	Caused by: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:796)
		... 22 more
	Suppressed: java.lang.IllegalArgumentException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["helmCharts"])
		at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4663)
		at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4594)
		at io.fabric8.kubernetes.client.utils.KubernetesSerialization.asYaml(KubernetesSerialization.java:237)
		at com.etalytics.etadeploy.render.KustomizeManifestRenderer.render(KustomizeManifestRenderer.kt:24)
		at com.etalytics.etadeploy.render.renderers.monitoring.LocalMonitoringManifestRenderer.render(LocalMonitoringManifestRenderer.kt:236)
		at com.etalytics.etadeploy.render.renderers.monitoring.MonitoringManifestRenderer.render(MonitoringManifestRenderer.kt:49)
		... 9 more
	Caused by: com.fasterxml.jackson.databind.JsonMappingException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["helmCharts"])
		at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:400)
		at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:359)
		at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:324)
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:810)
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:763)
		at com.fasterxml.jackson.databind.ser.AnyGetterWriter.getAndSerialize(AnyGetterWriter.java:81)
		at com.fasterxml.jackson.databind.ser.AnyGetterWriter.serializeAsField(AnyGetterWriter.java:89)
		at io.fabric8.kubernetes.model.jackson.BeanPropertyWriterDelegate.serializeAsField(BeanPropertyWriterDelegate.java:68)
		at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:760)
		at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:183)
		at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:503)
		at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:342)
		at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4641)
		... 14 more
	Caused by: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:796)
		... 23 more
	Suppressed: java.lang.IllegalArgumentException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["namespace"])
		at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4663)
		at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4594)
		at io.fabric8.kubernetes.client.utils.KubernetesSerialization.asYaml(KubernetesSerialization.java:237)
		at com.etalytics.etadeploy.render.KustomizeManifestRenderer.render(KustomizeManifestRenderer.kt:24)
		at com.etalytics.etadeploy.render.renderers.argocd.ArgoCdManifestRenderer.render(ArgoCdManifestRenderer.kt:245)
		... 9 more
	Caused by: com.fasterxml.jackson.databind.JsonMappingException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["namespace"])
		at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:400)
		at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:359)
		at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:324)
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:810)
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:763)
		at com.fasterxml.jackson.databind.ser.AnyGetterWriter.getAndSerialize(AnyGetterWriter.java:81)
		at com.fasterxml.jackson.databind.ser.AnyGetterWriter.serializeAsField(AnyGetterWriter.java:89)
		at io.fabric8.kubernetes.model.jackson.BeanPropertyWriterDelegate.serializeAsField(BeanPropertyWriterDelegate.java:68)
		at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:760)
		at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:183)
		at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:503)
		at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:342)
		at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4641)
		... 13 more
	Caused by: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null
		at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:796)
		... 22 more
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null (through reference chain: com.etalytics.etadeploy.render.Kustomize["getAdditionalProperties"]->kotlin.collections.builders.MapBuilder["namespace"])
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:400)
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:359)
	at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:324)
	at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:810)
	at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:763)
	at com.fasterxml.jackson.databind.ser.AnyGetterWriter.getAndSerialize(AnyGetterWriter.java:81)
	at com.fasterxml.jackson.databind.ser.AnyGetterWriter.serializeAsField(AnyGetterWriter.java:89)
	at io.fabric8.kubernetes.model.jackson.BeanPropertyWriterDelegate.serializeAsField(BeanPropertyWriterDelegate.java:68)
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:760)
	at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:183)
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:503)
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:342)
	at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4641)
	... 13 more
Caused by: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonSerializer.serialize(Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)" because "keySerializer" is null
	at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:796)
	... 22 more

Any idea? I could also try to come up with a reproducer if it helps, as there already exists a very similar issue, I though it might not be needed though.

To Reproduce

// Your code here

Expected behavior

No NPE :D

Versions

Kotlin:
Jackson-module-kotlin: 2.19.0
Jackson-databind: 2.19.0

Additional context

No response

@cmdjulian cmdjulian added the bug label May 15, 2025
@k163377
Copy link
Contributor

k163377 commented May 16, 2025

Please submit code that is minimally reproducible, as it cannot be investigated by only stack trace.
At least on CI, no problems have been detected.

@cowtowncoder
Copy link
Member

Also note that stack trace here differs from one in FasterXML/jackson-databind#4878 so this is probably not via same code path.

Also: this may be the case already but make sure you use same minor version of jackson-module-kotlin and jackson-databind (both 2.19(.0)).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants