Hi, On Tue, Mar 31, 2009 at 12:30 AM, Olivier Dony <[email protected]> wrote: > In this case however, it looks like the repository continued to work, so we > never noticed anything wrong. Everything was ok: creating nodes, uploading > files, adding meta-data, versioning, reading, etc. > The "broken pipe" exceptions are the only noteworthy errors we can see in > the log since the last restart of the jackrabbit-server, in december 2008. > > How is this possible?
Seems weird. A save() call can only succeed if the underlying persistence database has successfully committed the changes. Does your log show any exceptions or problems related to save() calls? > Was the jackrabbit-server caching all the metadata > without ever needing the database? Jackrabbit does cache content, but the content from one session only becomes available to another session after it has been successfully persisted. So unless you only ever used a single session, there should be no way for your data to be kept *only* in a cache unless the underlying database was seriously broken (i.e. it returned success for uncompleted commits). > It's frightening because the MySQL database files for the jackrabbit db have > a modification time dating back in June 2008! The jackrabbit-server has been > restarted since then, and it was still working, so what is happening? If you did restart Jackrabbit since then and you're seeing more recent content, then clearly that content is stored somewhere other than Jackrabbit caches. Are you sure you haven't accidentally changed the Jackrabbit configuration to point to some other database? Has there been any major configuration/deployment changes in the MySQL database you're using? > Now the real question is: what can we do to recover even a part of our lost > data? We do have incremental backups of the MySQL and the filesystem > structure, but it looks like the MySQL database had indeed not been updated > since June 2008, so our backups can't help... First of all make sure that your backups are safe. Whatever you do, do it on a copy of your backups so you can't accidentally destroy things. Note also that the Jackrabbit search indexes will contain quite a lot of information about the repository content. In the extreme case of all data being gone from the persistence database, you should still be able to salvage something from the search index. If you have backups of the search index, make sure those backups are safe. Next, I'd investigate what really went wrong. Why did you start seeing the pipe errors in the first place? What log messages are there for save() operations? Has there been any recent configuration/deployment changes or upgrades to the MySQL or Jackrabbit installations? What was the exact Jackrabbit configuration (repository.xml + workspace.xml files) you used? Once you know what went wrong, you'll have a better picture of where your content could be found. BR, Jukka Zitting
