クラス V3PGReplicationStream
- すべての実装されたインタフェース:
AutoCloseable
,PGReplicationStream
-
フィールドの概要
フィールド -
コンストラクタの概要
コンストラクタコンストラクタ説明V3PGReplicationStream
(CopyDual copyDual, LogSequenceNumber startLSN, long updateIntervalMs, ReplicationType replicationType) -
メソッドの概要
修飾子とタイプメソッド説明void
close()
Stop replication changes from server and free resources.void
Force send last received, flushed and applied LSN status to backend.Last applied lsn sent in update message to backed.Last flushed LSN sent in update message to backend.Parameter updates by executePGReplicationStream.read()
method.boolean
isClosed()
@Nullable ByteBuffer
read()
Read next wal record from backend.@Nullable ByteBuffer
Read next WAL record from backend.void
setAppliedLSN
(LogSequenceNumber applied) Inform backend which LSN has been applied on standby.void
setFlushedLSN
(LogSequenceNumber flushed) Set flushed LSN.
-
フィールド詳細
-
POSTGRES_EPOCH_2000_01_01
public static final long POSTGRES_EPOCH_2000_01_01- 関連項目:
-
-
コンストラクタの詳細
-
V3PGReplicationStream
public V3PGReplicationStream(CopyDual copyDual, LogSequenceNumber startLSN, long updateIntervalMs, ReplicationType replicationType) - パラメータ:
copyDual
- bidirectional copy protocolstartLSN
- the position in the WAL that we want to initiate replication from usually the currentLSN returned by calling pg_current_wal_lsn()for v10 above or pg_current_xlog_location() depending on the version of the serverupdateIntervalMs
- the number of millisecond between status packets sent back to the server. A value of zero disables the periodic status updates completely, although an update will still be sent when requested by the server, to avoid timeout disconnect.replicationType
- LOGICAL or PHYSICAL
-
-
メソッドの詳細
-
read
インタフェースからコピーされた説明:PGReplicationStream
Read next wal record from backend. It method can be block until new message will not get from server.
A single WAL record is never split across two XLogData messages. When a WAL record crosses a WAL page boundary, and is therefore already split using continuation records, it can be split at the page boundary. In other words, the first main WAL record and its continuation records can be sent in different XLogData messages.
- 定義:
read
インタフェース内PGReplicationStream
- 戻り値:
- not null byte array received by replication protocol, return ByteBuffer wrap around
received byte array with use offset, so, use
ByteBuffer.array()
carefully - 例外:
SQLException
- when some internal exception occurs during read from stream
-
readPending
インタフェースからコピーされた説明:PGReplicationStream
Read next WAL record from backend. This method does not block and in contrast to
PGReplicationStream.read()
. If message from backend absent return null. It allow periodically check message in stream and if they absent sleep some time, but it time should be less thanCommonOptions.getStatusInterval()
to avoid disconnect from the server.A single WAL record is never split across two XLogData messages. When a WAL record crosses a WAL page boundary, and is therefore already split using continuation records, it can be split at the page boundary. In other words, the first main WAL record and its continuation records can be sent in different XLogData messages.
- 定義:
readPending
インタフェース内PGReplicationStream
- 戻り値:
- byte array received by replication protocol or NULL if pending message from server
absent. Returns ByteBuffer wrap around received byte array with use offset, so, use
ByteBuffer.array()
carefully. - 例外:
SQLException
- when some internal exception occurs during read from stream
-
getLastReceiveLSN
インタフェースからコピーされた説明:PGReplicationStream
Parameter updates by execute
PGReplicationStream.read()
method.It is safe to call this method in a thread different than the main thread. However, usually this method is called in the main thread after a successful
PGReplicationStream.read()
orPGReplicationStream.readPending()
, to get the LSN corresponding to the received record.- 定義:
getLastReceiveLSN
インタフェース内PGReplicationStream
- 戻り値:
- NOT NULL LSN position that was receive last time via
PGReplicationStream.read()
method
-
getLastFlushedLSN
インタフェースからコピーされた説明:PGReplicationStream
Last flushed LSN sent in update message to backend. Parameter updates only via
PGReplicationStream.setFlushedLSN(LogSequenceNumber)
It is safe to call this method in a thread different than the main thread.
- 定義:
getLastFlushedLSN
インタフェース内PGReplicationStream
- 戻り値:
- NOT NULL location of the last WAL flushed to disk in the standby.
-
getLastAppliedLSN
インタフェースからコピーされた説明:PGReplicationStream
Last applied lsn sent in update message to backed. Parameter updates only via
PGReplicationStream.setAppliedLSN(LogSequenceNumber)
It is safe to call this method in a thread different than the main thread.
- 定義:
getLastAppliedLSN
インタフェース内PGReplicationStream
- 戻り値:
- not null location of the last WAL applied in the standby.
-
setFlushedLSN
インタフェースからコピーされた説明:PGReplicationStream
Set flushed LSN. This parameter will be sent to backend on next update status iteration. Flushed LSN position help backend define which WAL can be recycled.
It is safe to call this method in a thread different than the main thread. The updated value will be sent to the backend in the next status update run.
- 定義:
setFlushedLSN
インタフェース内PGReplicationStream
- パラメータ:
flushed
- NOT NULL location of the last WAL flushed to disk in the standby.- 関連項目:
-
setAppliedLSN
インタフェースからコピーされた説明:PGReplicationStream
Inform backend which LSN has been applied on standby. Feedback will send to backend on next update status iteration.
It is safe to call this method in a thread different than the main thread. The updated value will be sent to the backend in the next status update run.
- 定義:
setAppliedLSN
インタフェース内PGReplicationStream
- パラメータ:
applied
- NOT NULL location of the last WAL applied in the standby.- 関連項目:
-
forceUpdateStatus
インタフェースからコピーされた説明:PGReplicationStream
Force send last received, flushed and applied LSN status to backend. You cannot send LSN status explicitly becausePGReplicationStream
sends the status to backend periodically by configured interval viaCommonOptions.getStatusInterval()
- 定義:
forceUpdateStatus
インタフェース内PGReplicationStream
- 例外:
SQLException
- when some internal exception occurs during read from stream- 関連項目:
-
isClosed
public boolean isClosed()- 定義:
isClosed
インタフェース内PGReplicationStream
- 戻り値:
true
if replication stream was already close, otherwise returnfalse
-
close
インタフェースからコピーされた説明:PGReplicationStream
Stop replication changes from server and free resources. After that connection can be reuse to another queries. Also after close current stream they cannot be used anymore.
Note: This method can spend much time for logical replication stream on postgresql version 9.6 and lower, because postgresql have bug - during decode big transaction to logical form and during wait new changes postgresql ignore messages from client. As workaround you can close replication connection instead of close replication stream. For more information about it problem see mailing list thread Stopping logical replication protocol
- 定義:
close
インタフェース内AutoCloseable
- 定義:
close
インタフェース内PGReplicationStream
- 例外:
SQLException
- when some internal exception occurs during end streaming
-