You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ni...@apache.org on 2024/08/12 16:00:57 UTC

(hbase-connectors) branch master updated: HBASE-18570 Fix NPE when HBaseContext was never initialized (#127)

This is an automated email from the ASF dual-hosted git repository.

nihaljain pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase-connectors.git


The following commit(s) were added to refs/heads/master by this push:
     new 2087677  HBASE-18570 Fix NPE when HBaseContext was never initialized (#127)
2087677 is described below

commit 2087677ea776e1fc1aa29f8a0ac378327889cb04
Author: Junegunn Choi <ju...@gmail.com>
AuthorDate: Tue Aug 13 01:00:52 2024 +0900

    HBASE-18570 Fix NPE when HBaseContext was never initialized (#127)
    
    Signed-off-by: Nihal Jain <ni...@apache.org>
---
 .../scala/org/apache/hadoop/hbase/spark/DefaultSource.scala  |  2 +-
 .../org/apache/hadoop/hbase/spark/DefaultSourceSuite.scala   | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/spark/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala b/spark/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala
index 7005f65..4ad945a 100644
--- a/spark/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala
+++ b/spark/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala
@@ -137,7 +137,7 @@ case class HBaseRelation(
       .getInt(HBaseSparkConf.BULKGET_SIZE, HBaseSparkConf.DEFAULT_BULKGET_SIZE))
 
   // create or get latest HBaseContext
-  val hbaseContext: HBaseContext = if (useHBaseContext) {
+  val hbaseContext: HBaseContext = if (useHBaseContext && LatestHBaseContextCache.latest != null) {
     LatestHBaseContextCache.latest
   } else {
     val hadoopConfig = sqlContext.sparkContext.hadoopConfiguration
diff --git a/spark/hbase-spark/src/test/scala/org/apache/hadoop/hbase/spark/DefaultSourceSuite.scala b/spark/hbase-spark/src/test/scala/org/apache/hadoop/hbase/spark/DefaultSourceSuite.scala
index 60b5d3c..cf92d08 100644
--- a/spark/hbase-spark/src/test/scala/org/apache/hadoop/hbase/spark/DefaultSourceSuite.scala
+++ b/spark/hbase-spark/src/test/scala/org/apache/hadoop/hbase/spark/DefaultSourceSuite.scala
@@ -1359,4 +1359,16 @@ class DefaultSourceSuite
         }
     }
   }
+
+  test("NPE should not be thrown even when HBaseContext was never initialized") {
+    LatestHBaseContextCache.latest = null
+    val catalog = s"""{"table":{"namespace":"default", "name":"table"},
+                     | "rowkey":"key",
+                     | "columns":{"c1":{"cf":"d", "col":"c1", "type":"string"}}}""".stripMargin
+    try {
+      HBaseRelation(Map(HBaseTableCatalog.tableCatalog -> catalog), None)(sqlContext)
+    } catch {
+      case _: NullPointerException => fail("Unexpected NPE thrown")
+    }
+  }
 }