Skip to content

Fail to start db on Windows #3042

@nodtem66

Description

@nodtem66

This is an issue for the PR #3020

Describe the bug

When working with waspc/examples/todoApp, Wasp-cli failed to start db on Windows.

To Reproduce
Steps to reproduce the behavior:

  • Clone commit 610469f
  • Install Docker Desktop
  • Install GHCup for building exe
  • Change directory to ./waspc/example/todoApp/
  • Start db from docker
cabal run wasp-cli -- start db
  • The console will show this error:
wasp-cli: Network.Socket.connect: <socket: 1200>: failed (Connection refused (WSAECONNREFUSED))

Problem

This problem is related to the function to check if port is accepting connections or not.

-- | Tests if port is accepting connections.
-- Does so by trying to connect via socket to it (connection is closed immediately).
-- It returns True if connection succeeds, or False if connection is refused
-- (because port is not opened, nobody is listening on it).
-- Rethrows connection exceptions in all other cases (e.g. when the host
-- is unroutable).
checkIfPortIsAcceptingConnections :: S.SockAddr -> IO Bool
checkIfPortIsAcceptingConnections sockAddr = do
bracket createSocket S.close' $ \sock ->
try
( do
S.connect sock sockAddr
)
>>= \case
Right () -> return True
Left e ->
if isConnRefusedException e
then return False
else throwIO e
where
createSocket = createIPv4TCPSocket
isConnRefusedException e = (Errno <$> ioe_errno e) == Just eCONNREFUSED

This exception on Windows does not have ioe_errno and we can get only the string Connection refused (WSAECONNREFUSED) from ioe_description

Environment:

  • OS: Windows 11 (Build 10.0.26100)
  • Cabal 3.12.1.0
  • Stack 3.3.1
  • HLS 2.10.0.0
  • GHC 8.10.7 (base-4.14.3.0)
  • Docker version 28.3.2, build 578ccf6

PS. I'm working on this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingwindows

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions