Hello community, here is the log from the commit of package beagle checked in at Thu Apr 20 17:38:15 CEST 2006. -------- --- GNOME/beagle/beagle.changes 2006-04-18 18:39:50.000000000 +0200 +++ STABLE/beagle/beagle.changes 2006-04-20 00:19:13.000000000 +0200 @@ -1,0 +2,12 @@ +Wed Apr 19 23:13:18 CEST 2006 - joeshaw@suse.de + +- Add a patch to check for various places where our filesystem + could race and we would throw harmless but annoying exceptions. + (Noticed in bnc #139622) +- Add a patch to back out an upstream change to work around a + Mono bug, because that change was buggy and is no longer needed + since we're including a newer Mono than 1.1.13.4. (bnc #139622, + will also fix bgo #335178 and #338165 when the requirement + changes upstream) + +------------------------------------------------------------------- New: ---- beagle-filesystem-races.patch beagle-thread-static-lucene.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ beagle.spec ++++++ --- /var/tmp/diff_new_pack.H3OBrN/_old 2006-04-20 17:35:07.000000000 +0200 +++ /var/tmp/diff_new_pack.H3OBrN/_new 2006-04-20 17:35:07.000000000 +0200 @@ -18,7 +18,7 @@ Group: Productivity/Other Autoreqprov: on Version: 0.2.3 -Release: 19 +Release: 23 Summary: Desktop Search Application URL: http://www.gnome.org/projects/beagle/ Source: %{name}-%{version}.tar.gz @@ -40,9 +40,11 @@ Patch13: beagle-safe-process-launch.patch Patch14: beagle-ole-filter-no-mmap.patch Patch15: beagle-hu.patch +Patch16: beagle-thread-static-lucene.patch +Patch17: beagle-filesystem-races.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Prereq: /usr/sbin/groupadd /usr/sbin/useradd -Requires: mono-core >= 1.1.13 +Requires: mono-core >= 1.1.13.5 Requires: mono-web mono-data-sqlite Requires: wv glib-sharp2 gtk-sharp2 Requires: gmime >= 2.2.1 gsf-sharp >= 0.6 @@ -293,6 +295,8 @@ %patch13 %patch14 %patch15 +%patch16 +%patch17 %build rm po/no.* @@ -449,6 +453,15 @@ %{prefix}/%_lib/pkgconfig/*.pc %changelog -n beagle +* Wed Apr 19 2006 - joeshaw@suse.de +- Add a patch to check for various places where our filesystem + could race and we would throw harmless but annoying exceptions. + (Noticed in bnc #139622) +- Add a patch to back out an upstream change to work around a + Mono bug, because that change was buggy and is no longer needed + since we're including a newer Mono than 1.1.13.4. (bnc #139622, + will also fix bgo #335178 and #338165 when the requirement + changes upstream) * Tue Apr 18 2006 - sbrabec@suse.cz - Fixed Hungarian translation (#167345). * Fri Apr 14 2006 - joeshaw@suse.de ++++++ beagle-filesystem-races.patch ++++++ ? beagle-big-changes.patch ? beagle-camel-64bit-fix.patch ? beagle-cron-daily.patch ? beagle-cwd-fixes-2.patch ? beagle-cwd-fixes-3.patch ? beagle-cwd-fixes.patch ? beagle-cwd-fixes.patch.2 ? beagle-filesystem-races.patch ? beagle-filter-bottleneck.patch ? beagle-filter-wip-2.patch ? beagle-filter-wip-3.patch ? beagle-filter-wip.patch ? beagle-implicit-fix.patch ? beagle-in-progress.patch ? beagle-mono-1.1.12.patch ? beagle-more-ui-deps.patch ? beagle-no-dbus-wip-3.patch ? beagle-no-dbus-wip.patch ? beagle-python-no-strict-aliasing.patch ? beagle-safe-process-launch.patch ? beagle-scheduler-overload.patch ? beagle-thread-static-lucene.patch ? beagle-widget-space.patch ? beagle-x-connection-clean-shutdown.patch ? beagle.c ? beagled-print-messages.patch ? gsf-sharp-0.5-1.i586.rpm ? gtk-doc.m4 ? libbeagle.tar.gz ? root-foo ? test-client.cs ? test-client.exe.mdb ? Best/best.patch ? Best/request.xml ? ImLogViewer/beagle-imlogviewer.in.new ? Util/Base64Stream.cs ? beagled/.xim ? beagled/beagle-empty-bool-query.patch ? beagled/beagled-server-spew.patch ? beagled/beagled.gdb ? beagled/beagled.strace ? beagled/beagled.val ? beagled/beagled.valgrind ? beagled/bindata.out ? beagled/html.out ? beagled/index-helper-command-line ? beagled/mdb-beagled ? beagled/mono-heap-prof.13389 ? beagled/outfile.beagled ? beagled/profile.out ? beagled/profile2.out ? beagled/revert.patch ? beagled/test ? beagled/test.E ? beagled/test.c ? beagled/CalendarQueryable/CalendarQueryable.cs.new ? beagled/EvolutionMailDriver/EvolutionMailIndexableGenerator.cs.no-gconf ? beagled/webserver/Makefile ? beagled/webserver/Makefile.in ? libbeagle/docs/reference/beagle-decl-list.txt ? libbeagle/docs/reference/beagle-decl.txt ? tools/beagle ? tools/external-filters.xml ? tray/Makefile ? tray/Makefile.in ? tray/beagle-tray ? tray/TrayIcon/Makefile ? tray/TrayIcon/Makefile.in ? tray/TrayIcon/TrayIcon.dll ? tray/TrayIcon/libtrayicon/Makefile ? tray/TrayIcon/libtrayicon/Makefile.in ? wrappers/pybeagle-example.py Index: beagled/FileSystemQueryable/FileSystemQueryable.cs =================================================================== RCS file: /cvs/gnome/beagle/beagled/FileSystemQueryable/FileSystemQueryable.cs,v retrieving revision 1.103 diff -u -p -u -r1.103 FileSystemQueryable.cs --- beagled/FileSystemQueryable/FileSystemQueryable.cs 3 Apr 2006 18:49:55 -0000 1.103 +++ beagled/FileSystemQueryable/FileSystemQueryable.cs 19 Apr 2006 21:02:34 -0000 @@ -208,10 +208,15 @@ namespace Beagle.Daemon.FileSystemQuerya DirectoryModel parent) { Indexable indexable; - indexable = new Indexable (IndexableType.Add, GuidFu.ToUri (id)); - indexable.MimeType = "inode/directory"; - indexable.NoContent = true; - indexable.Timestamp = Directory.GetLastWriteTimeUtc (path); + try { + indexable = new Indexable (IndexableType.Add, GuidFu.ToUri (id)); + indexable.MimeType = "inode/directory"; + indexable.NoContent = true; + indexable.Timestamp = Directory.GetLastWriteTimeUtc (path); + } catch (IOException) { + // Looks like the directory was deleted. + return null; + } string name; if (parent == null) @@ -236,11 +241,17 @@ namespace Beagle.Daemon.FileSystemQuerya bool crawl_mode) { Indexable indexable; - indexable = new Indexable (IndexableType.Add, GuidFu.ToUri (id)); - indexable.Timestamp = File.GetLastWriteTimeUtc (path); - indexable.ContentUri = UriFu.PathToFileUri (path); - indexable.Crawled = crawl_mode; - indexable.Filtering = Beagle.IndexableFiltering.Always; + + try { + indexable = new Indexable (IndexableType.Add, GuidFu.ToUri (id)); + indexable.Timestamp = File.GetLastWriteTimeUtc (path); + indexable.ContentUri = UriFu.PathToFileUri (path); + indexable.Crawled = crawl_mode; + indexable.Filtering = Beagle.IndexableFiltering.Always; + } catch (IOException) { + // Looks like the file was deleted. + return null; + } AddStandardPropertiesToIndexable (indexable, Path.GetFileName (path), parent, true); @@ -539,17 +550,19 @@ namespace Beagle.Daemon.FileSystemQuerya Indexable indexable; indexable = DirectoryToIndexable (path, id, parent); - indexable.LocalState ["Name"] = name; - indexable.LocalState ["LastCrawl"] = last_crawl; - indexable.LocalState ["IsWalkable"] = is_walkable; + if (indexable != null) { + indexable.LocalState ["Name"] = name; + indexable.LocalState ["LastCrawl"] = last_crawl; + indexable.LocalState ["IsWalkable"] = is_walkable; - Scheduler.Task task; - task = NewAddTask (indexable); - task.Priority = Scheduler.Priority.Delayed; - ThisScheduler.Add (task); + Scheduler.Task task; + task = NewAddTask (indexable); + task.Priority = Scheduler.Priority.Delayed; + ThisScheduler.Add (task); + } } - private void RegisterDirectory (string name, DirectoryModel parent, FileAttributes attr) + private bool RegisterDirectory (string name, DirectoryModel parent, FileAttributes attr) { string path; path = (parent == null) ? name : Path.Combine (parent.FullName, name); @@ -557,13 +570,22 @@ namespace Beagle.Daemon.FileSystemQuerya if (Debug) Logger.Log.Debug ("Registered directory '{0}' ({1})", path, attr.UniqueId); + DateTime mtime; + + try { + mtime = Directory.GetLastWriteTimeUtc (path); + } catch (IOException) { + Log.Debug ("Directory '{0}' ({1}) appears to have gone away", path, attr.UniqueId); + return false; + } + DirectoryModel dir; if (parent == null) dir = DirectoryModel.NewRoot (big_lock, path, attr); else dir = parent.AddChild (name, attr); - if (Directory.GetLastWriteTimeUtc (path) > attr.LastWriteTime) { + if (mtime > attr.LastWriteTime) { dir.State = DirectoryState.Dirty; if (Debug) Logger.Log.Debug ("'{0}' is dirty", path); @@ -595,6 +617,8 @@ namespace Beagle.Daemon.FileSystemQuerya // Make sure that our file crawling task is active, // since presumably we now have something new to crawl. ActivateFileCrawling (); + + return true; } private void ForgetDirectoryRecursively (DirectoryModel dir) @@ -1034,10 +1058,12 @@ namespace Beagle.Daemon.FileSystemQuerya Indexable indexable; indexable = FileToIndexable (path, unique_id, dir, false); - Scheduler.Task task; - task = NewAddTask (indexable); - task.Priority = Scheduler.Priority.Immediate; - ThisScheduler.Add (task); + if (indexable != null) { + Scheduler.Task task; + task = NewAddTask (indexable); + task.Priority = Scheduler.Priority.Immediate; + ThisScheduler.Add (task); + } } public void RemoveFile (DirectoryModel dir, string name) @@ -1048,7 +1074,7 @@ namespace Beagle.Daemon.FileSystemQuerya Guid unique_id; unique_id = NameAndParentToId (name, dir); if (unique_id == Guid.Empty) { - Logger.Log.Warn ("Could resolve unique id of '{0}' in '{1}' for removal, it is probably already gone", + Logger.Log.Info ("Could not resolve unique id of '{0}' in '{1}' for removal, it is probably already gone", name, dir.FullName); return; } @@ -1230,7 +1256,8 @@ namespace Beagle.Daemon.FileSystemQuerya string name; name = (string) indexable.LocalState ["Name"]; - RegisterDirectory (name, parent, attr); + if (! RegisterDirectory (name, parent, attr)) + return; } FileAttributesStore.Write (attr); ++++++ beagle-thread-static-lucene.patch ++++++ Index: beagled/Lucene.Net/Index/SegmentReader.cs =================================================================== RCS file: /cvs/gnome/beagle/beagled/Lucene.Net/Index/SegmentReader.cs,v retrieving revision 1.4 diff -u -p -r1.4 SegmentReader.cs --- beagled/Lucene.Net/Index/SegmentReader.cs 15 Mar 2006 19:12:18 -0000 1.4 +++ beagled/Lucene.Net/Index/SegmentReader.cs 19 Apr 2006 22:12:54 -0000 @@ -26,7 +26,7 @@ namespace Lucene.Net.Index /// <summary> FIXME: Describe class <code>SegmentReader</code> here. /// /// </summary> - /// <version> $Id: SegmentReader.cs,v 1.4 2006/03/15 19:12:18 joeshaw Exp $ + /// <version> $Id: SegmentReader.cs,v 1.5 2006/04/03 17:12:17 joeshaw Exp $ /// </version> class SegmentReader : IndexReader { @@ -36,8 +36,8 @@ namespace Lucene.Net.Index private FieldsReader fieldsReader; internal TermInfosReader tis; - internal TermVectorsReader termVectorsReaderOrig = null; - private TermVectorsReader tvReader; + internal TermVectorsReader termVectorsReaderOrig = null; + internal System.LocalDataStoreSlot termVectorsLocal = System.Threading.Thread.AllocateDataSlot(); internal BitVector deletedDocs = null; private bool deletedDocsDirty = false; @@ -171,7 +171,7 @@ namespace Lucene.Net.Index termVectorsReaderOrig = new TermVectorsReader(cfsDir, segment, fieldInfos); } } - + protected internal override void DoCommit() { if (deletedDocsDirty) @@ -596,9 +596,11 @@ namespace Lucene.Net.Index /// </returns> private TermVectorsReader GetTermVectorsReader() { + TermVectorsReader tvReader = (TermVectorsReader) System.Threading.Thread.GetData(termVectorsLocal); if (tvReader == null) { tvReader = (TermVectorsReader) termVectorsReaderOrig.Clone(); + System.Threading.Thread.SetData(termVectorsLocal, tvReader); } return tvReader; } Index: beagled/Lucene.Net/Index/TermInfosReader.cs =================================================================== RCS file: /cvs/gnome/beagle/beagled/Lucene.Net/Index/TermInfosReader.cs,v retrieving revision 1.5 diff -u -p -r1.5 TermInfosReader.cs --- beagled/Lucene.Net/Index/TermInfosReader.cs 15 Mar 2006 19:12:19 -0000 1.5 +++ beagled/Lucene.Net/Index/TermInfosReader.cs 19 Apr 2006 22:12:54 -0000 @@ -28,8 +28,8 @@ namespace Lucene.Net.Index private Directory directory; private System.String segment; private FieldInfos fieldInfos; - - private SegmentTermEnum termEnum; + + private System.LocalDataStoreSlot enumerators = System.Threading.Thread.AllocateDataSlot(); private SegmentTermEnum origEnum; private long size; @@ -50,7 +50,7 @@ namespace Lucene.Net.Index indexEnum = new SegmentTermEnum(directory.OpenInput(segment + ".tii"), fieldInfos, true); } - + public int GetSkipInterval() { return origEnum.skipInterval; @@ -72,9 +72,11 @@ namespace Lucene.Net.Index private SegmentTermEnum GetEnum() { + SegmentTermEnum termEnum = (SegmentTermEnum) System.Threading.Thread.GetData(enumerators); if (termEnum == null) { termEnum = Terms(); + System.Threading.Thread.SetData(enumerators, termEnum); } return termEnum; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...
participants (1)
-
root@suse.de