From e0178b17b591fba57ed678d3d987278cc2b13d1c Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 1 Dec 2014 10:27:58 +0000 Subject: [PATCH 1/5] Pass compile group correctly to Clsi._buildRequest --- .../web/app/coffee/Features/Compile/ClsiManager.coffee | 10 +++++----- .../UnitTests/coffee/Compile/ClsiManagerTests.coffee | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/services/web/app/coffee/Features/Compile/ClsiManager.coffee b/services/web/app/coffee/Features/Compile/ClsiManager.coffee index 032d806665..60d81e0c88 100755 --- a/services/web/app/coffee/Features/Compile/ClsiManager.coffee +++ b/services/web/app/coffee/Features/Compile/ClsiManager.coffee @@ -8,11 +8,11 @@ logger = require "logger-sharelatex" url = require("url") module.exports = ClsiManager = - sendRequest: (project_id, settingsOverride = {}, callback = (error, success) ->) -> - ClsiManager._buildRequest project_id, settingsOverride, (error, req) -> + sendRequest: (project_id, options = {}, callback = (error, success) ->) -> + ClsiManager._buildRequest project_id, options, (error, req) -> return callback(error) if error? logger.log project_id: project_id, "sending compile to CLSI" - ClsiManager._postToClsi project_id, req, settingsOverride.compiler, (error, response) -> + ClsiManager._postToClsi project_id, req, options.compileGroup, (error, response) -> return callback(error) if error? logger.log project_id: project_id, response: response, "received compile response from CLSI" callback( @@ -29,8 +29,8 @@ module.exports = ClsiManager = deleteAuxFiles: (project_id, callback = (error) ->) -> request.del "#{Settings.apis.clsi.url}/project/#{project_id}", callback - _postToClsi: (project_id, req, compiler, callback = (error, response) ->) -> - if compiler == "priority" + _postToClsi: (project_id, req, compileGroup, callback = (error, response) ->) -> + if compileGroup == "priority" compilerUrl = Settings.apis.clsi_priority.url else compilerUrl = Settings.apis.clsi.url diff --git a/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee b/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee index aff181a5ee..ff6b223616 100644 --- a/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee @@ -41,7 +41,7 @@ describe "ClsiManager", -> type: "log" }] }) - @ClsiManager.sendRequest @project_id, {compiler:"standard"}, @callback + @ClsiManager.sendRequest @project_id, {compileGroup:"standard"}, @callback it "should build the request", -> @ClsiManager._buildRequest From c70c048aae34fcff7a7cbe29a105e96736ea7961 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 1 Dec 2014 12:19:01 +0000 Subject: [PATCH 2/5] Send clear cache requests to the correct CLSI group --- .../Features/Compile/ClsiManager.coffee | 19 ++++++------ .../Features/Compile/CompileController.coffee | 2 +- .../Features/Compile/CompileManager.coffee | 11 +++---- .../coffee/Compile/ClsiManagerTests.coffee | 26 +++++++++++----- .../Compile/CompileControllerTests.coffee | 4 +-- .../coffee/Compile/CompileManagerTests.coffee | 31 +++++++++---------- 6 files changed, 51 insertions(+), 42 deletions(-) diff --git a/services/web/app/coffee/Features/Compile/ClsiManager.coffee b/services/web/app/coffee/Features/Compile/ClsiManager.coffee index 60d81e0c88..0e910d8591 100755 --- a/services/web/app/coffee/Features/Compile/ClsiManager.coffee +++ b/services/web/app/coffee/Features/Compile/ClsiManager.coffee @@ -21,19 +21,18 @@ module.exports = ClsiManager = ClsiManager._parseOutputFiles(project_id, response?.compile?.outputFiles) ) - getLogLines: (project_id, callback = (error, lines) ->) -> - request "#{Settings.apis.clsi.url}/project/#{project_id}/output/output.log", (error, response, body) -> - return callback(error) if error? - callback null, body?.split("\n") or [] + deleteAuxFiles: (project_id, options, callback = (error) ->) -> + compilerUrl = @_getCompilerUrl(options?.compileGroup) + request.del "#{compilerUrl}/project/#{project_id}", callback - deleteAuxFiles: (project_id, callback = (error) ->) -> - request.del "#{Settings.apis.clsi.url}/project/#{project_id}", callback + _getCompilerUrl: (compileGroup) -> + if compileGroup == "priority" + return Settings.apis.clsi_priority.url + else + return Settings.apis.clsi.url _postToClsi: (project_id, req, compileGroup, callback = (error, response) ->) -> - if compileGroup == "priority" - compilerUrl = Settings.apis.clsi_priority.url - else - compilerUrl = Settings.apis.clsi.url + compilerUrl = @_getCompilerUrl(compileGroup) request.post { url: "#{compilerUrl}/project/#{project_id}/compile" json: req diff --git a/services/web/app/coffee/Features/Compile/CompileController.coffee b/services/web/app/coffee/Features/Compile/CompileController.coffee index edb42f3e1f..054c6f5aaf 100755 --- a/services/web/app/coffee/Features/Compile/CompileController.coffee +++ b/services/web/app/coffee/Features/Compile/CompileController.coffee @@ -48,7 +48,7 @@ module.exports = CompileController = deleteAuxFiles: (req, res, next) -> project_id = req.params.Project_id - ClsiManager.deleteAuxFiles project_id, (error) -> + CompileManager.deleteAuxFiles project_id, (error) -> return next(error) if error? res.send(200) diff --git a/services/web/app/coffee/Features/Compile/CompileManager.coffee b/services/web/app/coffee/Features/Compile/CompileManager.coffee index 1835fa0c0c..d35322077b 100755 --- a/services/web/app/coffee/Features/Compile/CompileManager.coffee +++ b/services/web/app/coffee/Features/Compile/CompileManager.coffee @@ -40,6 +40,11 @@ module.exports = CompileManager = return callback(error) if error? logger.log files: outputFiles, "output files" callback(null, status, outputFiles, output) + + deleteAuxFiles: (project_id, callback = (error) ->) -> + CompileManager.getProjectCompileLimits project_id, (error, limits) -> + return callback(error) if error? + ClsiManager.deleteAuxFiles project_id, limits, callback getProjectCompileLimits: (project_id, callback = (error, limits) ->) -> Project.findById project_id, {owner_ref: 1}, (error, project) -> @@ -51,12 +56,6 @@ module.exports = CompileManager = compileGroup: owner.features?.compileGroup || Settings.defaultFeatures.compileGroup } - getLogLines: (project_id, callback)-> - Metrics.inc "editor.raw-logs" - ClsiManager.getLogLines project_id, (error, logLines)-> - return callback(error) if error? - callback null, logLines - COMPILE_DELAY: 1 # seconds _checkIfRecentlyCompiled: (project_id, user_id, callback = (error, recentlyCompiled) ->) -> key = "compile:#{project_id}:#{user_id}" diff --git a/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee b/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee index ff6b223616..431aabec97 100644 --- a/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/Compile/ClsiManagerTests.coffee @@ -77,15 +77,27 @@ describe "ClsiManager", -> describe "deleteAuxFiles", -> beforeEach -> @request.del = sinon.stub().callsArg(1) - @ClsiManager.deleteAuxFiles @project_id, @callback + + describe "with the standard compileGroup", -> + beforeEach -> + @ClsiManager.deleteAuxFiles @project_id, {compileGroup: "standard"}, @callback - it "should call the delete method in the CLSI", -> - @request.del - .calledWith("#{@settings.apis.clsi.url}/project/#{@project_id}") - .should.equal true + it "should call the delete method in the standard CLSI", -> + @request.del + .calledWith("#{@settings.apis.clsi.url}/project/#{@project_id}") + .should.equal true - it "should call the callback", -> - @callback.called.should.equal true + it "should call the callback", -> + @callback.called.should.equal true + + describe "with the priority compileGroup", -> + beforeEach -> + @ClsiManager.deleteAuxFiles @project_id, {compileGroup: "priority"}, @callback + + it "should call the delete method in the CLSI", -> + @request.del + .calledWith("#{@settings.apis.clsi_priority.url}/project/#{@project_id}") + .should.equal true describe "_buildRequest", -> beforeEach -> diff --git a/services/web/test/UnitTests/coffee/Compile/CompileControllerTests.coffee b/services/web/test/UnitTests/coffee/Compile/CompileControllerTests.coffee index f9fb7134b7..e2cbec4cb8 100644 --- a/services/web/test/UnitTests/coffee/Compile/CompileControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Compile/CompileControllerTests.coffee @@ -181,14 +181,14 @@ describe "CompileController", -> describe "deleteAuxFiles", -> beforeEach -> - @ClsiManager.deleteAuxFiles = sinon.stub().callsArg(1) + @CompileManager.deleteAuxFiles = sinon.stub().callsArg(1) @req.params = Project_id: @project_id @res.send = sinon.stub() @CompileController.deleteAuxFiles @req, @res, @next it "should proxy to the CLSI", -> - @ClsiManager.deleteAuxFiles + @CompileManager.deleteAuxFiles .calledWith(@project_id) .should.equal true diff --git a/services/web/test/UnitTests/coffee/Compile/CompileManagerTests.coffee b/services/web/test/UnitTests/coffee/Compile/CompileManagerTests.coffee index 7e183e8050..fbcf6787cf 100644 --- a/services/web/test/UnitTests/coffee/Compile/CompileManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/Compile/CompileManagerTests.coffee @@ -134,26 +134,25 @@ describe "CompileManager", -> compileGroup: @group }) .should.equal true - - describe "getLogLines", -> + + describe "deleteAuxFiles", -> beforeEach -> - @ClsiManager.getLogLines = sinon.stub().callsArgWith(1, null, @lines = ["log", "lines"]) - @CompileManager.getLogLines @project_id, @callback - - it "should call the new api", -> - @ClsiManager.getLogLines + @CompileManager.getProjectCompileLimits = sinon.stub().callsArgWith 1, null, @limits = { compileGroup: "mock-compile-group" } + @ClsiManager.deleteAuxFiles = sinon.stub().callsArg(2) + @CompileManager.deleteAuxFiles @project_id, @callback + + it "should look up the compile group to use", -> + @CompileManager.getProjectCompileLimits .calledWith(@project_id) .should.equal true - - it "should call the callback with the lines", -> - @callback - .calledWith(null, @lines) - .should.equal true - - it "should increase the log count metric", -> - @Metrics.inc - .calledWith("editor.raw-logs") + + it "should delete the aux files", -> + @ClsiManager.deleteAuxFiles + .calledWith(@project_id, @limits) .should.equal true + + it "should call the callback", -> + @callback.called.should.equal true describe "_checkIfRecentlyCompiled", -> describe "when the key exists in redis", -> From 31ee8eea8b7b1aec5745e340a9dc8c8188c311bc Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 3 Dec 2014 10:09:40 +0000 Subject: [PATCH 3/5] Show sync panel for everyone except anonymous users --- services/web/app/views/project/editor/left-menu.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/left-menu.jade b/services/web/app/views/project/editor/left-menu.jade index 7505f6a2b8..a68dbd586c 100644 --- a/services/web/app/views/project/editor/left-menu.jade +++ b/services/web/app/views/project/editor/left-menu.jade @@ -46,7 +46,7 @@ aside#left-menu.full-size( i.fa.fa-external-link.fa-fw |    #{translate("publish_as_template")} - div(ng-show="permissions.admin") + div(ng-show="!anonymous") h4() #{translate("sync")} span(ng-controller="DropboxController") ul.list-unstyled.nav() From 4020c2f760072dce318ac40da67cbea6695f8d1e Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 3 Dec 2014 11:01:41 +0000 Subject: [PATCH 4/5] Update wrong synctex tooltip --- services/web/app/views/project/editor/editor.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index 775f8aa246..180c72e0b6 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -49,7 +49,7 @@ div.full-size( i.fa.fa-long-arrow-right br a.btn.btn-default.btn-xs( - tooltip-html-unsafe="#{translate('go_to_code_location_in_pdf')}" + tooltip-html-unsafe="#{translate('go_to_pdf_location_in_code')}" tooltip-placement="right" tooltip-append-to-body="true" ng-click="syncToCode()" From 70d0af519bb25a45236c24638a5fd5ff75ae95dd Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 5 Dec 2014 00:10:46 +0000 Subject: [PATCH 5/5] reset project to large state each time --- .../web/public/coffee/ide/pdf/controllers/PdfController.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee b/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee index 3ab4687e8a..ee898dd8f7 100644 --- a/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee +++ b/services/web/public/coffee/ide/pdf/controllers/PdfController.coffee @@ -25,6 +25,7 @@ define [ $scope.pdf.timedout = false $scope.pdf.failure = false $scope.pdf.uncompiled = false + $scope.pdf.projectTooLarge = false $scope.pdf.url = null if response.status == "timedout"