Item13349: Installation of large extensions like FugueIconsContrib results in server timeout.

pencil
Priority: Normal
Current State: Closed
Released In: 2.0.0
Target Release: major
Applies To: Engine
Component: Configure, FugueIconsContrib
Branches: master
Reported By: BirgitNietsch
Waiting For:
Last Change By: GeorgeClark
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: MissingImages.png

-- 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
 

ItemTemplate edit

Summary Installation of large extensions like FugueIconsContrib results in server timeout.
ReportedBy BirgitNietsch
Codebase 1.1.9, trunk
SVN Range
AppliesTo Engine
Component Configure, FugueIconsContrib
Priority Normal
CurrentState Closed
WaitingFor
Checkins distro:32f7a6819dec distro:2130a7193ce8
TargetRelease major
ReleasedIn 2.0.0
CheckinsOnBranches master
trunkCheckins
masterCheckins distro:32f7a6819dec distro:2130a7193ce8
ItemBranchCheckins
Release01x01Checkins
I Attachment Action Size Date Who Comment
MissingImages.pngpng MissingImages.png manage 34 K 02 Apr 2015 - 14:34 BirgitNietsch Missing Images
Topic revision: r6 - 06 Jul 2015, GeorgeClark
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy