Opened 4 years ago

Closed 4 years ago

Last modified 3 years ago

#2206 closed defect (fixed)

wcst_import tests fail on Ubuntu 18.04

Reported by: Dimitar Misev Owned by: Bang Pham Huu
Priority: major Milestone: 10.0
Component: petascope Version: 9.8
Keywords: Cc: Vlad Merticariu, Peter Baumann
Complexity: Medium

Description

Tomcat petascope logs can be seen here: http://codereview.rasdaman.org/jenkins/job/test-patch/ws/exec-on-ubuntu-18.04/logs/build1073.tar.gz

All errors are something like this:

  INFO [2019-12-14 12:57:39] PetascopeController@155: Received request: coverageRef=file:///tmp/rasdaman_wcst_import/3bf922cc_6bfe_479c_8bd8_5b2aba0e7709.gml&pixelDataType=Byte&request=InsertCoverage&service=WCS&tiling=ALIGNED [0:1000, 0:1000, 0:2]&useId=existing&version=2.0.1
 ERROR [2019-12-14 12:57:39] RemoteCoverageUtil@77: Cannot fetch GML coverage from URL '/tmp/rasdaman_wcst_import/3bf922cc_6bfe_479c_8bd8_5b2aba0e7709.gml'. Reason: /tmp/rasdaman_wcst_import/3bf922cc_6bfe_479c_8bd8_5b2aba0e7709.gml (No such file or directory).
 ERROR [2019-12-14 12:57:39] ExceptionUtil@56: Caught an exception 
petascope.wcst.exceptions.WCSTMalformedURL: The URL provided in the coverageRef parameter is malformed.
	at petascope.wcst.helpers.RemoteCoverageUtil.getRemoteGMLCoverage(RemoteCoverageUtil.java:78)
	at petascope.wcst.handlers.InsertCoverageHandler.handleRemoteCoverageInsert(InsertCoverageHandler.java:120)
	at petascope.wcst.handlers.InsertCoverageHandler.handle(InsertCoverageHandler.java:103)
	at petascope.controller.handler.service.KVPWCSTServiceHandler.handleInsertCoverageRequest(KVPWCSTServiceHandler.java:145)
	at petascope.controller.handler.service.KVPWCSTServiceHandler.handle(KVPWCSTServiceHandler.java:99)
	at petascope.controller.PetascopeController.requestDispatcher(PetascopeController.java:190)
	at petascope.controller.PetascopeController.handleGet(PetascopeController.java:115)

Change History (9)

comment:1 by Bang Pham Huu, 4 years ago

Tomcat 9 is sandboxed in Debian https://salsa.debian.org/java-team/tomcat9/blob/master/debian/README.Debian

Don't use it for the testing VM. Use tomcat8 in rasdaman installer and no problem with read/write from /tmp folder.

comment:2 by Dimitar Misev, 4 years ago

So where's the right place to read/write for sandboxed tomcat?

comment:3 by Dimitar Misev, 4 years ago

In the readme it says only that write access is restricted, I assume read should work as usual.

comment:4 by Dimitar Misev, 4 years ago

You can follow the guideline in the readme and make /tmp readwrite in the installer.

comment:5 by Bang Pham Huu, 4 years ago

I prefer to install tomcat8 by default instead in the installer for Ubuntu 18.04 as tomcat9 is cumbersome with unwanted security features (e.g: not just read/write in /tmp).

comment:6 by Dimitar Misev, 4 years ago

Not an option on recent OS, e.g. there's not tomcat 8 on latest Ubuntu.

comment:7 by Bang Pham Huu, 4 years ago

I had to ask tomcat user mailing list as the way descried from https://salsa.debian.org/java-team/tomcat9/blob/master/debian/README.Debian does not work.

The correct way to do it is

edit /lib/systemd/system/tomcat9.service
set PrivateTmp=yes to PrivateTmp=no

sudo systemctl daemon-reload
sudo service tomcat9 restart

NOTE: with PrivateTmp=yes, petascope will not create any folder in /tmp but in somewhere else.

When set PrivateTmp=no, petascope cannot also create files in /tmp, it is due to:
https://stackoverflow.com/a/56835997

Last edited 3 years ago by Bang Pham Huu (previous) (diff)

comment:8 by Dimitar Misev, 4 years ago

Cc: Peter Baumann added

Currently wcst_import.sh puts the gml file in /tmp and this doesn't work with the default security setup of tomcat.

Instead of fiddling with the security configuration of Tomcat to make it work, a better solution is to upload the gml file in the POST request that wcst_import.sh sends to petascope. This also allows one to use wcst_import.sh remotely if needed.

comment:9 by Bang Pham Huu, 4 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.