|
@@ -333,3 +333,41 @@ class TransactionStore(SQLBaseStore):
|
|
|
["stream_ordering"],
|
|
|
[(stream_ordering,)] * len(rows),
|
|
|
)
|
|
|
+
|
|
|
+ async def get_destination_last_successful_stream_ordering(
|
|
|
+ self, destination: str
|
|
|
+ ) -> Optional[int]:
|
|
|
+ """
|
|
|
+ Gets the stream ordering of the PDU most-recently successfully sent
|
|
|
+ to the specified destination, or None if this information has not been
|
|
|
+ tracked yet.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ destination: the destination to query
|
|
|
+ """
|
|
|
+ return await self.db_pool.simple_select_one_onecol(
|
|
|
+ "destinations",
|
|
|
+ {"destination": destination},
|
|
|
+ "last_successful_stream_ordering",
|
|
|
+ allow_none=True,
|
|
|
+ desc="get_last_successful_stream_ordering",
|
|
|
+ )
|
|
|
+
|
|
|
+ async def set_destination_last_successful_stream_ordering(
|
|
|
+ self, destination: str, last_successful_stream_ordering: int
|
|
|
+ ) -> None:
|
|
|
+ """
|
|
|
+ Marks that we have successfully sent the PDUs up to and including the
|
|
|
+ one specified.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ destination: the destination we have successfully sent to
|
|
|
+ last_successful_stream_ordering: the stream_ordering of the most
|
|
|
+ recent successfully-sent PDU
|
|
|
+ """
|
|
|
+ return await self.db_pool.simple_upsert(
|
|
|
+ "destinations",
|
|
|
+ keyvalues={"destination": destination},
|
|
|
+ values={"last_successful_stream_ordering": last_successful_stream_ordering},
|
|
|
+ desc="set_last_successful_stream_ordering",
|
|
|
+ )
|