Details
-
Bug
-
Status: Resolved
-
Not specified
-
Resolution: Fixed
-
8.12.0
-
None
-
K8s
Description
The external.ecl failed in regression testing on Thor In Minikube with and error message:
System error: 10001: Graph graph2[4], Missing logical file file::127.0.0.1::var::lib::^h^p^c^c^systems::mydropzonew20230213-135858external1
The problem is missing "::" after "mydropzone"
To reproduce the problem here is a simple ECL code
import Std.File; dropzonePath := File.GetDefaultDropZone() +'/' : STORED('dropzonePath'); string getFName(string ext) := FUNCTION RETURN File.ExternalLogicalFileName('localhost', dropzonePath) + WORKUNIT + 'external' + ext; END; external1 := getFName('1'); external2 := getFName('2'); SEQUENTIAL( OUTPUT(dropzonePath, NAMED('dropzonePath')), OUTPUT(File.ExternalLogicalFileName('localhost', dropzonePath), NAMED('ExternalLogicalFileName')), OUTPUT(external1, NAMED('external1')), OUTPUT(external2, NAMED('external2')), );
executed in Bare-metal/VM environment, it generates this result:
<Dataset name='dropzonePath'> <Row><dropzonePath>/var/lib/HPCCSystems/mydropzone/</dropzonePath></Row> </Dataset> <Dataset name='ExternalLogicalFileName'> <Row><ExternalLogicalFileName>~file::127.0.0.1::var::lib::^h^p^c^c^systems::mydropzone::</ExternalLogicalFileName></Row> </Dataset> <Dataset name='external1'> <Row><external1>~file::127.0.0.1::var::lib::^h^p^c^c^systems::mydropzone::W20230213-193818external1</external1></Row> </Dataset> <Dataset name='external2'> <Row><external2>~file::127.0.0.1::var::lib::^h^p^c^c^systems::mydropzone::W20230213-193818external2</external2></Row> </Dataset>
The at the end of the dropzonePath, there is a '/' and the ExternalLogicalFileName() add "::" to the generated filename. So the external1 and external2 contain correct path.
Same code executed on Containerized environment (Minikube), the result is:
<Dataset name='dropzonePath'> <Row><dropzonePath>/var/lib/HPCCSystems/mydropzone/</dropzonePath></Row> </Dataset> <Dataset name='ExternalLogicalFileName'> <Row><ExternalLogicalFileName>~file::127.0.0.1::var::lib::^h^p^c^c^systems::mydropzone</ExternalLogicalFileName></Row> </Dataset> <Dataset name='external1'> <Row><external1>~file::127.0.0.1::var::lib::^h^p^c^c^systems::mydropzoneW20230213-195119external1</external1></Row> </Dataset> <Dataset name='external2'> <Row><external2>~file::127.0.0.1::var::lib::^h^p^c^c^systems::mydropzoneW20230213-195119external2</external2></Row> </Dataset>
The at the end of the dropzonePath, there is a '/', but the ExternalLogicalFileName() doesn't add "::" to the end of the generated filename. So the external1 and external2 are incorrect.
Attachments
Issue Links
- relates to
-
HPCC-28891 setPlaneExternal (and setExternal) create an invalid LFN if passed a posix path with a trailing path separator
-
- Resolved
-