[BUGFIX] Race-condition while updating extension list
authorSteffen Gebert <steffen.gebert@typo3.org>
Sat, 8 Oct 2011 22:18:16 +0000 (00:18 +0200)
committerSteffen Gebert <steffen.gebert@typo3.org>
Mon, 10 Oct 2011 20:51:35 +0000 (22:51 +0200)
There is a race-condition in the EM while updating the extension list.

If the update takes more than 30 seconds, Ext.Direct reaches its Ajax
timeout and sends the Ajax request (to update the list) again. As the EM
updates the extensions.xml.gz file at the beginning of the update
process, the second request immediately sees that the repository is
already up-to-date and respons this status to the client.

Thus, the user gets a "Repository is already up-to-date" message shown,
although it was not.

Change-Id: I7b45fc4e4ec8482d58eb771bba9d64a8c034daef
Resolves: #30673
Releases: 4.6, 4.5
Reviewed-on: http://review.typo3.org/5686
Reviewed-by: Steffen Gebert
Tested-by: Steffen Gebert
typo3/sysext/em/res/js/em_repositorylist.js

index 92dd0dd..44ad43b 100644 (file)
@@ -387,6 +387,8 @@ TYPO3.EM.RepositoryList = Ext.extend(Ext.grid.GridPanel, {
                        return;
                }
                var record = this.repositoryStore.getAt(index - 1);
+                       // This is hard stuff to do. So increase the timeout for the AJAX request
+               Ext.Ajax.timeout = 900000;
                TYPO3.EM.ExtDirect.repositoryUpdate(index, function(response) {
                        if (!response.success) {
                                if (response.rep == 0) {