Skip to content

Commit

Permalink
Mark room to be removed when receive terminated ping
Browse files Browse the repository at this point in the history
  • Loading branch information
reinaldooli committed Jul 28, 2023
1 parent c3fa734 commit 433e679
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
3 changes: 2 additions & 1 deletion config/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ workers:
operationsTTL: 24h
healthControllerInterval: 1m
storageClenupInterval: 3h
metricsReporter:
reporter:
metrics:
intervalMillis: 10000

services:
Expand Down
21 changes: 14 additions & 7 deletions internal/core/entities/game_room/game_room.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ const (
GameStatusTerminating
// GameStatusError room has errors (e.g. CrashLoopBackoff in kubernetes)
GameStatusError
// GameStatusTerminated room has terminated.
GameStatusTerminated
)

func (status GameRoomStatus) String() string {
Expand All @@ -62,6 +64,8 @@ func (status GameRoomStatus) String() string {
return "terminating"
case GameStatusError:
return "error"
case GameStatusTerminated:
return "terminated"
default:
panic(fmt.Sprintf("invalid value for GameRoomStatus: %d", int(status)))
}
Expand Down Expand Up @@ -163,9 +167,10 @@ var validStatusTransitions = map[GameRoomStatus]map[GameRoomStatus]struct{}{
GameStatusReady: struct{}{},
},
GameStatusTerminating: {
GameStatusError: struct{}{},
GameStatusUnready: struct{}{},
GameStatusReady: struct{}{},
GameStatusError: struct{}{},
GameStatusUnready: struct{}{},
GameStatusReady: struct{}{},
GameStatusTerminated: struct{}{},
},
}

Expand Down Expand Up @@ -202,17 +207,19 @@ var roomStatusComposition = []struct {
{GameRoomPingStatusTerminating, InstanceReady, GameStatusTerminating},
{GameRoomPingStatusTerminating, InstanceTerminating, GameStatusTerminating},
{GameRoomPingStatusTerminating, InstanceUnknown, GameStatusTerminating},
{GameRoomPingStatusTerminated, InstancePending, GameStatusTerminating},
{GameRoomPingStatusTerminated, InstanceReady, GameStatusTerminating},
{GameRoomPingStatusTerminated, InstanceTerminating, GameStatusTerminating},
{GameRoomPingStatusTerminated, InstanceUnknown, GameStatusTerminating},

// Error
{GameRoomPingStatusUnknown, InstanceError, GameStatusError},
{GameRoomPingStatusReady, InstanceError, GameStatusError},
{GameRoomPingStatusOccupied, InstanceError, GameStatusError},
{GameRoomPingStatusTerminating, InstanceError, GameStatusError},
{GameRoomPingStatusTerminated, InstanceError, GameStatusError},

// Terminated
{GameRoomPingStatusTerminated, InstancePending, GameStatusTerminated},
{GameRoomPingStatusTerminated, InstanceReady, GameStatusTerminated},
{GameRoomPingStatusTerminated, InstanceTerminating, GameStatusTerminated},
{GameRoomPingStatusTerminated, InstanceUnknown, GameStatusTerminated},
}

// RoomComposedStatus returns a game room status formed by a game room ping status and an instance status
Expand Down
2 changes: 2 additions & 0 deletions internal/core/operations/healthcontroller/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ func (ex *Executor) findAvailableAndExpiredRooms(ctx context.Context, op *operat
expiredRoomsIDs = append(expiredRoomsIDs, gameRoomId)
case ex.isRoomTerminatingExpired(room):
expiredRoomsIDs = append(expiredRoomsIDs, gameRoomId)
case ex.isRoomStatus(room, game_room.GameStatusTerminated):
expiredRoomsIDs = append(expiredRoomsIDs, gameRoomId)
case ex.isRoomStatus(room, game_room.GameStatusTerminating):
continue
case ex.isRoomStatus(room, game_room.GameStatusError):
Expand Down

0 comments on commit 433e679

Please sign in to comment.