Commit 81c4ef1e authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Improve matchmaker cancellation handling.

parent 71fa2b53
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -523,7 +523,7 @@ func storageWriteObject(ctx context.Context, logger *zap.Logger, metrics Metrics
		if err == sql.ErrNoRows {
			if object.Version != "" && object.Version != "*" {
				// Conditional write with a specific version but the object did not exist at all.
				metrics.StorageOccErrorCount(map[string]string{"collection": object.Collection}, 1)
				metrics.StorageRejectCount(map[string]string{"collection": object.Collection}, 1)
				return nil, runtime.ErrStorageRejectedVersion
			}
		} else {
@@ -536,7 +536,7 @@ func storageWriteObject(ctx context.Context, logger *zap.Logger, metrics Metrics
		// An object existed, and it's a conditional write that either:
		// - Expects no object.
		// - Or expects a given version, but it does not match.
		metrics.StorageOccErrorCount(map[string]string{"collection": object.Collection}, 1)
		metrics.StorageRejectCount(map[string]string{"collection": object.Collection}, 1)
		return nil, runtime.ErrStorageRejectedVersion
	}

@@ -605,14 +605,14 @@ func storageWriteObject(ctx context.Context, logger *zap.Logger, metrics Metrics
		logger.Debug("Could not write storage object, exec error.", zap.Any("object", object), zap.String("query", query), zap.Error(err))
		var pgErr *pgconn.PgError
		if errors.As(err, &pgErr) && pgErr.Code == dbErrorUniqueViolation {
			metrics.StorageOccErrorCount(map[string]string{"collection": object.Collection}, 1)
			metrics.StorageRejectCount(map[string]string{"collection": object.Collection}, 1)
			return nil, runtime.ErrStorageRejectedVersion
		}
		return nil, err
	}
	if rowsAffected, err := res.RowsAffected(); rowsAffected != 1 {
		logger.Debug("Could not write storage object, rowsAffected error.", zap.Any("object", object), zap.String("query", query), zap.Error(err))
		metrics.StorageOccErrorCount(map[string]string{"collection": object.Collection}, 1)
		metrics.StorageRejectCount(map[string]string{"collection": object.Collection}, 1)
		return nil, runtime.ErrStorageRejectedVersion
	}

+1 −0
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@ func (s *testMetrics) GaugeSessions(value float64)
func (s *testMetrics) GaugePresences(value float64)                                         {}
func (s *testMetrics) Matchmaker(tickets, activeTickets float64, processTime time.Duration) {}
func (s *testMetrics) PresenceEvent(dequeueElapsed, processElapsed time.Duration)           {}
func (s *testMetrics) StorageRejectCount(tags map[string]string, delta int64)               {}
func (s *testMetrics) CustomCounter(name string, tags map[string]string, delta int64)       {}
func (s *testMetrics) CustomGauge(name string, tags map[string]string, value float64)       {}
func (s *testMetrics) CustomTimer(name string, tags map[string]string, value time.Duration) {}
+9 −2
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ type Matchmaker interface {
	Resume()
	Stop()
	OnMatchedEntries(fn func(entries [][]*MatchmakerEntry))
	Add(presences []*MatchmakerPresence, sessionID, partyId, query string, minCount, maxCount, countMultiple int, stringProperties map[string]string, numericProperties map[string]float64) (string, int64, error)
	Add(ctx context.Context, presences []*MatchmakerPresence, sessionID, partyId, query string, minCount, maxCount, countMultiple int, stringProperties map[string]string, numericProperties map[string]float64) (string, int64, error)
	Insert(extracts []*MatchmakerExtract) error
	Extract() []*MatchmakerExtract
	RemoveSession(sessionID, ticket string) error
@@ -681,7 +681,7 @@ func (m *LocalMatchmaker) Process() {
	}
}

func (m *LocalMatchmaker) Add(presences []*MatchmakerPresence, sessionID, partyId, query string, minCount, maxCount, countMultiple int, stringProperties map[string]string, numericProperties map[string]float64) (string, int64, error) {
func (m *LocalMatchmaker) Add(ctx context.Context, presences []*MatchmakerPresence, sessionID, partyId, query string, minCount, maxCount, countMultiple int, stringProperties map[string]string, numericProperties map[string]float64) (string, int64, error) {
	// Check if the matchmaker has been stopped.
	if m.stopped.Load() {
		return "", 0, runtime.ErrMatchmakerNotAvailable
@@ -739,6 +739,13 @@ func (m *LocalMatchmaker) Add(presences []*MatchmakerPresence, sessionID, partyI

	m.Lock()

	select {
	case <-ctx.Done():
		m.Unlock()
		return "", 0, nil
	default:
	}

	// Check if all presences are allowed to create more tickets.
	for _, presence := range presences {
		if existingTickets := m.sessionTickets[presence.SessionId]; len(existingTickets) >= m.config.GetMatchmaker().MaxTickets {
+46 −46
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ package server
import (
	"context"
	"errors"
	"go.uber.org/atomic"
	"io/ioutil"
	"math"
	"os"
@@ -28,6 +27,7 @@ import (
	"github.com/gofrs/uuid"
	"github.com/heroiclabs/nakama-common/rtapi"
	"github.com/heroiclabs/nakama-common/runtime"
	"go.uber.org/atomic"
	"go.uber.org/zap"
	"google.golang.org/protobuf/encoding/protojson"
)
@@ -42,7 +42,7 @@ func TestMatchmakerAddOnly(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -70,7 +70,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -92,7 +92,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) {
		t.Fatalf("error matchmaker remove: %v", err)
	}

	ticket, _, err = matchMaker.Add([]*MatchmakerPresence{
	ticket, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -114,7 +114,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) {
		t.Fatalf("error matchmaker remove: %v", err)
	}

	ticket, _, err = matchMaker.Add([]*MatchmakerPresence{
	ticket, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -136,7 +136,7 @@ func TestMatchmakerAddRemoveRepeated(t *testing.T) {
		t.Fatalf("error matchmaker remove: %v", err)
	}

	ticket, _, err = matchMaker.Add([]*MatchmakerPresence{
	ticket, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -387,7 +387,7 @@ func TestMatchmakerAddAndRemove(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -426,7 +426,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -445,7 +445,7 @@ func TestMatchmakerAddWithBasicMatch(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -537,7 +537,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		{
			UserId:    "a",
			SessionId: "a",
@@ -556,7 +556,7 @@ func TestMatchmakerAddWithMatchOnStar(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -654,7 +654,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		{
			UserId:    "a",
			SessionId: "a",
@@ -673,7 +673,7 @@ func TestMatchmakerAddWithMatchOnRange(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -771,7 +771,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -796,7 +796,7 @@ func TestMatchmakerAddWithMatchOnRangeAndValue(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -897,7 +897,7 @@ func TestMatchmakerAddRemoveNotMatch(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -944,7 +944,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -967,7 +967,7 @@ func TestMatchmakerAddButNotMatch(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1016,7 +1016,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) {
	testID, _ := uuid.NewV4()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -1041,7 +1041,7 @@ func TestMatchmakerAddButNotMatchOnRange(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1092,7 +1092,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) {
	testID, _ := uuid.NewV4()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -1118,7 +1118,7 @@ func TestMatchmakerAddButNotMatchOnRangeAndValue(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1167,7 +1167,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) {
	testID, _ := uuid.NewV4()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -1191,7 +1191,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1215,7 +1215,7 @@ func TestMatchmakerAddMultipleAndSomeMatch(t *testing.T) {
	}

	sessionID3, _ := uuid.NewV4()
	ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket3, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "c",
			SessionId: "c",
@@ -1269,7 +1269,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) {
	testID, _ := uuid.NewV4()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -1295,7 +1295,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1321,7 +1321,7 @@ func TestMatchmakerAddMultipleAndSomeMatchWithBoost(t *testing.T) {
	}

	sessionID3, _ := uuid.NewV4()
	ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket3, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "c",
			SessionId: "c",
@@ -1387,7 +1387,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T
	testID, _ := uuid.NewV4()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -1411,7 +1411,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1435,7 +1435,7 @@ func TestMatchmakerAddMultipleAndSomeMatchOptionalTextAlteringScore(t *testing.T
	}

	sessionID3, _ := uuid.NewV4()
	ticket3, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket3, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "c",
			SessionId: "c",
@@ -1487,7 +1487,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "a",
			SessionId: "a",
@@ -1510,7 +1510,7 @@ func TestMatchmakerAddAndMatchAuthoritative(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1739,7 +1739,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	ticket1, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket1, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		{
			UserId:    "a",
			SessionId: "a",
@@ -1759,7 +1759,7 @@ func TestMatchmakerRequireMutualMatch(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	ticket2, _, err := matchMaker.Add([]*MatchmakerPresence{
	ticket2, _, err := matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1821,7 +1821,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	_, _, err = matchMaker.Add([]*MatchmakerPresence{
	_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		{
			UserId:    "a",
			SessionId: "a",
@@ -1843,7 +1843,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	_, _, err = matchMaker.Add([]*MatchmakerPresence{
	_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1865,7 +1865,7 @@ func TestMatchmakerRequireMutualMatchLarger(t *testing.T) {
	}

	sessionID3, _ := uuid.NewV4()
	_, _, err = matchMaker.Add([]*MatchmakerPresence{
	_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "c",
			SessionId: "c",
@@ -1923,7 +1923,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) {
	defer cleanup()

	sessionID, _ := uuid.NewV4()
	_, _, err = matchMaker.Add([]*MatchmakerPresence{
	_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		{
			UserId:    "a",
			SessionId: "a",
@@ -1945,7 +1945,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) {
	}

	sessionID2, _ := uuid.NewV4()
	_, _, err = matchMaker.Add([]*MatchmakerPresence{
	_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "b",
			SessionId: "b",
@@ -1967,7 +1967,7 @@ func TestMatchmakerRequireMutualMatchLargerReversed(t *testing.T) {
	}

	sessionID3, _ := uuid.NewV4()
	_, _, err = matchMaker.Add([]*MatchmakerPresence{
	_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
		&MatchmakerPresence{
			UserId:    "c",
			SessionId: "c",
@@ -2126,7 +2126,7 @@ func benchmarkMatchmakerHelper(b *testing.B, activeCount, minCount, maxCount, co
			matchQuery, props := withQueryAndProps(matchMakerAdded)

			sessionID, _ := uuid.NewV4()
			_, _, err = matchMaker.Add([]*MatchmakerPresence{
			_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
				{
					UserId:    sessionID.String(),
					SessionId: sessionID.String(),
@@ -2181,7 +2181,7 @@ func TestMatchmakerMaxPartyTracking(t *testing.T) {

	createTicketFunc := func(party string) error {
		sessionID, _ := uuid.NewV4()
		_, _, err = matchMaker.Add([]*MatchmakerPresence{
		_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
			&MatchmakerPresence{
				UserId:    sessionID.String(),
				SessionId: sessionID.String(),
@@ -2261,7 +2261,7 @@ func TestMatchmakerMaxSessionTracking(t *testing.T) {
	defer cleanup()

	createTicketFunc := func(sessionID uuid.UUID) error {
		_, _, err = matchMaker.Add([]*MatchmakerPresence{
		_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
			&MatchmakerPresence{
				UserId:    sessionID.String(),
				SessionId: sessionID.String(),
@@ -2354,7 +2354,7 @@ func benchmarkMatchmakerProcessTickets(ticketsMax int32, unmatchable int, minCou
		userID, _ := uuid.NewV4()
		userIDStr := userID.String()

		_, _, err = matchMaker.Add([]*MatchmakerPresence{
		_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
			{
				UserId:    userIDStr,
				SessionId: sessionIDStr,
@@ -2385,7 +2385,7 @@ func benchmarkMatchmakerProcessTickets(ticketsMax int32, unmatchable int, minCou
			userID, _ := uuid.NewV4()
			userIDStr := userID.String()

			_, _, err = matchMaker.Add([]*MatchmakerPresence{
			_, _, err = matchMaker.Add(context.Background(), []*MatchmakerPresence{
				{
					UserId:    userIDStr,
					SessionId: sessionIDStr,
+3 −3
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ type Metrics interface {

	PresenceEvent(dequeueElapsed, processElapsed time.Duration)

	StorageOccErrorCount(tags map[string]string, delta int64)
	StorageRejectCount(tags map[string]string, delta int64)

	CustomCounter(name string, tags map[string]string, delta int64)
	CustomGauge(name string, tags map[string]string, value float64)
@@ -431,12 +431,12 @@ func (m *LocalMetrics) PresenceEvent(dequeueElapsed, processElapsed time.Duratio
	m.PrometheusScope.Timer("presence_event_process_latency_ms").Record(processElapsed)
}

func (m *LocalMetrics) StorageOccErrorCount(tags map[string]string, delta int64) {
func (m *LocalMetrics) StorageRejectCount(tags map[string]string, delta int64) {
	scope := m.PrometheusScope
	if len(tags) != 0 {
		scope = scope.Tagged(tags)
	}
	scope.Counter("storage_occ_error_count").Inc(delta)
	scope.Counter("storage_reject_count").Inc(delta)
}

// CustomCounter adds the given delta to a counter with the specified name and tags.
Loading