Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Mizu
Commits
88e3fba1
Unverified
Commit
88e3fba1
authored
3 years ago
by
Igor Gov
Committed by
GitHub
3 years ago
Browse files
Options
Download
Email Patches
Plain Diff
Fix: tapper status race condition (#788)
parent
a4066da5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
agent/pkg/api/socket_server_handlers.go
+3
-0
agent/pkg/api/socket_server_handlers.go
agent/pkg/api/utils.go
+20
-0
agent/pkg/api/utils.go
agent/pkg/controllers/config_controller.go
+4
-3
agent/pkg/controllers/config_controller.go
agent/pkg/controllers/status_controller.go
+2
-14
agent/pkg/controllers/status_controller.go
with
29 additions
and
17 deletions
+29
-17
agent/pkg/api/socket_server_handlers.go
+
3
-
0
View file @
88e3fba1
...
...
@@ -34,9 +34,12 @@ func (h *RoutesEventHandlers) WebSocketConnect(socketId int, isTapper bool) {
tappers
.
Connected
()
}
else
{
logger
.
Log
.
Infof
(
"Websocket event - Browser socket connected, socket ID: %d"
,
socketId
)
socketListLock
.
Lock
()
browserClientSocketUUIDs
=
append
(
browserClientSocketUUIDs
,
socketId
)
socketListLock
.
Unlock
()
BroadcastTappedPodsStatus
()
}
}
...
...
This diff is collapsed.
Click to expand it.
agent/pkg/api/utils.go
0 → 100644
+
20
-
0
View file @
88e3fba1
package
api
import
(
"encoding/json"
"github.com/up9inc/mizu/agent/pkg/providers/tappedPods"
"github.com/up9inc/mizu/shared"
"github.com/up9inc/mizu/shared/logger"
)
func
BroadcastTappedPodsStatus
()
{
tappedPodsStatus
:=
tappedPods
.
GetTappedPodsStatus
()
message
:=
shared
.
CreateWebSocketStatusMessage
(
tappedPodsStatus
)
if
jsonBytes
,
err
:=
json
.
Marshal
(
message
);
err
!=
nil
{
logger
.
Log
.
Errorf
(
"Could not Marshal message %v"
,
err
)
}
else
{
BroadcastToBrowserClients
(
jsonBytes
)
}
}
This diff is collapsed.
Click to expand it.
agent/pkg/controllers/config_controller.go
+
4
-
3
View file @
88e3fba1
...
...
@@ -7,6 +7,7 @@ import (
"time"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/api"
"github.com/up9inc/mizu/agent/pkg/config"
"github.com/up9inc/mizu/agent/pkg/models"
"github.com/up9inc/mizu/agent/pkg/providers"
...
...
@@ -36,7 +37,7 @@ func PostTapConfig(c *gin.Context) {
tappedPods
.
Set
([]
*
shared
.
PodInfo
{})
tappers
.
ResetStatus
()
b
roadcastTappedPodsStatus
()
api
.
B
roadcastTappedPodsStatus
()
}
var
tappedNamespaces
[]
string
...
...
@@ -135,7 +136,7 @@ func startMizuTapperSyncer(ctx context.Context, provider *kubernetes.Provider, t
}
tappedPods
.
Set
(
kubernetes
.
GetPodInfosForPods
(
tapperSyncer
.
CurrentlyTappedPods
))
b
roadcastTappedPodsStatus
()
api
.
B
roadcastTappedPodsStatus
()
case
tapperStatus
,
ok
:=
<-
tapperSyncer
.
TapperStatusChangedOut
:
if
!
ok
{
logger
.
Log
.
Debug
(
"mizuTapperSyncer tapper status changed channel closed, ending listener loop"
)
...
...
@@ -143,7 +144,7 @@ func startMizuTapperSyncer(ctx context.Context, provider *kubernetes.Provider, t
}
tappers
.
SetStatus
(
&
tapperStatus
)
b
roadcastTappedPodsStatus
()
api
.
B
roadcastTappedPodsStatus
()
case
<-
ctx
.
Done
()
:
logger
.
Log
.
Debug
(
"mizuTapperSyncer event listener loop exiting due to context done"
)
return
...
...
This diff is collapsed.
Click to expand it.
agent/pkg/controllers/status_controller.go
+
2
-
14
View file @
88e3fba1
package
controllers
import
(
"encoding/json"
"net/http"
"github.com/gin-gonic/gin"
...
...
@@ -39,18 +38,7 @@ func PostTappedPods(c *gin.Context) {
logger
.
Log
.
Infof
(
"[Status] POST request: %d tapped pods"
,
len
(
requestTappedPods
))
tappedPods
.
Set
(
requestTappedPods
)
broadcastTappedPodsStatus
()
}
func
broadcastTappedPodsStatus
()
{
tappedPodsStatus
:=
tappedPods
.
GetTappedPodsStatus
()
message
:=
shared
.
CreateWebSocketStatusMessage
(
tappedPodsStatus
)
if
jsonBytes
,
err
:=
json
.
Marshal
(
message
);
err
!=
nil
{
logger
.
Log
.
Errorf
(
"Could not Marshal message %v"
,
err
)
}
else
{
api
.
BroadcastToBrowserClients
(
jsonBytes
)
}
api
.
BroadcastTappedPodsStatus
()
}
func
PostTapperStatus
(
c
*
gin
.
Context
)
{
...
...
@@ -67,7 +55,7 @@ func PostTapperStatus(c *gin.Context) {
logger
.
Log
.
Infof
(
"[Status] POST request, tapper status: %v"
,
tapperStatus
)
tappers
.
SetStatus
(
tapperStatus
)
b
roadcastTappedPodsStatus
()
api
.
B
roadcastTappedPodsStatus
()
}
func
GetConnectedTappersCount
(
c
*
gin
.
Context
)
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help