Java server breaks only when running SKAT

I am running hail 0.2 from conda, on HPC (centos, slurm, 1 node 20 CPU 16GB per CPU).
Whenever I try to run SKAT (and not on any other function), the java server breaks and I need to initialize hail again.

ERROR:py4j.java_gateway:An error occurred while trying to connect to the Java server (127.0.0.1:35675)

My code:
skat_table = hl.skat(key_expr=chr21f.genes2, weight_expr=(hl.dbeta(hl.min(chr21f.variant_qc.AF), 1.0, 25.0) ** 2), y=chr21f.sys_bool, x=chr21f.GT.n_alt_alleles(), covariates=[1])
Error:

ERROR:py4j.java_gateway:An error occurred while trying to connect to the Java server (127.0.0.1:35675)
Traceback (most recent call last):
  File "/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py", line 929, in _get_connection
    connection = self.deque.pop()
IndexError: pop from an empty deque

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py", line 1067, in start
    self.socket.connect((self.address, self.port))
ConnectionRefusedError: [Errno 111] Connection refused
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in _get_connection(self)
    928         try:
--> 929             connection = self.deque.pop()
    930         except IndexError:

IndexError: pop from an empty deque

During handling of the above exception, another exception occurred:

ConnectionRefusedError                    Traceback (most recent call last)
/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in start(self)
   1066         try:
-> 1067             self.socket.connect((self.address, self.port))
   1068             self.stream = self.socket.makefile("rb")

ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Py4JNetworkError                          Traceback (most recent call last)
/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/IPython/core/formatters.py in __call__(self, obj)
    700                 type_pprinters=self.type_printers,
    701                 deferred_pprinters=self.deferred_printers)
--> 702             printer.pretty(obj)
    703             printer.flush()
    704             return stream.getvalue()

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/IPython/lib/pretty.py in pretty(self, obj)
    398                         if cls is not object \
    399                                 and callable(cls.__dict__.get('__repr__')):
--> 400                             return _repr_pprint(obj, self, cycle)
    401 
    402             return _default_pprint(obj, self, cycle)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle)
    693     """A pprint that just redirects to the normal repr function."""
    694     # Find newlines and replace them with p.break_()
--> 695     output = repr(obj)
    696     for idx,output_line in enumerate(output.splitlines()):
    697         if idx:

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in __repr__(self)
   1242 
   1243         def __repr__(self):
-> 1244             return self.__str__()
   1245 
   1246         def data(self):

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in __str__(self)
   1239 
   1240         def __str__(self):
-> 1241             return self._ascii_str()
   1242 
   1243         def __repr__(self):

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in _ascii_str(self)
   1266                     return s
   1267 
-> 1268             rows, has_more, dtype = self.data()
   1269             fields = list(dtype)
   1270             trunc_fields = [trunc(f) for f in fields]

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in data(self)
   1249                 row_dtype = t.row.dtype
   1250                 t = t.select(**{k: Table._hl_format(v, self.truncate) for (k, v) in t.row.items()})
-> 1251                 rows, has_more = t._take_n(self.n)
   1252                 self._data = (rows, has_more, row_dtype)
   1253             return self._data

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in _take_n(self, n)
   1370             has_more = False
   1371         else:
-> 1372             rows = self.take(n + 1)
   1373             has_more = len(rows) > n
   1374             rows = rows[:n]

<decorator-gen-1054> in take(self, n, _localize)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/typecheck/check.py in wrapper(__original_func, *args, **kwargs)
    583     def wrapper(__original_func, *args, **kwargs):
    584         args_, kwargs_ = check_all(__original_func, args, kwargs, checkers, is_method=is_method)
--> 585         return __original_func(*args_, **kwargs_)
    586 
    587     return wrapper

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in take(self, n, _localize)
   2062         """
   2063 
-> 2064         return self.head(n).collect(_localize)
   2065 
   2066     @typecheck_method(n=int)

<decorator-gen-1048> in collect(self, _localize)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/typecheck/check.py in wrapper(__original_func, *args, **kwargs)
    583     def wrapper(__original_func, *args, **kwargs):
    584         args_, kwargs_ = check_all(__original_func, args, kwargs, checkers, is_method=is_method)
--> 585         return __original_func(*args_, **kwargs_)
    586 
    587     return wrapper

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in collect(self, _localize)
   1861         e = construct_expr(ir, hl.tarray(t.row.dtype))
   1862         if _localize:
-> 1863             return Env.backend().execute(e._ir)
   1864         else:
   1865             return e

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/backend/backend.py in execute(self, ir, timed)
    107 
    108     def execute(self, ir, timed=False):
--> 109         result = json.loads(Env.hc()._jhc.backend().executeJSON(self._to_java_ir(ir)))
    110         value = ir.typ._from_json(result['value'])
    111         timings = result['timings']

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in __call__(self, *args)
   1253             proto.END_COMMAND_PART
   1254 
-> 1255         answer = self.gateway_client.send_command(command)
   1256         return_value = get_return_value(
   1257             answer, self.gateway_client, self.target_id, self.name)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in send_command(self, command, retry, binary)
    981          if `binary` is `True`.
    982         """
--> 983         connection = self._get_connection()
    984         try:
    985             response = connection.send_command(command)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in _get_connection(self)
    929             connection = self.deque.pop()
    930         except IndexError:
--> 931             connection = self._create_connection()
    932         return connection
    933 

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in _create_connection(self)
    935         connection = GatewayConnection(
    936             self.gateway_parameters, self.gateway_property)
--> 937         connection.start()
    938         return connection
    939 

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in start(self)
   1077                 "server ({0}:{1})".format(self.address, self.port)
   1078             logger.exception(msg)
-> 1079             raise Py4JNetworkError(msg, e)
   1080 
   1081     def _authenticate_connection(self):

Py4JNetworkError: An error occurred while trying to connect to the Java server (127.0.0.1:35675)

ERROR:py4j.java_gateway:An error occurred while trying to connect to the Java server (127.0.0.1:35675)
Traceback (most recent call last):
  File "/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py", line 929, in _get_connection
    connection = self.deque.pop()
IndexError: pop from an empty deque

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py", line 1067, in start
    self.socket.connect((self.address, self.port))
ConnectionRefusedError: [Errno 111] Connection refused
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in _get_connection(self)
    928         try:
--> 929             connection = self.deque.pop()
    930         except IndexError:

IndexError: pop from an empty deque

During handling of the above exception, another exception occurred:

ConnectionRefusedError                    Traceback (most recent call last)
/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in start(self)
   1066         try:
-> 1067             self.socket.connect((self.address, self.port))
   1068             self.stream = self.socket.makefile("rb")

ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Py4JNetworkError                          Traceback (most recent call last)
/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/IPython/core/formatters.py in __call__(self, obj)
    343             method = get_real_method(obj, self.print_method)
    344             if method is not None:
--> 345                 return method()
    346             return None
    347         else:

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in _repr_html_(self)
   1254 
   1255         def _repr_html_(self):
-> 1256             return self._html_str()
   1257 
   1258         def _ascii_str(self):

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in _html_str(self)
   1340             types = self.types
   1341 
-> 1342             rows, has_more, dtype = self.data()
   1343             fields = list(dtype)
   1344 

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in data(self)
   1249                 row_dtype = t.row.dtype
   1250                 t = t.select(**{k: Table._hl_format(v, self.truncate) for (k, v) in t.row.items()})
-> 1251                 rows, has_more = t._take_n(self.n)
   1252                 self._data = (rows, has_more, row_dtype)
   1253             return self._data

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in _take_n(self, n)
   1370             has_more = False
   1371         else:
-> 1372             rows = self.take(n + 1)
   1373             has_more = len(rows) > n
   1374             rows = rows[:n]

<decorator-gen-1054> in take(self, n, _localize)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/typecheck/check.py in wrapper(__original_func, *args, **kwargs)
    583     def wrapper(__original_func, *args, **kwargs):
    584         args_, kwargs_ = check_all(__original_func, args, kwargs, checkers, is_method=is_method)
--> 585         return __original_func(*args_, **kwargs_)
    586 
    587     return wrapper

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in take(self, n, _localize)
   2062         """
   2063 
-> 2064         return self.head(n).collect(_localize)
   2065 
   2066     @typecheck_method(n=int)

<decorator-gen-1048> in collect(self, _localize)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/typecheck/check.py in wrapper(__original_func, *args, **kwargs)
    583     def wrapper(__original_func, *args, **kwargs):
    584         args_, kwargs_ = check_all(__original_func, args, kwargs, checkers, is_method=is_method)
--> 585         return __original_func(*args_, **kwargs_)
    586 
    587     return wrapper

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/table.py in collect(self, _localize)
   1861         e = construct_expr(ir, hl.tarray(t.row.dtype))
   1862         if _localize:
-> 1863             return Env.backend().execute(e._ir)
   1864         else:
   1865             return e

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/hail/backend/backend.py in execute(self, ir, timed)
    107 
    108     def execute(self, ir, timed=False):
--> 109         result = json.loads(Env.hc()._jhc.backend().executeJSON(self._to_java_ir(ir)))
    110         value = ir.typ._from_json(result['value'])
    111         timings = result['timings']

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in __call__(self, *args)
   1253             proto.END_COMMAND_PART
   1254 
-> 1255         answer = self.gateway_client.send_command(command)
   1256         return_value = get_return_value(
   1257             answer, self.gateway_client, self.target_id, self.name)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in send_command(self, command, retry, binary)
    981          if `binary` is `True`.
    982         """
--> 983         connection = self._get_connection()
    984         try:
    985             response = connection.send_command(command)

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in _get_connection(self)
    929             connection = self.deque.pop()
    930         except IndexError:
--> 931             connection = self._create_connection()
    932         return connection
    933 

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in _create_connection(self)
    935         connection = GatewayConnection(
    936             self.gateway_parameters, self.gateway_property)
--> 937         connection.start()
    938         return connection
    939 

/gpfs/share/apps/anaconda3/cpu/5.2.0/lib/python3.6/site-packages/py4j/java_gateway.py in start(self)
   1077                 "server ({0}:{1})".format(self.address, self.port)
   1078             logger.exception(msg)
-> 1079             raise Py4JNetworkError(msg, e)
   1080 
   1081     def _authenticate_connection(self):

Py4JNetworkError: An error occurred while trying to connect to the Java server (127.0.0.1:35675)

This is probably a problem with the C libraries. Is there any more information in the Hail log? Is there a file in the hail working directory of the driver/workers that looks like hs_err_pid...?

No- there are only the hail log files.

Thanks

Because you are running on centos & probably a different CPU architecture than GCP Dataproc nodes, you need to compile hail from source. See details here. Basically:

git clone https://github.com/hail-is/hail.git
cd hail/hail
make install HAIL_COMPILE_NATIVES=1

thanks Dan, I asked out HPC team to install compile it (since I am not a cluster sudo), and they did so but I still get the same error right when trying to show the skat.table (when the skat expression is starting to compute), followed by loss of functionality of hail (until re init).

    2020-02-12 16:05:52 Hail: WARN: 42 of 3315 samples have a missing phenotype or covariate.
ERROR:root:Exception while sending command.
Traceback (most recent call last):
  File "/gpfs/share/apps/python/cpu/3.6.5/lib/python3.6/site-packages/py4j/java_gateway.py", line 1159, in send_command
    raise Py4JNetworkError("Answer from Java side is empty")
py4j.protocol.Py4JNetworkError: Answer from Java side is empty

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/gpfs/share/apps/python/cpu/3.6.5/lib/python3.6/site-packages/py4j/java_gateway.py", line 985, in send_command
    response = connection.send_command(command)
  File "/gpfs/share/apps/python/cpu/3.6.5/lib/python3.6/site-packages/py4j/java_gateway.py", line 1164, in send_command
    "Error while receiving", e, proto.ERROR_ON_RECEIVE)
py4j.protocol.Py4JNetworkError: Error while receiving

Can you attach the hail log file? It’s location is printed near the message that has the ASCII art of “hail”.

The spark log ends abruptly upon loading the native libraries. Is there any files with names containing hs_err_pid? Are you certain hail was recompiled with the above command? In particular, you need HAIL_COMPILE_NATIVE=1 after the install.

Thanks Dan.
No - no hs_err_pid file is generated at the working directory or its subdirectories.
I will ask about they compile native.

Yes he compiled it with that option. Is the hs_err_pid supposed to be located in the working directory or in the installation directory?

It would appear in the working directory.

@orr This is strongly suggestive that the native libraries are still not installed properly.

Let’s create a python virtual environment, install hail into that (no need for sudo) and verify it is still broken there:

python3 -m venv hail-natives-test
source hail-natives-test/bin/activate
cd /path/to/hail/repo
make install HAIL_COMPILE_NATIVES=1

then let’s try a very simple example:

mt = hl.balding_nichols_model(3, 10, 10)
mt = mt.annotate_cols(pheno = hl.rand_unif(0, 1))
mt = mt.annotate_rows(gene = mt.locus.position // 3)
mt = mt.annotate_rows(weight = hl.rand_unif(0, 1))
hl.skat(key_expr=mt.gene,
        weight_expr=mt.weight,
        y=mt.pheno,
        x=mt.GT.n_alt_alleles(),
        covariates=[]
).show()

After:
make install HAIL_COMPILE_NATIVES=1
I get:

SHORT_REVISION is set to "8edccade0e51" which is different from old value ""
printf "8edccade0e51" > env/SHORT_REVISION
HAIL_PIP_VERSION is set to "0.2.32" which is different from old value ""
printf "0.2.32" > env/HAIL_PIP_VERSION
echo 0.2.32-8edccade0e51 > python/hail/hail_version
echo 0.2.32 > python/hail/hail_pip_version
cp -f python/hail/hail_version python/hailtop/hailctl/hail_version
printf 'hail_version="0.2.32-8edccade0e51";' > python/hail/docs/_static/hail_version.js
printf 'hail_pip_version="0.2.32"' >> python/hail/docs/_static/hail_version.js
REVISION is set to "8edccade0e51a49028f8bd29a3b3209464b84c08" which is different from old valu$
 ""
printf "8edccade0e51a49028f8bd29a3b3209464b84c08" > env/REVISION
BRANCH is set to "master" which is different from old value ""
printf "master" > env/BRANCH
URL is set to "https://github.com/hail-is/hail.git" which is different from old value ""
printf "https://github.com/hail-is/hail.git" > env/URL
SPARK_VERSION is set to "2.4.0" which is different from old value ""
printf "2.4.0" > env/SPARK_VERSION
echo '[Build Metadata]' > src/main/resources/build-info.properties
echo 'user=yaacoo01' >> src/main/resources/build-info.properties
echo 'revision=8edccade0e51a49028f8bd29a3b3209464b84c08' >> src/main/resources/build-info.prop$
rties
echo 'branch=master' >> src/main/resources/build-info.properties
echo 'date=2020-02-14T20:08:48Z' >> src/main/resources/build-info.properties
echo 'url=https://github.com/hail-is/hail.git' >> src/main/resources/build-info.properties
echo 'sparkVersion=2.4.0' >> src/main/resources/build-info.properties
echo 'hailPipVersion=0.2.32' >> src/main/resources/build-info.properties
make -C src/main/c prebuilt
make[1]: Entering directory `/gpfs/scratch/yaacoo01/temp/hail/hail/src/main/c'
g++ -march=corei7-avx -O3 -std=c++14 -Ilibsimdpp-2.1 -Wall -Wextra -fPIC -ggdb -fno-strict-ali$
sing -I../resources/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/incl$
de -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/include/linux Upcalls.cpp -MG 
-M -MF build/Upcalls.d -MT build/Upcalls.o
g++: error: unrecognized command line option ‘-std=c++14’
g++ -march=corei7-avx -O3 -std=c++14 -Ilibsimdpp-2.1 -Wall -Wextra -fPIC -ggdb -fno-strict-ali$
sing -I../resources/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/incl$
de -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/include/linux testutils/unit-$
ests.cpp -MG -M -MF build/testutils/unit-tests.d -MT build/testutils/unit-tests.o
g++: error: unrecognized command line option ‘-std=c++14’
g++ -march=corei7-avx -O3 -std=c++14 -Ilibsimdpp-2.1 -Wall -Wextra -fPIC -ggdb -fno-strict-ali$
sing -I../resources/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/incl$
de -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/include/linux test.cpp -MG -M 
-MF build/test.d -MT build/test.o
g++: error: unrecognized command line option ‘-std=c++14’
g++ -march=corei7-avx -O3 -std=c++14 -Ilibsimdpp-2.1 -Wall -Wextra -fPIC -ggdb -fno-strict-ali$
sing -I../resources/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/incl$
de -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/include/linux Region_test.cpp 
-MG -M -MF build/Region_test.d -MT build/Region_test.o
g++: error: unrecognized command line option ‘-std=c++14’
g++ -march=corei7-avx -O3 -std=c++14 -Ilibsimdpp-2.1 -Wall -Wextra -fPIC -ggdb -fno-strict-ali$
sing -I../resources/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/incl$
de -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/include/linux Region.cpp -MG $
M -MF build/Region.d -MT build/Region.o
g++: error: unrecognized command line option ‘-std=c++14’
g++ -march=corei7-avx -O3 -std=c++14 -Ilibsimdpp-2.1 -Wall -Wextra -fPIC -ggdb -fno-strict-ali$
sing -I../resources/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/incl$
de -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/include/linux PartitionIterat$
rs.cpp -MG -M -MF build/PartitionIterators.d -MT build/PartitionIterators.o
g++: error: unrecognized command line option ‘-std=c++14’
g++ -o build/NativeBoot.o -march=corei7-avx -O3 -std=c++14 -Ilibsimdpp-2.1 -Wall -Wextra -fPIC 
-ggdb -fno-strict-aliasing -I../resources/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-1
1.b12.el7.x86_64/include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/include/
linux -MD -MF build/NativeBoot.d -MT build/NativeBoot.o -c NativeBoot.cpp
g++: error: unrecognized command line option ‘-std=c++14’
make[1]: *** [build/NativeBoot.o] Error 1
make[1]: Leaving directory `/gpfs/scratch/yaacoo01/temp/hail/hail/src/main/c'
make: *** [native-lib-prebuilt] Error 2

My guess is that you have an old gcc version: linux mint - c++: error: unrecognized command line option ‘-std=c++14’ - Stack Overflow

We require gcc 5.0 or later: https://hail.is/docs/0.2/getting_started.html

Right, i loaded a gcc/6.1.0 module and no i get the following error:

Upcalls.cpp: In constructor ‘hail::UpcallConfig::UpcallConfig()’:
Upcalls.cpp:14:44: error: ‘JNI_VERSION_1_8’ was not declared in this scope
   auto rc = java_vm_->GetEnv((void**)&env, JNI_VERSION_1_8);
                                            ^~~~~~~~~~~~~~~
Upcalls.cpp: In constructor ‘hail::UpcallEnv::UpcallEnv()’:
Upcalls.cpp:69:39: error: ‘JNI_VERSION_1_8’ was not declared in this scope
   auto rc = vm->GetEnv((void**)&env_, JNI_VERSION_1_8);
                                       ^~~~~~~~~~~~~~~
make[1]: *** [build/Upcalls.o] Error 1
make[1]: Leaving directory `/gpfs/scratch/yaacoo01/temp/hail/hail/src/main/c'
make: *** [native-lib-prebuilt] Error 2

Are you certain you have JDK 8 installed?