Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.1:Update
kdebase4-runtime
cc5cf57c-kderuntime-nepomuk-47branch-robust-res...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File cc5cf57c-kderuntime-nepomuk-47branch-robust-restart.diff of Package kdebase4-runtime
commit cc5cf57c7e5be45fbf757414994290dd58ea1231 Author: Sebastian Trueg <trueg@kde.org> Date: Tue Oct 25 10:27:59 2011 +0200 Re-create the repository in case of an un-scheduled shutdown of the DB. This is a hacky way of ensuring that Nepomuk even works after a crash or a third-party kill of the Virtuoso instance. "Hacky" because it does not care about clients which will get some query errors during the restart. BUG: 263730 FIXED-IN: 4.7.3 diff --git a/nepomuk/services/storage/repository.cpp b/nepomuk/services/storage/repository.cpp index b9b2051..784cbe9 100644 --- a/nepomuk/services/storage/repository.cpp +++ b/nepomuk/services/storage/repository.cpp @@ -89,9 +89,13 @@ void Nepomuk::Repository::close() delete m_dataManagementAdaptor; m_dataManagementAdaptor = 0; + setParentModel(0); delete m_dataManagementModel; m_dataManagementModel = 0; + delete m_classAndPropertyTree; + m_classAndPropertyTree = 0; + delete m_inferencer; m_inferencer = 0; @@ -188,6 +192,10 @@ void Nepomuk::Repository::open() return; } +#if SOPRANO_IS_VERSION(2, 7, 3) + connect(m_model, SIGNAL(virtuosoStopped(bool)), this, SLOT(slotVirtuosoStopped(bool))); +#endif + kDebug() << "Successfully created new model for repository" << name(); // Fire up the graph maintainer on the pure data model. @@ -211,12 +219,12 @@ void Nepomuk::Repository::open() // create a SignalCacheModel to make sure no client slows us down by listening to the stupid signals // ================================= Soprano::Util::SignalCacheModel* scm = new Soprano::Util::SignalCacheModel( m_removableStorageModel ); - scm->setParent(this); // memory management + scm->setParent(m_removableStorageModel); // memory management // Create the NRLModel which is required by the DMM below // ================================= m_nrlModel = new Soprano::NRLModel(scm); - m_nrlModel->setParent(this); // memory management + m_nrlModel->setParent(scm); // memory management // create the DataManagementModel on top of everything // ================================= @@ -423,4 +431,15 @@ void Nepomuk::Repository::updateInference() m_inferencer->updateAllResources(); } +void Nepomuk::Repository::slotVirtuosoStopped(bool normalExit) +{ + if(!normalExit) { + kDebug() << "Virtuoso was killed or crashed. Restarting the repository."; + // restart the dumb way for now + // Ideally we would inform the other services so they can be restarted or something. + close(); + open(); + } +} + #include "repository.moc" diff --git a/nepomuk/services/storage/repository.h b/nepomuk/services/storage/repository.h index a52f92f..c573b67 100644 --- a/nepomuk/services/storage/repository.h +++ b/nepomuk/services/storage/repository.h @@ -99,6 +99,7 @@ namespace Nepomuk { private Q_SLOTS: void copyFinished( KJob* job ); + void slotVirtuosoStopped( bool normalExit ); private: Soprano::BackendSettings readVirtuosoSettings() const;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor