Skip to content

Commit e0bf2b7

Browse files
committed
Added dialer for firecracker socket
Signed-off-by: Plamen Petrov <[email protected]>
1 parent c810db3 commit e0bf2b7

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)
@@ -1711,3 +1714,28 @@ func (s *service) startFirecrackerProcess() error {
17111714

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

0 commit comments

Comments
 (0)