Item13349: Installation of large extensions like FugueIconsContrib results in server timeout.
Priority: Normal
Current State: Closed
Released In: 2.0.0
Target Release: major
When I tried to install the FugueIconsContrib, I got a page full of perl code after the installation, and the installation itself appeared to miss files.
This is what I got:
< this.q.split(/[&;]/).length; i++) { this.keyValuePairs[i] = this.q.split(/[&;]/)[i]; } } } PageQuery.prototype.getKeyValuePairs = function() { return this.keyValuePairs; } /** @return The query string value; if not found returns -1. */ PageQuery.prototype.getValue = function (s) { for(var j=0; j < this.keyValuePairs.length; j++) { if(this.keyValuePairs[j].split(/=/)[0] == s) return this.keyValuePairs[j].split(/=/)[1]; } return -1; } PageQuery.prototype.getParameters = function () { var a = new Array(this.getLength()); for(var j=0; j < this.keyValuePairs.length; j++) { a[j] = this.keyValuePairs[j].split(/=/)[0]; } return a; } PageQuery.prototype.getLength = function() { return this.keyValuePairs.length; } function getUrlParam(inName) { var myPageQuery = new PageQuery(location.search); var param = myPageQuery.getValue(inName); return (param == -1 ? undefined : param); } /** * jquery init */ $(document).ready(function() { $(".enableWhenSomethingChanged").each(function() { enableWhenSomethingChangedElements.push(this); if (this.tagName.toLowerCase() == 'input') { /* disable the Save Changes button until a change has been made */ /* we won't use this until an AJAX call has been implemented to make this fault proof $(this).attr('disabled', 'disabled'); $(this).addClass('foswikiSubmitDisabled'); $(this).removeClass('foswikiSubmit'); */ } else { $(this).addClass('foswikiHidden'); } }); $(".showWhenNothingChanged").each(function() { showWhenNothingChangedElements.push(this); }); $(".tabli a").each(function() { var sectionParts = getSectionParts(this.hash); this.sectionId = sectionParts.main; if (sectionParts.sub) { this.sectionId = sectionParts.sub; setDefaultSub(sectionParts.main, sectionParts.sub); } tabLinks[this.sectionId] = $(this).parent().get(0); }); $(".tabli a").click(function() { return showSection(this.sectionId); }); $("a.configureExpert").click(function() { toggleExpertsMode(); return false; }); $("a.configureNotExpert").click(function() { toggleExpertsMode(); return false; }); $("a.configureInfoText").click(function() { toggleInfoMode(); return false; }); $("a.configureNotInfoText").click(function() { toggleInfoMode(); return false; }); $("a.configureDefaultValueLink").each(function() { initDefaultLink(this); }); $("a.configureDefaultValueLink", $("div.configureRootSection")).mouseover(function() { showDefaultLinkToolTip(this); }); $(".configureToggleSections a").click(function() { toggleSections(); }); $("input.foswikiFocus").each(function() { this.focus(); }); $(".configureRootSection table.configureSectionValues div.configureError").each(function() { var row = $(this).parent().parent().get(0); if (row) { $(row).removeClass('configureExpert'); } }); $(".configureRootSection table.configureSectionValues div.configureWarn").each(function() { var row = $(this).parent().parent().get(0); if (row) { $(row).removeClass('configureExpert'); } }); $("#closeMessages").click(function() { $("#messages").hide(); return false; }); toggleExpertsMode( getUrlParam('expert') ); toggleInfoMode(); initSection(); $(window).scroll(function(){ imgOnDemand() }); imgOnDemand(); }); //]]>
Missing Images:
--
BirgitNietsch - 02 Apr 2015
The
FugueIconsContrib is a huge extension with 7600+ attachments. I was able to install it here without errors, but it required 5+ minutes and configure eventually timed out. However it had reached the point to where it had been fully installed.
Depending on where the install timed out, it's unpredictable what would be returned to the browser. The code above is javascript, not perl, but I'm not sure where it came from or what failed. I suspect it was a timeout.
This is probably an extension that would be better installed by just unzipping it into the root of the foswiki install. The package installer copies in the files one by one, and is in need of some performance profiling.
I've downgraded the task to Normal, as it shouldn't block a Foswiki release, and I assigned it to Configure. The issue is in the design of the extension installer, but I don't really have any idea how we'd fix it.
--
GeorgeClark - 08 Apr 2015
Part of the issue here is that the package installer was defaulting to use
Archive::Tar
to expand the file, even when the commandline tar utility was available. It turns out that this is a horrible choice, as the pure perl utility was by far the majority of the runtime. Updating
Configure::FileUtil
to use the shell utility greatly reduced installation time and will probably resolve this error.
Marking the task fixed, however there will still be issues with extremely large extensions if the underlying OS doesn't have the shell tar or unzip available.
--
GeorgeClark - 27 Apr 2015