Skip to content
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

NullPointerException in GHPerson #111

Closed
alt-grr opened this issue Jul 18, 2014 · 8 comments
Closed

NullPointerException in GHPerson #111

alt-grr opened this issue Jul 18, 2014 · 8 comments

Comments

@alt-grr
Copy link

alt-grr commented Jul 18, 2014

I'm not sure if I should report this here or to https://github.com/janinko/ghprb, but exception is thrown in at org.kohsuke.github.GHPerson.populate(GHPerson.java:42).

I use GitHub API Plugin 1.55 and GitHub Pull Request Builder 1.12.

Jul 14, 2014 6:54:53 PM WARNING org.jenkinsci.plugins.ghprb.GhprbPullRequest obtainAuthorEmail
Couldn't obtain author email.
java.lang.NullPointerException
    at org.kohsuke.github.GHPerson.populate(GHPerson.java:42)
    at org.kohsuke.github.GHPerson.getEmail(GHPerson.java:220)
    at org.jenkinsci.plugins.ghprb.GhprbPullRequest.obtainAuthorEmail(GhprbPullRequest.java:266)
    at org.jenkinsci.plugins.ghprb.GhprbPullRequest.tryBuild(GhprbPullRequest.java:161)
    at org.jenkinsci.plugins.ghprb.GhprbPullRequest.check(GhprbPullRequest.java:106)
    at org.jenkinsci.plugins.ghprb.GhprbRepository.onPullRequestHook(GhprbRepository.java:233)
    at org.jenkinsci.plugins.ghprb.GhprbRootAction.doIndex(GhprbRootAction.java:62)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
    at org.kohsuke.stapler.MetaClass$2.dispatch(MetaClass.java:164)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
(...)
@KostyaSha
Copy link
Contributor

ghprb expects it with catch() but NPE is not good behavior.
NPE is caused because root object is null https://github.com/kohsuke/github-api/blob/d33609ee5711cf42d1884b39597486562e8d037f/src/main/java/org/kohsuke/github/GHPerson.java#L18
GHPullRequest.getHead() return GHCommitPointer, then GHCommitPointer.getUser() returns GHUser that seems is not wrapped with root connection somewhere after passing GHPullRequest to method/constructor.
In debug mode using evaluation this can be bypassed with:

pr.getHead().wrapUp(((GHPullRequest) pr).root);
pr.getHead().getUser().getEmail()

@danielr-minted
Copy link

I'm running into this. Is there a workaround?

@KostyaSha
Copy link
Contributor

The reason of this bug is that getMergable() kill internal connection object. This is a test case:
https://gist.github.com/KostyaSha/a46c6892306e767bf26f

@vbauer
Copy link

vbauer commented Jan 24, 2015

I have the same problem..

kohsuke added a commit that referenced this issue Feb 15, 2015
Fixes issue #111.
Test case from KostyaSha
@kohsuke kohsuke closed this as completed Feb 15, 2015
@KostyaSha
Copy link
Contributor

@kohsuke sorry had no time to fix myself because of other bugs in git plugin :(

@arnoid13
Copy link

arnoid13 commented Apr 6, 2015

I have encountered this on maven artefact 1.66 and 1.67-SNAPSHOT. Will this make into any new artefacts?

java.lang.NullPointerException
at org.kohsuke.github.GHPerson.populate(GHPerson.java:42)
at org.kohsuke.github.GHPerson.getName(GHPerson.java:179)
at nl.ngti.johan.slack.commands.GitHubKarmaCommand.filterPullRequestsNotOwnedByUser(GitHubKarmaCommand.java:97)
at nl.ngti.johan.slack.commands.GitHubKarmaCommand.onMessage(GitHubKarmaCommand.java:55)
at nl.ngti.johan.slack.listener.SlackMessageListenerImpl.hanleCommands(SlackMessageListenerImpl.java:111)
at nl.ngti.johan.slack.listener.SlackMessageListenerImpl.onMessage(SlackMessageListenerImpl.java:94)
at com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl.onMessage(SlackWebSocketSessionImpl.java:374)
at com.ullink.slack.simpleslackapi.impl.SlackWebSocketSessionImpl.onMessage(SlackWebSocketSessionImpl.java:43)
at org.glassfish.tyrus.core.TyrusSession.notifyMessageHandlers(TyrusSession.java:562)
at org.glassfish.tyrus.core.TyrusEndpointWrapper.onMessage(TyrusEndpointWrapper.java:812)
at org.glassfish.tyrus.core.TyrusWebSocket.onMessage(TyrusWebSocket.java:200)
at org.glassfish.tyrus.core.frame.TextFrame.respond(TextFrame.java:135)
at org.glassfish.tyrus.core.ProtocolHandler.process(ProtocolHandler.java:635)
at org.glassfish.tyrus.client.TyrusClientEngine$TyrusReadHandler.handle(TyrusClientEngine.java:664)
at org.glassfish.tyrus.container.grizzly.client.GrizzlyClientFilter$ProcessTask.execute(GrizzlyClientFilter.java:472)
at org.glassfish.tyrus.container.grizzly.client.TaskProcessor.processTask(TaskProcessor.java:114)
at org.glassfish.tyrus.container.grizzly.client.TaskProcessor.processTask(TaskProcessor.java:91)
at org.glassfish.tyrus.container.grizzly.client.GrizzlyClientFilter.handleRead(GrizzlyClientFilter.java:270)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)

@KostyaSha
Copy link
Contributor

Please provide log.
2015-04-06 16:50 GMT+03:00 arnoid13 [email protected]:

I have encountered this on maven artefact 1.66 . Will this make into any
new artefacts?


Reply to this email directly or view it on GitHub
#111 (comment).

@arnoid13
Copy link

arnoid13 commented Apr 7, 2015

I've added log into previous comment. I can give you the full sequence of steps-to-reproduce later.

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

No branches or pull requests

6 participants