From 958c7bc00aa00d04c1cbc69c630d5f579249bd6e Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Tue, 27 Sep 2011 17:29:13 +0200 Subject: [PATCH] SONAR-2726 Do not allow upgrade with Derby embedded database --- .../app/controllers/api/server_controller.rb | 6 +++++- .../app/controllers/setup_controller.rb | 18 +++++++++++------- .../app/views/setup/not_upgradable.html.erb | 5 +++++ .../webapp/WEB-INF/lib/database_version.rb | 10 ++++++++-- 4 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 sonar-server/src/main/webapp/WEB-INF/app/views/setup/not_upgradable.html.erb diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/server_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/server_controller.rb index 4a5a52c1310..c777559cfc0 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/server_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/server_controller.rb @@ -66,7 +66,11 @@ class Api::ServerController < Api::ApiController def setup begin - DatabaseVersion.migrate_and_start unless DatabaseVersion.uptodate? + if !DatabaseVersion.upgradable? + raise "Upgrade is not supported. Please use a production-ready database." + end + + DatabaseVersion.upgrade_and_start unless DatabaseVersion.uptodate? hash={:status => 'ok'} respond_to do |format| format.json{ render :json => jsonp(hash) } diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/setup_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/setup_controller.rb index ddb4e0b3baa..5917f3b2f4d 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/setup_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/setup_controller.rb @@ -27,21 +27,25 @@ class SetupController < ApplicationController def index if DatabaseVersion.uptodate? - render :template => "setup/index" + render :template => 'setup/index' elsif ActiveRecord::Base.connected? - render :template => "setup/form", :layout => 'nonav' + render :template => (DatabaseVersion.upgradable? ? 'setup/form' : 'setup/not_upgradable'), :layout => 'nonav' else - render :template => "setup/dbdown", :layout => 'nonav' + render :template => 'setup/dbdown', :layout => 'nonav' end end def maintenance - render :template => "setup/maintenance", :layout => 'nonav' + render :template => 'setup/maintenance', :layout => 'nonav' end def setup_database - # do not forget that this code is also in /api/server/setup (see api/server_controller.rb) - DatabaseVersion.migrate_and_start unless DatabaseVersion.uptodate? - redirect_to home_path + if !DatabaseVersion.upgradable? + render :text => 'Upgrade is not supported. Please use a production-ready database.', :status => 500 + else + # do not forget that this code is also in /api/server/setup (see api/server_controller.rb) + DatabaseVersion.upgrade_and_start unless DatabaseVersion.uptodate? + redirect_to home_path + end end end diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/setup/not_upgradable.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/setup/not_upgradable.html.erb new file mode 100644 index 00000000000..bd3c0f12e17 --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/setup/not_upgradable.html.erb @@ -0,0 +1,5 @@ +

Not supported

+ +
+ Upgrade is not supported. Please use a production-ready database. +
\ No newline at end of file diff --git a/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb b/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb index 9dd1eed5611..e40d012dda0 100644 --- a/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb +++ b/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb @@ -59,7 +59,7 @@ class DatabaseVersion $uptodate end - def self.migrate_and_start + def self.upgrade_and_start ActiveRecord::Migrator.migrate(migrations_path) Java::OrgSonarServerPlatform::Platform.getInstance().start() load_plugin_webservices() @@ -72,10 +72,12 @@ class DatabaseVersion def self.automatic_setup if current_version<=0 try_restore_structure_dump() if use_structure_dump? - migrate_and_start() + upgrade_and_start() end if uptodate? load_plugin_webservices() + else + puts "Server must be upgraded. Please browse /setup" end uptodate? end @@ -117,4 +119,8 @@ class DatabaseVersion # default value is true ::Java::OrgSonarServerUi::JRubyFacade.getInstance().getConfigurationValue('sonar.useStructureDump')!='false' end + + def self.upgradable? + dialect()!='derby' + end end \ No newline at end of file -- 2.39.5