Skip to content

Dynalite takes a long time to close (5 seconds) #181

@reconbot

Description

@reconbot

Describe the issue
When using dynalite for testing I open a new dynalite for each test case and create new in memory tables.

async function startserver() {
  const server = createServer({ createTableMs: 0, deleteTableMs: 0, updateTableMs: 0 })
  const port = await getPortPromise() // `port-finder` is magic btw
  await new Promise((resolve) => server.listen(port, resolve))
  return server
}

And then close it after each test case

async function stopServer(server) {
   await new Promise((resolve, reject) => server.close(err => err ? reject(err) : resolve()))
}

However the close takes forever! So I often skip it and pray. But why does it take forever? I believe the AWS-SDK keeps the connection open. Since it's an http server you can actually close all connections which reduces the time to close to mere milliseconds.

async function stopServer(server) {
   const closePromise = new Promise((resolve, reject) => server.close(err => err ? reject(err) : resolve()))
   server.closeAllConnections()
   await closePromise
}

This isn't so much a bug as something people will run into so I wanted to document it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions