[ 
https://issues.apache.org/jira/browse/LUCENENET-602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17023314#comment-17023314
 ] 

Shad Storhaug commented on LUCENENET-602:
-----------------------------------------

I suspect this issue may crop up again due to the new collections in 
[J2N|https://github.com/NightOwl888/J2N/tree/ca9ee8a343960970a3fb41d8b207fd68916747f0/src/J2N/Collections/Generic]
 which Lucene.NET now uses. Although, there may be no issue for interfaces with 
1 generic parameter, such as {{IEnumerable<T>}} so we might be okay. Basically, 
we have copied the structure of the collections in 
{{System.Collections.Generic}}, which use nested structs as enumerators, and 
each implements a generic interface:

{code:c#}
public class LinkedDictionary<TKey, TValue>
{
    internal struct Enumerator : IEnumerator<KeyValuePair<TKey, TValue>> {}
}
{code}

Could someone please do a test with [J2N 
2.0.0-beta-0001|https://www.nuget.org/packages/J2N/2.0.0-beta-0001] on 
Xamarin.iOS to ensure this problem isn't going to creep in again? A good test 
would be to enumerate the {{LinkedDictanary<TKey, TValue>}} (the dictionary, 
the keys, and the values). We have replaced most of the collections in 
Lucene.NET with the ones from J2N, so if this is a problem, it will affect more 
than just {{Lucene.Net.Facet}} in the next Lucene.NET release, it will affect 
practically every module.

> Error using Lucene.Net.Facet 4.8.0-beta00005  with Xamarin.iOS
> --------------------------------------------------------------
>
>                 Key: LUCENENET-602
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-602
>             Project: Lucene.Net
>          Issue Type: Bug
>          Components: Lucene.Net.Facet
>    Affects Versions: Lucene.Net 4.8.0
>         Environment: Xamarin Forms 3.0.0.561731
> Ios 10.3.3 and Higher
> Lucene.Net.Facet 4.8.0-beta00005
>            Reporter: Enrico Caltran
>            Priority: Minor
>              Labels: AOT, Xamarin.iOS, lucene.net.facet
>             Fix For: Lucene.Net 4.8.0
>
>         Attachments: AppTestLucene.zip, image-2019-08-08-02-26-40-582.png
>
>   Original Estimate: 120h
>  Remaining Estimate: 120h
>
> I'm using Lucene.Net.Facet 4.8.0-beta00005 in a big Xamarin project.
> +With Xamarin.Android and Xamarin.UWP it's all right.+
> *+But With Xamarin.iOS on device (Ipad)+*, i'm receiving this error:
>  _Attempting to JIT compile method 
> 'Lucene.Net.Support.LurchTable2&lt;Lucene.Net.Facet.Taxonomy.FacetLabel, 
> Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader/Int32Class&gt;:InternalInsert&lt;Lucene.Net.Support.LurchTable2/Add2Info<Lucene.Net.Facet.Taxonomy.FacetLabel,
>  Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader/Int32Class>> 
> (int,Lucene.Net.Facet.Taxonomy.FacetLabel,int&,Lucene.Net.Support.LurchTable`2/Add2Info<Lucene.Net.Facet.Taxonomy.FacetLabel,
>  Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader/Int32Class>&)' 
> while running in aot-only mode. See 
> [https://developer.xamarin.com/guides/ios/advanced_topics/limitations/] for 
> more information._
> _{color:#d04437}at Lucene.Net.Support.LurchTable2[TKey,TValue].Insert[T] 
> (TKey key, T&amp; value) &lt;0x2570f48 + 0x000e0&gt; in 
> &lt;063e095c95d945a4ace32ab83d1227eb#2ae0fea9ea4eacaef83bf2e9713bb8ea&gt;:0 
> at (wrapper unknown) System.Object.gsharedvt_in() at 
> Lucene.Net.Support.LurchTable2[TKey,TValue].AddOrUpdate (TKey key, TValue 
> addValue, Lucene.Net.Support.KeyValueUpdate2[TKey,TValue] fnUpdate) 
> &lt;0x232824c + 0x0013b&gt; in 
> &lt;063e095c95d945a4ace32ab83d1227eb#2ae0fea9ea4eacaef83bf2e9713bb8ea&gt;:0 
> at Lucene.Net.Facet.Taxonomy.LRUHashMap2[TKey,TValue].Put (TKey key, TValue 
> value) <0x2c487f8 + 0x0015b> in 
> <79d3a7b905954d0993025c09c5d087ce#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader.GetOrdinal 
> (Lucene.Net.Facet.Taxonomy.FacetLabel cp) <0x2c51970 + 0x0019b> in 
> <79d3a7b905954d0993025c09c5d087ce#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> Lucene.Net.Facet.Taxonomy.Int32TaxonomyFacets.GetTopChildren{color} 
> (System.Int32 topN, System.String dim, System.String[] path) <0x2c481dc + 
> 0x0008f> in 
> <79d3a7b905954d0993025c09c5d087ce#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> Login.MyMB.Lucene.Client.LuceneArticoliSearcher.GetListaArticoloXRicercaAvanzataConRicercaSemplice
>  (System.Collections.Generic.List1[T] listParametri) &lt;0x224add0 + 
> 0x001bb&gt; in 
> &lt;8f49891e0f0546e185aba7424d294ef7#2ae0fea9ea4eacaef83bf2e9713bb8ea&gt;:0 
> at 
> Login.MyMB.Lucene.Client.LuceneArticoliSearcher.GetListaArticoloConRicercaSemplice
>  (System.Collections.Generic.List1[T] listParametri) <0x224afbc + 0x0009f> in 
> <8f49891e0f0546e185aba7424d294ef7#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 at 
> MyMB.Forms.RicercaLucene.RicercaArticoloLucene.GetListaArticoliXRicercaSemplice
>  (Login.MyMB.Interface.IAmbiente ambiente, 
> Login.MyMB.Lucene.Client.LuceneArticoliSearcher las, 
> System.Collections.Generic.List`1[T] ListParametri, System.Boolean 
> isAbilitataRicercaBarcode) <0xe47fc0 + 0x000e7> in 
> <f1bb3149abe145459612794f1a096634#2ae0fea9ea4eacaef83bf2e9713bb8ea>:0 
> ..............................._
> At the link 
> [https://docs.microsoft.com/it-it/xamarin/ios/internals/limitations] , I 
> found the problem cause (I suppose...):
> _Value types as Dictionary Keys Using a value type as a Dictionary<TKey, 
> TValue> key is problematic, as the default Dictionary constructor attempts to 
> use EqualityComparer<TKey>.Default. EqualityComparer<TKey>.Default, in turn, 
> attempts to use Reflection to instantiate a new type which implements the 
> IEqualityComparer<TKey> interface. This works for reference types (as the 
> reflection+create a new type step is skipped), but for value types it crashes 
> and burns rather quickly once you attempt to use it on the device. 
> Workaround: Manually implement the IEqualityComparer<TKey> interface in a new 
> type and provide an instance of that type to the Dictionary<TKey, TValue> 
> (IEqualityComparer<TKey>) constructor._
> So, what can I do? Thank you in advance, Enrico Caltran +393357485560 
> [enrico.calt...@timegroup.it|mailto:enrico.calt...@timegroup.it]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to