Troubleshooting NullPointerException Error in Datahub Version 0.14.0

Original Slack Thread

Hello,

I’ve updated my datahub version to 0.14.0, and the deployment seems okay on Argocd. But when I try to trigger an ingestion, it throws the following error java.lang.NullPointerException: null algorithm name at java.base/java.util.Objects.requireNonNull:

2025-01-31 07:37:27,959 [ThreadPoolTaskExecutor-1] ERROR c.l.metadata.kafka.MCLKafkaListener:91 - Failed to execute MCL hook with name com.linkedin.metadata.kafka.hook.UpdateIndicesHook java.lang.NullPointerException: null algorithm name at java.base/java.util.Objects.requireNonNull(Objects.java:235) at java.base/java.security.MessageDigest.getInstance(MessageDigest.java:182) at com.linkedin.metadata.systemmetadata.ElasticSearchSystemMetadataService.toDocId(ElasticSearchSystemMetadataService.java:92) at com.linkedin.metadata.systemmetadata.ElasticSearchSystemMetadataService.insert(ElasticSearchSystemMetadataService.java:139) at com.linkedin.metadata.service.UpdateIndicesService.updateSystemMetadata(UpdateIndicesService.java:620) at com.linkedin.metadata.service.UpdateIndicesService.handleUpdateChangeEvent(UpdateIndicesService.java:186) at com.linkedin.metadata.service.UpdateIndicesService.handleChangeEvent(UpdateIndicesService.java:143) at com.linkedin.metadata.kafka.hook.UpdateIndicesHook.invoke(UpdateIndicesHook.java:87) at com.linkedin.metadata.kafka.MCLKafkaListener.consume(MCLKafkaListener.java:86) at jdk.internal.reflect.GeneratedMethodAccessor126.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:169) at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:119) at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:56) at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:376) at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:92) at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:53) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:2888) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:2866) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.lambda$doInvokeRecordListener$55(KafkaMessageListenerContainer.java:2783) at io.micrometer.observation.Observation.observe(Observation.java:565) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:2781) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:2631) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:2517) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:2155) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeIfHaveRecords(KafkaMessageListenerContainer.java:1495) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:1460) at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:1330) at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:840)
Anyone having this ?

Thanks

Hey there! :wave:

<@U06TM7M40RK> Can you help with the questions in this thread?

:information_source: Please continue to tag RunLLM (e.g <@U06TM7M40RK>) to have it continue generating responses!

The error you’re encountering, java.lang.NullPointerException: null algorithm name, is a known issue related to the UpdateIndicesHook in DataHub. This issue typically occurs when there is a missing or null algorithm name when trying to get an instance of MessageDigest.

Here are some steps you can take to resolve the issue:

  1. Upgrade to a Fixed Version:

  2. Check Configuration:

    • Ensure that all necessary configurations for Elasticsearch and Kafka are correctly set up. The error suggests that there might be a missing configuration related to the hashing algorithm used for generating document IDs.
  3. Review Recent Changes:

    • Since this issue started occurring after an upgrade, review the release notes and migration guides for the version you upgraded to. There might be breaking changes or additional configuration steps required.
  4. Consult Documentation:

    • Refer to the official DataHub documentation for any additional setup or configuration steps that might be required for the new version.

Would you like more detailed steps on how to check these configurations or any other specific aspect of the issue?

Sources:

Hi :slight_smile: ! Did this interaction resolve your issue or do you still require assistance ?

Please tag @ RunLLM if you still need further assistance !

Or tag @Datahub Community Support if you require a person to take a look :slight_smile:

Hope this helps ! ><