in src/main/java/com/amazonaws/services/neptune/cluster/AddCloneTask.java [267:361]
private DBClusterParameterGroup createDbClusterParameterGroup(NeptuneClusterMetadata sourceClusterMetadata,
NeptuneClient neptune) {
DBClusterParameterGroup dbClusterParameterGroup;
dbClusterParameterGroup = neptune.createDBClusterParameterGroup(
CreateDbClusterParameterGroupRequest.builder()
.dbClusterParameterGroupName(String.format("%s-db-cluster-params", targetClusterId))
.description(String.format("%s DB Cluster Parameter Group", targetClusterId))
.dbParameterGroupFamily(sourceClusterMetadata.dbParameterGroupFamily())
.tags(getTags(sourceClusterMetadata.clusterId()))
.build()
).dbClusterParameterGroup();
String neptuneStreamsParameterValue = sourceClusterMetadata.isStreamEnabled() ? "1" : "0";
try {
ModifyDbClusterParameterGroupRequest.Builder requestBuilder = ModifyDbClusterParameterGroupRequest.builder()
.dbClusterParameterGroupName(dbClusterParameterGroup.dbClusterParameterGroupName())
.parameters(
Parameter.builder()
.parameterName("neptune_enforce_ssl")
.parameterValue("1")
.applyMethod(ApplyMethod.PENDING_REBOOT)
.build(),
Parameter.builder()
.parameterName("neptune_query_timeout")
.parameterValue("2147483647")
.applyMethod(ApplyMethod.PENDING_REBOOT)
.build(),
Parameter.builder()
.parameterName("neptune_streams")
.parameterValue(neptuneStreamsParameterValue)
.applyMethod(ApplyMethod.PENDING_REBOOT)
.build());
if (this.enableAuditLogs) {
requestBuilder = requestBuilder.parameters(Parameter.builder()
.parameterName("neptune_enable_audit_log")
.parameterValue("1")
.applyMethod(ApplyMethod.PENDING_REBOOT)
.build());
}
neptune.modifyDBClusterParameterGroup(requestBuilder.build());
} catch (NeptuneException e) {
ModifyDbClusterParameterGroupRequest.Builder requestBuilder = ModifyDbClusterParameterGroupRequest.builder()
.dbClusterParameterGroupName(dbClusterParameterGroup.dbClusterParameterGroupName())
.parameters(
Parameter.builder()
.parameterName("neptune_query_timeout")
.parameterValue("2147483647")
.applyMethod(ApplyMethod.PENDING_REBOOT)
.build(),
Parameter.builder()
.parameterName("neptune_streams")
.parameterValue(neptuneStreamsParameterValue)
.applyMethod(ApplyMethod.PENDING_REBOOT)
.build());
if (this.enableAuditLogs) {
requestBuilder = requestBuilder.parameters(Parameter.builder()
.parameterName("neptune_enable_audit_log")
.parameterValue("1")
.applyMethod(ApplyMethod.PENDING_REBOOT)
.build());
}
neptune.modifyDBClusterParameterGroup(requestBuilder.build());
}
List<Parameter> dbClusterParameters = neptune.describeDBClusterParameters(
DescribeDbClusterParametersRequest.builder()
.dbClusterParameterGroupName(dbClusterParameterGroup.dbClusterParameterGroupName())
.build()
).parameters();
while (dbClusterParameters.stream().noneMatch(parameter ->
parameter.parameterName().equals("neptune_query_timeout") &&
parameter.parameterValue().equals("2147483647"))) {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dbClusterParameters = neptune.describeDBClusterParameters(
DescribeDbClusterParametersRequest.builder()
.dbClusterParameterGroupName(dbClusterParameterGroup.dbClusterParameterGroupName())
.build()
).parameters();
}
System.err.println(String.format("DB cluster parameter group : %s", dbClusterParameterGroup.dbClusterParameterGroupName()));
return dbClusterParameterGroup;
}