Hi James, Thank you for the report. Feel free to create a PR on GitHub.
Gary On Tue, May 6, 2025, 00:28 James Winters <jwint...@atlassian.com.invalid> wrote: > Since 3.17.0, and the new CachedRandomBits implementation, it is no longer > possible to create random strings longer than about 60M characters. It's > not exact, as the overflow will happen at a random point depending on the > number of rejections. The attached test will always generate > an java.lang.ArrayIndexOutOfBoundsException: Index -268435456 as the int > wraps around due to rejections > > I've got a simple fix and will create an issue and PR if you feel it's > worth fixing, otherwise I'll document the limit as you should probably > use org.apache.commons.text.RandomStringGenerator.generate() > for huge strings. > > Regards, > James > > @Test > public void testHugeStrings() { > final int expectedLength = 64_000_000; > final String hugeString = RandomStringUtils.random(expectedLength); > assertEquals(expectedLength, hugeString.length(), > "hugeString.length() == expectedLength"); > } >