You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucenenet.apache.org by Itamar Syn-Hershko <it...@code972.com> on 2012/06/18 01:01:15 UTC

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

-        [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);
> +                }
>             }
>         }
>
>
>
>
>

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);
> > +                }
> >             }
> >         }
> >
> >
> >
> >
> >
>