|
Rex Dieter |
78fb1bf |
From f5bfc641c38ca0dbd37c8993bc74f81c7e0c9b66 Mon Sep 17 00:00:00 2001
|
|
Rex Dieter |
78fb1bf |
From: =?UTF-8?q?Dan=20Vr=C3=A1til?= <dvratil@redhat.com>
|
|
Rex Dieter |
78fb1bf |
Date: Tue, 6 May 2014 15:27:07 +0200
|
|
Rex Dieter |
78fb1bf |
Subject: [PATCH 4/7] Fix PostgreSQL startup when akonadiserverrc contains
|
|
Rex Dieter |
78fb1bf |
empty values
|
|
Rex Dieter |
78fb1bf |
|
|
Rex Dieter |
78fb1bf |
When there are empty configuration options in akonadiserverrc (like Host),
|
|
Rex Dieter |
78fb1bf |
we would still pick them up and use them as valid values, which is wrong,
|
|
Rex Dieter |
78fb1bf |
because then we work with empty socket path etc.
|
|
Rex Dieter |
78fb1bf |
|
|
Rex Dieter |
78fb1bf |
Instead we always replace non-existent and empty config values with the
|
|
Rex Dieter |
78fb1bf |
default ones, so that Akonadi with PostgreSQL is always able to start.
|
|
Rex Dieter |
78fb1bf |
---
|
|
Rex Dieter |
78fb1bf |
server/src/storage/dbconfigpostgresql.cpp | 27 ++++++++++++++++++++-------
|
|
Rex Dieter |
78fb1bf |
1 file changed, 20 insertions(+), 7 deletions(-)
|
|
Rex Dieter |
78fb1bf |
|
|
Rex Dieter |
78fb1bf |
diff --git a/server/src/storage/dbconfigpostgresql.cpp b/server/src/storage/dbconfigpostgresql.cpp
|
|
Rex Dieter |
78fb1bf |
index 10460d4..66e4605 100644
|
|
Rex Dieter |
78fb1bf |
--- a/server/src/storage/dbconfigpostgresql.cpp
|
|
Rex Dieter |
78fb1bf |
+++ b/server/src/storage/dbconfigpostgresql.cpp
|
|
Rex Dieter |
78fb1bf |
@@ -29,6 +29,7 @@
|
|
Rex Dieter |
78fb1bf |
#include <QtSql/QSqlDriver>
|
|
Rex Dieter |
78fb1bf |
#include <QtSql/QSqlError>
|
|
Rex Dieter |
78fb1bf |
#include <QtSql/QSqlQuery>
|
|
Rex Dieter |
78fb1bf |
+#include <unistd.h>
|
|
Rex Dieter |
78fb1bf |
|
|
Rex Dieter |
78fb1bf |
#include <unistd.h>
|
|
Rex Dieter |
78fb1bf |
|
|
Rex Dieter |
78fb1bf |
@@ -90,13 +91,29 @@ bool DbConfigPostgresql::init( QSettings &settings )
|
|
Rex Dieter |
78fb1bf |
// read settings for current driver
|
|
Rex Dieter |
78fb1bf |
settings.beginGroup( driverName() );
|
|
Rex Dieter |
78fb1bf |
mDatabaseName = settings.value( QLatin1String( "Name" ), defaultDatabaseName() ).toString();
|
|
Rex Dieter |
78fb1bf |
+ if ( mDatabaseName.isEmpty() ) {
|
|
Rex Dieter |
78fb1bf |
+ mDatabaseName = defaultDatabaseName();
|
|
Rex Dieter |
78fb1bf |
+ }
|
|
Rex Dieter |
78fb1bf |
mHostName = settings.value( QLatin1String( "Host" ), defaultHostName ).toString();
|
|
Rex Dieter |
78fb1bf |
+ if ( mHostName.isEmpty() ) {
|
|
Rex Dieter |
78fb1bf |
+ mHostName = defaultHostName;
|
|
Rex Dieter |
78fb1bf |
+ }
|
|
Rex Dieter |
78fb1bf |
+ // User, password and Options can be empty and still valid, so don't override them
|
|
Rex Dieter |
78fb1bf |
mUserName = settings.value( QLatin1String( "User" ) ).toString();
|
|
Rex Dieter |
78fb1bf |
mPassword = settings.value( QLatin1String( "Password" ) ).toString();
|
|
Rex Dieter |
78fb1bf |
mConnectionOptions = settings.value( QLatin1String( "Options" ), defaultOptions ).toString();
|
|
Rex Dieter |
78fb1bf |
mServerPath = settings.value( QLatin1String( "ServerPath" ), defaultServerPath ).toString();
|
|
Rex Dieter |
78fb1bf |
+ if ( mInternalServer && mServerPath.isEmpty() ) {
|
|
Rex Dieter |
78fb1bf |
+ mServerPath = defaultServerPath;
|
|
Rex Dieter |
78fb1bf |
+ }
|
|
Rex Dieter |
78fb1bf |
mInitDbPath = settings.value( QLatin1String( "InitDbPath" ), defaultInitDbPath ).toString();
|
|
Rex Dieter |
78fb1bf |
+ if ( mInternalServer && mInitDbPath.isEmpty() ) {
|
|
Rex Dieter |
78fb1bf |
+ mInitDbPath = defaultInitDbPath;
|
|
Rex Dieter |
78fb1bf |
+ }
|
|
Rex Dieter |
78fb1bf |
mPgData = settings.value( QLatin1String( "PgData" ), defaultPgData ).toString();
|
|
Rex Dieter |
78fb1bf |
+ if ( mPgData.isEmpty() ) {
|
|
Rex Dieter |
78fb1bf |
+ mPgData = defaultPgData;
|
|
Rex Dieter |
78fb1bf |
+ }
|
|
Rex Dieter |
78fb1bf |
settings.endGroup();
|
|
Rex Dieter |
78fb1bf |
|
|
Rex Dieter |
78fb1bf |
// store back the default values
|
|
Rex Dieter |
78fb1bf |
@@ -104,12 +121,8 @@ bool DbConfigPostgresql::init( QSettings &settings )
|
|
Rex Dieter |
78fb1bf |
settings.setValue( QLatin1String( "Name" ), mDatabaseName );
|
|
Rex Dieter |
78fb1bf |
settings.setValue( QLatin1String( "Host" ), mHostName );
|
|
Rex Dieter |
78fb1bf |
settings.setValue( QLatin1String( "Options" ), mConnectionOptions );
|
|
Rex Dieter |
78fb1bf |
- if ( !mServerPath.isEmpty() ) {
|
|
Rex Dieter |
78fb1bf |
- settings.setValue( QLatin1String( "ServerPath" ), mServerPath );
|
|
Rex Dieter |
78fb1bf |
- }
|
|
Rex Dieter |
78fb1bf |
- if ( !mInitDbPath.isEmpty() ) {
|
|
Rex Dieter |
78fb1bf |
- settings.setValue( QLatin1String( "InitDbPath" ), mInitDbPath );
|
|
Rex Dieter |
78fb1bf |
- }
|
|
Rex Dieter |
78fb1bf |
+ settings.setValue( QLatin1String( "ServerPath" ), mServerPath );
|
|
Rex Dieter |
78fb1bf |
+ settings.setValue( QLatin1String( "InitDbPath" ), mInitDbPath );
|
|
Rex Dieter |
78fb1bf |
settings.setValue( QLatin1String( "StartServer" ), mInternalServer );
|
|
Rex Dieter |
78fb1bf |
settings.endGroup();
|
|
Rex Dieter |
78fb1bf |
settings.sync();
|
|
Rex Dieter |
78fb1bf |
@@ -203,7 +216,7 @@ void DbConfigPostgresql::startInternalServer()
|
|
Rex Dieter |
78fb1bf |
break;
|
|
Rex Dieter |
78fb1bf |
}
|
|
Rex Dieter |
78fb1bf |
|
|
Rex Dieter |
78fb1bf |
- if ( pgCtl.waitForFinished( 500 ) ) {
|
|
Rex Dieter |
78fb1bf |
+ if ( pgCtl.waitForFinished( 500 ) && pgCtl.exitCode() ) {
|
|
Rex Dieter |
78fb1bf |
akError() << "Database process exited unexpectedly during initial connection!";
|
|
Rex Dieter |
78fb1bf |
akError() << "executable:" << mServerPath;
|
|
Rex Dieter |
78fb1bf |
akError() << "arguments:" << arguments;
|
|
Rex Dieter |
78fb1bf |
--
|
|
Rex Dieter |
78fb1bf |
1.9.3
|
|
Rex Dieter |
78fb1bf |
|