You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by cc...@apache.org on 2012/06/18 00:21:07 UTC

svn commit: r1351173 - in /incubator/lucene.net/trunk/src/core: ./ Index/ Search/ Store/ Support/

Author: ccurrens
Date: Sun Jun 17 22:21:07 2012
New Revision: 1351173

URL: http://svn.apache.org/viewvc?rev=1351173&view=rev
Log:
[LUCENENET-495] - Replaced several instances of DateTime.Now with DateTime.UtcNow.  Improves performance by ~31%

Modified:
    incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs
    incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs
    incubator/lucene.net/trunk/src/core/Index/Term.cs
    incubator/lucene.net/trunk/src/core/Lucene.Net.csproj
    incubator/lucene.net/trunk/src/core/Search/FilterManager.cs
    incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs
    incubator/lucene.net/trunk/src/core/Store/RAMFile.cs
    incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs
    incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs

Modified: incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs (original)
+++ incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs Sun Jun 17 22:21:07 2012
@@ -67,7 +67,7 @@ namespace Lucene.Net.Index
             }
         }
 
-        [Obsolete("Use Dispose() instead")]
+        //[Obsolete("Use Dispose() instead")]
         public override void Close()
         {
             Dispose();

Modified: incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs (original)
+++ incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs Sun Jun 17 22:21:07 2012
@@ -121,7 +121,7 @@ namespace Lucene.Net.Index
 		/// <summary> counts how often the index has been changed by adding or deleting docs.
 		/// starting with the current time in milliseconds forces to create unique version numbers.
 		/// </summary>
-		private long version = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
+		private long version = (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond);
 		
 		private long generation = 0; // generation of the "segments_N" for the next commit
 		private long lastGeneration = 0; // generation of the "segments_N" file we last successfully read
@@ -303,7 +303,7 @@ namespace Lucene.Net.Index
 				{
 					// in old format the version number may be at the end of the file
 					if (input.FilePointer >= input.Length())
-						version = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
+						version = (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond);
 					// old file format without version number
 					else
 						version = input.ReadLong(); // read version

Modified: incubator/lucene.net/trunk/src/core/Index/Term.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/Term.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Index/Term.cs (original)
+++ incubator/lucene.net/trunk/src/core/Index/Term.cs Sun Jun 17 22:21:07 2012
@@ -141,12 +141,12 @@ namespace Lucene.Net.Index
 				return String.CompareOrdinal(field, other.field);
 		}
 		
-		/// <summary>Resets the field and text of a Term. </summary>
-		internal void  Set(System.String fld, System.String txt)
-		{
-			field = fld;
-			text = txt;
-		}
+        ///// <summary>Resets the field and text of a Term. </summary>
+        //internal void  Set(System.String fld, System.String txt)
+        //{
+        //    field = fld;
+        //    text = txt;
+        //}
 		
 		public override System.String ToString()
 		{

Modified: incubator/lucene.net/trunk/src/core/Lucene.Net.csproj
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Lucene.Net.csproj?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Lucene.Net.csproj (original)
+++ incubator/lucene.net/trunk/src/core/Lucene.Net.csproj Sun Jun 17 22:21:07 2012
@@ -86,7 +86,7 @@
     <WarningLevel>4</WarningLevel>
     <DebugType>full</DebugType>
     <ErrorReport>prompt</ErrorReport>
-    <CodeAnalysisRuleSet>BasicDesignGuidelineRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet>blah.ruleset</CodeAnalysisRuleSet>
     <RunCodeAnalysis>false</RunCodeAnalysis>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

Modified: incubator/lucene.net/trunk/src/core/Search/FilterManager.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Search/FilterManager.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Search/FilterManager.cs (original)
+++ incubator/lucene.net/trunk/src/core/Search/FilterManager.cs Sun Jun 17 22:21:07 2012
@@ -110,7 +110,7 @@ namespace Lucene.Net.Search
 				fi = cache[filter.GetHashCode()];
 				if (fi != null)
 				{
-					fi.timestamp = System.DateTime.Now.Ticks;
+					fi.timestamp = System.DateTime.UtcNow.Ticks;
 					return fi.filter;
 				}
 				cache[filter.GetHashCode()] = new FilterItem(filter);
@@ -130,7 +130,7 @@ namespace Lucene.Net.Search
 			public FilterItem(Filter filter)
 			{
 				this.filter = filter;
-				this.timestamp = System.DateTime.Now.Ticks;
+				this.timestamp = System.DateTime.UtcNow.Ticks;
 			}
 		}
 		

Modified: incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs (original)
+++ incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs Sun Jun 17 22:21:07 2012
@@ -121,7 +121,11 @@ namespace Lucene.Net.Store
 			}
 			if (file == null)
 				throw new System.IO.FileNotFoundException(name);
-			return file.LastModified;
+            
+            // RAMOutputStream.Flush() was changed to use DateTime.UtcNow.
+            // Convert it back to local time before returning (previous behavior)
+		    return new DateTime(file.LastModified*TimeSpan.TicksPerMillisecond, DateTimeKind.Utc).ToLocalTime().Ticks/
+		           TimeSpan.TicksPerMillisecond;
 		}
 		
 		/// <summary>Set the modified time of an existing file to now.</summary>
@@ -137,7 +141,7 @@ namespace Lucene.Net.Store
 			if (file == null)
 				throw new System.IO.FileNotFoundException(name);
 			
-			long ts2, ts1 = System.DateTime.Now.Ticks;
+			long ts2, ts1 = System.DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond;
 			do 
 			{
 				try
@@ -151,7 +155,7 @@ namespace Lucene.Net.Store
 					ThreadClass.Current().Interrupt();
 					throw new System.SystemException(ie.Message, ie);
 				}
-				ts2 = System.DateTime.Now.Ticks;
+                ts2 = System.DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond;
 			}
 			while (ts1 == ts2);
 			

Modified: incubator/lucene.net/trunk/src/core/Store/RAMFile.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMFile.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Store/RAMFile.cs (original)
+++ incubator/lucene.net/trunk/src/core/Store/RAMFile.cs Sun Jun 17 22:21:07 2012
@@ -32,7 +32,7 @@ namespace Lucene.Net.Store
 		internal long sizeInBytes; 
 		
 		// This is publicly modifiable via Directory.touchFile(), so direct access not supported
-		private long lastModified = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
+		private long lastModified = (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond);
 		
 		// File used as buffer, in no RAMDirectory
 		public /*internal*/ RAMFile()

Modified: incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs (original)
+++ incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs Sun Jun 17 22:21:07 2012
@@ -43,7 +43,7 @@ namespace Lucene.Net.Store
 		{
 		}
 		
-		public /*internal*/ RAMOutputStream(RAMFile f)
+		internal RAMOutputStream(RAMFile f)
 		{
 			file = f;
 			
@@ -173,7 +173,7 @@ namespace Lucene.Net.Store
 		
 		public override void  Flush()
 		{
-			file.LastModified = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
+			file.LastModified = (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond);
 			SetFileLength();
 		}
 

Modified: incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
==============================================================================
--- incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs (original)
+++ incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs Sun Jun 17 22:21:07 2012
@@ -37,17 +37,30 @@ namespace Lucene.Net.Support
 
         public static void AddIfNotContains(System.Collections.Hashtable hashtable, System.Object item)
         {
-            if (hashtable.Contains(item) == false)
+            // Added lock around check.  Even though the collection should already have 
+            // a synchronized wrapper around it, it doesn't prevent this test from having
+            // race conditions.  Two threads can (and have in TestIndexReaderReopen) call
+            // hashtable.Contains(item) == false at the same time, then both try to add to
+            // the hashtable, causing an ArgumentException.  locking on the collection
+            // prevents this. -- cc
+            lock (hashtable)
             {
-                hashtable.Add(item, item);
+                if (hashtable.Contains(item) == false)
+                {
+                    hashtable.Add(item, item);
+                }
             }
         }
 
         public static void AddIfNotContains(System.Collections.ArrayList hashtable, System.Object item)
         {
-            if (hashtable.Contains(item) == false)
+            // see AddIfNotContains(Hashtable, object) for information about the lock
+            lock (hashtable)
             {
-                hashtable.Add(item);
+                if (hashtable.Contains(item) == false)
+                {
+                    hashtable.Add(item);
+                }
             }
         }
 



Re: svn commit: r1351173 - in /incubator/lucene.net/trunk/src/core: ./ Index/ Search/ Store/ Support/

Posted by Christopher Currens <cu...@gmail.com>.
It should have been removed and not just commented out.  This should not be
obsolete in this case, because it's inheriting from System.IO.TextReader,
and it's not obsoleted in the BCL.  Any Close() defined in the Lucene.NET
library should be marked as obsolete, though.

On Sun, Jun 17, 2012 at 4:01 PM, Itamar Syn-Hershko <it...@code972.com>wrote:

> -        [Obsolete("Use Dispose() instead")]
> +        //[Obsolete("Use Dispose() instead")]
>        public override void Close()
>        {
>            Dispose();
>
> Is Close obsolete or not?...
>
> On Mon, Jun 18, 2012 at 1:21 AM, <cc...@apache.org> wrote:
>
> > Author: ccurrens
> > Date: Sun Jun 17 22:21:07 2012
> > New Revision: 1351173
> >
> > URL: http://svn.apache.org/viewvc?rev=1351173&view=rev
> > Log:
> > [LUCENENET-495] - Replaced several instances of DateTime.Now with
> > DateTime.UtcNow.  Improves performance by ~31%
> >
> > Modified:
> >    incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs
> >    incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs
> >    incubator/lucene.net/trunk/src/core/Index/Term.cs
> >    incubator/lucene.net/trunk/src/core/Lucene.Net.csproj
> >    incubator/lucene.net/trunk/src/core/Search/FilterManager.cs
> >    incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs
> >    incubator/lucene.net/trunk/src/core/Store/RAMFile.cs
> >    incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs
> >    incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs
> >
> > Modified: incubator/
> > lucene.net/trunk/src/core/Index/ReusableStringReader.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/
> lucene.net/trunk/src/core/Index/ReusableStringReader.cs(original)
> > +++ incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.csSun
> > Jun 17 22:21:07 2012
> > @@ -67,7 +67,7 @@ namespace Lucene.Net.Index
> >             }
> >         }
> >
> > -        [Obsolete("Use Dispose() instead")]
> > +        //[Obsolete("Use Dispose() instead")]
> >         public override void Close()
> >         {
> >             Dispose();
> >
> > Modified: incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs (original)
> > +++ incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs Sun Jun 17
> > 22:21:07 2012
> > @@ -121,7 +121,7 @@ namespace Lucene.Net.Index
> >                /// <summary> counts how often the index has been changed
> > by adding or deleting docs.
> >                /// starting with the current time in milliseconds forces
> > to create unique version numbers.
> >                /// </summary>
> > -               private long version = (DateTime.Now.Ticks /
> > TimeSpan.TicksPerMillisecond);
> > +               private long version = (DateTime.UtcNow.Ticks /
> > TimeSpan.TicksPerMillisecond);
> >
> >                private long generation = 0; // generation of the
> > "segments_N" for the next commit
> >                private long lastGeneration = 0; // generation of the
> > "segments_N" file we last successfully read
> > @@ -303,7 +303,7 @@ namespace Lucene.Net.Index
> >                                {
> >                                        // in old format the version
> number
> > may be at the end of the file
> >                                        if (input.FilePointer >=
> > input.Length())
> > -                                               version =
> > (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
> > +                                               version =
> > (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond);
> >                                        // old file format without version
> > number
> >                                        else
> >                                                version =
> input.ReadLong();
> > // read version
> >
> > Modified: incubator/lucene.net/trunk/src/core/Index/Term.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/Term.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/lucene.net/trunk/src/core/Index/Term.cs (original)
> > +++ incubator/lucene.net/trunk/src/core/Index/Term.cs Sun Jun 17
> 22:21:07
> > 2012
> > @@ -141,12 +141,12 @@ namespace Lucene.Net.Index
> >                                return String.CompareOrdinal(field,
> > other.field);
> >                }
> >
> > -               /// <summary>Resets the field and text of a Term.
> > </summary>
> > -               internal void  Set(System.String fld, System.String txt)
> > -               {
> > -                       field = fld;
> > -                       text = txt;
> > -               }
> > +        ///// <summary>Resets the field and text of a Term. </summary>
> > +        //internal void  Set(System.String fld, System.String txt)
> > +        //{
> > +        //    field = fld;
> > +        //    text = txt;
> > +        //}
> >
> >                public override System.String ToString()
> >                {
> >
> > Modified: incubator/lucene.net/trunk/src/core/Lucene.Net.csproj
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Lucene.Net.csproj?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/lucene.net/trunk/src/core/Lucene.Net.csproj (original)
> > +++ incubator/lucene.net/trunk/src/core/Lucene.Net.csproj Sun Jun 17
> > 22:21:07 2012
> > @@ -86,7 +86,7 @@
> >     <WarningLevel>4</WarningLevel>
> >     <DebugType>full</DebugType>
> >     <ErrorReport>prompt</ErrorReport>
> > -
> >
>  <CodeAnalysisRuleSet>BasicDesignGuidelineRules.ruleset</CodeAnalysisRuleSet>
> > +    <CodeAnalysisRuleSet>blah.ruleset</CodeAnalysisRuleSet>
> >     <RunCodeAnalysis>false</RunCodeAnalysis>
> >   </PropertyGroup>
> >   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ==
> > 'Release|AnyCPU' ">
> >
> > Modified: incubator/lucene.net/trunk/src/core/Search/FilterManager.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Search/FilterManager.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/lucene.net/trunk/src/core/Search/FilterManager.cs(original)
> > +++ incubator/lucene.net/trunk/src/core/Search/FilterManager.cs Sun Jun
> > 17 22:21:07 2012
> > @@ -110,7 +110,7 @@ namespace Lucene.Net.Search
> >                                fi = cache[filter.GetHashCode()];
> >                                if (fi != null)
> >                                {
> > -                                       fi.timestamp =
> > System.DateTime.Now.Ticks;
> > +                                       fi.timestamp =
> > System.DateTime.UtcNow.Ticks;
> >                                        return fi.filter;
> >                                }
> >                                cache[filter.GetHashCode()] = new
> > FilterItem(filter);
> > @@ -130,7 +130,7 @@ namespace Lucene.Net.Search
> >                        public FilterItem(Filter filter)
> >                        {
> >                                this.filter = filter;
> > -                               this.timestamp =
> System.DateTime.Now.Ticks;
> > +                               this.timestamp =
> > System.DateTime.UtcNow.Ticks;
> >                        }
> >                }
> >
> >
> > Modified: incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs (original)
> > +++ incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs Sun Jun 17
> > 22:21:07 2012
> > @@ -121,7 +121,11 @@ namespace Lucene.Net.Store
> >                        }
> >                        if (file == null)
> >                                throw new
> > System.IO.FileNotFoundException(name);
> > -                       return file.LastModified;
> > +
> > +            // RAMOutputStream.Flush() was changed to use
> DateTime.UtcNow.
> > +            // Convert it back to local time before returning (previous
> > behavior)
> > +                   return new
> > DateTime(file.LastModified*TimeSpan.TicksPerMillisecond,
> > DateTimeKind.Utc).ToLocalTime().Ticks/
> > +                          TimeSpan.TicksPerMillisecond;
> >                }
> >
> >                /// <summary>Set the modified time of an existing file to
> > now.</summary>
> > @@ -137,7 +141,7 @@ namespace Lucene.Net.Store
> >                        if (file == null)
> >                                throw new
> > System.IO.FileNotFoundException(name);
> >
> > -                       long ts2, ts1 = System.DateTime.Now.Ticks;
> > +                       long ts2, ts1 = System.DateTime.UtcNow.Ticks /
> > TimeSpan.TicksPerMillisecond;
> >                        do
> >                        {
> >                                try
> > @@ -151,7 +155,7 @@ namespace Lucene.Net.Store
> >                                        ThreadClass.Current().Interrupt();
> >                                        throw new
> > System.SystemException(ie.Message, ie);
> >                                }
> > -                               ts2 = System.DateTime.Now.Ticks;
> > +                ts2 = System.DateTime.UtcNow.Ticks /
> > TimeSpan.TicksPerMillisecond;
> >                        }
> >                        while (ts1 == ts2);
> >
> >
> > Modified: incubator/lucene.net/trunk/src/core/Store/RAMFile.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMFile.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/lucene.net/trunk/src/core/Store/RAMFile.cs (original)
> > +++ incubator/lucene.net/trunk/src/core/Store/RAMFile.cs Sun Jun 17
> > 22:21:07 2012
> > @@ -32,7 +32,7 @@ namespace Lucene.Net.Store
> >                internal long sizeInBytes;
> >
> >                // This is publicly modifiable via Directory.touchFile(),
> > so direct access not supported
> > -               private long lastModified = (DateTime.Now.Ticks /
> > TimeSpan.TicksPerMillisecond);
> > +               private long lastModified = (DateTime.UtcNow.Ticks /
> > TimeSpan.TicksPerMillisecond);
> >
> >                // File used as buffer, in no RAMDirectory
> >                public /*internal*/ RAMFile()
> >
> > Modified: incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/
> lucene.net/trunk/src/core/Store/RAMOutputStream.cs(original)
> > +++ incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs Sun Jun
> > 17 22:21:07 2012
> > @@ -43,7 +43,7 @@ namespace Lucene.Net.Store
> >                {
> >                }
> >
> > -               public /*internal*/ RAMOutputStream(RAMFile f)
> > +               internal RAMOutputStream(RAMFile f)
> >                {
> >                        file = f;
> >
> > @@ -173,7 +173,7 @@ namespace Lucene.Net.Store
> >
> >                public override void  Flush()
> >                {
> > -                       file.LastModified = (DateTime.Now.Ticks /
> > TimeSpan.TicksPerMillisecond);
> > +                       file.LastModified = (DateTime.UtcNow.Ticks /
> > TimeSpan.TicksPerMillisecond);
> >                        SetFileLength();
> >                }
> >
> >
> > Modified: incubator/
> lucene.net/trunk/src/core/Support/CollectionsHelper.cs
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
> >
> >
> ==============================================================================
> > --- incubator/
> lucene.net/trunk/src/core/Support/CollectionsHelper.cs(original)
> > +++ incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs Sun
> > Jun 17 22:21:07 2012
> > @@ -37,17 +37,30 @@ namespace Lucene.Net.Support
> >
> >         public static void AddIfNotContains(System.Collections.Hashtable
> > hashtable, System.Object item)
> >         {
> > -            if (hashtable.Contains(item) == false)
> > +            // Added lock around check.  Even though the collection
> > should already have
> > +            // a synchronized wrapper around it, it doesn't prevent this
> > test from having
> > +            // race conditions.  Two threads can (and have in
> > TestIndexReaderReopen) call
> > +            // hashtable.Contains(item) == false at the same time, then
> > both try to add to
> > +            // the hashtable, causing an ArgumentException.  locking on
> > the collection
> > +            // prevents this. -- cc
> > +            lock (hashtable)
> >             {
> > -                hashtable.Add(item, item);
> > +                if (hashtable.Contains(item) == false)
> > +                {
> > +                    hashtable.Add(item, item);
> > +                }
> >             }
> >         }
> >
> >         public static void AddIfNotContains(System.Collections.ArrayList
> > hashtable, System.Object item)
> >         {
> > -            if (hashtable.Contains(item) == false)
> > +            // see AddIfNotContains(Hashtable, object) for information
> > about the lock
> > +            lock (hashtable)
> >             {
> > -                hashtable.Add(item);
> > +                if (hashtable.Contains(item) == false)
> > +                {
> > +                    hashtable.Add(item);
> > +                }
> >             }
> >         }
> >
> >
> >
> >
> >
>

Re: svn commit: r1351173 - in /incubator/lucene.net/trunk/src/core: ./ Index/ Search/ Store/ Support/

Posted by Itamar Syn-Hershko <it...@code972.com>.
-        [Obsolete("Use Dispose() instead")]
+        //[Obsolete("Use Dispose() instead")]
        public override void Close()
        {
            Dispose();

Is Close obsolete or not?...

On Mon, Jun 18, 2012 at 1:21 AM, <cc...@apache.org> wrote:

> Author: ccurrens
> Date: Sun Jun 17 22:21:07 2012
> New Revision: 1351173
>
> URL: http://svn.apache.org/viewvc?rev=1351173&view=rev
> Log:
> [LUCENENET-495] - Replaced several instances of DateTime.Now with
> DateTime.UtcNow.  Improves performance by ~31%
>
> Modified:
>    incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs
>    incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs
>    incubator/lucene.net/trunk/src/core/Index/Term.cs
>    incubator/lucene.net/trunk/src/core/Lucene.Net.csproj
>    incubator/lucene.net/trunk/src/core/Search/FilterManager.cs
>    incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs
>    incubator/lucene.net/trunk/src/core/Store/RAMFile.cs
>    incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs
>    incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs
>
> Modified: incubator/
> lucene.net/trunk/src/core/Index/ReusableStringReader.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs(original)
> +++ incubator/lucene.net/trunk/src/core/Index/ReusableStringReader.cs Sun
> Jun 17 22:21:07 2012
> @@ -67,7 +67,7 @@ namespace Lucene.Net.Index
>             }
>         }
>
> -        [Obsolete("Use Dispose() instead")]
> +        //[Obsolete("Use Dispose() instead")]
>         public override void Close()
>         {
>             Dispose();
>
> Modified: incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs (original)
> +++ incubator/lucene.net/trunk/src/core/Index/SegmentInfos.cs Sun Jun 17
> 22:21:07 2012
> @@ -121,7 +121,7 @@ namespace Lucene.Net.Index
>                /// <summary> counts how often the index has been changed
> by adding or deleting docs.
>                /// starting with the current time in milliseconds forces
> to create unique version numbers.
>                /// </summary>
> -               private long version = (DateTime.Now.Ticks /
> TimeSpan.TicksPerMillisecond);
> +               private long version = (DateTime.UtcNow.Ticks /
> TimeSpan.TicksPerMillisecond);
>
>                private long generation = 0; // generation of the
> "segments_N" for the next commit
>                private long lastGeneration = 0; // generation of the
> "segments_N" file we last successfully read
> @@ -303,7 +303,7 @@ namespace Lucene.Net.Index
>                                {
>                                        // in old format the version number
> may be at the end of the file
>                                        if (input.FilePointer >=
> input.Length())
> -                                               version =
> (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond);
> +                                               version =
> (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond);
>                                        // old file format without version
> number
>                                        else
>                                                version = input.ReadLong();
> // read version
>
> Modified: incubator/lucene.net/trunk/src/core/Index/Term.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Index/Term.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Index/Term.cs (original)
> +++ incubator/lucene.net/trunk/src/core/Index/Term.cs Sun Jun 17 22:21:07
> 2012
> @@ -141,12 +141,12 @@ namespace Lucene.Net.Index
>                                return String.CompareOrdinal(field,
> other.field);
>                }
>
> -               /// <summary>Resets the field and text of a Term.
> </summary>
> -               internal void  Set(System.String fld, System.String txt)
> -               {
> -                       field = fld;
> -                       text = txt;
> -               }
> +        ///// <summary>Resets the field and text of a Term. </summary>
> +        //internal void  Set(System.String fld, System.String txt)
> +        //{
> +        //    field = fld;
> +        //    text = txt;
> +        //}
>
>                public override System.String ToString()
>                {
>
> Modified: incubator/lucene.net/trunk/src/core/Lucene.Net.csproj
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Lucene.Net.csproj?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Lucene.Net.csproj (original)
> +++ incubator/lucene.net/trunk/src/core/Lucene.Net.csproj Sun Jun 17
> 22:21:07 2012
> @@ -86,7 +86,7 @@
>     <WarningLevel>4</WarningLevel>
>     <DebugType>full</DebugType>
>     <ErrorReport>prompt</ErrorReport>
> -
>  <CodeAnalysisRuleSet>BasicDesignGuidelineRules.ruleset</CodeAnalysisRuleSet>
> +    <CodeAnalysisRuleSet>blah.ruleset</CodeAnalysisRuleSet>
>     <RunCodeAnalysis>false</RunCodeAnalysis>
>   </PropertyGroup>
>   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ==
> 'Release|AnyCPU' ">
>
> Modified: incubator/lucene.net/trunk/src/core/Search/FilterManager.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Search/FilterManager.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Search/FilterManager.cs (original)
> +++ incubator/lucene.net/trunk/src/core/Search/FilterManager.cs Sun Jun
> 17 22:21:07 2012
> @@ -110,7 +110,7 @@ namespace Lucene.Net.Search
>                                fi = cache[filter.GetHashCode()];
>                                if (fi != null)
>                                {
> -                                       fi.timestamp =
> System.DateTime.Now.Ticks;
> +                                       fi.timestamp =
> System.DateTime.UtcNow.Ticks;
>                                        return fi.filter;
>                                }
>                                cache[filter.GetHashCode()] = new
> FilterItem(filter);
> @@ -130,7 +130,7 @@ namespace Lucene.Net.Search
>                        public FilterItem(Filter filter)
>                        {
>                                this.filter = filter;
> -                               this.timestamp = System.DateTime.Now.Ticks;
> +                               this.timestamp =
> System.DateTime.UtcNow.Ticks;
>                        }
>                }
>
>
> Modified: incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs (original)
> +++ incubator/lucene.net/trunk/src/core/Store/RAMDirectory.cs Sun Jun 17
> 22:21:07 2012
> @@ -121,7 +121,11 @@ namespace Lucene.Net.Store
>                        }
>                        if (file == null)
>                                throw new
> System.IO.FileNotFoundException(name);
> -                       return file.LastModified;
> +
> +            // RAMOutputStream.Flush() was changed to use DateTime.UtcNow.
> +            // Convert it back to local time before returning (previous
> behavior)
> +                   return new
> DateTime(file.LastModified*TimeSpan.TicksPerMillisecond,
> DateTimeKind.Utc).ToLocalTime().Ticks/
> +                          TimeSpan.TicksPerMillisecond;
>                }
>
>                /// <summary>Set the modified time of an existing file to
> now.</summary>
> @@ -137,7 +141,7 @@ namespace Lucene.Net.Store
>                        if (file == null)
>                                throw new
> System.IO.FileNotFoundException(name);
>
> -                       long ts2, ts1 = System.DateTime.Now.Ticks;
> +                       long ts2, ts1 = System.DateTime.UtcNow.Ticks /
> TimeSpan.TicksPerMillisecond;
>                        do
>                        {
>                                try
> @@ -151,7 +155,7 @@ namespace Lucene.Net.Store
>                                        ThreadClass.Current().Interrupt();
>                                        throw new
> System.SystemException(ie.Message, ie);
>                                }
> -                               ts2 = System.DateTime.Now.Ticks;
> +                ts2 = System.DateTime.UtcNow.Ticks /
> TimeSpan.TicksPerMillisecond;
>                        }
>                        while (ts1 == ts2);
>
>
> Modified: incubator/lucene.net/trunk/src/core/Store/RAMFile.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMFile.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Store/RAMFile.cs (original)
> +++ incubator/lucene.net/trunk/src/core/Store/RAMFile.cs Sun Jun 17
> 22:21:07 2012
> @@ -32,7 +32,7 @@ namespace Lucene.Net.Store
>                internal long sizeInBytes;
>
>                // This is publicly modifiable via Directory.touchFile(),
> so direct access not supported
> -               private long lastModified = (DateTime.Now.Ticks /
> TimeSpan.TicksPerMillisecond);
> +               private long lastModified = (DateTime.UtcNow.Ticks /
> TimeSpan.TicksPerMillisecond);
>
>                // File used as buffer, in no RAMDirectory
>                public /*internal*/ RAMFile()
>
> Modified: incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs(original)
> +++ incubator/lucene.net/trunk/src/core/Store/RAMOutputStream.cs Sun Jun
> 17 22:21:07 2012
> @@ -43,7 +43,7 @@ namespace Lucene.Net.Store
>                {
>                }
>
> -               public /*internal*/ RAMOutputStream(RAMFile f)
> +               internal RAMOutputStream(RAMFile f)
>                {
>                        file = f;
>
> @@ -173,7 +173,7 @@ namespace Lucene.Net.Store
>
>                public override void  Flush()
>                {
> -                       file.LastModified = (DateTime.Now.Ticks /
> TimeSpan.TicksPerMillisecond);
> +                       file.LastModified = (DateTime.UtcNow.Ticks /
> TimeSpan.TicksPerMillisecond);
>                        SetFileLength();
>                }
>
>
> Modified: incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs
> URL:
> http://svn.apache.org/viewvc/incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs?rev=1351173&r1=1351172&r2=1351173&view=diff
>
> ==============================================================================
> --- incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs(original)
> +++ incubator/lucene.net/trunk/src/core/Support/CollectionsHelper.cs Sun
> Jun 17 22:21:07 2012
> @@ -37,17 +37,30 @@ namespace Lucene.Net.Support
>
>         public static void AddIfNotContains(System.Collections.Hashtable
> hashtable, System.Object item)
>         {
> -            if (hashtable.Contains(item) == false)
> +            // Added lock around check.  Even though the collection
> should already have
> +            // a synchronized wrapper around it, it doesn't prevent this
> test from having
> +            // race conditions.  Two threads can (and have in
> TestIndexReaderReopen) call
> +            // hashtable.Contains(item) == false at the same time, then
> both try to add to
> +            // the hashtable, causing an ArgumentException.  locking on
> the collection
> +            // prevents this. -- cc
> +            lock (hashtable)
>             {
> -                hashtable.Add(item, item);
> +                if (hashtable.Contains(item) == false)
> +                {
> +                    hashtable.Add(item, item);
> +                }
>             }
>         }
>
>         public static void AddIfNotContains(System.Collections.ArrayList
> hashtable, System.Object item)
>         {
> -            if (hashtable.Contains(item) == false)
> +            // see AddIfNotContains(Hashtable, object) for information
> about the lock
> +            lock (hashtable)
>             {
> -                hashtable.Add(item);
> +                if (hashtable.Contains(item) == false)
> +                {
> +                    hashtable.Add(item);
> +                }
>             }
>         }
>
>
>
>
>