I am creating replication slot and streaming changes from AWS Postgres RDS to java process through JDBC driver.

My replication slot creation code looks like this.

```
final ReplicationSlotInfo replicationSlotInfo = pgConnection.getReplicationAPI()
                    .createReplicationSlot()
                    .logical()
                    .withSlotName(replicationSlotName)
                    .withOutputPlugin("wal2json")
                    .make();

```

and I get replication stream using following code.

```
pgConnection.getReplicationAPI()
                .replicationStream()
                .logical()
                .withSlotName(replicationSlotName)
                .withSlotOption("include-xids", true)
                .withSlotOption("include-timestamp", true)
                .withSlotOption("pretty-print", false)
                .withSlotOption("add-tables", "public.users")
                .withStatusInterval(10, TimeUnit.SECONDS)
                .start()

```

When replicator java process is not running, the WAL size gets increased. Here is the query I use to find replication lag.

```
SELECT
    slot_name,
    pg_size_pretty(pg_xlog_location_diff(pg_current_xlog_location(), restart_lsn)) AS replicationSlotLag,
    active
FROM
    pg_replication_slots;

```

Output:

```
slot_name   replicationslotlag  active
data_stream_slot    100 GB  f

```

This replication lag gets increased beyond RDS Disk, which shuts RDS down. 

I thought [wal\_keep\_segments](https://www.postgresql.org/docs/9.5/runtime-config-replication.html) will take care of this, which was set to 32. But it did not work.
Is there any other property which I have to set to avoid this situation, even when Java Replication process is not running.