summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Piashchynski <[email protected]>2021-01-24 17:04:32 +0300
committerValery Piashchynski <[email protected]>2021-01-24 17:04:32 +0300
commit3d4ae78320223ad3a1f7b7f6615c2d53283edb3c (patch)
tree4b726debfb8f939d42e093541f860c87bf1cd4e8
parent597a8338be25490f9c8d17f81253303c41113e83 (diff)
Add simple workflow documentation
-rw-r--r--codecov.yml2
-rw-r--r--pkg/doc/README.md21
-rw-r--r--pkg/doc/pool_workflow.drawio2
-rw-r--r--pkg/doc/pool_workflow.svg3
-rw-r--r--pkg/doc/workflow.drawio1
-rw-r--r--pkg/events/pool_events.go2
-rw-r--r--pkg/events/worker_events.go2
7 files changed, 29 insertions, 4 deletions
diff --git a/codecov.yml b/codecov.yml
index 45fccc1d..43716f56 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -17,5 +17,7 @@ ignore:
- "plugins/kv/boltdb/plugin_unit_test.go"
- "plugins/kv/memcached/plugin_unit_test.go"
- "plugins/kv/memory/plugin_unit_test.go"
+ - "pkg/events/pool_events.go"
+ - "pkg/events/worker_events.go"
- "interfaces"
- "systemd" \ No newline at end of file
diff --git a/pkg/doc/README.md b/pkg/doc/README.md
new file mode 100644
index 00000000..4f726f4a
--- /dev/null
+++ b/pkg/doc/README.md
@@ -0,0 +1,21 @@
+This is the drawio diagrams showing basic workflows inside RoadRunner 2.0
+
+Simple HTTP workflow description:
+![alt text](pool_workflow.svg)
+
+1. Allocate sync workers. When plugin starts (which use workers pool), then it allocates required number of processes
+ via `cmd.exec` command.
+
+2. When user send HTTP request to the RR2, HTTP plugin receive it and transfer to the workers pool `Exec/ExecWithContex`
+method. And workers pool ask Worker watcher to get free worker.
+
+3. Workers watcher uses stack data structure under the hood and making POP operation to get first free worker. If there are
+no workers in the `stack`, watcher waits for the specified via config (`allocate_timeout`) time.
+
+4. Stack returns free worker to the watcher.
+5. Watcher returns that worker to the `pool`.
+6. Pool invoke `Exec/ExecWithTimeout` method on the golang worker with provided request payload.
+7. Golang worker send that request to the PHP worker via various set of transports (`pkg/transport` package).
+8. PHP worker send back response to the golang worker (or error via stderr).
+9. Golang worker return response payload to the pool.
+10. Pool process this response and return answer to the user. \ No newline at end of file
diff --git a/pkg/doc/pool_workflow.drawio b/pkg/doc/pool_workflow.drawio
index eb8c6e2b..0cf6b735 100644
--- a/pkg/doc/pool_workflow.drawio
+++ b/pkg/doc/pool_workflow.drawio
@@ -1 +1 @@
-<mxfile host="Electron" modified="2021-01-24T11:14:51.346Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.141 Electron/11.2.1 Safari/537.36" etag="GQtnGIg3isNoi1zTMbXz" version="14.1.8" type="device"><diagram id="8w40hpb1-UDYxj1ewOsN" name="Page-1">1VjRcqIwFP0aHtsBIoqP1brdne1Od9cH9TFCgGyBy4RYoV+/CQQBQWutXWf7wJCT3GtyzslNqIamUfbAcBL8AJeEmqm7mYbuNdMcG7Z4SiAvARuhEvAZdUvIqIE5fSUK1BW6oS5JWwM5QMhp0gYdiGPi8BaGGYNte5gHYftXE+yTDjB3cNhFF9TlQTU78Vf3fCXUD3inK8LVeAWkAXZh24DQTENTBsDLtyibklDSV1FTxn050LubGyMxPyVgaWFrtHryf3+f2U8La5L9CrwbleUFhxu15gWwZ8JSAS4wdwLC1Ox5XrHCYBO7RGbVNTTZBpSTeYId2bsVNhBYwKNQtAzx6tEwnEIIrIhFnkeGjiPwlDN4Jo0edzRe6zKhmhFhnGQHl2rsCBTeIxARznIxRAWYQ8W58t1Og21LxRILGvoNFIaVcfxd6ppY8aK4fQfPgw6LxBVWU01gPAAfYhzOanTS5rke8wiQKHb/EM5ztW/whkObe5JRvmy8r2SqW0u17jOVuWjkVSMWy102G40o2azDilYVV65PLuq4ZoID2DCHHOHKVDsdM5/wI+NQvwcYCTGnL+15XFxQs7NxvsWUUxxKMT60Yy7gf8No+3/n9av537qm/2vPrxo9b/m/tvyq5fhP9z860f8HPPBv/D/s+P9B/qY49+SDB/I5z2OnPE561X/Ea3FdaCkmto8fi3dHkCai0ERuAyoO5DvVEVHXLc1BUvqK10U+yX8CNObFIq2JZt0f20fqtqCC6wO6qdVhEx/cdPqtMR6YrX2nqv7JiqjcP+VaGkPA81LhhH3JdlM4X0XUUXGWEefq9Wv//L5+/Rp1iJpC7IqCD3GXrQCi9SY9427keY7edzfyvOJeeRFu0R63qI9bs4fb4Wdxa3e4jeGM46KnjITE4z1FZA2cQ1SUcPdOfibInAmJS0QdJ/YJQnTK/Zu1ffReuaob+rk1RKWx7L0b8f5OKU8bFXX5QjPuaJyLD7vPFJnLS8J/obB+a4+sljo31f3tg6oP0F4dtU5T/TJHkGjWX7fl8Pq/BGj2Fw==</diagram></mxfile> \ No newline at end of file
+<mxfile host="Electron" modified="2021-01-24T13:49:48.387Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.141 Electron/11.2.1 Safari/537.36" etag="yjVAcAZO-7k1Kdqrt_AB" version="14.1.8" type="device"><diagram id="8w40hpb1-UDYxj1ewOsN" name="Page-1">7Vxbd5u4Fv41WevMQ71AQlwekzRtZ52Z1UzTczJ9JCDbnGLkAbmx59cfCZCNLgQnXNw443bFIJBA+vb+9kWSL+D1avsxD9fL30mM0wtgxdsL+P4CAOABcMH/W/GuKrF916lKFnkSV2XWoeAu+RvXN4rSTRLjoi6riighKU3WcmFEsgxHVCoL85w8yrfNSRpLBetwgbWCuyhM9dL7JKbLutR2g8OFTzhZLMWjXVR3cBWKu+uuFMswJo+NInhzAa9zQmh1tNpe45QPnzwwH1qu7t8sxxk9psKfKETet8+LL/++8T/fo6vtH8v5O7du5keYbuouXwA3ZQ1eLdkld8GP7pLVmg0IsP5T4Jx95fivDS6ouJE98nBv3Ve6EyOYk00WY/4OFrv8uEwovluHEb/6yISGP4iuUnZms8M5yeiHcJWkXF7+i/M4zEJWHKbJImMlKZ7zZ/zAOU0YRpd1MSW8mXmSptckJXn5XDgP5h5/7FVBc/IdN65AFwYw3r8rbw1vWwfV3kPFpByTFab5jt1SV0AIVVVqAXeExD82pSWopWXZkBRfiHhYi+hi3/gBRHZQ4/gMTO1AAwHHTKrrU5LTJVmQLExvDqVXMkyHe34jfHBLcP6HKd3VKhpuKJGhw9uE/smrzwCqT781Lr3f1k2XJztxkrEON2vx82/Ni4d65Zmo2CIoVcd5b5/Gkw0O2eQRfmoUa7YJ8wWmT9zX0GVJQHKchjT5Ib+ICeu66i1J2CvuBStwXUmwbEsUiDaqN6urKSKzf4+XSxHQmeEj7w5jNv6n2GURF3OSfy854V+3n2/ZF1njnHWbZL8YZfC38IFZCEluhG5HDCHWkq7dqySOKxHFRfJ3+FC2x2VgzbteDga6ukDvu6TCoOe11ajbPFB1U16eULFWVnhnzSzXkQH0q7OeYvHOtuFMphz2MBtYjQ9UJYXM5wUeR0iQJiTwjQMPXM+TTcIwwDsK7MHMciaD2TutRfGaFsU61qJ4kkWxX41FgT0NSi/nQfBUQ6PRWWt0JdutGs0U2nGgTLhwGI1WiRzNfDiVRkNLt+78SXuD/nYR5xxuuzLkYBDEIVJNt+3MXDQV5rpDd1+CXbDC+5BGSwPuz4velAhsjt0oMkVgsRc8WJ2k2yswC6BiLmHtFDUDM1SLTDMuc8cKy5xT2lBxXBrQmTCnXSZUishme3N6MgsKXoMFte1TAn0A9znR92sFuoUDnsfTl3ke7ho31KaplcZ9lVrqeOsgNFWLw5I30Nj7Mk1JFFItGi/O2nrbT/M+s97IcUeJwETqWrSqGIoRwy+oYW/mmLeDsQ2RLaExkE8uQ/wOzWxvMpQ1kH/NEpowABnlD+mXxSH250a/zI18/DAf1S/zfJk8fcvgl1kGv0xVt+HstTm+/Sdd/iyLDSey2P2gdjUda+a075gVvT//+LcS+KdzmJYc/3oDWVBPCYDdmes1U9dgMrJ1NEkAbxx0yBxZGZyBQNcS195kNhWelNvloNt7WdTtnT4aO5bbITgluUOd3N2zVmn4tEozJxmhgXQYzYCsxEoT42mwY6blVzX1xJDo0OHy7BbnCRsuLn8/m2I7PRX7RXkW24K+JHQiVvhwbAXP6argoX4VkIUUqR8h9+MY4n+xqOw8qc1psSR7arOASLO+lNomoC7dx7zDWVy+c7EmWcFjDsY87M+SH26KMw88OlCtFrIoM2TD5O48ILcK/Nlk02668t5sccSa4l/3CV1es/HHW6pB/2pzPOrcmzHHY5p7Gy3H0xLcvSov4vQLWISi/5zTMrblyNafFXRZ844a45hzoAcq5rnhc+F90GXNIXQUgh4onQ+U3INtT7jGBgQazr9ywgvLjOM8x/xrP2V3XXJhzst2ZMNfMNfT/m9LKoAlz+OJKZKeUuGrGSkmFY7TTENOFt0CfRnWHQ2j76WtZKayfUq3l3OAsB87JufABw989fCUzoFt+ademQN1RT3tFgopbwiOzBvu/YNmtdPmDcGR/kLLep3GavoA9rQIE/j5QJMixdH/mqww2ZyRo28DV7bbRk9frKWcxNOHeriljXexDNf8cJ7i7SXfJFjqRlwfvo/SsCiSSNHNg1s+xMzrS5ZrDaiZKOinmQ14TUwtynoaatsSaS6RnrOVnS1VR7U9UKbMoJLos6bdTQX1XJC6mbJFSDer9DKipOnVlR7gLSkSvtGK3fJAKCUrg9tXbYzs3l85hFkPlI2QYs9jQ1TgpEZd38iwz77VI95MvrWsey8TM6P52twFKCpvYFx0bNuXNcl3TERtwAeMthxaX47+BUe4Wo5xSJC+ETw839fxsCfFQ9/Kp40+ayZZF1gGQBBVwSiUsuiFYt1LqcIqk5cyn9dXxhts11XSkWLqoIOa4GhDrSeA9KHuDDcaEKgivzcIDa+GrHFWldTxh/8kHNOsDe90VIRUGpyc7p3ZZqnoO5Wg7PjfM+lEnoTjacJzm24WScbK9gtGyy3Y50qerrIWwQt0fZ6WO8Va5H+WGU2SLnBaNmFPs84I6RGmeXv0uSRqUedqfOCI35HpvdBIrjFetgaddkv7mWT4nKPzCH2NcT+V1WNB/7xVtmtTux1Y8mLfgSbcghk0b5afYLmNnsVvWczfa1Mz4v+M+dby044yL27+ClX5GSicRM7PtqsG6QmvKhvOurVLSRifq3dqO6g71RJM6p3qkf0X/OOtZFocNfNrmm6cNlrQierT16/817PWdSDXi69a2EehMT/C5t9mePARl+BhksJI2VEidn5ItOTrYy/S5YOPvatPuGvD/RNMDx3vonV6XqglWDrRFA7yArmN46dwrGCG/MbPnMmipU4kjJyGEROfzTQMIekRNNrUxIxk+FnMalJ+mR5aJErT831KdgiStZxuknWm5FhXD9I/kjTMFqysxSt8G0hBNXlmMocmT3E8qHT35PYTt4ZHT8mdI05I3ZliwMkbBiZ2evgV4oofD7/mDG/+Dw==</diagram></mxfile> \ No newline at end of file
diff --git a/pkg/doc/pool_workflow.svg b/pkg/doc/pool_workflow.svg
new file mode 100644
index 00000000..241d1f40
--- /dev/null
+++ b/pkg/doc/pool_workflow.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1200px" height="811px" viewBox="-0.5 -0.5 1200 811" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2021-01-24T13:50:46.650Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.141 Electron/11.2.1 Safari/537.36&quot; etag=&quot;_nB9udEQ3zLikF__OL7C&quot; version=&quot;14.1.8&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;8w40hpb1-UDYxj1ewOsN&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="0" y="0" width="1199" height="810" fill="#f9f7ed" stroke="#36393d" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1197px; height: 1px; padding-top: 7px; margin-left: 2px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><h1>Simple User request</h1></div></div></div></foreignObject><text x="2" y="19" fill="#000000" font-family="Verdana" font-size="12px">Simple User request</text></switch></g><path d="M 417.5 574 L 417.5 657.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 417.5 662.88 L 414 655.88 L 417.5 657.63 L 421 655.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 616px; margin-left: 313px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Give me sync worker (POP operation)</div></div></div></foreignObject><text x="313" y="620" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">Give me sync worker (POP operation)</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 617px; margin-left: 418px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">3</div></div></div></foreignObject><text x="418" y="620" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">3</text></switch></g><path d="M 492.5 514 L 492.5 430.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 492.5 425.12 L 496 432.12 L 492.5 430.37 L 489 432.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 464px; margin-left: 493px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">5</div></div></div></foreignObject><text x="493" y="468" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">5</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 465px; margin-left: 527px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Get worker</div></div></div></foreignObject><text x="527" y="468" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">Get worker</text></switch></g><rect x="380" y="514" width="150" height="60" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 544px; margin-left: 381px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Workers Watcher</div></div></div></foreignObject><text x="455" y="548" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Workers Watcher</text></switch></g><path d="M 330 404 L 373.63 404" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 378.88 404 L 371.88 407.5 L 373.63 404 L 371.88 400.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 280 424 L 280 544 L 373.63 544" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 378.88 544 L 371.88 547.5 L 373.63 544 L 371.88 540.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 515px; margin-left: 221px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Allocate sync workers</div></div></div></foreignObject><text x="221" y="518" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">Allocate sync workers</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 514px; margin-left: 280px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">1</div></div></div></foreignObject><text x="280" y="518" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">1</text></switch></g><rect x="230" y="384" width="100" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 404px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Initialize</div></div></div></foreignObject><text x="280" y="408" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Initialize</text></switch></g><path d="M 417.5 424 L 417.5 507.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 417.5 512.88 L 414 505.88 L 417.5 507.63 L 421 505.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 464px; margin-left: 358px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Give me SyncWorker</div></div></div></foreignObject><text x="358" y="467" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">Give me SyncWorker</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 464px; margin-left: 418px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">2</div></div></div></foreignObject><text x="418" y="468" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">2</text></switch></g><path d="M 530 414 L 700.63 414" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 705.88 414 L 698.88 417.5 L 700.63 414 L 698.88 410.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 416px; margin-left: 627px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">6</div></div></div></foreignObject><text x="627" y="419" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">6</text></switch></g><path d="M 492.5 384 L 483 384 L 483 324 L 520 324 L 520 83 L 468.87 83" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 463.62 83 L 470.62 79.5 L 468.87 83 L 470.62 86.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 224px; margin-left: 521px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">10</div></div></div></foreignObject><text x="521" y="227" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">10</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 597px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">Send response to the user</div></div></div></foreignObject><text x="597" y="228" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">Send response to the user</text></switch></g><rect x="380" y="384" width="150" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 404px; margin-left: 381px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Exec/ExecWithContext</div></div></div></foreignObject><text x="455" y="408" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Exec/ExecWithContext</text></switch></g><path d="M 492.5 664 L 492.5 624 L 492.5 580.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 492.5 575.12 L 496 582.12 L 492.5 580.37 L 489 582.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 616px; margin-left: 494px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">4</div></div></div></foreignObject><text x="494" y="620" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">4</text></switch></g><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 617px; margin-left: 582px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">I have free workers, here you are</div></div></div></foreignObject><text x="582" y="620" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">I have free workers, here you are</text></switch></g><rect x="380" y="664" width="150" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 694px; margin-left: 381px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Stack with workers</div></div></div></foreignObject><text x="455" y="698" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Stack with workers</text></switch></g><path d="M 707 394 L 536.37 394" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 531.12 394 L 538.12 390.5 L 536.37 394 L 538.12 397.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 394px; margin-left: 627px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">9</div></div></div></foreignObject><text x="627" y="397" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">9</text></switch></g><rect x="707" y="384" width="163" height="40" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 161px; height: 1px; padding-top: 404px; margin-left: 708px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Exec/ExecWithTimeout</div></div></div></foreignObject><text x="789" y="408" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Exec/ExecWithTimeout</text></switch></g><path d="M 450 289.5 L 460 289.5 L 460 364.5 L 470.5 364.5 L 455 383.5 L 439.5 364.5 L 450 364.5 Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="455" cy="84.5" rx="7.5" ry="7.5" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 455 92 L 455 117 M 455 97 L 440 97 M 455 97 L 470 97 M 455 117 L 440 137 M 455 117 L 470 137" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 144px; margin-left: 455px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">User request</div></div></div></foreignObject><text x="455" y="156" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">User...</text></switch></g><rect x="625" y="424" width="160" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 434px; margin-left: 705px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Send request to the worker</div></div></div></foreignObject><text x="705" y="438" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Send request to the worker</text></switch></g><rect x="625" y="366" width="110" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 376px; margin-left: 680px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Receive response</div></div></div></foreignObject><text x="680" y="380" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Receive response</text></switch></g><ellipse cx="125" cy="404" rx="11" ry="11" fill="#000000" stroke="#ff0000" pointer-events="all"/><path d="M 140 404 L 227.76 404" fill="none" stroke="#ff0000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 219.88 408.5 L 228.88 404 L 219.88 399.5" fill="none" stroke="#ff0000" stroke-miterlimit="10" pointer-events="all"/><rect x="70" y="369" width="110" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 379px; margin-left: 125px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Plugin Initialization</div></div></div></foreignObject><text x="125" y="383" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Plugin Initializat...</text></switch></g><path d="M 870 414 L 983.63 414" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 988.88 414 L 981.88 417.5 L 983.63 414 L 981.88 410.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 415px; margin-left: 911px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">7</div></div></div></foreignObject><text x="911" y="418" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">7</text></switch></g><path d="M 990 394 L 876.37 394" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 871.12 394 L 878.12 390.5 L 876.37 394 L 878.12 397.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 395px; margin-left: 910px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 11px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">8</div></div></div></foreignObject><text x="910" y="398" fill="#000000" font-family="Verdana" font-size="11px" text-anchor="middle">8</text></switch></g><rect x="990" y="384" width="100" height="40" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 404px; margin-left: 991px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Worker</div></div></div></foreignObject><text x="1040" y="408" fill="#333333" font-family="Verdana" font-size="12px" text-anchor="middle">Worker</text></switch></g><rect x="895" y="424" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 434px; margin-left: 940px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Exec payload</div></div></div></foreignObject><text x="940" y="438" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Exec payload</text></switch></g><rect x="880" y="364" width="110" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 374px; margin-left: 935px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Reveive response</div></div></div></foreignObject><text x="935" y="378" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Reveive response</text></switch></g><rect x="401" y="255" width="108" height="34" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 106px; height: 1px; padding-top: 272px; margin-left: 402px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">HTTP plugin</div></div></div></foreignObject><text x="455" y="276" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">HTTP plugin</text></switch></g><path d="M 450 157.5 L 460 157.5 L 460 235.5 L 470.5 235.5 L 455 254.5 L 439.5 235.5 L 450 235.5 Z" fill="none" stroke="#000000" stroke-linejoin="round" stroke-miterlimit="10" pointer-events="all"/><rect x="490" y="364" width="40" height="20" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 374px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Pool</div></div></div></foreignObject><text x="510" y="378" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Pool</text></switch></g><rect x="770" y="364" width="100" height="20" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 374px; margin-left: 771px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Golang Worker</div></div></div></foreignObject><text x="820" y="378" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">Golang Worker</text></switch></g><rect x="1020" y="364" width="70" height="20" fill="none" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 374px; margin-left: 1021px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Verdana; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PHP worker</div></div></div></foreignObject><text x="1055" y="378" fill="#000000" font-family="Verdana" font-size="12px" text-anchor="middle">PHP worker</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg> \ No newline at end of file
diff --git a/pkg/doc/workflow.drawio b/pkg/doc/workflow.drawio
deleted file mode 100644
index d32d7b2d..00000000
--- a/pkg/doc/workflow.drawio
+++ /dev/null
@@ -1 +0,0 @@
-<mxfile host="Electron" modified="2021-01-23T19:13:52.763Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.141 Electron/11.2.1 Safari/537.36" etag="OK65Xj3LZBjWN0qK7Y8T" version="14.1.8" type="device"><diagram id="8w40hpb1-UDYxj1ewOsN" name="Page-1">jZJNT4QwEIZ/TY8mQCWy10XUxJiNclg9NnSWNimUdIuAv95iW6Ahm8iBzDzz0enbQThvxmdFOvYmKQiURHRE+BElySHOzH8GkwUZxhbUilOL4hWU/AccjBztOYVrkKilFJp3Iaxk20KlA0aUkkOYdpEiPLUjNexAWRGxp2dONfPTmW+NvACvmd6FGuLzHbgyQuWwQbhAOFdSams1Yw5ils9LY+uebkSX2RS0+j8FnylJH75O9cdrkZ3O6XF8Z5c71+WbiN7d2Q2rJy+Ckn1LYW4SIXwcGNdQdqSao4N5dcOYboTxYmO6dqA0jDfnjJfbm8UB2YBWk0nxBV4wtzQH5w7BC1jGNtrfO0bco9dL51UUYzhdvLvq/xfb7DEufgE=</diagram></mxfile> \ No newline at end of file
diff --git a/pkg/events/pool_events.go b/pkg/events/pool_events.go
index 2cc76eee..3925df56 100644
--- a/pkg/events/pool_events.go
+++ b/pkg/events/pool_events.go
@@ -3,7 +3,7 @@ package events
// TODO event numbers
const (
// EventWorkerConstruct thrown when new worker is spawned.
- EventWorkerConstruct P = iota + 7800
+ EventWorkerConstruct P = iota + 10000
// EventWorkerDestruct thrown after worker destruction.
EventWorkerDestruct
diff --git a/pkg/events/worker_events.go b/pkg/events/worker_events.go
index 2bff1811..9d428f7d 100644
--- a/pkg/events/worker_events.go
+++ b/pkg/events/worker_events.go
@@ -2,7 +2,7 @@ package events
const (
// EventWorkerError triggered after WorkerProcess. Except payload to be error.
- EventWorkerError W = iota + 200
+ EventWorkerError W = iota + 11000
// EventWorkerLog triggered on every write to WorkerProcess StdErr pipe (batched). Except payload to be []byte string.
EventWorkerLog