[ 
https://issues.apache.org/jira/browse/MESOS-9800?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16850170#comment-16850170
 ] 

Joseph Wu commented on MESOS-9800:
----------------------------------

I believe this error appears when the locale of the program (Mesos agent) is 
set to some non-UTF locale, such as the default POSIX locale.  The addition of 
the following line _might_ be enough to fix it.

{code}
diff --git a/3rdparty/stout/include/stout/archiver.hpp 
b/3rdparty/stout/include/stout/archiver.hpp
index 551e644a3..706ba5282 100644
--- a/3rdparty/stout/include/stout/archiver.hpp
+++ b/3rdparty/stout/include/stout/archiver.hpp
@@ -54,6 +54,11 @@ inline Try<Nothing> extract(
   archive_read_support_format_all(reader.get());
   archive_read_support_filter_all(reader.get());
 
+  // Prevent Libarchive from trying to convert filenames to the locale-default
+  // character encoding. This conversion sometimes fails, for example when
+  // reading UTF-8 characters in a standard "C" locale (POSIX default).
+  archive_read_set_options(reader.get(), "hdrcharset=BINARY");
+
   std::unique_ptr<struct archive, std::function<void(struct archive*)>> writer(
     archive_write_disk_new(),
     [](struct archive* p) {
{code}

Could you attach an example archive that fails to extract and the locale of the 
machine running your agent (i.e. the output of the {{locale}} command)?  That 
should give me a better idea of what case is failing.

> libarchive cannot extract tarfile due to UTF-8 encoding issues
> --------------------------------------------------------------
>
>                 Key: MESOS-9800
>                 URL: https://issues.apache.org/jira/browse/MESOS-9800
>             Project: Mesos
>          Issue Type: Bug
>          Components: fetcher
>    Affects Versions: 1.7.2
>         Environment: Mesos 1.7.2 and Marathon 1.4.3 running on top of Ubuntu 
> 16.04.
>            Reporter: Felipe Alfaro Solana
>            Priority: Major
>
> Starting with Mesos 1.7, the following change has been introduced:
>  * [MESOS-8064] - Mesos now requires libarchive to programmatically decode 
> .zip, .tar, .gzip, and other common file compression schemes. Version 3.3.2 
> is bundled in Mesos.
> However, this version of libarchive which is used by the fetcher component in 
> Mesos has problems in dealing with archive files (.tar and .zip) which 
> contain UTF-8 characters. We run Marahton on top of Mesos, and one of our 
> Marathon application relies on a .tar file which contains symlinks whose 
> target contains certain UTF-8 characters (Turkish) or the symlink name itself 
> contains UTF-8 characters. Mesos fetcher is unable to extract the archive and 
> fails with the following error:
> {{May 28 10:47:30 t01m01.node.t01.dns.teralytics.net mesos-slave[4319]: E0528 
> 10:47:30.791250  6136 fetcher.cpp:613] EXIT with status 1: Failed to fetch 
> '/tmp/certificates.tar.gz': Failed to extract archive 
> '/var/mesos/slaves/10c35371-f690-4d40-8b9e-30ffd04405fb-S6/frameworks/ff2993eb-987f-47b0-b3af-fb8b49ab0470-0000/executors/test-nginx.fe01a0c0-8135-11e9-a160-02427a38aa03/runs/6a6e87e8-5eef-4e8e-8c00-3f081fa187b0/certificates.tar.gz'
>  to 
> '/var/mesos/slaves/10c35371-f690-4d40-8b9e-30ffd04405fb-S6/frameworks/ff2993eb-987f-47b0-b3af-fb8b49ab0470-0000/executors/test-nginx.fe01a0c0-8135-11e9-a160-02427a38aa03/runs/6a6e87e8-5eef-4e8e-8c00-3f081fa187b0':
>  Failed to read archive header: Linkname can't be converted from UTF-8 to 
> current locale.}}
> {{May 28 10:47:30 t01m01.node.t01.dns.teralytics.net mesos-slave[4319]:}}
> {{May 28 10:47:30 t01m01.node.t01.dns.teralytics.net mesos-slave[4319]: End 
> fetcher log for container 6a6e87e8-5eef-4e8e-8c00-3f081fa187b0}}
> {{May 28 10:47:30 t01m01.node.t01.dns.teralytics.net mesos-slave[4319]: E0528 
> 10:47:30.846695  4343 fetcher.cpp:571] Failed to run mesos-fetcher: Failed to 
> fetch all URIs for container '6a6e87e8-5eef-4e8e-8c00-3f081fa187b0': exited 
> with status 1}}
> The same Marathon application works fine with Mesos 1.6 which does not use 
> libarchive.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to