private DBParameterGroup createDbParameterGroup()

in src/main/java/com/amazonaws/services/neptune/cluster/AddCloneTask.java [217:265]


    private DBParameterGroup createDbParameterGroup(NeptuneClusterMetadata sourceClusterMetadata,
                                                    NeptuneClient neptune) {

        DBParameterGroup dbParameterGroup;

        dbParameterGroup = neptune.createDBParameterGroup(
                CreateDbParameterGroupRequest.builder()
                        .dbParameterGroupName(String.format("%s-db-params", targetClusterId))
                        .description(String.format("%s DB Parameter Group", targetClusterId))
                        .dbParameterGroupFamily(sourceClusterMetadata.dbParameterGroupFamily())
                        .tags(getTags(sourceClusterMetadata.clusterId()))
                        .build()).dbParameterGroup();

        neptune.modifyDBParameterGroup(ModifyDbParameterGroupRequest.builder()
                .dbParameterGroupName(dbParameterGroup.dbParameterGroupName())
                .parameters(
                        Parameter.builder()
                                .parameterName("neptune_query_timeout")
                                .parameterValue("2147483647")
                                .applyMethod(ApplyMethod.PENDING_REBOOT)
                                .build()
                ).build());

        List<Parameter> dbParameters = neptune.describeDBParameters(
                        DescribeDbParametersRequest.builder()
                                .dbParameterGroupName(dbParameterGroup.dbParameterGroupName())
                                .build()
                ).parameters();

        while (dbParameters.stream().noneMatch(parameter ->
                parameter.parameterName().equals("neptune_query_timeout") &&
                        parameter.parameterValue().equals("2147483647"))) {
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            dbParameters = neptune.describeDBClusterParameters(
                            DescribeDbClusterParametersRequest.builder()
                                    .dbClusterParameterGroupName(dbParameterGroup.dbParameterGroupName())
                                    .build()
                    ).parameters();
        }

        System.err.println(String.format("DB parameter group         : %s", dbParameterGroup.dbParameterGroupName()));
        System.err.println();

        return dbParameterGroup;
    }