Completely remove GerritServer.properties

We now load our database settings in hosted development mode from
the $site_path/etc/gerrit.config, just like we would under daemon.
This reduces the number of weird configurations that are supported.

Change-Id: I0a13f16dd74bdb034d05650eadd5e36771109f3e
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce
2009-12-19 13:38:19 -08:00
parent e194e7f6ca
commit 955d00eb81
16 changed files with 80 additions and 120 deletions

1
.gitignore vendored
View File

@@ -1,4 +1,3 @@
/.project /.project
/.settings/org.maven.ide.eclipse.prefs /.settings/org.maven.ide.eclipse.prefs
/GerritServer.properties
/test_site /test_site

View File

@@ -82,9 +82,9 @@ Duplicate the existing `pgm_daemon` launch configuration:
* Modify the name to be unique. * Modify the name to be unique.
* Switch to Arguments tab. * Switch to Arguments tab.
* Edit the -d flag to match the path used during 'init'. The * Edit the `-d` program argument flag to match the path used during
template launch configuration resolves to ../test_site since 'init'. The template launch configuration resolves to ../test_site
that is what the documentation recommends. since that is what the documentation recommends.
* Switch to Common tab. * Switch to Common tab.
* Change Save as to be Local file. * Change Save as to be Local file.
@@ -93,12 +93,22 @@ Duplicate the existing `pgm_daemon` launch configuration:
Running Hosted Mode Running Hosted Mode
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
* Copy Duplicate the existing `gwtui_any` (or `gwtui_mac` if on Mac OS X)
`gerrit-war/src/main/webapp/WEB-INF/extra/GerritServer.properties_example` launch configuration:
to
`gerrit-parent/GerritServer.properties`. * Run -> Debug Configurations ...
* Edit to match your database parameters. * Java Application -> `gwtui_any`
* Run the `gwtui_any` or `gwtui_mac` launch configuration. * Right click, Duplicate
* Modify the name to be unique.
* Switch to Arguments tab.
* Edit the `-Dgerrit.site_path=` VM argument to match the path
used during 'init'. The template launch configuration resolves
to ../test_site since that is what the documentation recommends.
* Switch to Common tab.
* Change Save as to be Local file.
GERRIT GERRIT

View File

@@ -38,11 +38,6 @@ limitations under the License.
<artifactId>log4j</artifactId> <artifactId>log4j</artifactId>
</dependency> </dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.h2database</groupId> <groupId>com.h2database</groupId>
<artifactId>h2</artifactId> <artifactId>h2</artifactId>

View File

@@ -14,7 +14,7 @@
package com.google.gerrit.pgm; package com.google.gerrit.pgm;
import static com.google.gerrit.pgm.util.DataSourceProvider.Context.MULTI_USER; import static com.google.gerrit.server.schema.DataSourceProvider.Context.MULTI_USER;
import com.google.gerrit.httpd.HttpCanonicalWebUrlProvider; import com.google.gerrit.httpd.HttpCanonicalWebUrlProvider;
import com.google.gerrit.httpd.WebModule; import com.google.gerrit.httpd.WebModule;

View File

@@ -14,7 +14,7 @@
package com.google.gerrit.pgm; package com.google.gerrit.pgm;
import static com.google.gerrit.pgm.util.DataSourceProvider.Context.SINGLE_USER; import static com.google.gerrit.server.schema.DataSourceProvider.Context.SINGLE_USER;
import com.google.gerrit.lifecycle.LifecycleManager; import com.google.gerrit.lifecycle.LifecycleManager;
import com.google.gerrit.pgm.util.RuntimeShutdown; import com.google.gerrit.pgm.util.RuntimeShutdown;

View File

@@ -14,7 +14,7 @@
package com.google.gerrit.pgm; package com.google.gerrit.pgm;
import static com.google.gerrit.pgm.util.DataSourceProvider.Context.SINGLE_USER; import static com.google.gerrit.server.schema.DataSourceProvider.Context.SINGLE_USER;
import static com.google.inject.Stage.PRODUCTION; import static com.google.inject.Stage.PRODUCTION;
import com.google.gerrit.common.PageLinks; import com.google.gerrit.common.PageLinks;

View File

@@ -16,11 +16,11 @@ package com.google.gerrit.pgm.init;
import static com.google.gerrit.pgm.init.InitUtil.die; import static com.google.gerrit.pgm.init.InitUtil.die;
import static com.google.gerrit.pgm.init.InitUtil.username; import static com.google.gerrit.pgm.init.InitUtil.username;
import static com.google.gerrit.pgm.util.DataSourceProvider.Type.H2; import static com.google.gerrit.server.schema.DataSourceProvider.Type.H2;
import com.google.gerrit.pgm.util.ConsoleUI; import com.google.gerrit.pgm.util.ConsoleUI;
import com.google.gerrit.pgm.util.DataSourceProvider;
import com.google.gerrit.server.config.SitePaths; import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.schema.DataSourceProvider;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;

View File

@@ -19,8 +19,8 @@ import static com.google.gerrit.pgm.init.InitUtil.savePublic;
import static com.google.gerrit.pgm.init.InitUtil.saveSecure; import static com.google.gerrit.pgm.init.InitUtil.saveSecure;
import com.google.gerrit.pgm.util.ConsoleUI; import com.google.gerrit.pgm.util.ConsoleUI;
import com.google.gerrit.pgm.util.DataSourceProvider;
import com.google.gerrit.server.config.SitePaths; import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.schema.DataSourceProvider;
import com.google.gerrit.server.util.SocketUtil; import com.google.gerrit.server.util.SocketUtil;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;

View File

@@ -21,6 +21,7 @@ import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.server.config.DatabaseModule; import com.google.gerrit.server.config.DatabaseModule;
import com.google.gerrit.server.config.GerritServerConfigModule; import com.google.gerrit.server.config.GerritServerConfigModule;
import com.google.gerrit.server.config.SitePath; import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.schema.DataSourceProvider;
import com.google.gwtorm.client.OrmException; import com.google.gwtorm.client.OrmException;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.CreationException; import com.google.inject.CreationException;

View File

@@ -48,6 +48,11 @@ limitations under the License.
<artifactId>ehcache-core</artifactId> <artifactId>ehcache-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
<dependency> <dependency>
<groupId>commons-net</groupId> <groupId>commons-net</groupId>
<artifactId>commons-net</artifactId> <artifactId>commons-net</artifactId>

View File

@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
package com.google.gerrit.pgm.util; package com.google.gerrit.server.schema;
import com.google.gerrit.lifecycle.LifecycleListener; import com.google.gerrit.lifecycle.LifecycleListener;
import com.google.gerrit.server.config.ConfigUtil; import com.google.gerrit.server.config.ConfigUtil;

View File

@@ -15,18 +15,10 @@
package com.google.gerrit.httpd; package com.google.gerrit.httpd;
import com.google.gerrit.lifecycle.LifecycleListener; import com.google.gerrit.lifecycle.LifecycleListener;
import com.google.gwtorm.jdbc.SimpleDataSource;
import com.google.inject.Provider; import com.google.inject.Provider;
import com.google.inject.ProvisionException; import com.google.inject.ProvisionException;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Map;
import java.util.Properties;
import javax.naming.InitialContext; import javax.naming.InitialContext;
import javax.naming.NamingException; import javax.naming.NamingException;
import javax.sql.DataSource; import javax.sql.DataSource;
@@ -61,47 +53,8 @@ final class ReviewDbDataSourceProvider implements Provider<DataSource>,
try { try {
return (DataSource) new InitialContext().lookup(dsName); return (DataSource) new InitialContext().lookup(dsName);
} catch (NamingException namingErr) { } catch (NamingException namingErr) {
final Properties p = readGerritDataSource(); throw new ProvisionException("No DataSource " + dsName, namingErr);
if (p == null) {
throw new ProvisionException("Initialization error:\n"
+ " * No DataSource " + dsName + "\n"
+ " * No -DGerritServer=GerritServer.properties"
+ " on Java command line", namingErr);
} }
try {
return new SimpleDataSource(p);
} catch (SQLException se) {
throw new ProvisionException("Database unavailable", se);
}
}
}
private static Properties readGerritDataSource() throws ProvisionException {
final Properties srvprop = new Properties();
String name = System.getProperty("GerritServer");
if (name == null) {
name = "GerritServer.properties";
}
try {
final InputStream in = new FileInputStream(name);
try {
srvprop.load(in);
} finally {
in.close();
}
} catch (IOException e) {
throw new ProvisionException("Cannot read " + name, e);
}
final Properties dbprop = new Properties();
for (final Map.Entry<Object, Object> e : srvprop.entrySet()) {
final String key = (String) e.getKey();
if (key.startsWith("database.")) {
dbprop.put(key.substring("database.".length()), e.getValue());
}
}
return dbprop;
} }
private void closeDataSource(final DataSource ds) { private void closeDataSource(final DataSource ds) {

View File

@@ -27,6 +27,7 @@ import com.google.gerrit.server.config.GerritServerConfigModule;
import com.google.gerrit.server.config.MasterNodeStartup; import com.google.gerrit.server.config.MasterNodeStartup;
import com.google.gerrit.server.config.SitePath; import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.config.SitePathFromSystemConfigProvider; import com.google.gerrit.server.config.SitePathFromSystemConfigProvider;
import com.google.gerrit.server.schema.DataSourceProvider;
import com.google.gerrit.sshd.SshModule; import com.google.gerrit.sshd.SshModule;
import com.google.gerrit.sshd.commands.MasterCommandModule; import com.google.gerrit.sshd.commands.MasterCommandModule;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
@@ -57,6 +58,7 @@ public class WebAppInitializer extends GuiceServletContextListener {
private static final Logger log = private static final Logger log =
LoggerFactory.getLogger(WebAppInitializer.class); LoggerFactory.getLogger(WebAppInitializer.class);
private File sitePath;
private Injector dbInjector; private Injector dbInjector;
private Injector cfgInjector; private Injector cfgInjector;
private Injector sysInjector; private Injector sysInjector;
@@ -66,6 +68,11 @@ public class WebAppInitializer extends GuiceServletContextListener {
private synchronized void init() { private synchronized void init() {
if (manager == null) { if (manager == null) {
final String path = System.getProperty("gerrit.site_path");
if (path != null) {
sitePath = new File(path);
}
try { try {
dbInjector = createDbInjector(); dbInjector = createDbInjector();
} catch (CreationException ce) { } catch (CreationException ce) {
@@ -115,6 +122,21 @@ public class WebAppInitializer extends GuiceServletContextListener {
private Injector createDbInjector() { private Injector createDbInjector() {
final List<Module> modules = new ArrayList<Module>(); final List<Module> modules = new ArrayList<Module>();
if (sitePath != null) {
modules.add(new LifecycleModule() {
@Override
protected void configure() {
bind(File.class).annotatedWith(SitePath.class).toInstance(sitePath);
bind(DataSourceProvider.Context.class).toInstance(
DataSourceProvider.Context.MULTI_USER);
bind(Key.get(DataSource.class, Names.named("ReviewDb"))).toProvider(
DataSourceProvider.class).in(SINGLETON);
listener().to(DataSourceProvider.class);
}
});
modules.add(new GerritServerConfigModule());
} else {
modules.add(new LifecycleModule() { modules.add(new LifecycleModule() {
@Override @Override
protected void configure() { protected void configure() {
@@ -123,12 +145,18 @@ public class WebAppInitializer extends GuiceServletContextListener {
listener().to(ReviewDbDataSourceProvider.class); listener().to(ReviewDbDataSourceProvider.class);
} }
}); });
}
modules.add(new DatabaseModule()); modules.add(new DatabaseModule());
return Guice.createInjector(PRODUCTION, modules); return Guice.createInjector(PRODUCTION, modules);
} }
private Injector createCfgInjector() { private Injector createCfgInjector() {
final List<Module> modules = new ArrayList<Module>(); final List<Module> modules = new ArrayList<Module>();
if (sitePath == null) {
// If we didn't get the site path from the system property
// we need to get it from the database, as that's our old
// method of locating the site path on disk.
//
modules.add(new AbstractModule() { modules.add(new AbstractModule() {
@Override @Override
protected void configure() { protected void configure() {
@@ -137,6 +165,7 @@ public class WebAppInitializer extends GuiceServletContextListener {
} }
}); });
modules.add(new GerritServerConfigModule()); modules.add(new GerritServerConfigModule());
}
modules.add(new AuthConfigModule()); modules.add(new AuthConfigModule());
return dbInjector.createChildInjector(modules); return dbInjector.createChildInjector(modules);
} }

View File

@@ -1,32 +0,0 @@
# Any properties starting with "database." will be fed to the JDBC driver,
# after removing the "database." prefix.
#
# The following "special" properties are removed from that set:
#
# database.driver : Class name of the driver to load.
# database.url : The connection URL
#
# H2
# (driver included)
#
# database.driver = org.h2.Driver
# database.url = jdbc:h2:file:ReviewDb
# PostgreSQL
# (driver included)
#
# database.driver = org.postgresql.Driver
# database.url = jdbc:postgresql:reviewdb
# database.user = gerrit2
# database.password = supersecretcode
# MySQL 5.0
# curl -O http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar
#
# database.classpath = mysql-connector-java-5.0.8.jar
# database.driver = com.mysql.jdbc.Driver
# database.url = jdbc:mysql://localhost/reviewdb?user=gerrit2&password=secretcode

View File

@@ -32,5 +32,5 @@
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl /&#10;-war ${resource_loc:/gerrit-gwtui/target}/gwt-hosted-mode&#10;-server com.google.gerrit.gwtdebug.GerritDebugLauncher&#10;com.google.gerrit.GerritGwtUI"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl /&#10;-war ${resource_loc:/gerrit-gwtui/target}/gwt-hosted-mode&#10;-server com.google.gerrit.gwtdebug.GerritDebugLauncher&#10;com.google.gerrit.GerritGwtUI"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-gwtdbug"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-gwtdbug"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M&#10;-DGerritServer=${resource_loc:/gerrit-parent/GerritServer.properties}&#10;-Dcom.google.gerrit.httpd.auth.become=true"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx256M&#10;-Dcom.google.gerrit.httpd.auth.become=true&#10;-Dgerrit.site_path=${resource_loc:/gerrit-parent}/../android_codereview"/>
</launchConfiguration> </launchConfiguration>

View File

@@ -32,5 +32,5 @@
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl /&#10;-war ${resource_loc:/gerrit-gwtui/target}/gwt-hosted-mode&#10;-server com.google.gerrit.gwtdebug.GerritDebugLauncher&#10;com.google.gerrit.GerritGwtUI"/> <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-startupUrl /&#10;-war ${resource_loc:/gerrit-gwtui/target}/gwt-hosted-mode&#10;-server com.google.gerrit.gwtdebug.GerritDebugLauncher&#10;com.google.gerrit.GerritGwtUI"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-gwtdbug"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="gerrit-gwtdbug"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XstartOnFirstThread&#10;-Xmx256M&#10;-DGerritServer=${resource_loc:/gerrit-parent/GerritServer.properties}&#10;-Dcom.google.gerrit.httpd.auth.become=true"/> <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XstartOnFirstThread&#10;-Xmx256M&#10;-Dcom.google.gerrit.httpd.auth.become=true&#10;-Dgerrit.site_path=${resource_loc:/gerrit-parent}/../test_site"/>
</launchConfiguration> </launchConfiguration>