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]

Reply via email to