Hello community, here is the log from the commit of package soprano for openSUSE:Factory checked in at 2013-09-17 15:03:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/soprano (Old) and /work/SRC/openSUSE:Factory/.soprano.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "soprano" Changes: -------- --- /work/SRC/openSUSE:Factory/soprano/soprano-backend-sesame.changes 2013-07-22 17:21:19.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.soprano.new/soprano-backend-sesame.changes 2013-09-17 15:03:26.000000000 +0200 @@ -1,0 +2,8 @@ +Mon Sep 16 14:49:22 UTC 2013 - [email protected] + +- Added 0001-VirtuosoBackend-Automatic-delete-faulty-transaction-log.patch + from upstream 2.9 branch, which resolves the situation when e.g. + soprano log got corrupted, and that prevented nepomuk from opening + the database + +------------------------------------------------------------------- soprano-backend-virtuoso.changes: same change soprano.changes: same change New: ---- 0001-VirtuosoBackend-Automatic-delete-faulty-transaction-log.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ soprano-backend-sesame.spec ++++++ --- /var/tmp/diff_new_pack.Uz4pCf/_old 2013-09-17 15:03:27.000000000 +0200 +++ /var/tmp/diff_new_pack.Uz4pCf/_new 2013-09-17 15:03:27.000000000 +0200 @@ -27,6 +27,9 @@ Url: http://soprano.sourceforge.net/ Source0: http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2 Source100: baselibs.conf +# PATCH-FIX-UPSTREAM 0001-VirtuosoBackend-Automatic-delete-faulty-transaction-log.patch -- resolves the situation when e.g. +# soprano log got corrupted, and that prevented nepomuk from opening the database +Patch0: 0001-VirtuosoBackend-Automatic-delete-faulty-transaction-log.patch BuildRequires: cmake BuildRequires: doxygen BuildRequires: kde4-filesystem @@ -54,6 +57,7 @@ # COMMON2-BEGIN # COMMON2-BEGIN %setup -q -n soprano-%{version} +%patch0 -p1 # COMMON2-END # COMMON2-END soprano-backend-virtuoso.spec: same change ++++++ soprano.spec ++++++ --- /var/tmp/diff_new_pack.Uz4pCf/_old 2013-09-17 15:03:27.000000000 +0200 +++ /var/tmp/diff_new_pack.Uz4pCf/_new 2013-09-17 15:03:27.000000000 +0200 @@ -26,6 +26,9 @@ Url: http://soprano.sourceforge.net/ Source0: http://downloads.sourceforge.net/soprano/soprano-%{version}.tar.bz2 Source100: baselibs.conf +# PATCH-FIX-UPSTREAM 0001-VirtuosoBackend-Automatic-delete-faulty-transaction-log.patch -- resolves the situation when e.g. +# soprano log got corrupted, and that prevented nepomuk from opening the database +Patch0: 0001-VirtuosoBackend-Automatic-delete-faulty-transaction-log.patch BuildRequires: cmake BuildRequires: doxygen BuildRequires: kde4-filesystem @@ -53,6 +56,7 @@ %prep # COMMON2-BEGIN %setup -q -n soprano-%{version} +%patch0 -p1 # COMMON2-END %package backend-redland ++++++ 0001-VirtuosoBackend-Automatic-delete-faulty-transaction-log.patch ++++++ >From 3747314ba490570106b7959d4feb6d16878e7345 Mon Sep 17 00:00:00 2001 From: Vishesh Handa <[email protected]> Date: Sun, 1 Sep 2013 19:36:42 +0530 Subject: [PATCH 1/1] VirtuosoBackend: Automatic delete faulty transaction log if indicated by virtuoso Sometimes the virtuoso transaction log gets corrupted, and the user is told to delete the transaction log. Do that automatiacallly. --- backends/virtuoso/virtuosocontroller.cpp | 24 +++++++++++++++++++++--- backends/virtuoso/virtuosocontroller.h | 4 +++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/backends/virtuoso/virtuosocontroller.cpp b/backends/virtuoso/virtuosocontroller.cpp index e8804b1..928487f 100644 --- a/backends/virtuoso/virtuosocontroller.cpp +++ b/backends/virtuoso/virtuosocontroller.cpp @@ -166,7 +166,7 @@ bool Soprano::VirtuosoController::start( const QString &virtuosoExe, const Backe m_virtuosoProcess.start( virtuosoExe, args, QIODevice::ReadOnly ); m_virtuosoProcess.setReadChannel( QProcess::StandardError ); m_virtuosoProcess.closeReadChannel( QProcess::StandardOutput ); - if ( waitForVirtuosoToInitialize() ) { + if ( waitForVirtuosoToInitialize(virtuosoExe, args) ) { clearError(); m_status = Running; qDebug() << "Virtuoso started:" << m_virtuosoProcess.pid(); @@ -179,7 +179,7 @@ bool Soprano::VirtuosoController::start( const QString &virtuosoExe, const Backe } -bool Soprano::VirtuosoController::waitForVirtuosoToInitialize() +bool Soprano::VirtuosoController::waitForVirtuosoToInitialize(const QString& exe, const QStringList& args) { // FIXME: timeout if ( m_virtuosoProcess.waitForStarted() ) { @@ -187,7 +187,25 @@ bool Soprano::VirtuosoController::waitForVirtuosoToInitialize() while( m_virtuosoProcess.canReadLine() ) { QString line = QString::fromLatin1( m_virtuosoProcess.readLine() ); qDebug() << line; - if ( line.contains( "Server online at" ) ) { + if ( line.contains( "Delete translation log" ) ) { + // Close virtuoso and restart - + disconnect( &m_virtuosoProcess, SIGNAL(finished(int,QProcess::ExitStatus)), + this, SLOT(slotProcessFinished(int,QProcess::ExitStatus)) ); + m_virtuosoProcess.close(); + m_virtuosoProcess.waitForFinished(); + QString storagePath = m_virtuosoProcess.workingDirectory(); + QFile::remove( storagePath + "/soprano-virtuoso.trx" ); + + connect( &m_virtuosoProcess, SIGNAL(finished(int,QProcess::ExitStatus)), + this, SLOT(slotProcessFinished(int,QProcess::ExitStatus)) ); + m_virtuosoProcess.setWorkingDirectory(storagePath); + m_virtuosoProcess.start(exe, args, QIODevice::ReadOnly); + m_virtuosoProcess.setReadChannel( QProcess::StandardError ); + m_virtuosoProcess.closeReadChannel( QProcess::StandardOutput ); + m_virtuosoProcess.waitForStarted(); + m_virtuosoProcess.waitForReadyRead(-1); + } + else if ( line.contains( "Server online at" ) ) { m_virtuosoProcess.closeReadChannel( QProcess::StandardError ); m_status = Running; return true; diff --git a/backends/virtuoso/virtuosocontroller.h b/backends/virtuoso/virtuosocontroller.h index 52db40d..bc1fb20 100644 --- a/backends/virtuoso/virtuosocontroller.h +++ b/backends/virtuoso/virtuosocontroller.h @@ -80,7 +80,9 @@ namespace Soprano { private: void writeConfigFile( const QString& path, const BackendSettings& settings ); - bool waitForVirtuosoToInitialize(); + // The exe and args are passed in the event that virtuoso has a corrupted transaction + // file and needs to be restarted after deleting the transaction file + bool waitForVirtuosoToInitialize(const QString& exe, const QStringList& args); QProcess m_virtuosoProcess; QString m_configFilePath; -- 1.8.4 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
