aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2011-09-27 17:29:13 +0200
committerSimon Brandhof <simon.brandhof@gmail.com>2011-09-27 17:29:13 +0200
commit958c7bc00aa00d04c1cbc69c630d5f579249bd6e (patch)
tree8c5fc116ff896370d1b7ae2a33c02c3ac45373ba
parent4c7b4b3061866916a9685f5a50ef54f1298214fb (diff)
downloadsonarqube-958c7bc00aa00d04c1cbc69c630d5f579249bd6e.tar.gz
sonarqube-958c7bc00aa00d04c1cbc69c630d5f579249bd6e.zip
SONAR-2726 Do not allow upgrade with Derby embedded database
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/api/server_controller.rb6
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/controllers/setup_controller.rb18
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/app/views/setup/not_upgradable.html.erb5
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb10
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