Skip to content

Commit 0fe7d17

Browse files
plamenmpetrovustiugov
authored andcommitted
Added dialer for firecracker socket
Signed-off-by: Plamen Petrov <[email protected]>
1 parent 67aece3 commit 0fe7d17

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

runtime/service.go

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -788,7 +788,10 @@ func (s *service) LoadSnapshot(ctx context.Context, req *proto.LoadSnapshotReque
788788
s.logger.WithError(err).Error("startFirecrackerProcess returned an error")
789789
return nil, err
790790
}
791-
time.Sleep(200 * time.Millisecond)
791+
792+
if err := s.dialFirecrackerSocket(); err != nil {
793+
s.logger.WithError(err).Error("Failed to wait for firecracker socket")
794+
}
792795
s.createHTTPControlClient()
793796

794797
loadSnapReq, err := formLoadSnapReq(req.SnapshotFilePath, req.MemFilePath)
@@ -1704,3 +1707,28 @@ func (s *service) startFirecrackerProcess() error {
17041707

17051708
return nil
17061709
}
1710+
1711+
func (s *service) dialFirecrackerSocket() error {
1712+
for {
1713+
var d net.Dialer
1714+
ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
1715+
defer cancel()
1716+
1717+
c, err := d.DialContext(ctx, "unix", s.shimDir.FirecrackerSockPath())
1718+
if err != nil {
1719+
if ctx.Err() != nil {
1720+
s.logger.WithError(ctx.Err()).Error("timed out while waiting for firecracker socket")
1721+
return ctx.Err()
1722+
}
1723+
1724+
time.Sleep(1 * time.Millisecond)
1725+
continue
1726+
}
1727+
1728+
c.Close()
1729+
1730+
break
1731+
}
1732+
1733+
return nil
1734+
}

0 commit comments

Comments
 (0)