{"_id":"middy-event-loop-tracer","_rev":"3-30ae3f6e74751a85e5627a0f32412f7f","name":"middy-event-loop-tracer","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"middy-event-loop-tracer","version":"1.0.0","description":"Middy AWS Lambda event loop tracer middleware","author":{"name":"Serkan Özal","email":"serkanozal86@gmail.com","url":"https://github.com/serkan-ozal"},"homepage":"https://github.com/serkan-ozal/middy-event-loop-tracer","repository":{"type":"git","url":"git+https://github.com/serkan-ozal/middy-event-loop-tracer.git"},"license":"MIT","main":"src/index.js","keywords":["middy","serverless","aws","lambda"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"prettier --config .prettierrc.json --write ./src/*.js","release-patch":"release-it --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-minor":"release-it minor --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-major":"release-it major --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-minor-without-tag":"release-it minor --ci --no-git.commit --no-git.push --no-git.tag --no-git.tagName='v${version}' --no-github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks"},"peerDependencies":{"@middy/core":"^2.5.3"},"devDependencies":{"prettier":"^2.2.1","release-it":"^14.5.0"},"gitHead":"6bf5c67435dbe4d5afb8fa9debfd387c043bc584","bugs":{"url":"https://github.com/serkan-ozal/middy-event-loop-tracer/issues"},"_id":"middy-event-loop-tracer@1.0.0","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-lFI5icXbx/a5lPLirqFUXJ54RIUl0kwTk4fZ416RGjKeIkwJs+3XS4knJzyMyJ5r6TyVA6xf/CoOB8YA8+4Z8w==","shasum":"cbe5785086b2e60cf408a28019c20e8f8e604671","tarball":"https://registry.npmjs.org/middy-event-loop-tracer/-/middy-event-loop-tracer-1.0.0.tgz","fileCount":5,"unpackedSize":14058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpmJ4CRA9TVsSAnZWagAACXUP/iU6UOaBtV5Xtwqmyc7g\nxfGmTK5f3bb2WF8o9ODYuw8X7i3BdWtunV/W56pZl3Nk49q/2IGBDO724h+l\n5kxG6OYBUCtNNhGdWhCXsybwhL6q+n2KSyb8nluJHiYSGXaeQVuHz4YV9Odj\nxsSpjQRGVzumsFjUsg5GxVEV1FpnYdUaDh+7hXOyfeWUlJ1dw+qZ5YAybee7\n93qKXiJqkELefDsyAJ4CcJaxOW+EJBE6TadaxMLX0i1Iv8hcvMnCAFQMn5e+\nYfev1ADDlwVM8r7NaXuGW6BnwTlzriXbTP3goVK9GcagMoKGoLcPh3EEjprY\npbmbT/gq+u/6FBvPglTADexuN8966u1G5uFREKziYJEbjighMHKq7Kj2pwl9\nXhjTW2poPaCEwfXiZygWuSIinNlqCnRxFuBJadxiynZ+aVO6fyVI1wFCJii8\nSDaZKdnQOBdwvqjhCqveZTkT89R7A90tkKy2h0hra7Yd1ZUgg10cKO6F8d9w\nAohRzd1EpQisbl8/7K0WK10xkjdoYlXNADMnkRtPB26Bg15/QxhZ1Nyduf+w\n4pCQ2Ip44/hTq3G+Kwt8N5Fu27pMSUCz4IyfwXCnvejsjzcXFYb+3ARnSc7y\n7c7BGInz9WzDpM0pZrmq9LIELQ3neky2uPkuhQeudccjukaySQoRgIdxa87Q\ntw0h\r\n=5YZB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQcTsMuMyj4xoxHad1C/UFIt4zZEcoIHE6IufjwsYv9QIhAJ/N9LcCfiJV10alICFj50LGlf7L4PsEzKSpi23ufs0I"}]},"_npmUser":{"name":"serkan-ozal","email":"serkanozal86@gmail.com"},"directories":{},"maintainers":[{"name":"serkan-ozal","email":"serkanozal86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middy-event-loop-tracer_1.0.0_1638294136390_0.6949610703097473"},"_hasShrinkwrap":false},"1.0.1":{"name":"middy-event-loop-tracer","version":"1.0.1","description":"Middy AWS Lambda event loop tracer middleware","author":{"name":"Serkan Özal","email":"serkanozal86@gmail.com","url":"https://github.com/serkan-ozal"},"homepage":"https://github.com/serkan-ozal/middy-event-loop-tracer","repository":{"type":"git","url":"git+https://github.com/serkan-ozal/middy-event-loop-tracer.git"},"license":"MIT","main":"src/index.js","keywords":["middy","serverless","aws","lambda"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"prettier --config .prettierrc.json --write ./src/*.js","release-patch":"release-it --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-minor":"release-it minor --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-major":"release-it major --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-minor-without-tag":"release-it minor --ci --no-git.commit --no-git.push --no-git.tag --no-git.tagName='v${version}' --no-github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks"},"peerDependencies":{"@middy/core":"^2.5.3"},"devDependencies":{"prettier":"^2.2.1","release-it":"^14.5.0"},"gitHead":"574d66e56e4f0e1ae6aafd0278b4dd49c6503649","bugs":{"url":"https://github.com/serkan-ozal/middy-event-loop-tracer/issues"},"_id":"middy-event-loop-tracer@1.0.1","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-UbyAf1sIuvMC712w1PM9PdkVcPibi/dYum6lq7/TOrzNQUIHixI7M5VZGZgFBSe9lGGGTlj9C5IKKxQUyLORew==","shasum":"0c3d13e66e753b6054110bda3cf316d94d5538e9","tarball":"https://registry.npmjs.org/middy-event-loop-tracer/-/middy-event-loop-tracer-1.0.1.tgz","fileCount":5,"unpackedSize":14827,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCB+nMKks4ANTe9hsxAfA9ykJFMttwPkP45RJUQKIkrWgIgeu8by6RA262SQii9x4uF93UFGffHRtdbQp8e82x78ME="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiikivACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzQg//Wt5xwFjcsxeFEOF7BoBI0U1XF8nlsPTIxKLJpA74Yl0v0rXy\r\n19UmL9aRn/oFcP5wXznIGRPK3jmadc4TWP8nZ4C4lod3owCMgFL+elpVOQSU\r\nWxgasd/Zu4Vm4fpLgEeJWXYRhuXWp52XDL0tPPkAU0FwAWW0IOVawkR+TBwC\r\nFiwfFSKpCAqrVRZKXMi3IIYjFkefQyXNsVGSRew/4wfZW0fT8hKzO7utSv6n\r\nN40oBwewAbWs6HbfnX4uS5Jyit1EqVmcgbLmWuuaAcDYW791h+cjLwO2Qs/J\r\np0254kR0R0hsBiynZ9tCa/7rwI7xfeLOo9xDc3CLU7skLD19f65iXW07fWVg\r\nch3R5+ThYuPQ48AxjwllqYdbGwPtVg8O1eny8z28VY8BnQ2KL9wSjsG0lPNl\r\nv70zT+LAdAz1azD+jcPvTz03DnznCYx50NR2JP/HZ0Qo++IW0uoNKq3nUuO2\r\n1g0ODv3EbgqC/bSQImiSV+s9JGvYMrPway6IcDAKGy7thGVX5EIb3f9IttpG\r\nxAXzKuwhm9CSYFxRC/re7Bi12lPb6I/V9ABxy2rBEX7TlMmWezLyInntjr7o\r\nUIloLEIDIWKCxI8seD+zEGxHHPv1mHyfITvT8AfA/uP4wXBANWNNreYiZkDr\r\nb39J4oZV1ZXcv+FjZZU10iQDglh7qP8+uw8=\r\n=9Pip\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"serkan-ozal","email":"serkanozal86@gmail.com"},"directories":{},"maintainers":[{"name":"serkan-ozal","email":"serkanozal86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middy-event-loop-tracer_1.0.1_1653229743556_0.39702398116453996"},"_hasShrinkwrap":false},"1.1.0":{"name":"middy-event-loop-tracer","version":"1.1.0","description":"Middy AWS Lambda event loop tracer middleware","author":{"name":"Serkan Özal","email":"serkanozal86@gmail.com","url":"https://github.com/serkan-ozal"},"homepage":"https://github.com/serkan-ozal/middy-event-loop-tracer","repository":{"type":"git","url":"git+https://github.com/serkan-ozal/middy-event-loop-tracer.git"},"license":"MIT","main":"src/index.js","keywords":["middy","serverless","aws","lambda"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1","lint":"prettier --config .prettierrc.json --write ./src/*.js","release-patch":"release-it --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-minor":"release-it minor --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-major":"release-it major --ci --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks","release-minor-without-tag":"release-it minor --ci --no-git.commit --no-git.push --no-git.tag --no-git.tagName='v${version}' --no-github.release --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks"},"peerDependencies":{"@middy/core":"^2.5.3"},"devDependencies":{"prettier":"^2.2.1","release-it":"^14.5.0"},"gitHead":"7dae4231cd6ee823d702fa7cf337a9427f8fa17a","bugs":{"url":"https://github.com/serkan-ozal/middy-event-loop-tracer/issues"},"_id":"middy-event-loop-tracer@1.1.0","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-QCoaQKTq401L6bAgNO/hlQLdAQzTcIfoi2oSVdhRuShDa2/ZccrTNGvHOJucqO6aPkA6XmsRgEnKA9NMYzFcDw==","shasum":"b2df6e8cff6ef8fec2eb1ac2f07aa737d698b134","tarball":"https://registry.npmjs.org/middy-event-loop-tracer/-/middy-event-loop-tracer-1.1.0.tgz","fileCount":11,"unpackedSize":20616,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDOQ+RmEc4JL/jA95Pl6eHUpalOXJKz5WsIH1aZoFYLbAiAw+a5rTdL+y0WPM/QkWeARjQRV7TbIYoEwXbjZPAEiXQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi0S1EACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJ7A//SZsNQLQ4VAEE8ldLmwC3jK8tGx3cby599I4D5+EqOae3ZKWY\r\nLAOWGC28AQoYKKTduc98b5I9+Z0SUALhAzNyFIj65knF1i1Kc005DNN3j6oX\r\ncnmkNQyLuHSEu1eKClHetlNzpzK29MHujnaAEOOgycpvNCFRGE71U/IP+LfY\r\nC5X86lBhrQCbQcGWKqOTw0VKuIrGQRwM8gn9kqv+Os/y0zKAlTv8tW5LWojv\r\nyFHheaa4YLELi0EizsfU/mpH6I5VbMHYqBpibmeKaqB+NGxrGsgKZXEkacwg\r\nbbvFYVQnsm9z6qgXPinkZwVyVBxjJCZQHZTRA8I/Uo6UOj9P7Zf7dtc0udSy\r\nVXjJxI7M2/mK1iIPM+i7CAR6M4tifAefH2+mG0Bmg8ndlkVRqjIi+k9GNjVu\r\nbMdaCMzz9R7X8WL7NY9HVIfpKrPOPlCQDVvBpWiv311rt2B7ybxqOyje778O\r\nk1JsKEeAsW5BKggSbejhVo3l+oeR1ewP05yw366ttTTWFz3EYk6nHCU+Homd\r\n/wpOfnySDAj1LQDOf+8awScFfWu+KnBHjfeQ+zRffA5KQlXX9MGxO7iCVoiC\r\nUDt3I41GpgZSKHnH90zkb2lobUxetDSmYkJZGIm9GnNf6oi4yF7vhL4x9e9v\r\nQcpGA+rntGTqFLCzCRzkZz7wWfxtRy8J51k=\r\n=mJUb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"serkan-ozal","email":"serkanozal86@gmail.com"},"directories":{},"maintainers":[{"name":"serkan-ozal","email":"serkanozal86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middy-event-loop-tracer_1.1.0_1657875780734_0.5079724515901147"},"_hasShrinkwrap":false}},"time":{"created":"2021-11-30T17:42:16.389Z","1.0.0":"2021-11-30T17:42:16.540Z","modified":"2022-07-15T09:03:00.987Z","1.0.1":"2022-05-22T14:29:03.706Z","1.1.0":"2022-07-15T09:03:00.909Z"},"maintainers":[{"name":"serkan-ozal","email":"serkanozal86@gmail.com"}],"description":"Middy AWS Lambda event loop tracer middleware","homepage":"https://github.com/serkan-ozal/middy-event-loop-tracer","keywords":["middy","serverless","aws","lambda"],"repository":{"type":"git","url":"git+https://github.com/serkan-ozal/middy-event-loop-tracer.git"},"author":{"name":"Serkan Özal","email":"serkanozal86@gmail.com","url":"https://github.com/serkan-ozal"},"bugs":{"url":"https://github.com/serkan-ozal/middy-event-loop-tracer/issues"},"license":"MIT","readme":"# middy-event-loop-tracer\n\nMiddy middleware for dumping active tasks with their stacktraces in the event queue just before AWS Lambda function timeouts. \nSo you can understand what was going on in the function when timeout happens. \n\nA sample event loop dump will look like this:\n```\nSTART RequestId: 90dc31a4-10cf-4485-8c8e-914891b4cddb Version: $LATEST\n2021-11-30T17:24:58.366Z\t90dc31a4-10cf-4485-8c8e-914891b4cddb\tINFO\tAbout timeout! Dumping active tasks in the event loop ...\n2021-11-30T17:24:58.366Z\t90dc31a4-10cf-4485-8c8e-914891b4cddb\tINFO\tTask groups:\n2021-11-30T17:24:58.366Z\t90dc31a4-10cf-4485-8c8e-914891b4cddb\tINFO\t- \n{\n    \"id\": \"PROMISE@90dc31a4-10cf-4485-8c8e-914891b4cddb_1662448958\",\n    \"type\": \"PROMISE\",\n    \"awsRequestId\": \"90dc31a4-10cf-4485-8c8e-914891b4cddb\",\n    \"count\": 1380,\n    \"stackTrace\": [\n        \"    at AsyncHook._initAsync (/var/task/src/middleware.js:95:11)\",\n        \"    at PromiseWrap.emitInitNative (internal/async_hooks.js:195:43)\",\n        \"    at new Promise (<anonymous>)\",\n        \"    at Request.promise (/var/runtime/node_modules/aws-sdk/lib/request.js:783:12)\",\n        \"    at myHandler (/var/task/src/index.js:31:46)\",\n        \"    at runRequest (/var/task/node_modules/@middy/core/index.js:86:32)\"\n    ]\n}\n\n2021-11-30T17:24:58.366Z\t90dc31a4-10cf-4485-8c8e-914891b4cddb\tINFO\t- \n{\n    \"id\": \"TCPWRAP@90dc31a4-10cf-4485-8c8e-914891b4cddb_842007963\",\n    \"type\": \"TCPWRAP\",\n    \"awsRequestId\": \"90dc31a4-10cf-4485-8c8e-914891b4cddb\",\n    \"count\": 50,\n    \"stackTrace\": [\n        \"    at AsyncHook._initAsync (/var/task/src/middleware.js:95:11)\",\n        \"    at TCP.emitInitNative (internal/async_hooks.js:195:43)\",\n        \"    at TLSSocket._wrapHandle (_tls_wrap.js:592:7)\",\n        \"    at new TLSSocket (_tls_wrap.js:499:18)\",\n        \"    at Object.connect (_tls_wrap.js:1595:19)\",\n        \"    at Agent.createConnection (https.js:132:22)\",\n        \"    at Agent.createSocket (_http_agent.js:321:26)\",\n        \"    at Agent.addRequest (_http_agent.js:275:10)\",\n        \"    at new ClientRequest (_http_client.js:297:16)\",\n        \"    at Object.request (https.js:316:10)\"\n    ]\n}\n\n2021-11-30T17:24:58.366Z\t90dc31a4-10cf-4485-8c8e-914891b4cddb\tINFO\t- \n{\n    \"id\": \"HTTPCLIENTREQUEST@90dc31a4-10cf-4485-8c8e-914891b4cddb_2122473569\",\n    \"type\": \"HTTPCLIENTREQUEST\",\n    \"awsRequestId\": \"90dc31a4-10cf-4485-8c8e-914891b4cddb\",\n    \"count\": 50,\n    \"stackTrace\": [\n        \"    at AsyncHook._initAsync (/var/task/src/middleware.js:95:11)\",\n        \"    at HTTPClientAsyncResource.emitInitNative (internal/async_hooks.js:195:43)\",\n        \"    at tickOnSocket (_http_client.js:679:10)\",\n        \"    at onSocketNT (_http_client.js:750:5)\",\n        \"    at processTicksAndRejections (internal/process/task_queues.js:84:21)\"\n    ]\n}\n\nEND RequestId: 90dc31a4-10cf-4485-8c8e-914891b4cddb\nREPORT RequestId: 90dc31a4-10cf-4485-8c8e-914891b4cddb\tDuration: 5005.41 ms\tBilled Duration: 5000 ms\tMemory Size: 1024 MB\tMax Memory Used: 139 MB\tInit Duration: 447.07 ms\t\n2021-11-30T17:24:58.869Z 90dc31a4-10cf-4485-8c8e-914891b4cddb Task timed out after 5.01 seconds\n```\n\n\n## Installation\n\nTo install the middleware, you can use NPM:\n\n```\nnpm install --save middy-event-loop-tracer\n```\n\n**Note:** Requires `@middy/core` version `2.0.0`+\n\n\n## Usage\n\n* Register `middy-event-loop-tracer` middleware in your handler:\n```javascript\nconst middy = require('@middy/core');\nconst eventLoopTracer = require('middy-event-loop-tracer');\n\nconst handler = async(event, context) => {\n  // Do something meaningful\n\n  return {\n    statusCode: 200,\n  }\n}\n\nmodule.exports.handler = middy(handler).use(eventLoopTracer());\n```\n\n* **Optionally**, you can configure timeout margin which is the minimum remaining time \nbefore the actual timeout happens to assume that invocation will timeout. \nSo we take action and dump the active tasks in the event loop because when the timeout happens, \nthe game is over and there is nothing to do.\nBy default, timeout margin is `500` milliseconds and \nit can be configured by *environment variable* or *options* passed to middleware:\n\n  - **By environment variable:**\n  Set `MIDDY_ELT_TIMEOUT_MARGIN` environment variable with the desired value for the timeout margin.\n  ```\n  MIDDY_ELT_TIMEOUT_MARGIN=250\n  ```  \n\n  - **By options:**\n  Pass the timeout margin through options.\n  ```javascript\n  const eventLoopTracer = require('middy-event-loop-tracer');\n\n  module.exports.handler = middy(handler).use(eventLoopTracer({timeoutMargin: 250}));\n  ```\n\n\n## Contributing\n\nEveryone is very welcome to contribute to this repository. \nFeel free to [raise issues](https://github.com/serkan-ozal/middy-event-loop-tracer/issues) \nor to [submit Pull Requests](https://github.com/serkan-ozal/middy-event-loop-tracer/pulls).\n\n\n## License\n\nLicensed under [MIT License](LICENSE).\n","readmeFilename":"README.md"}