aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/rpcserver/rpcserver.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-07-01 18:24:06 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-07-04 12:34:14 +0000
commit891bf15f3ceb3f69eaf590882ba3f245811c1698 (patch)
tree7cee7d7754929871f1337cb509cb1fa76ee477bb /pkg/rpcserver/rpcserver.go
parent092c1914a191f5858db674b4e367c6848500429e (diff)
pkg/rpcserver: remove direct accesses to Runner fields
Diffstat (limited to 'pkg/rpcserver/rpcserver.go')
-rw-r--r--pkg/rpcserver/rpcserver.go31
1 files changed, 9 insertions, 22 deletions
diff --git a/pkg/rpcserver/rpcserver.go b/pkg/rpcserver/rpcserver.go
index 35b628715..da4faa19a 100644
--- a/pkg/rpcserver/rpcserver.go
+++ b/pkg/rpcserver/rpcserver.go
@@ -198,24 +198,18 @@ func (serv *Server) VMState() map[string]VMState {
func (serv *Server) MachineInfo(name string) []byte {
serv.mu.Lock()
runner := serv.runners[name]
- if runner != nil && (runner.conn == nil || runner.stopped) {
- runner = nil
- }
serv.mu.Unlock()
- if runner == nil {
+ if runner == nil || !runner.alive() {
return []byte("VM is not alive")
}
- return runner.machineInfo
+ return runner.getMachineInfo()
}
func (serv *Server) RunnerStatus(name string) []byte {
serv.mu.Lock()
runner := serv.runners[name]
- if runner != nil && (runner.conn == nil || runner.stopped) {
- runner = nil
- }
serv.mu.Unlock()
- if runner == nil {
+ if runner == nil || !runner.alive() {
return []byte("VM is not alive")
}
return runner.queryStatus()
@@ -244,13 +238,11 @@ func (serv *Server) handleConn(conn *flatrpc.Conn) {
serv.mu.Lock()
runner := serv.runners[name]
- if runner == nil || runner.stopped {
- serv.mu.Unlock()
- log.Logf(2, "VM %v shut down before connect", name)
+ serv.mu.Unlock()
+ if runner == nil {
+ log.Logf(2, "unknown VM %v tries to connect", name)
return
}
- serv.mu.Unlock()
- defer close(runner.finished)
opts := &handshakeConfig{
VMLess: serv.cfg.VMLess,
@@ -447,7 +439,6 @@ func (serv *Server) CreateInstance(name string, injectExec chan<- bool) {
sysTarget: serv.sysTarget,
injectExec: injectExec,
infoc: make(chan chan []byte),
- finished: make(chan bool),
requests: make(map[int64]*queue.Request),
executing: make(map[int64]bool),
lastExec: MakeLastExecuting(serv.cfg.Procs, 6),
@@ -469,13 +460,9 @@ func (serv *Server) CreateInstance(name string, injectExec chan<- bool) {
func (serv *Server) StopFuzzing(name string) {
serv.mu.Lock()
runner := serv.runners[name]
- runner.stopped = true
- conn := runner.conn
serv.info[name] = VMState{StateStopping, time.Now()}
serv.mu.Unlock()
- if conn != nil {
- conn.Close()
- }
+ runner.stop()
}
func (serv *Server) ShutdownInstance(name string, crashed bool) ([]ExecRecord, []byte) {
@@ -484,7 +471,7 @@ func (serv *Server) ShutdownInstance(name string, crashed bool) ([]ExecRecord, [
delete(serv.runners, name)
serv.info[name] = VMState{StateOffline, time.Now()}
serv.mu.Unlock()
- return runner.shutdown(crashed)
+ return runner.shutdown(crashed), runner.getMachineInfo()
}
func (serv *Server) DistributeSignalDelta(plus signal.Signal) {
@@ -508,7 +495,7 @@ func (serv *Server) foreachRunnerAsync(fn func(runner *Runner)) {
serv.mu.Lock()
defer serv.mu.Unlock()
for _, runner := range serv.runners {
- if runner.conn != nil {
+ if runner.alive() {
go fn(runner)
}
}