diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2011-09-27 17:29:13 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2011-09-27 17:29:13 +0200 |
commit | 958c7bc00aa00d04c1cbc69c630d5f579249bd6e (patch) | |
tree | 8c5fc116ff896370d1b7ae2a33c02c3ac45373ba | |
parent | 4c7b4b3061866916a9685f5a50ef54f1298214fb (diff) | |
download | sonarqube-958c7bc00aa00d04c1cbc69c630d5f579249bd6e.tar.gz sonarqube-958c7bc00aa00d04c1cbc69c630d5f579249bd6e.zip |
SONAR-2726 Do not allow upgrade with Derby embedded database
4 files changed, 29 insertions, 10 deletions
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 @@ +<h1>Not supported</h1> + +<div class="error"> + Upgrade is not supported. Please use a <a href="http://docs.codehaus.org/display/SONAR/Requirements">production-ready database</a>. +</div>
\ 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 |