gmantele / vollt

Java libraries implementing the IVOA protocol: ADQL, UWS and TAP
http://cdsportal.u-strasbg.fr/taptuto/
29 stars 28 forks source link

Web Application skeleton of tutorial may fail with NPE requesting votables #126

Open gmella opened 3 years ago

gmella commented 3 years ago

Thank you for the nice tutorial and doc that help to setup a running vollt server. Once configured and deployed the Web Application Skeleton properly returned /tables but failed with queries requesting output in votables. CSV was fine.

I just replace the included jar by the ones generated by the build.gradle and everything run smoothly for basic votable queries.

Here is the stacktrace I get with the jar provided by the myfirsttap webapp :

2021-01-14 07:38:26.943 INFO    HTTP    REQUEST_RECEIVED    S1610609906943  POST as application/x-www-form-urlencoded at http://localhost:8008/vollt/tap/sync from 172.17.0.1 using TOPCAT/4.5 Java/1.8.0_275 with parameters (request=doQuery&query=SELECT * FROM oidb&lang=ADQL-2.0)
2021-01-14 07:38:26.944 INFO    JOB START   S1610609906943  Synchronous job S1610609906943 is starting!
2021-01-14 07:38:26.944 INFO    THREAD  START   S1610609906943  Synchronous thread "S1610609906943" started.    S1610609906943 (thread ID: 46) is RUNNABLE in the group UWS_GROUP where 1 threads are active
2021-01-14 07:38:26.944 INFO    TAP START_EXEC  S1610609906943  Synchronous execution of an ADQL query STARTED. SYNC,duration=-1ms (upload=-1,parse=-1,exec=-1,format[votable]=-1)
2021-01-14 07:38:26.944 INFO    TAP PARSING S1610609906943  Parsing ADQL: SELECT * FROM oidb    SYNC,duration=-1ms (upload=-1,parse=-1,exec=-1,format[votable]=-1)
2021-01-14 07:38:26.946 INFO    TAP START_DB_EXECUTION  S1610609906943  ADQL query: SELECT * FROM oidb  SYNC,duration=-1ms (upload=-1,parse=2,exec=-1,format[votable]=-1)
2021-01-14 07:38:26.947 INFO    DB  TRANSLATE   S1610609906943  Translating ADQL: SELECT * FROM oidb
2021-01-14 07:38:26.948 INFO    DB  EXECUTE S1610609906943  SQL query: SELECT "public"."oidb"."access_estsize" AS "access_estsize","public"."oidb"."access_format" AS "access_format","public"."oidb"."access_md5" AS "access_md5","public"."oidb"."access_url" AS "access_url","public"."oidb"."bib_reference" AS "bib_reference","public"."oidb"."calib_level" AS "calib_level","public"."oidb"."datapi" AS "datapi","public"."oidb"."dataproduct_type" AS "dataproduct_type","public"."oidb"."data_rights" AS "data_rights","public"."oidb"."em_max" AS "em_max","public"."oidb"."em_min" AS "em_min","public"."oidb"."em_res_power" AS "em_res_power","public"."oidb"."facility_name" AS "facility_name","public"."oidb"."id" AS "id","public"."oidb"."instrument_mode" AS "instrument_mode","public"."oidb"."instrument_name" AS "instrument_name","public"."oidb"."interferometer_stations" AS "interferometer_stations","public"."oidb"."keywords" AS "keywords","public"."oidb"."nb_channels" AS "nb_channels","public"."oidb"."nb_t3" AS "nb_t3","public"."oidb"."nb_vis" AS "nb_vis","public"."oidb"."nb_vis2" AS "nb_vis2","public"."oidb"."obs_collection" AS "obs_collection","public"."oidb"."obs_creator_name" AS "obs_creator_name","public"."oidb"."obs_id" AS "obs_id","public"."oidb"."obs_publisher_did" AS "obs_publisher_did","public"."oidb"."obs_release_date" AS "obs_release_date","public"."oidb"."o_ucd" AS "o_ucd","public"."oidb"."pol_states" AS "pol_states","public"."oidb"."progid" AS "progid","public"."oidb"."quality_level" AS "quality_level","public"."oidb"."s_dec" AS "s_dec","public"."oidb"."s_fov" AS "s_fov","public"."oidb"."s_ra" AS "s_ra","public"."oidb"."s_region" AS "s_region","public"."oidb"."s_resolution" AS "s_resolution","public"."oidb"."subdate" AS "subdate","public"."oidb"."target_name" AS "target_name","public"."oidb"."t_exptime" AS "t_exptime","public"."oidb"."t_max" AS "t_max","public"."oidb"."t_min" AS "t_min","public"."oidb"."t_resolution" AS "t_resolution" FROM "public"."oidb"
2021-01-14 07:38:27.076 INFO    DB  RESULT  S1610609906943  Returning result (fetch size = 10000).
2021-01-14 07:38:27.076 INFO    TAP END_DB_EXECUTION    S1610609906943  Query successfully executed in 130ms!   SYNC,duration=-1ms (upload=-1,parse=2,exec=-1,format[votable]=-1)
2021-01-14 07:38:27.076 INFO    TAP WRITING_RESULT  S1610609906943  Writing the query result    SYNC,duration=-1ms (upload=-1,parse=2,exec=130,format[votable]=-1)
2021-01-14 07:38:27.078 FATAL   THREAD  END S1610609906943  Synchronous thread "S1610609906943" ended with a FATAL error.   S1610609906943 (thread ID: 46) is RUNNABLE in the group UWS_GROUP where 1 threads are active
2021-01-14 07:38:27.078 FATAL   JOB END S1610609906943  The following GRAVE error interrupted the execution of the synchronous job S1610609906943.
Caused by a java.lang.NullPointerException
    at uk.ac.starlink.votable.VOSerializer.formatAttribute(VOSerializer.java:610)
    at tap.formatter.VOTableFormat.writeHeader(VOTableFormat.java:421)
    at tap.formatter.VOTableFormat.writeResult(VOTableFormat.java:352)
    at tap.ADQLExecutor.writeResult(ADQLExecutor.java:750)
    at tap.ADQLExecutor.writeResult(ADQLExecutor.java:679)
    at tap.ADQLExecutor.start(ADQLExecutor.java:392)
    at tap.ADQLExecutor.start(ADQLExecutor.java:303)
    at tap.TAPSyncJob$SyncThread.run(TAPSyncJob.java:410)
2021-01-14 07:38:27.079 ERROR   HTTP    RESPONSE_SENT   S1610609906943  TAP resource "sync" execution FAILED with the error: "java.lang.NullPointerException"!  HTTP-500 to the user ANONYMOUS as application/xml;charset=UTF-8

stil dependency update fixes the issue

Thanks for this nice piece of software! All the best for this new year,

gmantele commented 3 years ago

The skeleton provided on the website seems to not contain the last version of TAP-Lib. Thanks for reporting this problem.

If you get the sources from the branch master on GitHub, this is perfectly normal as the version on GitHub is not the last stable official release. If not, there is indeed an issue.

I'll have to release a new version of TAPLib anyway in the following months (just to cover the last bug fixes and in preparation for TAP-1.1 implementation). Then I think I'll fix the skeleton at that moment.