Index: modules/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilter.java =================================================================== --- modules/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilter.java (revision 1075520) +++ modules/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilter.java (working copy) @@ -84,7 +84,12 @@ */ public ICUCollationKeyFilter(TokenStream input, Collator collator) { super(input); - this.collator = collator; + // clone the collator: see http://userguide.icu-project.org/collation/architecture + try { + this.collator = (Collator) collator.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } } @Override Index: modules/analysis/icu/src/java/org/apache/lucene/collation/tokenattributes/ICUCollatedTermAttributeImpl.java =================================================================== --- modules/analysis/icu/src/java/org/apache/lucene/collation/tokenattributes/ICUCollatedTermAttributeImpl.java (revision 1075520) +++ modules/analysis/icu/src/java/org/apache/lucene/collation/tokenattributes/ICUCollatedTermAttributeImpl.java (working copy) @@ -36,7 +36,12 @@ * @param collator Collation key generator */ public ICUCollatedTermAttributeImpl(Collator collator) { - this.collator = collator; + // clone the collator: see http://userguide.icu-project.org/collation/architecture + try { + this.collator = (Collator) collator.clone(); + } catch (CloneNotSupportedException e) { + throw new RuntimeException(e); + } } @Override Index: modules/analysis/common/src/java/org/apache/lucene/collation/CollationKeyFilter.java =================================================================== --- modules/analysis/common/src/java/org/apache/lucene/collation/CollationKeyFilter.java (revision 1075520) +++ modules/analysis/common/src/java/org/apache/lucene/collation/CollationKeyFilter.java (working copy) @@ -85,7 +85,9 @@ */ public CollationKeyFilter(TokenStream input, Collator collator) { super(input); - this.collator = collator; + // clone in case JRE doesnt properly sync, + // or to reduce contention in case they do + this.collator = (Collator) collator.clone(); } @Override Index: modules/analysis/common/src/java/org/apache/lucene/collation/tokenattributes/CollatedTermAttributeImpl.java =================================================================== --- modules/analysis/common/src/java/org/apache/lucene/collation/tokenattributes/CollatedTermAttributeImpl.java (revision 1075520) +++ modules/analysis/common/src/java/org/apache/lucene/collation/tokenattributes/CollatedTermAttributeImpl.java (working copy) @@ -34,7 +34,9 @@ * @param collator Collation key generator */ public CollatedTermAttributeImpl(Collator collator) { - this.collator = collator; + // clone in case JRE doesnt properly sync, + // or to reduce contention in case they do + this.collator = (Collator) collator.clone(); } @Override