Skip to content

Commit

Permalink
VariantManagerImpl: don't reset indices if the current multithread mo…
Browse files Browse the repository at this point in the history
…de is already what we want

Signed-off-by: Jon Harper <[email protected]>
  • Loading branch information
jonenst committed Jul 12, 2019
1 parent 225d17f commit 982bbd3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,15 +218,15 @@ public void removeVariant(String variantId) {

@Override
public void allowVariantMultiThreadAccess(boolean allow) {
if (allow) {
if (allow && !(variantContext instanceof ThreadLocalMultiVariantContext)) {
VariantContext newVariantContext = new ThreadLocalMultiVariantContext();
// For multithreaded VariantContext, don't set the variantIndex to a default
// value if it is not set, so that missing initializations fail fast.
if (variantContext.isIndexSet()) {
newVariantContext.setVariantIndex(variantContext.getVariantIndex());
}
variantContext = newVariantContext;
} else {
} else if (!allow && !(variantContext instanceof MultiVariantContext)) {
if (variantContext.isIndexSet()) {
variantContext = new MultiVariantContext(variantContext.getVariantIndex());
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,28 @@ public void overwriteVariant() {
assertEquals(605.0, generator.getTargetP(), 0.0);
}

@Test
public void testVariantIndexKept() throws Exception {
NetworkIndex index = new NetworkIndex();
VariantManager variantManager = new VariantManagerImpl(index);
variantManager.cloneVariant(VariantManagerConstants.INITIAL_VARIANT_ID, "ClonedVariant1");
variantManager.setWorkingVariant("ClonedVariant1");
variantManager.allowVariantMultiThreadAccess(true);
assertEquals(variantManager.getWorkingVariantId(), "ClonedVariant1");
CountDownLatch cdl1 = new CountDownLatch(1);
(new Thread() {
public void run() {
try {
variantManager.allowVariantMultiThreadAccess(true);
} finally {
cdl1.countDown();
}
}
}).start();
cdl1.await();
assertEquals(variantManager.getWorkingVariantId(), "ClonedVariant1");
}

@Test
public void testMultipleSetAllowMultiThreadTrue() throws Exception {
NetworkIndex index = new NetworkIndex();
Expand Down

0 comments on commit 982bbd3

Please sign in to comment.