Skip to content

Commit

Permalink
Remove the SlaveLockManager.Configuration interface
Browse files Browse the repository at this point in the history
It was an indirect way of reading the lock_read_timeout HA setting lazily or something.
Who knows why it was introduced in the first place.
  • Loading branch information
chrisvest committed Dec 14, 2015
1 parent 2449632 commit 03da069
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 37 deletions.
Expand Up @@ -63,13 +63,6 @@ protected Locks getSlaveImpl( LifeSupport life )
{
return life.add( new SlaveLockManager( locksFactory.newInstance(), requestContextFactory, master.cement(),
availabilityGuard,
new SlaveLockManager.Configuration()
{
@Override
public long getAvailabilityTimeout()
{
return config.get( HaSettings.lock_read_timeout );
}
} ) );
config.get( HaSettings.lock_read_timeout ) ) );
}
}
Expand Up @@ -31,28 +31,24 @@ public class SlaveLockManager extends LifecycleAdapter implements Locks
private final Locks local;
private final Master master;
private final AvailabilityGuard availabilityGuard;
private final Configuration config;

public interface Configuration
{
long getAvailabilityTimeout();
}
private final long availabilityTimeoutMillis;

public SlaveLockManager( Locks localLocks, RequestContextFactory requestContextFactory, Master master,
AvailabilityGuard availabilityGuard, Configuration config )
AvailabilityGuard availabilityGuard, long availabilityTimeoutMillis )
{
this.requestContextFactory = requestContextFactory;
this.availabilityGuard = availabilityGuard;
this.config = config;
this.availabilityTimeoutMillis = availabilityTimeoutMillis;
this.local = localLocks;
this.master = master;
}

@Override
public Client newClient()
{
Client client = local.newClient();
return new SlaveLocksClient(
master, local.newClient(), local, requestContextFactory, availabilityGuard, config );
master, client, this.local, requestContextFactory, availabilityGuard, availabilityTimeoutMillis );
}

@Override
Expand Down
Expand Up @@ -53,7 +53,7 @@ class SlaveLocksClient implements Locks.Client
private final Locks localLockManager;
private final RequestContextFactory requestContextFactory;
private final AvailabilityGuard availabilityGuard;
private final SlaveLockManager.Configuration config;
private final long availabilityTimeoutMillis;

// Using atomic ints to avoid creating garbage through boxing.
private final Map<Locks.ResourceType, Map<Long, AtomicInteger>> sharedLocks;
Expand All @@ -66,14 +66,14 @@ public SlaveLocksClient(
Locks localLockManager,
RequestContextFactory requestContextFactory,
AvailabilityGuard availabilityGuard,
SlaveLockManager.Configuration config )
long availabilityTimeoutMillis )
{
this.master = master;
this.client = local;
this.localLockManager = localLockManager;
this.requestContextFactory = requestContextFactory;
this.availabilityGuard = availabilityGuard;
this.config = config;
this.availabilityTimeoutMillis = availabilityTimeoutMillis;
sharedLocks = new HashMap<>();
exclusiveLocks = new HashMap<>();
}
Expand Down Expand Up @@ -308,7 +308,7 @@ private boolean receiveLockResponse( Response<LockResult> response )

private void makeSureTxHasBeenInitialized()
{
availabilityGuard.checkAvailability( config.getAvailabilityTimeout(), RuntimeException.class );
availabilityGuard.checkAvailability( availabilityTimeoutMillis, RuntimeException.class );
if ( !initialized )
{
try ( Response<Void> ignored = master.newLockSession( newRequestContextFor( client ) ) )
Expand Down
Expand Up @@ -42,15 +42,15 @@ public class SlaveLockManagerTest
private RequestContextFactory requestContextFactory;
private Master master;
private AvailabilityGuard availabilityGuard;
private SlaveLockManager.Configuration config;
private long availabilityTimeoutMillis;

@Before
public void setUp()
{
requestContextFactory = new RequestContextFactory( 1, mock( DependencyResolver.class ) );
master = mock( Master.class );
availabilityGuard = new AvailabilityGuard( Clock.SYSTEM_CLOCK );
config = mock( SlaveLockManager.Configuration.class );
availabilityTimeoutMillis = 1000;
}

@Test
Expand Down Expand Up @@ -88,6 +88,6 @@ private SlaveLockManager newSlaveLockManager( Locks localLocks )
{
return new SlaveLockManager( localLocks, requestContextFactory,
master, availabilityGuard,
config );
availabilityTimeoutMillis );
}
}
Expand Up @@ -60,6 +60,7 @@ public class SlaveLocksClientConcurrentTest
private ForsetiLockManager lockManager;
private RequestContextFactory requestContextFactory;
private AvailabilityGuard availabilityGuard;
private long availabilityTimeoutMillis;

@BeforeClass
public static void initExecutor()
Expand All @@ -80,6 +81,7 @@ public void setUp()
lockManager = new ForsetiLockManager( ResourceTypes.values() );
requestContextFactory = mock( RequestContextFactory.class );
availabilityGuard = new AvailabilityGuard( Clock.SYSTEM_CLOCK );
availabilityTimeoutMillis = 100;

when( requestContextFactory.newRequestContext( Mockito.anyInt() ) )
.thenReturn( RequestContext.anonymous( 1 ) );
Expand Down Expand Up @@ -112,7 +114,7 @@ public void readersCanAcquireLockAsSoonAsItReleasedOnMaster() throws Interrupted
private SlaveLocksClient createClient()
{
return new SlaveLocksClient( master, lockManager.newClient(), lockManager,
requestContextFactory, availabilityGuard, new TestConfiguration() );
requestContextFactory, availabilityGuard, availabilityTimeoutMillis );
}

private static class LockedOnMasterAnswer implements Answer
Expand Down Expand Up @@ -214,13 +216,4 @@ public ResourceWorker( SlaveLocksClient locksClient, Locks.ResourceType resource
this.id = id;
}
}

private static class TestConfiguration implements SlaveLockManager.Configuration
{
@Override
public long getAvailabilityTimeout()
{
return 100;
}
}
}
}
Expand Up @@ -60,8 +60,6 @@ public class SlaveLocksClientTest
private RequestContextFactory requestContextFactory;
@Mock
private AvailabilityGuard availabilityGuard;
@Mock
private SlaveLockManager.Configuration config;

@InjectMocks
private SlaveLocksClient client;
Expand Down

0 comments on commit 03da069

Please sign in to comment.