You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2017/03/08 18:24:01 UTC
[25/26] lucenenet git commit: Lucene.Net.Core.Codecs.Lucene42: Fixed
subtle performance and other issues that may result in random test failures.
Lucene.Net.Core.Codecs.Lucene42: Fixed subtle performance and other issues that may result in random test failures.
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/046b8128
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/046b8128
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/046b8128
Branch: refs/heads/api-work
Commit: 046b812853b85fcfaf29347156a630718b053822
Parents: cc71ddb
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Thu Mar 9 00:59:41 2017 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Thu Mar 9 01:11:08 2017 +0700
----------------------------------------------------------------------
.../Lucene42/Lucene42DocValuesProducer.cs | 31 ++++++++++----------
.../Codecs/Lucene42/Lucene42FieldInfosReader.cs | 11 ++++---
2 files changed, 23 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/046b8128/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42DocValuesProducer.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42DocValuesProducer.cs b/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42DocValuesProducer.cs
index 7205c24..dde3fdf 100644
--- a/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42DocValuesProducer.cs
+++ b/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42DocValuesProducer.cs
@@ -170,7 +170,9 @@ namespace Lucene.Net.Codecs.Lucene42
int fieldType = meta.ReadByte();
if (fieldType == NUMBER)
{
- var entry = new NumericEntry {Offset = meta.ReadInt64(), Format = (sbyte)meta.ReadByte()};
+ var entry = new NumericEntry();
+ entry.Offset = meta.ReadInt64();
+ entry.Format = (sbyte)meta.ReadByte();
switch (entry.Format)
{
case DELTA_COMPRESSED:
@@ -222,8 +224,7 @@ namespace Lucene.Net.Codecs.Lucene42
lock (this)
{
NumericDocValues instance;
- numericInstances.TryGetValue(field.Number, out instance);
- if (instance == null)
+ if (!numericInstances.TryGetValue(field.Number, out instance) || instance == null)
{
instance = LoadNumeric(field);
numericInstances[field.Number] = instance;
@@ -289,7 +290,7 @@ namespace Lucene.Net.Codecs.Lucene42
return new NumericDocValuesAnonymousInnerClassHelper3(min, mult, quotientReader);
default:
- throw new InvalidOperationException();
+ throw new InvalidOperationException(); // LUCENENET TODO: This was AssertionError in Lucene - does this need a fix?
}
}
@@ -349,7 +350,7 @@ namespace Lucene.Net.Codecs.Lucene42
lock (this)
{
BinaryDocValues instance;
- if (!binaryInstances.TryGetValue(field.Number, out instance))
+ if (!binaryInstances.TryGetValue(field.Number, out instance) || instance == null)
{
instance = LoadBinary(field);
binaryInstances[field.Number] = instance;
@@ -421,7 +422,7 @@ namespace Lucene.Net.Codecs.Lucene42
FST<long?> instance;
lock (this)
{
- if (!fstInstances.TryGetValue(field.Number, out instance))
+ if (!fstInstances.TryGetValue(field.Number, out instance) || instance == null)
{
data.Seek(entry.Offset);
instance = new FST<long?>(data, PositiveInt32Outputs.Singleton);
@@ -484,7 +485,7 @@ namespace Lucene.Net.Codecs.Lucene42
}
catch (System.IO.IOException bogus)
{
- throw bogus;
+ throw new Exception(bogus.ToString(), bogus);
}
}
@@ -499,16 +500,16 @@ namespace Lucene.Net.Codecs.Lucene42
}
else if (o.Input.Equals(key))
{
- return (int)o.Output;
+ return (int)o.Output.GetValueOrDefault();
}
else
{
- return (int)-o.Output - 1;
+ return (int)-o.Output.GetValueOrDefault() - 1;
}
}
catch (System.IO.IOException bogus)
{
- throw bogus;
+ throw new Exception(bogus.ToString(), bogus);
}
}
@@ -536,10 +537,10 @@ namespace Lucene.Net.Codecs.Lucene42
FST<long?> instance;
lock (this)
{
- if (!fstInstances.TryGetValue(field.Number, out instance))
+ if (!fstInstances.TryGetValue(field.Number, out instance) || instance == null)
{
data.Seek(entry.Offset);
- instance = new FST<long?>((DataInput)data, Lucene.Net.Util.Fst.PositiveInt32Outputs.Singleton);
+ instance = new FST<long?>(data, PositiveInt32Outputs.Singleton);
ramBytesUsed.AddAndGet(instance.SizeInBytes());
fstInstances[field.Number] = instance;
}
@@ -636,11 +637,11 @@ namespace Lucene.Net.Codecs.Lucene42
}
else if (o.Input.Equals(key))
{
- return (int)o.Output.Value;
+ return (int)o.Output.GetValueOrDefault();
}
else
{
- return -o.Output.Value - 1;
+ return -o.Output.GetValueOrDefault() - 1;
}
}
catch (System.IO.IOException bogus)
@@ -809,7 +810,7 @@ namespace Lucene.Net.Codecs.Lucene42
public override long Ord
{
- get { return @in.Current.Output.Value; }
+ get { return @in.Current.Output.GetValueOrDefault(); }
}
public override int DocFreq
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/046b8128/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42FieldInfosReader.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42FieldInfosReader.cs b/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42FieldInfosReader.cs
index b663a87..b50c075 100644
--- a/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42FieldInfosReader.cs
+++ b/src/Lucene.Net.Core/Codecs/Lucene42/Lucene42FieldInfosReader.cs
@@ -55,7 +55,9 @@ namespace Lucene.Net.Codecs.Lucene42
bool success = false;
try
{
- CodecUtil.CheckHeader(input, Lucene42FieldInfosFormat.CODEC_NAME, Lucene42FieldInfosFormat.FORMAT_START, Lucene42FieldInfosFormat.FORMAT_CURRENT);
+ CodecUtil.CheckHeader(input, Lucene42FieldInfosFormat.CODEC_NAME,
+ Lucene42FieldInfosFormat.FORMAT_START,
+ Lucene42FieldInfosFormat.FORMAT_CURRENT);
int size = input.ReadVInt32(); //read in the size
FieldInfo[] infos = new FieldInfo[size];
@@ -64,7 +66,7 @@ namespace Lucene.Net.Codecs.Lucene42
{
string name = input.ReadString();
int fieldNumber = input.ReadVInt32();
- byte bits = input.ReadByte();
+ sbyte bits = (sbyte)input.ReadByte();
bool isIndexed = (bits & Lucene42FieldInfosFormat.IS_INDEXED) != 0;
bool storeTermVector = (bits & Lucene42FieldInfosFormat.STORE_TERMVECTOR) != 0;
bool omitNorms = (bits & Lucene42FieldInfosFormat.OMIT_NORMS) != 0;
@@ -92,11 +94,12 @@ namespace Lucene.Net.Codecs.Lucene42
}
// DV Types are packed in one byte
- byte val = input.ReadByte();
+ sbyte val = (sbyte)input.ReadByte();
DocValuesType? docValuesType = GetDocValuesType(input, (sbyte)(val & 0x0F));
DocValuesType? normsType = GetDocValuesType(input, (sbyte)(((int)((uint)val >> 4)) & 0x0F));
IDictionary<string, string> attributes = input.ReadStringStringMap();
- infos[i] = new FieldInfo(name, isIndexed, fieldNumber, storeTermVector, omitNorms, storePayloads, indexOptions, docValuesType, normsType, Collections.UnmodifiableMap(attributes));
+ infos[i] = new FieldInfo(name, isIndexed, fieldNumber, storeTermVector,
+ omitNorms, storePayloads, indexOptions, docValuesType, normsType, Collections.UnmodifiableMap(attributes));
}
CodecUtil.CheckEOF(input);