mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-08 06:33:09 -06:00
Don't allow NULL
This commit is contained in:
parent
531a557e9d
commit
54e383972f
|
|
@ -16,6 +16,7 @@ package storage
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/federationapi/storage/shared"
|
"github.com/matrix-org/dendrite/federationapi/storage/shared"
|
||||||
"github.com/matrix-org/dendrite/federationapi/types"
|
"github.com/matrix-org/dendrite/federationapi/types"
|
||||||
|
|
@ -39,7 +40,7 @@ type Database interface {
|
||||||
GetPendingEDUs(ctx context.Context, serverName gomatrixserverlib.ServerName, limit int) (edus map[*shared.Receipt]*gomatrixserverlib.EDU, err error)
|
GetPendingEDUs(ctx context.Context, serverName gomatrixserverlib.ServerName, limit int) (edus map[*shared.Receipt]*gomatrixserverlib.EDU, err error)
|
||||||
|
|
||||||
AssociatePDUWithDestination(ctx context.Context, transactionID gomatrixserverlib.TransactionID, serverName gomatrixserverlib.ServerName, receipt *shared.Receipt) error
|
AssociatePDUWithDestination(ctx context.Context, transactionID gomatrixserverlib.TransactionID, serverName gomatrixserverlib.ServerName, receipt *shared.Receipt) error
|
||||||
AssociateEDUWithDestination(ctx context.Context, serverName gomatrixserverlib.ServerName, receipt *shared.Receipt, eduType string) error
|
AssociateEDUWithDestination(ctx context.Context, serverName gomatrixserverlib.ServerName, receipt *shared.Receipt, eduType string, expireEDUTypes map[string]time.Duration) error
|
||||||
|
|
||||||
CleanPDUs(ctx context.Context, serverName gomatrixserverlib.ServerName, receipts []*shared.Receipt) error
|
CleanPDUs(ctx context.Context, serverName gomatrixserverlib.ServerName, receipts []*shared.Receipt) error
|
||||||
CleanEDUs(ctx context.Context, serverName gomatrixserverlib.ServerName, receipts []*shared.Receipt) error
|
CleanEDUs(ctx context.Context, serverName gomatrixserverlib.ServerName, receipts []*shared.Receipt) error
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ CREATE TABLE IF NOT EXISTS federationsender_queue_edus (
|
||||||
-- The JSON NID from the federationsender_queue_edus_json table.
|
-- The JSON NID from the federationsender_queue_edus_json table.
|
||||||
json_nid BIGINT NOT NULL,
|
json_nid BIGINT NOT NULL,
|
||||||
-- The expiry time of this edu, if any.
|
-- The expiry time of this edu, if any.
|
||||||
expires_at BIGINT
|
expires_at BIGINT NOT NULL DEFAULT 0
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_edus_json_nid_idx
|
CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_edus_json_nid_idx
|
||||||
|
|
@ -108,7 +108,7 @@ func (s *queueEDUsStatements) InsertQueueEDU(
|
||||||
eduType string,
|
eduType string,
|
||||||
serverName gomatrixserverlib.ServerName,
|
serverName gomatrixserverlib.ServerName,
|
||||||
nid int64,
|
nid int64,
|
||||||
expiresAt *gomatrixserverlib.Timestamp,
|
expiresAt gomatrixserverlib.Timestamp,
|
||||||
) error {
|
) error {
|
||||||
stmt := sqlutil.TxStmt(txn, s.insertQueueEDUStmt)
|
stmt := sqlutil.TxStmt(txn, s.insertQueueEDUStmt)
|
||||||
_, err := stmt.ExecContext(
|
_, err := stmt.ExecContext(
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,12 @@ import (
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
)
|
)
|
||||||
|
|
||||||
// expireEDUTypes contains EDUs which can/should be expired after a given time
|
// defaultExpiry for EDUs if not listed below
|
||||||
|
var defaultExpiry = time.Hour * 24
|
||||||
|
|
||||||
|
// defaultExpireEDUTypes contains EDUs which can/should be expired after a given time
|
||||||
// if the target server isn't reachable for some reason.
|
// if the target server isn't reachable for some reason.
|
||||||
var expireEDUTypes = map[string]time.Duration{
|
var defaultExpireEDUTypes = map[string]time.Duration{
|
||||||
gomatrixserverlib.MTyping: time.Minute,
|
gomatrixserverlib.MTyping: time.Minute,
|
||||||
gomatrixserverlib.MPresence: time.Minute * 10,
|
gomatrixserverlib.MPresence: time.Minute * 10,
|
||||||
}
|
}
|
||||||
|
|
@ -40,12 +43,15 @@ func (d *Database) AssociateEDUWithDestination(
|
||||||
serverName gomatrixserverlib.ServerName,
|
serverName gomatrixserverlib.ServerName,
|
||||||
receipt *Receipt,
|
receipt *Receipt,
|
||||||
eduType string,
|
eduType string,
|
||||||
|
expireEDUTypes map[string]time.Duration,
|
||||||
) error {
|
) error {
|
||||||
var expiresAt *gomatrixserverlib.Timestamp
|
if expireEDUTypes == nil {
|
||||||
|
expireEDUTypes = defaultExpireEDUTypes
|
||||||
|
}
|
||||||
|
expiresAt := gomatrixserverlib.AsTimestamp(time.Now().Add(defaultExpiry))
|
||||||
if duration, ok := expireEDUTypes[eduType]; ok {
|
if duration, ok := expireEDUTypes[eduType]; ok {
|
||||||
// Keep EDUs for at least x minutes before deleting them
|
// Keep EDUs for at least x minutes before deleting them
|
||||||
ts := gomatrixserverlib.AsTimestamp(time.Now().Add(duration))
|
expiresAt = gomatrixserverlib.AsTimestamp(time.Now().Add(duration))
|
||||||
expiresAt = &ts
|
|
||||||
}
|
}
|
||||||
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
|
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
|
||||||
if err := d.FederationQueueEDUs.InsertQueueEDU(
|
if err := d.FederationQueueEDUs.InsertQueueEDU(
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ CREATE TABLE IF NOT EXISTS federationsender_queue_edus (
|
||||||
-- The JSON NID from the federationsender_queue_edus_json table.
|
-- The JSON NID from the federationsender_queue_edus_json table.
|
||||||
json_nid BIGINT NOT NULL,
|
json_nid BIGINT NOT NULL,
|
||||||
-- The expiry time of this edu, if any.
|
-- The expiry time of this edu, if any.
|
||||||
expires_at BIGINT
|
expires_at BIGINT NOT NULL DEFAULT 0
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_edus_json_nid_idx
|
CREATE UNIQUE INDEX IF NOT EXISTS federationsender_queue_edus_json_nid_idx
|
||||||
|
|
@ -108,7 +108,7 @@ func (s *queueEDUsStatements) InsertQueueEDU(
|
||||||
eduType string,
|
eduType string,
|
||||||
serverName gomatrixserverlib.ServerName,
|
serverName gomatrixserverlib.ServerName,
|
||||||
nid int64,
|
nid int64,
|
||||||
expiresAt *gomatrixserverlib.Timestamp,
|
expiresAt gomatrixserverlib.Timestamp,
|
||||||
) error {
|
) error {
|
||||||
stmt := sqlutil.TxStmt(txn, s.insertQueueEDUStmt)
|
stmt := sqlutil.TxStmt(txn, s.insertQueueEDUStmt)
|
||||||
_, err := stmt.ExecContext(
|
_, err := stmt.ExecContext(
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ type FederationQueuePDUs interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
type FederationQueueEDUs interface {
|
type FederationQueueEDUs interface {
|
||||||
InsertQueueEDU(ctx context.Context, txn *sql.Tx, eduType string, serverName gomatrixserverlib.ServerName, nid int64, expiresAt *gomatrixserverlib.Timestamp) error
|
InsertQueueEDU(ctx context.Context, txn *sql.Tx, eduType string, serverName gomatrixserverlib.ServerName, nid int64, expiresAt gomatrixserverlib.Timestamp) error
|
||||||
DeleteQueueEDUs(ctx context.Context, txn *sql.Tx, serverName gomatrixserverlib.ServerName, jsonNIDs []int64) error
|
DeleteQueueEDUs(ctx context.Context, txn *sql.Tx, serverName gomatrixserverlib.ServerName, jsonNIDs []int64) error
|
||||||
SelectQueueEDUs(ctx context.Context, txn *sql.Tx, serverName gomatrixserverlib.ServerName, limit int) ([]int64, error)
|
SelectQueueEDUs(ctx context.Context, txn *sql.Tx, serverName gomatrixserverlib.ServerName, limit int) ([]int64, error)
|
||||||
SelectQueueEDUReferenceJSONCount(ctx context.Context, txn *sql.Tx, jsonNID int64) (int64, error)
|
SelectQueueEDUReferenceJSONCount(ctx context.Context, txn *sql.Tx, jsonNID int64) (int64, error)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue