Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java (revision 652352) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/db/DbDataStore.java (working copy) @@ -457,6 +457,9 @@ * @param minRecordLength the length */ public void setMinRecordLength(int minRecordLength) { + if (minRecordLength > MAXIMUM_MIN_RECORD_LENGTH) { + minRecordLength = MAXIMUM_MIN_RECORD_LENGTH; + } this.minRecordLength = minRecordLength; } Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/DataStore.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/DataStore.java (revision 652352) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/DataStore.java (working copy) @@ -35,6 +35,14 @@ public interface DataStore { /** + * There is a limitation on the minRecordLength: the maximum value is around + * 32000. The reason for this is that Java doesn't support strings longer + * than 64 KB in DataOutputStream.writeUTF, which is used when writing + * the hex encoded version of small records. + */ + int MAXIMUM_MIN_RECORD_LENGTH = 32000; + + /** * Returns the identified data record. The given identifier should be * the identifier of a previously saved data record. Since records are * never removed, there should never be cases where the identified record Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/FileDataStore.java =================================================================== --- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/FileDataStore.java (revision 652352) +++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/FileDataStore.java (working copy) @@ -367,6 +367,9 @@ * @param minRecordLength the length */ public void setMinRecordLength(int minRecordLength) { + if (minRecordLength > MAXIMUM_MIN_RECORD_LENGTH) { + minRecordLength = MAXIMUM_MIN_RECORD_LENGTH; + } this.minRecordLength = minRecordLength; }