You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Jesse Yates (JIRA)" <ji...@apache.org> on 2014/01/20 19:37:19 UTC

[jira] [Commented] (PHOENIX-5) HRegion.put() on Phoenix table from within endpoint coprocessor fails with NPE

    [ https://issues.apache.org/jira/browse/PHOENIX-5?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13876669#comment-13876669 ] 

Jesse Yates commented on PHOENIX-5:
-----------------------------------

If you know you are on the same server, can you just try using HTable#put (where the HTable came from CoprocessorEnvironment)? The HTable should have the logic to short-circuit the lookups and just go through the hregion correctly, rather than even touching the loopback interface, touching the right hooks in the Indexer to make sure your stuff works too.

The reason for all this is the way HBase handles WALs in batch updates (general batch or and number of puts) - if there aren't any WALEdits added by the CP its thrown away after the prePut hook, leading to NPEs in the preBatch hook; I think this is what you are running into. We had to add a special little bit to prePut that just puts in a dummy KV into the WAL so the indexer will be able to do its work correctly.

> HRegion.put() on Phoenix table from within endpoint coprocessor fails with NPE
> ------------------------------------------------------------------------------
>
>                 Key: PHOENIX-5
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5
>             Project: Phoenix
>          Issue Type: Improvement
>    Affects Versions: 2.2
>            Reporter: Bruno Dumon
>         Attachments: phoenix-coprocessor-compatibility-test.tar.gz
>
>
> See also mailing list: http://mail-archives.apache.org/mod_mbox/incubator-phoenix-user/201401.mbox/%3CCAAF1JdirF75oVNDEA9THt2DCZ0f0YOeo%3DRB3ARhQE_iG4fF6bQ%40mail.gmail.com%3E
> I have an HBase table created by Phoenix, onto which I added another CF
> which is unknown to Phoenix.
> I also have a custom endpoint coprocessor, which does puts on this table in
> the CF which is unknown by Phoenix.
> However, this doesn't work, it throws an NPE because the WALEdit contains a
> KeyValue with null bytes, which I found is the BATCH_MARKER added by
> Indexer.prePut. (I'm not using indexes)
> I don't have this problem if I do the put via an HTable, it is only when
> doing the put directly from the coprocessor via HRegion.put().
> *Workaround*: disabling the Indexer coprocessor avoids the issue.
> I will attach a testcase.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)