GithubHelp home page GithubHelp logo

MultiLangDaemon Throws NullPointerException Going From One Shard To Two When Multiple Daemons Are Running about amazon-kinesis-client HOT 14 CLOSED

eyesoftime avatar eyesoftime commented on June 24, 2024
MultiLangDaemon Throws NullPointerException Going From One Shard To Two When Multiple Daemons Are Running

from amazon-kinesis-client.

Comments (14)

kevincdeng avatar kevincdeng commented on June 24, 2024

Thanks for reporting. I'll try to reproduce this.

from amazon-kinesis-client.

kevincdeng avatar kevincdeng commented on June 24, 2024

Hi eyesoftime,

I'm not able to reproduce this. Can you provide the steps which you took to produce the problem?

What language are you using to process the records? Are you using one of the official multilang KCLs?

Thanks

from amazon-kinesis-client.

eyesoftime avatar eyesoftime commented on June 24, 2024

I was loading records into the stream, each one about 130KB of arbitrary data with indexes applied for tracking. Initially I started out with one shard. After about 2500 records I split the shard into two, after another 2500 records I merged the new shards. So, there's 4 shard altogether. There were no consumers running at the time (but that doesn't really change the outcome).

So then I started one daemon with Python sample application (with additional logging added, again for tracking). While it was consuming records from the first shard, I started the second daemon which then was idling as the first shard hadn't been consumed yet and second and third are the child shards of the first. Now when the consumer of the first shard reached the end, the first daemon died with the NPE. It happened repeatedly, while running daemons on the same EC2 instance, or parallel to one in my local machine. The same thing happened when the test was done 2-1-2 with shardes, ie merging and splitting. In that case it also died when going from one shard to two.

Hope it helps you.

from amazon-kinesis-client.

kevincdeng avatar kevincdeng commented on June 24, 2024

Thanks for the information. I did not do the shard merge in my own test, so that might be the problem. I will do so to see if that reproduces the problem.

from amazon-kinesis-client.

kevincdeng avatar kevincdeng commented on June 24, 2024

I have reproduced the problem. The problem isn't with MultiLangRecordProcessor per se, but rather with the Worker implementation.

A Worker will sometimes call shutdown on an IRecordProcessor even if initialize has not been called on the same instance. Since MultiLangRecordProcessor uses its initialize method to construct certain fields, and its shutdown method assumes that those fields have been initialized, an NPE occurs.

Once again thank you for reporting the problem. It will be fixed in a future release.

from amazon-kinesis-client.

pboocock avatar pboocock commented on June 24, 2024

@kevincdeng

Using the python wrapper for this package, and I seem to be running into the same issue. Is there a workaround you can recommend to guarantee that initialize always gets called?

from amazon-kinesis-client.

kevincdeng avatar kevincdeng commented on June 24, 2024

If your code doesn't need the shard id, you might be able to place it in the constructor of the class instead. Do you absolutely need initialize to be called? If it's just to ensure proper functioning of the shutdown method, adding a flag to check whether initialization has happened might be sufficient.

from amazon-kinesis-client.

kevinrivers avatar kevinrivers commented on June 24, 2024

Was this fixed in a recent version?

from amazon-kinesis-client.

soulcutter avatar soulcutter commented on June 24, 2024

This remains unfixed. The MultiLangRecordProcessor has not been changed since Oct 2014 https://github.com/awslabs/amazon-kinesis-client/blob/73ac2c0e25a25776cbc88f2c685223fb049e6757/src/main/java/com/amazonaws/services/kinesis/multilang/MultiLangRecordProcessor.java

I was able to reproduce this issue on 1.6.1 (the current latest version)

from amazon-kinesis-client.

findchris avatar findchris commented on June 24, 2024

@kevincdeng ETA here?

from amazon-kinesis-client.

pboocock avatar pboocock commented on June 24, 2024

@kevincdeng @findchris FWIW I've found success by specifying the failoverTimeMillis property in the .properties file to a high number (e.g. 100s)

from amazon-kinesis-client.

Kahn avatar Kahn commented on June 24, 2024

This apparently shipped in https://github.com/awslabs/amazon-kinesis-client#release-162-march-23-2016 @manango can you close or merge this PR please? Its confusing to leave open.

from amazon-kinesis-client.

manango avatar manango commented on June 24, 2024

The issue has been resolved in 1.6.2 release. Closing the issue.

from amazon-kinesis-client.

prashantalhat avatar prashantalhat commented on June 24, 2024

I am facing similar issue in https://github.com/awslabs/amazon-kinesis-client-net. Can someone please help?

from amazon-kinesis-client.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.