]
Steve Ebersole commented on HIBERNATE-101:
------------------------------------------
This is not the correct project to report Hibernate issues under. This Jira project is for
reporting issues in the integration between Hibernate and WildFly. To report issues in
Hibernate, please use
. Thanks.
IdHashShardingStrategy fails after 1.7M id is generated
-------------------------------------------------------
Key: HIBERNATE-101
URL:
https://issues.jboss.org/browse/HIBERNATE-101
Project: Hibernate Integration
Issue Type: Bug
Reporter: Rafal Glowacz
Assignee: Steve Ebersole
public class IdShardingStrategyTest extends TestCase
{
private IdHashShardingStrategy _defaultIdStrategy;
private IdShardingStrategy _idStrategy;
protected void setUp() throws Exception {
_idStrategy = new IdShardingStrategy();
_idStrategy.initialize(null, createDirectoryProviders());
_defaultIdStrategy = new IdHashShardingStrategy();
_defaultIdStrategy.initialize(null, createDirectoryProviders());
}
private DirectoryProvider[] createDirectoryProviders() {
return new DirectoryProvider[]{new MockDirectoryProvider(),
new MockDirectoryProvider(),
new MockDirectoryProvider()};
}
public void testIdSharding() {
long id = 1;
long limit = 1000 * 1000000 * 1000000L;
try {
while (id < limit) {
generateForAddition(_idStrategy, id);
generateForDeletion(_idStrategy, id);
id += 129653153;
}
} catch (Exception e) {
fail("Couldn't get directory for id " + id);
}
}
public void testIdHashSharding() {
long id = 1;
long limit = 1000 * 1000000 * 1000000L;
try {
while (id < limit) {
generateForAddition(_defaultIdStrategy, id);
generateForDeletion(_defaultIdStrategy, id);
id += 129653153;
}
fail("Should fail with ArrayIndexOutOfBoundsException for long
id");
} catch (Exception e) {
}
}
private MockDirectoryProvider generateForAddition(IndexShardingStrategy strategy,
long id) {
return (MockDirectoryProvider) strategy.getDirectoryProviderForAddition(null, id,
id + "", null);
}
private DirectoryProvider[] generateForDeletion(IndexShardingStrategy strategy, long
id) {
return strategy.getDirectoryProvidersForDeletion(null, id, id + "");
}
}