Skip to content
This repository has been archived by the owner on Jul 28, 2023. It is now read-only.

Commit

Permalink
fixed leaked DAX dependency (#91)
Browse files Browse the repository at this point in the history
  • Loading branch information
musketyr authored Apr 12, 2019
1 parent bb5a9eb commit 812caca
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 40 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version=2.2.12
version=2.2.13
awsJavaSdkVersion=1.11.500
awsKinesisClientVersion=1.8.5
gradleWrapperVersion=3.4.1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package grails.plugin.awssdk.dynamodb

import agorapulse.libs.awssdk.util.AwsClientUtil
import com.amazon.dax.client.dynamodbv2.AmazonDaxClientBuilder
import com.amazon.dax.client.dynamodbv2.ClientConfig
import com.amazonaws.ClientConfiguration
import com.amazonaws.Protocol
import com.amazonaws.regions.Region
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder
Expand All @@ -18,7 +14,6 @@ import java.lang.reflect.Field
import java.lang.reflect.Method
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.concurrent.TimeUnit

@Slf4j
abstract class AbstractDBService<TItemClass> implements InitializingBean {
Expand Down Expand Up @@ -57,17 +52,7 @@ abstract class AbstractDBService<TItemClass> implements InitializingBean {
String daxEndpoint = config?.dax?.endpoint

if (daxEndpoint) {
ClientConfig clientConfig = buildClientConfiguration(config, serviceConfig)
.withRegion(region)
.withEndpoints(daxEndpoint)

client = AmazonDaxClientBuilder
.standard()
.withEndpointConfiguration(daxEndpoint)
.withRegion(region.name)
.withCredentials(AwsClientUtil.buildCredentials(config, serviceConfig))
.withClientConfiguration(clientConfig)
.build()
client = DaxHelper.buildDaxClient(daxEndpoint, region, config, serviceConfig)
} else {
// Create client
client = AmazonDynamoDBClientBuilder
Expand Down Expand Up @@ -1084,27 +1069,4 @@ abstract class AbstractDBService<TItemClass> implements InitializingBean {
config[SERVICE_NAME]
}

static ClientConfig buildClientConfiguration(defaultConfig, serviceConfig) {
Map config = [
connectionTimeout: defaultConfig.connectionTimeout ?: 0,
maxConnections: defaultConfig.maxConnections ?: 0,
maxErrorRetry: defaultConfig.maxErrorRetry ?: 0,
socketTimeout: defaultConfig.socketTimeout ?: 0,
]
if (serviceConfig) {
if (serviceConfig.connectionTimeout) config.connectionTimeout = serviceConfig.connectionTimeout
if (serviceConfig.maxConnections) config.maxConnections = serviceConfig.maxConnections
if (serviceConfig.maxErrorRetry) config.maxErrorRetry = serviceConfig.maxErrorRetry
if (serviceConfig.socketTimeout) config.socketTimeout = serviceConfig.socketTimeout
}

ClientConfig clientConfiguration = new ClientConfig()
if (config.connectionTimeout) clientConfiguration.withConnectTimeout(config.connectionTimeout, TimeUnit.MILLISECONDS)
if (config.maxConnections) clientConfiguration.withMaxPendingConnectsPerHost(config.maxConnections)
if (config.maxErrorRetry) clientConfiguration.withReadRetries(config.maxErrorRetry)
if (config.maxErrorRetry) clientConfiguration.withReadRetries(config.maxErrorRetry)
if (config.socketTimeout) clientConfiguration.withRequestTimeout(config.socketTimeout, TimeUnit.MILLISECONDS)
clientConfiguration
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package grails.plugin.awssdk.dynamodb

import agorapulse.libs.awssdk.util.AwsClientUtil
import com.amazon.dax.client.dynamodbv2.AmazonDaxClientBuilder
import com.amazon.dax.client.dynamodbv2.ClientConfig
import com.amazonaws.regions.Region
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB
import groovy.transform.CompileDynamic
import groovy.transform.CompileStatic

import java.util.concurrent.TimeUnit

@CompileStatic
class DaxHelper {

static AmazonDynamoDB buildDaxClient(String daxEndpoint, Region region, Object config, Object serviceConfig) {
ClientConfig clientConfig = buildClientConfiguration(config, serviceConfig)
.withRegion(region)
.withEndpoints(daxEndpoint)

return AmazonDaxClientBuilder
.standard()
.withEndpointConfiguration(daxEndpoint)
.withRegion(region.name)
.withCredentials(AwsClientUtil.buildCredentials(config, serviceConfig))
.withClientConfiguration(clientConfig)
.build()
}

@CompileDynamic
private static ClientConfig buildClientConfiguration(defaultConfig, serviceConfig) {
Map config = [
connectionTimeout: defaultConfig.connectionTimeout ?: 0,
maxConnections: defaultConfig.maxConnections ?: 0,
maxErrorRetry: defaultConfig.maxErrorRetry ?: 0,
socketTimeout: defaultConfig.socketTimeout ?: 0,
]
if (serviceConfig) {
if (serviceConfig.connectionTimeout) config.connectionTimeout = serviceConfig.connectionTimeout
if (serviceConfig.maxConnections) config.maxConnections = serviceConfig.maxConnections
if (serviceConfig.maxErrorRetry) config.maxErrorRetry = serviceConfig.maxErrorRetry
if (serviceConfig.socketTimeout) config.socketTimeout = serviceConfig.socketTimeout
}

ClientConfig clientConfiguration = new ClientConfig()
if (config.connectionTimeout) clientConfiguration.withConnectTimeout(config.connectionTimeout, TimeUnit.MILLISECONDS)
if (config.maxConnections) clientConfiguration.withMaxPendingConnectsPerHost(config.maxConnections)
if (config.maxErrorRetry) clientConfiguration.withReadRetries(config.maxErrorRetry)
if (config.maxErrorRetry) clientConfiguration.withReadRetries(config.maxErrorRetry)
if (config.socketTimeout) clientConfiguration.withRequestTimeout(config.socketTimeout, TimeUnit.MILLISECONDS)
clientConfiguration
}

}

0 comments on commit 812caca

Please sign in to comment.