Skip to content

Continue #51#54

Closed
cloudwu wants to merge 5 commits intomasterfrom
frameinit
Closed

Continue #51#54
cloudwu wants to merge 5 commits intomasterfrom
frameinit

Conversation

@cloudwu
Copy link
Owner

@cloudwu cloudwu commented Oct 31, 2025

#51 关闭后,我把分支删了。结果重新推的同名分支被 github 识别为新的。所以重新开一个 pr 。

@cloudwu
Copy link
Owner Author

cloudwu commented Oct 31, 2025

目前需要 ltask 实现 wasm 版的 semaphore https://github.com/cloudwu/ltask/blob/master/src/semaphore.h

对于非 web 场景,它完全复用了 cond ,不实现 sem_acquire() 的 try 语义,即 inf 永远认为是 1 。永远等待,不会失败。
在 web 场景,应该实现 inf == 0 的功能处理初始化场景:可在 emscripten_semaphore_try_acquire 失败时返回非 0 。在 web 环境下,如果 inf == 1 ,可以考虑循环调用 emscripten_semaphore_try_acquire 。这用于启动后的 frame callback 等待 render 同步。

ltask 的 mainthread_wait() 现在会根据返回值中断。见 https://github.com/cloudwu/ltask/blob/master/src/ltask.c#L1160
在非 web 场合中,不会抵达这个分支,所以行为和之前完全一致。

https://github.com/cloudwu/soluna/blob/frameinit/src/lualib/main.lua#L87-L95 这里利用这个新特性,会 yield(false) 所以,启动函数可能被多次调用 https://github.com/cloudwu/soluna/blob/frameinit/src/lualib/main.lua#L87-L95

而在 entry.c 中,https://github.com/cloudwu/soluna/blob/frameinit/src/entry.c#L746 检测到 init 流程返回 布尔 false 就维持原状态,待下一次 frame callback 继续调用。


如果想在非 web 环境测试这个新机制,可以在 https://github.com/cloudwu/soluna/blob/frameinit/src/lualib/main.lua#L87 之前插入

-- 推迟 100 帧再初始化
for i = 1, 100 do
  coroutine.yield(false)
end

@cloudwu
Copy link
Owner Author

cloudwu commented Oct 31, 2025

刚修改了一下 sem_* api 的名字,从 sem_acquire/sem_release 改为 sem_wait/sem_post 。我觉得语义和 https://man7.org/linux/man-pages/man3/sem_post.3.html 更一致一些。

即:sem_wait 等待 sem_post 发出的信号后返回。没有定义额外的 sem_trywait ,而使用 sem_wait 的参数区分。

@yuchanns
Copy link
Contributor

yuchanns commented Oct 31, 2025

我合并了你的分支,启动阶段顺利度过,ltask 开始调度了,但是还存在 service 死掉的情况,应该是我哪里没处理到。还有几个 worker 直接 Quit 了。看了下也没有进行到初始化 render 的阶段,发送给 start service 的消息没被处理。Root 直接 quit 了。

奇怪的是,我在 quit_all_workers 函数里加个打印,就不会有任何服务 dead 了. 但是也只是在忙调度,打印日志,实际上没有哪个虚拟机真实地去执行了 lua 代码 也有可能代码执行了,只是 print 打印不出来, 毕竟 fprintf 也打印不出来只能使用 emscripten_outf 打印,这点还待确认

日志
(索引):443 Adding font to zip: asset/font/ArialMT.ttf
(索引):443 Adding font to zip: asset/font/STYuanti-SC-Regular.ttf
(索引):585 font.zip prepared: (2) ['ArialMT', 'STYuanti-SC-Regular']
(索引):814 Soluna runtime ready
soluna.js:5334 [00000278:WORKER8] Start worker 8

soluna.js:5334 [00000279:WORKER8] Acquire schedule

soluna.js:5334 [00000280:WORKER8] Release schedule

soluna.js:5334 [00000281:WORKER8] Sleeping (2)

soluna.js:5334 [00000254:WORKER7] Start worker 7

soluna.js:5334 [00000255:WORKER7] Acquire schedule

soluna.js:5334 [00000256:WORKER7] Release schedule

soluna.js:5334 [00000257:WORKER7] Sleeping (2)

soluna.js:5334 [00000153:WORKER6] Start worker 6

soluna.js:5334 [00000154:WORKER6] Acquire schedule

soluna.js:5334 [00000155:WORKER6] Release schedule

soluna.js:5334 [00000156:WORKER6] Sleeping (2)

soluna.js:5334 [00000149:WORKER5] Start worker 5

soluna.js:5334 [00000150:WORKER5] Acquire schedule

soluna.js:5334 [00000151:WORKER5] Release schedule

soluna.js:5334 [00000152:WORKER5] Sleeping (2)

soluna.js:5334 [00000082:WORKER4] Start worker 4

soluna.js:5334 [00000083:WORKER4] Acquire schedule

soluna.js:5334 [00000084:WORKER4] Release schedule

soluna.js:5334 [00000085:WORKER4] Sleeping (2)

soluna.js:5334 [00000002:WORKER3] Start worker 3

soluna.js:5334 [00000003:WORKER3] Acquire schedule

soluna.js:5334 [00000007:WORKER3] Steal service 1

soluna.js:5334 [00000008:WORKER3] Release schedule

soluna.js:5334 [00000009:WORKER3] Run service 1

soluna.js:5334 [00000018:WORKER3] Acquire schedule

soluna.js:5334 [00000024:WORKER3] Steal service 1

soluna.js:5334 [00000025:WORKER3] Release schedule

soluna.js:5334 [00000026:WORKER3] Run service 1

soluna.js:5334 [00000035:WORKER3] Acquire schedule

soluna.js:5334 [00000042:WORKER3] Steal service 2

soluna.js:5334 [00000043:WORKER3] Release schedule

soluna.js:5334 [00000044:WORKER3] Run service 2

soluna.js:5334 [00000067:WORKER3] Acquire schedule

soluna.js:5334 [00000074:WORKER3] Steal service 1

soluna.js:5334 [00000075:WORKER3] Release schedule

soluna.js:5334 [00000076:WORKER3] Run service 1

soluna.js:5334 [00000100:WORKER3] Acquire schedule

soluna.js:5334 [00000106:WORKER3] Steal service 1

soluna.js:5334 [00000107:WORKER3] Release schedule

soluna.js:5334 [00000108:WORKER3] Run service 1

soluna.js:5334 [00000117:WORKER3] Acquire schedule

soluna.js:5334 [00000124:WORKER3] Steal service 3

soluna.js:5334 [00000125:WORKER3] Release schedule

soluna.js:5334 [00000126:WORKER3] Run service 3

soluna.js:5334 [00000157:WORKER3] Acquire schedule

soluna.js:5334 [00000164:WORKER3] Steal service 1

soluna.js:5334 [00000165:WORKER3] Release schedule

soluna.js:5334 [00000166:WORKER3] Run service 1

soluna.js:5334 [00000180:WORKER3] Acquire schedule

soluna.js:5334 [00000186:WORKER3] Steal service 1

soluna.js:5334 [00000187:WORKER3] Release schedule

soluna.js:5334 [00000188:WORKER3] Run service 1

soluna.js:5334 [00000197:WORKER3] Acquire schedule

soluna.js:5334 [00000204:WORKER3] Release schedule

soluna.js:5334 [00000205:WORKER3] Run service 1

soluna.js:5334 [00000208:WORKER3] Acquire schedule

soluna.js:5334 [00000211:WORKER3] Release schedule

soluna.js:5334 [00000212:WORKER3] Sleeping (3)

soluna.js:5334 [00000213:WORKER3] Wakeup

soluna.js:5334 [00000214:WORKER3] Acquire schedule

soluna.js:5334 [00000215:WORKER3] Release schedule

soluna.js:5334 [00000216:WORKER3] Sleeping (3)

soluna.js:5334 [00000004:WORKER2] Start worker 2

soluna.js:5334 [00000005:WORKER2] Sleeping (1)

soluna.js:5334 [00000132:WORKER2] Wakeup

soluna.js:5334 [00000133:WORKER2] Acquire schedule

soluna.js:5334 [00000134:WORKER2] Release schedule

soluna.js:5334 [00000135:WORKER2] Sleeping (3)

soluna.js:5334 [00000136:WORKER2] Wakeup

soluna.js:5334 [00000137:WORKER2] Acquire schedule

soluna.js:5334 [00000138:WORKER2] Release schedule

soluna.js:5334 [00000139:WORKER2] Sleeping (3)

soluna.js:5334 [00000169:WORKER2] Wakeup

soluna.js:5334 [00000172:WORKER2] Acquire schedule

soluna.js:5334 [00000174:WORKER2] Release schedule

soluna.js:5334 [00000175:WORKER2] Sleeping (3)

soluna.js:5334 [00000176:WORKER2] Wakeup

soluna.js:5334 [00000177:WORKER2] Acquire schedule

soluna.js:5334 [00000178:WORKER2] Release schedule

soluna.js:5334 [00000179:WORKER2] Sleeping (3)

soluna.js:5334 [00000189:WORKER2] Wakeup

soluna.js:5334 [00000190:WORKER2] Acquire schedule

soluna.js:5334 [00000191:WORKER2] Release schedule

soluna.js:5334 [00000192:WORKER2] Sleeping (3)

soluna.js:5334 [00000193:WORKER2] Wakeup

soluna.js:5334 [00000194:WORKER2] Acquire schedule

soluna.js:5334 [00000195:WORKER2] Release schedule

soluna.js:5334 [00000196:WORKER2] Sleeping (3)

soluna.js:5334 [00000206:WORKER2] Wakeup

soluna.js:5334 [00000207:WORKER2] Run service 4

soluna.js:5334 [00000226:WORKER2] Acquire schedule

soluna.js:5334 [00000233:WORKER2] Release schedule

soluna.js:5334 [00000234:WORKER2] Run service 4

soluna.js:5334 [00000237:WORKER2] Acquire schedule

soluna.js:5334 [00000240:WORKER2] Release schedule

soluna.js:5334 [00000241:WORKER2] Sleeping (2)

soluna.js:5334 [00000242:WORKER2] Wakeup

soluna.js:5334 [00000243:WORKER2] Acquire schedule

soluna.js:5334 [00000244:WORKER2] Release schedule

soluna.js:5334 [00000245:WORKER2] Sleeping (2)

soluna.js:5334 [00000267:WORKER2] Wakeup

soluna.js:5334 [00000268:WORKER2] Run service 1

soluna.js:5334 [00000269:WORKER2] Acquire schedule

soluna.js:5334 [00000272:WORKER2] Release schedule

soluna.js:5334 [00000273:WORKER2] Sleeping (2)

soluna.js:5334 [00000274:WORKER2] Wakeup

soluna.js:5334 [00000275:WORKER2] Acquire schedule

soluna.js:5334 [00000276:WORKER2] Release schedule

soluna.js:5334 [00000277:WORKER2] Sleeping (2)

soluna.js:5334 [00000291:WORKER2] Wakeup

soluna.js:5334 [00000292:WORKER2] Run service 5

soluna.js:5334 [00000300:WORKER2] Acquire schedule

soluna.js:5334 [00000305:WORKER2] Release schedule

soluna.js:5334 [00000306:WORKER2] Run service 5

soluna.js:5334 [00000319:WORKER2] Acquire schedule

soluna.js:5334 [00000322:WORKER2] Release schedule

soluna.js:5334 [00000323:WORKER2] Sleeping (2)

soluna.js:5334 [00000324:WORKER2] Wakeup

soluna.js:5334 [00000325:WORKER2] Acquire schedule

soluna.js:5334 [00000326:WORKER2] Release schedule

soluna.js:5334 [00000327:WORKER2] Sleeping (2)

soluna.js:5334 [00000337:WORKER2] Wakeup

soluna.js:5334 [00000338:WORKER2] Run service 1

soluna.js:5334 [00000346:WORKER2] Acquire schedule

soluna.js:5334 [00000349:WORKER2] Release schedule

soluna.js:5334 [00000350:WORKER2] Sleeping (1)

soluna.js:5334 [00000351:WORKER2] Wakeup

soluna.js:5334 [00000352:WORKER2] Acquire schedule

soluna.js:5334 [00000353:WORKER2] Release schedule

soluna.js:5334 [00000354:WORKER2] Sleeping (1)

soluna.js:5334 [00000059:WORKER1] Start worker 1

soluna.js:5334 [00000060:WORKER1] Acquire schedule

soluna.js:5334 [00000061:WORKER1] Release schedule

soluna.js:5334 [00000062:WORKER1] Sleeping (1)

soluna.js:5334 [00000063:WORKER1] Wakeup

soluna.js:5334 [00000064:WORKER1] Acquire schedule

soluna.js:5334 [00000065:WORKER1] Release schedule

soluna.js:5334 [00000066:WORKER1] Sleeping (1)

soluna.js:5334 [00000086:WORKER1] Wakeup

soluna.js:5334 [00000087:WORKER1] Acquire schedule

soluna.js:5334 [00000088:WORKER1] Release schedule

soluna.js:5334 [00000089:WORKER1] Sleeping (2)

soluna.js:5334 [00000090:WORKER1] Wakeup

soluna.js:5334 [00000091:WORKER1] Acquire schedule

soluna.js:5334 [00000092:WORKER1] Release schedule

soluna.js:5334 [00000093:WORKER1] Sleeping (2)

soluna.js:5334 [00000109:WORKER1] Wakeup

soluna.js:5334 [00000110:WORKER1] Acquire schedule

soluna.js:5334 [00000111:WORKER1] Release schedule

soluna.js:5334 [00000112:WORKER1] Sleeping (2)

soluna.js:5334 [00000113:WORKER1] Wakeup

soluna.js:5334 [00000114:WORKER1] Acquire schedule

soluna.js:5334 [00000115:WORKER1] Release schedule

soluna.js:5334 [00000116:WORKER1] Sleeping (2)

soluna.js:5334 [00000127:WORKER1] Wakeup

soluna.js:5334 [00000128:WORKER1] Acquire schedule

soluna.js:5334 [00000129:WORKER1] Steal service 1

soluna.js:5334 [00000130:WORKER1] Release schedule

soluna.js:5334 [00000131:WORKER1] Run service 1

soluna.js:5334 [00000140:WORKER1] Acquire schedule

soluna.js:5334 [00000143:WORKER1] Release schedule

soluna.js:5334 [00000144:WORKER1] Sleeping (2)

soluna.js:5334 [00000145:WORKER1] Wakeup

soluna.js:5334 [00000146:WORKER1] Acquire schedule

soluna.js:5334 [00000147:WORKER1] Release schedule

soluna.js:5334 [00000148:WORKER1] Sleeping (2)

soluna.js:5334 [00000167:WORKER1] Wakeup

soluna.js:5334 [00000168:WORKER1] Acquire schedule

soluna.js:5334 [00000170:WORKER1] Steal service 3

soluna.js:5334 [00000171:WORKER1] Release schedule

soluna.js:5334 [00000173:WORKER1] Run service 3

soluna.js:5334 [00000217:WORKER1] Acquire schedule

soluna.js:5334 [00000220:WORKER1] Release schedule

soluna.js:5334 [00000221:WORKER1] Sleeping (2)

soluna.js:5334 [00000222:WORKER1] Wakeup

soluna.js:5334 [00000223:WORKER1] Acquire schedule

soluna.js:5334 [00000224:WORKER1] Release schedule

soluna.js:5334 [00000225:WORKER1] Sleeping (2)

soluna.js:5334 [00000235:WORKER1] Wakeup

soluna.js:5334 [00000236:WORKER1] Run service 1

soluna.js:5334 [00000246:WORKER1] Acquire schedule

soluna.js:5334 [00000252:WORKER1] Release schedule

soluna.js:5334 [00000253:WORKER1] Run service 1

soluna.js:5334 [00000258:WORKER1] Acquire schedule

soluna.js:5334 [00000265:WORKER1] Release schedule

soluna.js:5334 [00000266:WORKER1] Run service 5

soluna.js:5334 [00000282:WORKER1] Acquire schedule

soluna.js:5334 [00000289:WORKER1] Release schedule

soluna.js:5334 [00000290:WORKER1] Run service 1

soluna.js:5334 [00000293:WORKER1] Acquire schedule

soluna.js:5334 [00000298:WORKER1] Release schedule

soluna.js:5334 [00000299:WORKER1] Run service 1

soluna.js:5334 [00000307:WORKER1] Acquire schedule

soluna.js:5334 [00000311:WORKER1] Release schedule

soluna.js:5334 [00000312:WORKER1] Run service 1

soluna.js:5334 [00000313:WORKER1] Acquire schedule

soluna.js:5334 [00000317:WORKER1] Release schedule

soluna.js:5334 [00000318:WORKER1] Run service 1

soluna.js:5334 [00000328:WORKER1] Acquire schedule

soluna.js:5334 [00000335:WORKER1] Release schedule

soluna.js:5334 [00000336:WORKER1] Run service 5

soluna.js:5334 [00000339:WORKER1] Acquire schedule

soluna.js:5334 [00000340:WORKER1] Release schedule

soluna.js:5334 [00000341:WORKER1] Sleeping (2)

soluna.js:5334 [00000342:WORKER1] Wakeup

soluna.js:5334 [00000343:WORKER1] Acquire schedule

soluna.js:5334 [00000344:WORKER1] Release schedule

soluna.js:5334 [00000345:WORKER1] Sleeping (2)

soluna.js:5334 [00000010:WORKER0] Start worker 0

soluna.js:5334 [00000011:WORKER0] Acquire schedule

soluna.js:5334 [00000012:WORKER0] Release schedule

soluna.js:5334 [00000013:WORKER0] Sleeping (1)

soluna.js:5334 [00000014:WORKER0] Wakeup

soluna.js:5334 [00000015:WORKER0] Acquire schedule

soluna.js:5334 [00000016:WORKER0] Release schedule

soluna.js:5334 [00000017:WORKER0] Sleeping (1)

soluna.js:5334 [00000027:WORKER0] Wakeup

soluna.js:5334 [00000028:WORKER0] Acquire schedule

soluna.js:5334 [00000029:WORKER0] Release schedule

soluna.js:5334 [00000030:WORKER0] Sleeping (1)

soluna.js:5334 [00000031:WORKER0] Wakeup

soluna.js:5334 [00000032:WORKER0] Acquire schedule

soluna.js:5334 [00000033:WORKER0] Release schedule

soluna.js:5334 [00000034:WORKER0] Sleeping (1)

soluna.js:5334 [00000045:WORKER0] Wakeup

soluna.js:5334 [00000046:WORKER0] Acquire schedule

soluna.js:5334 [00000047:WORKER0] Steal service 1

soluna.js:5334 [00000048:WORKER0] Release schedule

soluna.js:5334 [00000049:WORKER0] Run service 1

soluna.js:5334 [00000050:WORKER0] Acquire schedule

soluna.js:5334 [00000053:WORKER0] Release schedule

soluna.js:5334 [00000054:WORKER0] Sleeping (1)

soluna.js:5334 [00000055:WORKER0] Wakeup

soluna.js:5334 [00000056:WORKER0] Acquire schedule

soluna.js:5334 [00000057:WORKER0] Release schedule

soluna.js:5334 [00000058:WORKER0] Sleeping (1)

soluna.js:5334 [00000077:WORKER0] Wakeup

soluna.js:5334 [00000078:WORKER0] Acquire schedule

soluna.js:5334 [00000079:WORKER0] Steal service 2

soluna.js:5334 [00000080:WORKER0] Release schedule

soluna.js:5334 [00000081:WORKER0] Run service 2

soluna.js:5334 [00000094:WORKER0] Acquire schedule

soluna.js:5334 [00000098:WORKER0] Release schedule

soluna.js:5334 [00000099:WORKER0] Run service 2

soluna.js:5334 [00000355:WORKER0] Acquire schedule

soluna.js:5334 [00000359:WORKER0] Release schedule

soluna.js:5334 [00000360:WORKER0] Run service 2

soluna.js:5334 [00000001:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000006:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000019:SCHEDULE] Service 1 is done

soluna.js:5334 [00000020:SCHEDULE] Message from 1 to 0 type=0

soluna.js:5334 [00000021:SCHEDULE] New service 2

soluna.js:5334 [00000022:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000023:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000036:SCHEDULE] Service 1 is done

soluna.js:5334 [00000037:SCHEDULE] Message from 1 to 2 type=0

soluna.js:5334 [00000038:SCHEDULE] Service 2 is in schedule

soluna.js:5334 [00000039:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000040:SCHEDULE] Assign 2 to worker 0

soluna.js:5334 [00000041:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000051:SCHEDULE] Service 1 is done

soluna.js:5334 [00000052:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000068:SCHEDULE] Service 2 is done

soluna.js:5334 [00000069:SCHEDULE] Message from 2 to 1 type=2

soluna.js:5334 [00000070:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000071:SCHEDULE] Service 2 back to schedule

soluna.js:5334 [00000072:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000073:SCHEDULE] Assign 2 to worker 1

soluna.js:5334 [00000095:SCHEDULE] Service 2 is done

soluna.js:5334 [00000096:SCHEDULE] Service 2 back to schedule for sockevent

soluna.js:5334 [00000097:SCHEDULE] Assign 2 to worker 0

soluna.js:5334 [00000101:SCHEDULE] Service 1 is done

soluna.js:5334 [00000102:SCHEDULE] Message from 1 to 0 type=0

soluna.js:5334 [00000103:SCHEDULE] New service 3

soluna.js:5334 [00000104:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000105:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000118:SCHEDULE] Service 1 is done

soluna.js:5334 [00000119:SCHEDULE] Message from 1 to 3 type=0

soluna.js:5334 [00000120:SCHEDULE] Service 3 is in schedule

soluna.js:5334 [00000121:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000122:SCHEDULE] Assign 3 to worker 1

soluna.js:5334 [00000123:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00000141:SCHEDULE] Service 1 is done

soluna.js:5334 [00000142:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000158:SCHEDULE] Service 3 is done

soluna.js:5334 [00000159:SCHEDULE] Message from 3 to 1 type=2

soluna.js:5334 [00000160:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000161:SCHEDULE] Service 3 back to schedule

soluna.js:5334 [00000162:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000163:SCHEDULE] Assign 3 to worker 2

soluna.js:5334 [00000181:SCHEDULE] Service 1 is done

soluna.js:5334 [00000182:SCHEDULE] Message from 1 to 0 type=0

soluna.js:5334 [00000183:SCHEDULE] New service 4

soluna.js:5334 [00000184:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000185:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00000198:SCHEDULE] Service 1 is done

soluna.js:5334 [00000199:SCHEDULE] Message from 1 to 4 type=0

soluna.js:5334 [00000200:SCHEDULE] Service 4 is in schedule

soluna.js:5334 [00000201:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000202:SCHEDULE] Assign 4 to worker 2

soluna.js:5334 [00000203:SCHEDULE] Assign 1 to worker 3

soluna.js:5334 [00000209:SCHEDULE] Service 1 is done

soluna.js:5334 [00000210:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000218:SCHEDULE] Service 3 is done

soluna.js:5334 [00000219:SCHEDULE] Service 3 is idle

soluna.js:5334 [00000227:SCHEDULE] Service 4 is done

soluna.js:5334 [00000228:SCHEDULE] Message from 4 to 1 type=2

soluna.js:5334 [00000229:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000230:SCHEDULE] Service 4 back to schedule

soluna.js:5334 [00000231:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000232:SCHEDULE] Assign 4 to worker 2

soluna.js:5334 [00000238:SCHEDULE] Service 4 is done

soluna.js:5334 [00000239:SCHEDULE] Service 4 is idle

soluna.js:5334 [00000247:SCHEDULE] Service 1 is done

soluna.js:5334 [00000248:SCHEDULE] Message from 1 to 0 type=0

soluna.js:5334 [00000249:SCHEDULE] New service 5

soluna.js:5334 [00000250:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000251:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000259:SCHEDULE] Service 1 is done

soluna.js:5334 [00000260:SCHEDULE] Message from 1 to 5 type=0

soluna.js:5334 [00000261:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000262:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000263:SCHEDULE] Assign 5 to worker 1

soluna.js:5334 [00000264:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00000270:SCHEDULE] Service 1 is done

soluna.js:5334 [00000271:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000283:SCHEDULE] Service 5 is done

soluna.js:5334 [00000284:SCHEDULE] Message from 5 to 1 type=2

soluna.js:5334 [00000285:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000286:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000287:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000288:SCHEDULE] Assign 5 to worker 2

soluna.js:5334 [00000294:SCHEDULE] Service 1 is done

soluna.js:5334 [00000295:SCHEDULE] Message from 1 to 1 type=2

soluna.js:5334 [00000296:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000297:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000301:SCHEDULE] Service 5 is done

soluna.js:5334 [00000302:SCHEDULE] Message from 5 to 1 type=1

soluna.js:5334 [00000303:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000304:SCHEDULE] Assign 5 to worker 2

soluna.js:5334 [00000308:SCHEDULE] Service 1 is done

soluna.js:5334 [00000309:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000310:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000314:SCHEDULE] Service 1 is done

soluna.js:5334 [00000315:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000316:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000320:SCHEDULE] Service 5 is done

soluna.js:5334 [00000321:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000329:SCHEDULE] Service 1 is done

soluna.js:5334 [00000330:SCHEDULE] Message from 1 to 5 type=2

soluna.js:5334 [00000331:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000332:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000333:SCHEDULE] Assign 5 to worker 1

soluna.js:5334 [00000334:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00000347:SCHEDULE] Service 1 is done

soluna.js:5334 [00000348:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000356:SCHEDULE] Service 2 is done

soluna.js:5334 [00000357:SCHEDULE] Service 2 back to schedule for sockevent

soluna.js:5334 [00000358:SCHEDULE] Assign 2 to worker 0

soluna.js:5334 [00000361:SCHEDULE] service 5 run in mainthread

soluna.js:5334 [00000362:SCHEDULE] service 5 finish in mainthread

soluna.js:5334 [00001308:WORKER8] Wakeup

soluna.js:5334 [00001309:WORKER8] Quit

soluna.js:5334 [00001306:WORKER7] Wakeup

soluna.js:5334 [00001307:WORKER7] Quit

soluna.js:5334 [00001304:WORKER6] Wakeup

soluna.js:5334 [00001305:WORKER6] Quit

soluna.js:5334 [00001302:WORKER5] Wakeup

soluna.js:5334 [00001303:WORKER5] Quit

soluna.js:5334 [00001300:WORKER4] Wakeup

soluna.js:5334 [00001301:WORKER4] Quit

soluna.js:5334 [00000492:WORKER3] Wakeup

soluna.js:5334 [00000493:WORKER3] Acquire schedule

soluna.js:5334 [00000494:WORKER3] Release schedule

soluna.js:5334 [00000495:WORKER3] Sleeping (3)

soluna.js:5334 [00000496:WORKER3] Wakeup

soluna.js:5334 [00000497:WORKER3] Acquire schedule

soluna.js:5334 [00000498:WORKER3] Release schedule

soluna.js:5334 [00000499:WORKER3] Sleeping (3)

soluna.js:5334 [00000630:WORKER3] Wakeup

soluna.js:5334 [00000631:WORKER3] Run service 5

soluna.js:5334 [00000641:WORKER3] Acquire schedule

soluna.js:5334 [00000644:WORKER3] Release schedule

soluna.js:5334 [00000645:WORKER3] Sleeping (2)

soluna.js:5334 [00000646:WORKER3] Wakeup

soluna.js:5334 [00000647:WORKER3] Acquire schedule

soluna.js:5334 [00000648:WORKER3] Release schedule

soluna.js:5334 [00000649:WORKER3] Sleeping (2)

soluna.js:5334 [00000670:WORKER3] Wakeup

soluna.js:5334 [00000671:WORKER3] Run service 5

soluna.js:5334 [00000681:WORKER3] Acquire schedule

soluna.js:5334 [00000684:WORKER3] Release schedule

soluna.js:5334 [00000685:WORKER3] Sleeping (2)

soluna.js:5334 [00000686:WORKER3] Wakeup

soluna.js:5334 [00000687:WORKER3] Acquire schedule

soluna.js:5334 [00000688:WORKER3] Release schedule

soluna.js:5334 [00000689:WORKER3] Sleeping (2)

soluna.js:5334 [00000710:WORKER3] Wakeup

soluna.js:5334 [00000711:WORKER3] Run service 5

soluna.js:5334 [00000721:WORKER3] Acquire schedule

soluna.js:5334 [00000724:WORKER3] Release schedule

soluna.js:5334 [00000725:WORKER3] Sleeping (2)

soluna.js:5334 [00000726:WORKER3] Wakeup

soluna.js:5334 [00000727:WORKER3] Acquire schedule

soluna.js:5334 [00000728:WORKER3] Release schedule

soluna.js:5334 [00000729:WORKER3] Sleeping (2)

soluna.js:5334 [00000753:WORKER3] Wakeup

soluna.js:5334 [00000756:WORKER3] Sleeping (3)

soluna.js:5334 [00000757:WORKER3] Wakeup

soluna.js:5334 [00000759:WORKER3] Acquire schedule

soluna.js:5334 [00000760:WORKER3] Release schedule

soluna.js:5334 [00000761:WORKER3] Sleeping (3)

soluna.js:5334 [00000991:WORKER3] Wakeup

soluna.js:5334 [00000992:WORKER3] Run service 1

soluna.js:5334 [00001010:WORKER3] Acquire schedule

soluna.js:5334 [00001014:WORKER3] Steal service 1

soluna.js:5334 [00001015:WORKER3] Release schedule

soluna.js:5334 [00001016:WORKER3] Run service 1

soluna.js:5334 [00001035:WORKER3] Acquire schedule

soluna.js:5334 [00001041:WORKER3] Steal service 1

soluna.js:5334 [00001042:WORKER3] Release schedule

soluna.js:5334 [00001043:WORKER3] Run service 1

soluna.js:5334 [00001052:WORKER3] Acquire schedule

soluna.js:5334 [00001056:WORKER3] Steal service 1

soluna.js:5334 [00001057:WORKER3] Release schedule

soluna.js:5334 [00001058:WORKER3] Run service 1

soluna.js:5334 [00001067:WORKER3] Acquire schedule

soluna.js:5334 [00001074:WORKER3] Steal service 4

soluna.js:5334 [00001075:WORKER3] Release schedule

soluna.js:5334 [00001076:WORKER3] Run service 4

soluna.js:5334 [00001090:WORKER3] Acquire schedule

soluna.js:5334 [00001101:WORKER3] Steal service 1

soluna.js:5334 [00001102:WORKER3] Release schedule

soluna.js:5334 [00001103:WORKER3] Run service 1

soluna.js:5334 [00001127:WORKER3] Acquire schedule

soluna.js:5334 [00001133:WORKER3] Steal service 1

soluna.js:5334 [00001134:WORKER3] Release schedule

soluna.js:5334 [00001135:WORKER3] Run service 1

soluna.js:5334 [00001144:WORKER3] Acquire schedule

soluna.js:5334 [00001148:WORKER3] Steal service 1

soluna.js:5334 [00001149:WORKER3] Release schedule

soluna.js:5334 [00001150:WORKER3] Run service 1

soluna.js:5334 [00001159:WORKER3] Acquire schedule

soluna.js:5334 [00001166:WORKER3] Steal service 3

soluna.js:5334 [00001167:WORKER3] Release schedule

soluna.js:5334 [00001168:WORKER3] Run service 3

soluna.js:5334 [00001205:WORKER3] Acquire schedule

soluna.js:5334 [00001212:WORKER3] Steal service 1

soluna.js:5334 [00001213:WORKER3] Release schedule

soluna.js:5334 [00001214:WORKER3] Run service 1

soluna.js:5334 [00001228:WORKER3] Acquire schedule

soluna.js:5334 [00001234:WORKER3] Steal service 1

soluna.js:5334 [00001235:WORKER3] Release schedule

soluna.js:5334 [00001237:WORKER3] Run service 1

soluna.js:5334 [00001246:WORKER3] Acquire schedule

soluna.js:5334 [00001249:WORKER3] Release schedule

soluna.js:5334 [00001250:WORKER3] Sleeping (1)

soluna.js:5334 [00001251:WORKER3] Wakeup

soluna.js:5334 [00001252:WORKER3] Acquire schedule

soluna.js:5334 [00001253:WORKER3] Release schedule

soluna.js:5334 [00001254:WORKER3] Sleeping (1)

soluna.js:5334 [00001298:WORKER3] Wakeup

soluna.js:5334 [00001299:WORKER3] Quit

soluna.js:5334 [00000374:WORKER2] Wakeup

soluna.js:5334 [00000375:WORKER2] Run service 2

soluna.js:5334 [00000873:WORKER2] Acquire schedule

soluna.js:5334 [00000878:WORKER2] Steal service 5

soluna.js:5334 [00000879:WORKER2] Release schedule

soluna.js:5334 [00000880:WORKER2] Run service 5

soluna.js:5334 [00000894:WORKER2] Acquire schedule

soluna.js:5334 [00000897:WORKER2] Release schedule

soluna.js:5334 [00000898:WORKER2] Sleeping (1)

soluna.js:5334 [00000899:WORKER2] Wakeup

soluna.js:5334 [00000900:WORKER2] Acquire schedule

soluna.js:5334 [00000901:WORKER2] Release schedule

soluna.js:5334 [00000902:WORKER2] Sleeping (1)

soluna.js:5334 [00000922:WORKER2] Wakeup

soluna.js:5334 [00000923:WORKER2] Run service 1

soluna.js:5334 [00000924:WORKER2] Acquire schedule

soluna.js:5334 [00000927:WORKER2] Release schedule

soluna.js:5334 [00000930:WORKER2] Sleeping (2)

soluna.js:5334 [00000931:WORKER2] Wakeup

soluna.js:5334 [00000933:WORKER2] Sleeping (2)

soluna.js:5334 [00000940:WORKER2] Wakeup

soluna.js:5334 [00000941:WORKER2] Run service 5

soluna.js:5334 [00000942:WORKER2] Acquire schedule

soluna.js:5334 [00000945:WORKER2] Release schedule

soluna.js:5334 [00000946:WORKER2] Sleeping (2)

soluna.js:5334 [00000947:WORKER2] Wakeup

soluna.js:5334 [00000948:WORKER2] Acquire schedule

soluna.js:5334 [00000949:WORKER2] Release schedule

soluna.js:5334 [00000950:WORKER2] Sleeping (2)

soluna.js:5334 [00000960:WORKER2] Wakeup

soluna.js:5334 [00000961:WORKER2] Run service 1

soluna.js:5334 [00000962:WORKER2] Acquire schedule

soluna.js:5334 [00000965:WORKER2] Release schedule

soluna.js:5334 [00000966:WORKER2] Sleeping (2)

soluna.js:5334 [00000967:WORKER2] Wakeup

soluna.js:5334 [00000968:WORKER2] Acquire schedule

soluna.js:5334 [00000969:WORKER2] Release schedule

soluna.js:5334 [00000970:WORKER2] Sleeping (2)

soluna.js:5334 [00000980:WORKER2] Wakeup

soluna.js:5334 [00000981:WORKER2] Run service 7

soluna.js:5334 [00000993:WORKER2] Service 7 quit

soluna.js:5334 [00000994:WORKER2] Acquire schedule

soluna.js:5334 [00000997:WORKER2] Release schedule

soluna.js:5334 [00000998:WORKER2] Sleeping (3)

soluna.js:5334 [00000999:WORKER2] Wakeup

soluna.js:5334 [00001000:WORKER2] Acquire schedule

soluna.js:5334 [00001001:WORKER2] Release schedule

soluna.js:5334 [00001002:WORKER2] Sleeping (3)

soluna.js:5334 [00001017:WORKER2] Wakeup

soluna.js:5334 [00001018:WORKER2] Acquire schedule

soluna.js:5334 [00001019:WORKER2] Release schedule

soluna.js:5334 [00001020:WORKER2] Sleeping (3)

soluna.js:5334 [00001021:WORKER2] Wakeup

soluna.js:5334 [00001022:WORKER2] Acquire schedule

soluna.js:5334 [00001023:WORKER2] Release schedule

soluna.js:5334 [00001024:WORKER2] Sleeping (3)

soluna.js:5334 [00001082:WORKER2] Wakeup

soluna.js:5334 [00001083:WORKER2] Acquire schedule

soluna.js:5334 [00001084:WORKER2] Release schedule

soluna.js:5334 [00001085:WORKER2] Sleeping (3)

soluna.js:5334 [00001086:WORKER2] Wakeup

soluna.js:5334 [00001087:WORKER2] Acquire schedule

soluna.js:5334 [00001088:WORKER2] Release schedule

soluna.js:5334 [00001089:WORKER2] Sleeping (3)

soluna.js:5334 [00001109:WORKER2] Wakeup

soluna.js:5334 [00001110:WORKER2] Acquire schedule

soluna.js:5334 [00001111:WORKER2] Release schedule

soluna.js:5334 [00001112:WORKER2] Sleeping (3)

soluna.js:5334 [00001113:WORKER2] Wakeup

soluna.js:5334 [00001114:WORKER2] Acquire schedule

soluna.js:5334 [00001115:WORKER2] Release schedule

soluna.js:5334 [00001116:WORKER2] Sleeping (3)

soluna.js:5334 [00001174:WORKER2] Wakeup

soluna.js:5334 [00001175:WORKER2] Acquire schedule

soluna.js:5334 [00001176:WORKER2] Release schedule

soluna.js:5334 [00001177:WORKER2] Sleeping (3)

soluna.js:5334 [00001178:WORKER2] Wakeup

soluna.js:5334 [00001179:WORKER2] Acquire schedule

soluna.js:5334 [00001180:WORKER2] Release schedule

soluna.js:5334 [00001181:WORKER2] Sleeping (3)

soluna.js:5334 [00001220:WORKER2] Wakeup

soluna.js:5334 [00001221:WORKER2] Acquire schedule

soluna.js:5334 [00001222:WORKER2] Release schedule

soluna.js:5334 [00001223:WORKER2] Sleeping (3)

soluna.js:5334 [00001224:WORKER2] Wakeup

soluna.js:5334 [00001225:WORKER2] Acquire schedule

soluna.js:5334 [00001226:WORKER2] Release schedule

soluna.js:5334 [00001227:WORKER2] Sleeping (3)

soluna.js:5334 [00001296:WORKER2] Wakeup

soluna.js:5334 [00001297:WORKER2] Quit

soluna.js:5334 [00000369:WORKER1] Wakeup

soluna.js:5334 [00000370:WORKER1] Run service 1

soluna.js:5334 [00000376:WORKER1] Acquire schedule

soluna.js:5334 [00000381:WORKER1] Release schedule

soluna.js:5334 [00000382:WORKER1] Run service 1

soluna.js:5334 [00000383:WORKER1] Acquire schedule

soluna.js:5334 [00000386:WORKER1] Release schedule

soluna.js:5334 [00000387:WORKER1] Sleeping (2)

soluna.js:5334 [00000388:WORKER1] Wakeup

soluna.js:5334 [00000389:WORKER1] Acquire schedule

soluna.js:5334 [00000390:WORKER1] Release schedule

soluna.js:5334 [00000391:WORKER1] Sleeping (2)

soluna.js:5334 [00000401:WORKER1] Wakeup

soluna.js:5334 [00000402:WORKER1] Run service 5

soluna.js:5334 [00000403:WORKER1] Acquire schedule

soluna.js:5334 [00000407:WORKER1] Release schedule

soluna.js:5334 [00000408:WORKER1] Run service 5

soluna.js:5334 [00000409:WORKER1] Acquire schedule

soluna.js:5334 [00000412:WORKER1] Release schedule

soluna.js:5334 [00000413:WORKER1] Sleeping (2)

soluna.js:5334 [00000414:WORKER1] Wakeup

soluna.js:5334 [00000415:WORKER1] Acquire schedule

soluna.js:5334 [00000416:WORKER1] Release schedule

soluna.js:5334 [00000417:WORKER1] Sleeping (2)

soluna.js:5334 [00000435:WORKER1] Wakeup

soluna.js:5334 [00000436:WORKER1] Run service 1

soluna.js:5334 [00000437:WORKER1] Acquire schedule

soluna.js:5334 [00000440:WORKER1] Release schedule

soluna.js:5334 [00000441:WORKER1] Sleeping (2)

soluna.js:5334 [00000442:WORKER1] Wakeup

soluna.js:5334 [00000443:WORKER1] Acquire schedule

soluna.js:5334 [00000444:WORKER1] Release schedule

soluna.js:5334 [00000445:WORKER1] Sleeping (2)

soluna.js:5334 [00000455:WORKER1] Wakeup

soluna.js:5334 [00000456:WORKER1] Run service 6

soluna.js:5334 [00000457:WORKER1] Acquire schedule

soluna.js:5334 [00000460:WORKER1] Release schedule

soluna.js:5334 [00000461:WORKER1] Sleeping (2)

soluna.js:5334 [00000462:WORKER1] Wakeup

soluna.js:5334 [00000463:WORKER1] Acquire schedule

soluna.js:5334 [00000464:WORKER1] Release schedule

soluna.js:5334 [00000465:WORKER1] Sleeping (2)

soluna.js:5334 [00000475:WORKER1] Wakeup

soluna.js:5334 [00000476:WORKER1] Run service 1

soluna.js:5334 [00000486:WORKER1] Acquire schedule

soluna.js:5334 [00000489:WORKER1] Steal service 5

soluna.js:5334 [00000490:WORKER1] Release schedule

soluna.js:5334 [00000491:WORKER1] Run service 5

soluna.js:5334 [00000500:WORKER1] Acquire schedule

soluna.js:5334 [00000503:WORKER1] Release schedule

soluna.js:5334 [00000504:WORKER1] Sleeping (2)

soluna.js:5334 [00000505:WORKER1] Wakeup

soluna.js:5334 [00000506:WORKER1] Acquire schedule

soluna.js:5334 [00000507:WORKER1] Release schedule

soluna.js:5334 [00000508:WORKER1] Sleeping (2)

soluna.js:5334 [00000518:WORKER1] Wakeup

soluna.js:5334 [00000519:WORKER1] Run service 6

soluna.js:5334 [00000520:WORKER1] Acquire schedule

soluna.js:5334 [00000525:WORKER1] Release schedule

soluna.js:5334 [00000526:WORKER1] Run service 6

soluna.js:5334 [00000527:WORKER1] Acquire schedule

soluna.js:5334 [00000530:WORKER1] Release schedule

soluna.js:5334 [00000531:WORKER1] Sleeping (2)

soluna.js:5334 [00000532:WORKER1] Wakeup

soluna.js:5334 [00000533:WORKER1] Acquire schedule

soluna.js:5334 [00000534:WORKER1] Release schedule

soluna.js:5334 [00000535:WORKER1] Sleeping (2)

soluna.js:5334 [00000551:WORKER1] Wakeup

soluna.js:5334 [00000552:WORKER1] Run service 5

soluna.js:5334 [00000553:WORKER1] Acquire schedule

soluna.js:5334 [00000556:WORKER1] Release schedule

soluna.js:5334 [00000557:WORKER1] Sleeping (2)

soluna.js:5334 [00000558:WORKER1] Wakeup

soluna.js:5334 [00000559:WORKER1] Acquire schedule

soluna.js:5334 [00000560:WORKER1] Release schedule

soluna.js:5334 [00000561:WORKER1] Sleeping (2)

soluna.js:5334 [00000579:WORKER1] Wakeup

soluna.js:5334 [00000580:WORKER1] Run service 1

soluna.js:5334 [00000581:WORKER1] Acquire schedule

soluna.js:5334 [00000584:WORKER1] Release schedule

soluna.js:5334 [00000585:WORKER1] Sleeping (2)

soluna.js:5334 [00000586:WORKER1] Wakeup

soluna.js:5334 [00000587:WORKER1] Acquire schedule

soluna.js:5334 [00000588:WORKER1] Release schedule

soluna.js:5334 [00000589:WORKER1] Sleeping (2)

soluna.js:5334 [00000599:WORKER1] Wakeup

soluna.js:5334 [00000600:WORKER1] Run service 7

soluna.js:5334 [00000601:WORKER1] Acquire schedule

soluna.js:5334 [00000604:WORKER1] Release schedule

soluna.js:5334 [00000605:WORKER1] Sleeping (2)

soluna.js:5334 [00000606:WORKER1] Wakeup

soluna.js:5334 [00000607:WORKER1] Acquire schedule

soluna.js:5334 [00000608:WORKER1] Release schedule

soluna.js:5334 [00000609:WORKER1] Sleeping (2)

soluna.js:5334 [00000619:WORKER1] Wakeup

soluna.js:5334 [00000620:WORKER1] Run service 1

soluna.js:5334 [00000632:WORKER1] Acquire schedule

soluna.js:5334 [00000635:WORKER1] Release schedule

soluna.js:5334 [00000636:WORKER1] Sleeping (3)

soluna.js:5334 [00000637:WORKER1] Wakeup

soluna.js:5334 [00000638:WORKER1] Acquire schedule

soluna.js:5334 [00000639:WORKER1] Release schedule

soluna.js:5334 [00000640:WORKER1] Sleeping (3)

soluna.js:5334 [00000659:WORKER1] Wakeup

soluna.js:5334 [00000660:WORKER1] Run service 7

soluna.js:5334 [00000672:WORKER1] Acquire schedule

soluna.js:5334 [00000675:WORKER1] Release schedule

soluna.js:5334 [00000676:WORKER1] Sleeping (3)

soluna.js:5334 [00000677:WORKER1] Wakeup

soluna.js:5334 [00000678:WORKER1] Acquire schedule

soluna.js:5334 [00000679:WORKER1] Release schedule

soluna.js:5334 [00000680:WORKER1] Sleeping (3)

soluna.js:5334 [00000699:WORKER1] Wakeup

soluna.js:5334 [00000700:WORKER1] Run service 1

soluna.js:5334 [00000712:WORKER1] Acquire schedule

soluna.js:5334 [00000715:WORKER1] Release schedule

soluna.js:5334 [00000716:WORKER1] Sleeping (3)

soluna.js:5334 [00000717:WORKER1] Wakeup

soluna.js:5334 [00000718:WORKER1] Acquire schedule

soluna.js:5334 [00000719:WORKER1] Release schedule

soluna.js:5334 [00000720:WORKER1] Sleeping (3)

soluna.js:5334 [00000739:WORKER1] Wakeup

soluna.js:5334 [00000740:WORKER1] Run service 7

soluna.js:5334 [00000750:WORKER1] Acquire schedule

soluna.js:5334 [00000754:WORKER1] Steal service 5

soluna.js:5334 [00000755:WORKER1] Release schedule

soluna.js:5334 [00000758:WORKER1] Run service 5

soluna.js:5334 [00000762:WORKER1] Acquire schedule

soluna.js:5334 [00000765:WORKER1] Release schedule

soluna.js:5334 [00000766:WORKER1] Sleeping (2)

soluna.js:5334 [00000767:WORKER1] Wakeup

soluna.js:5334 [00000768:WORKER1] Acquire schedule

soluna.js:5334 [00000769:WORKER1] Release schedule

soluna.js:5334 [00000770:WORKER1] Sleeping (2)

soluna.js:5334 [00000780:WORKER1] Wakeup

soluna.js:5334 [00000781:WORKER1] Run service 1

soluna.js:5334 [00000789:WORKER1] Acquire schedule

soluna.js:5334 [00000793:WORKER1] Release schedule

soluna.js:5334 [00000794:WORKER1] Run service 1

soluna.js:5334 [00000804:WORKER1] Acquire schedule

soluna.js:5334 [00000811:WORKER1] Release schedule

soluna.js:5334 [00000812:WORKER1] Run service 1

soluna.js:5334 [00000815:WORKER1] Acquire schedule

soluna.js:5334 [00000818:WORKER1] Release schedule

soluna.js:5334 [00000819:WORKER1] Sleeping (2)

soluna.js:5334 [00000820:WORKER1] Wakeup

soluna.js:5334 [00000821:WORKER1] Acquire schedule

soluna.js:5334 [00000822:WORKER1] Release schedule

soluna.js:5334 [00000823:WORKER1] Sleeping (2)

soluna.js:5334 [00000833:WORKER1] Wakeup

soluna.js:5334 [00000834:WORKER1] Run service 5

soluna.js:5334 [00000835:WORKER1] Acquire schedule

soluna.js:5334 [00000838:WORKER1] Release schedule

soluna.js:5334 [00000839:WORKER1] Sleeping (2)

soluna.js:5334 [00000840:WORKER1] Wakeup

soluna.js:5334 [00000841:WORKER1] Acquire schedule

soluna.js:5334 [00000842:WORKER1] Release schedule

soluna.js:5334 [00000843:WORKER1] Sleeping (2)

soluna.js:5334 [00000853:WORKER1] Wakeup

soluna.js:5334 [00000854:WORKER1] Run service 4

soluna.js:5334 [00000855:WORKER1] Acquire schedule

soluna.js:5334 [00000858:WORKER1] Release schedule

soluna.js:5334 [00000859:WORKER1] Sleeping (2)

soluna.js:5334 [00000860:WORKER1] Wakeup

soluna.js:5334 [00000861:WORKER1] Acquire schedule

soluna.js:5334 [00000862:WORKER1] Release schedule

soluna.js:5334 [00000863:WORKER1] Sleeping (2)

soluna.js:5334 [00000886:WORKER1] Wakeup

soluna.js:5334 [00000887:WORKER1] Acquire schedule

soluna.js:5334 [00000888:WORKER1] Release schedule

soluna.js:5334 [00000889:WORKER1] Sleeping (2)

soluna.js:5334 [00000890:WORKER1] Wakeup

soluna.js:5334 [00000891:WORKER1] Acquire schedule

soluna.js:5334 [00000892:WORKER1] Release schedule

soluna.js:5334 [00000893:WORKER1] Sleeping (2)

soluna.js:5334 [00000911:WORKER1] Wakeup

soluna.js:5334 [00000912:WORKER1] Run service 2

soluna.js:5334 [00001255:WORKER1] Acquire schedule

soluna.js:5334 [00001259:WORKER1] Steal service 2

soluna.js:5334 [00001260:WORKER1] Release schedule

soluna.js:5334 [00001261:WORKER1] Run service 2

soluna.js:5334 [00001270:WORKER1] Acquire schedule

soluna.js:5334 [00001277:WORKER1] Release schedule

soluna.js:5334 [00001278:WORKER1] Run service 2

soluna.js:5334 [00001281:WORKER1] Service 2 quit

soluna.js:5334 [00001282:WORKER1] Acquire schedule

soluna.js:5334 [00001285:WORKER1] Release schedule

soluna.js:5334 [00001286:WORKER1] Sleeping (1)

soluna.js:5334 [00001287:WORKER1] Wakeup

soluna.js:5334 [00001288:WORKER1] Acquire schedule

soluna.js:5334 [00001289:WORKER1] Release schedule

soluna.js:5334 [00001290:WORKER1] Sleeping (1)

soluna.js:5334 [00001294:WORKER1] Wakeup

soluna.js:5334 [00001295:WORKER1] Quit

soluna.js:5334 [00000363:WORKER0] Acquire schedule

soluna.js:5334 [00000372:WORKER0] Release schedule

soluna.js:5334 [00000373:WORKER0] Run service 5

soluna.js:5334 [00000392:WORKER0] Acquire schedule

soluna.js:5334 [00000399:WORKER0] Release schedule

soluna.js:5334 [00000400:WORKER0] Run service 1

soluna.js:5334 [00000418:WORKER0] Acquire schedule

soluna.js:5334 [00000424:WORKER0] Release schedule

soluna.js:5334 [00000425:WORKER0] Run service 1

soluna.js:5334 [00000426:WORKER0] Acquire schedule

soluna.js:5334 [00000433:WORKER0] Release schedule

soluna.js:5334 [00000434:WORKER0] Run service 6

soluna.js:5334 [00000446:WORKER0] Acquire schedule

soluna.js:5334 [00000453:WORKER0] Release schedule

soluna.js:5334 [00000454:WORKER0] Run service 1

soluna.js:5334 [00000466:WORKER0] Acquire schedule

soluna.js:5334 [00000473:WORKER0] Release schedule

soluna.js:5334 [00000474:WORKER0] Run service 5

soluna.js:5334 [00000477:WORKER0] Acquire schedule

soluna.js:5334 [00000484:WORKER0] Release schedule

soluna.js:5334 [00000485:WORKER0] Run service 6

soluna.js:5334 [00000509:WORKER0] Acquire schedule

soluna.js:5334 [00000516:WORKER0] Release schedule

soluna.js:5334 [00000517:WORKER0] Run service 5

soluna.js:5334 [00000536:WORKER0] Acquire schedule

soluna.js:5334 [00000540:WORKER0] Release schedule

soluna.js:5334 [00000541:WORKER0] Run service 5

soluna.js:5334 [00000542:WORKER0] Acquire schedule

soluna.js:5334 [00000549:WORKER0] Release schedule

soluna.js:5334 [00000550:WORKER0] Run service 1

soluna.js:5334 [00000562:WORKER0] Acquire schedule

soluna.js:5334 [00000568:WORKER0] Release schedule

soluna.js:5334 [00000569:WORKER0] Run service 1

soluna.js:5334 [00000570:WORKER0] Acquire schedule

soluna.js:5334 [00000577:WORKER0] Release schedule

soluna.js:5334 [00000578:WORKER0] Run service 7

soluna.js:5334 [00000590:WORKER0] Acquire schedule

soluna.js:5334 [00000597:WORKER0] Release schedule

soluna.js:5334 [00000598:WORKER0] Run service 1

soluna.js:5334 [00000610:WORKER0] Acquire schedule

soluna.js:5334 [00000617:WORKER0] Release schedule

soluna.js:5334 [00000618:WORKER0] Run service 5

soluna.js:5334 [00000621:WORKER0] Acquire schedule

soluna.js:5334 [00000628:WORKER0] Release schedule

soluna.js:5334 [00000629:WORKER0] Run service 7

soluna.js:5334 [00000650:WORKER0] Acquire schedule

soluna.js:5334 [00000657:WORKER0] Release schedule

soluna.js:5334 [00000658:WORKER0] Run service 5

soluna.js:5334 [00000661:WORKER0] Acquire schedule

soluna.js:5334 [00000668:WORKER0] Release schedule

soluna.js:5334 [00000669:WORKER0] Run service 1

soluna.js:5334 [00000690:WORKER0] Acquire schedule

soluna.js:5334 [00000697:WORKER0] Release schedule

soluna.js:5334 [00000698:WORKER0] Run service 5

soluna.js:5334 [00000701:WORKER0] Acquire schedule

soluna.js:5334 [00000708:WORKER0] Release schedule

soluna.js:5334 [00000709:WORKER0] Run service 7

soluna.js:5334 [00000730:WORKER0] Acquire schedule

soluna.js:5334 [00000737:WORKER0] Release schedule

soluna.js:5334 [00000738:WORKER0] Run service 5

soluna.js:5334 [00000741:WORKER0] Acquire schedule

soluna.js:5334 [00000748:WORKER0] Release schedule

soluna.js:5334 [00000749:WORKER0] Run service 1

soluna.js:5334 [00000771:WORKER0] Acquire schedule

soluna.js:5334 [00000778:WORKER0] Release schedule

soluna.js:5334 [00000779:WORKER0] Run service 5

soluna.js:5334 [00000782:WORKER0] Acquire schedule

soluna.js:5334 [00000787:WORKER0] Release schedule

soluna.js:5334 [00000788:WORKER0] Run service 5

soluna.js:5334 [00000795:WORKER0] Acquire schedule

soluna.js:5334 [00000798:WORKER0] Release schedule

soluna.js:5334 [00000799:WORKER0] Sleeping (2)

soluna.js:5334 [00000800:WORKER0] Wakeup

soluna.js:5334 [00000801:WORKER0] Acquire schedule

soluna.js:5334 [00000802:WORKER0] Release schedule

soluna.js:5334 [00000803:WORKER0] Sleeping (2)

soluna.js:5334 [00000813:WORKER0] Wakeup

soluna.js:5334 [00000814:WORKER0] Run service 5

soluna.js:5334 [00000824:WORKER0] Acquire schedule

soluna.js:5334 [00000831:WORKER0] Release schedule

soluna.js:5334 [00000832:WORKER0] Run service 4

soluna.js:5334 [00000844:WORKER0] Acquire schedule

soluna.js:5334 [00000851:WORKER0] Release schedule

soluna.js:5334 [00000852:WORKER0] Run service 5

soluna.js:5334 [00000864:WORKER0] Acquire schedule

soluna.js:5334 [00000866:WORKER0] Release schedule

soluna.js:5334 [00000867:WORKER0] Sleeping (1)

soluna.js:5334 [00000868:WORKER0] Wakeup

soluna.js:5334 [00000869:WORKER0] Acquire schedule

soluna.js:5334 [00000870:WORKER0] Release schedule

soluna.js:5334 [00000871:WORKER0] Sleeping (1)

soluna.js:5334 [00000881:WORKER0] Wakeup

soluna.js:5334 [00000882:WORKER0] Acquire schedule

soluna.js:5334 [00000883:WORKER0] Steal service 2

soluna.js:5334 [00000884:WORKER0] Release schedule

soluna.js:5334 [00000885:WORKER0] Run service 2

soluna.js:5334 [00000903:WORKER0] Acquire schedule

soluna.js:5334 [00000909:WORKER0] Release schedule

soluna.js:5334 [00000910:WORKER0] Run service 1

soluna.js:5334 [00000913:WORKER0] Acquire schedule

soluna.js:5334 [00000920:WORKER0] Release schedule

soluna.js:5334 [00000921:WORKER0] Run service 5

soluna.js:5334 [00000928:WORKER0] Acquire schedule

soluna.js:5334 [00000938:WORKER0] Release schedule

soluna.js:5334 [00000939:WORKER0] Run service 1

soluna.js:5334 [00000951:WORKER0] Acquire schedule

soluna.js:5334 [00000958:WORKER0] Release schedule

soluna.js:5334 [00000959:WORKER0] Run service 7

soluna.js:5334 [00000971:WORKER0] Acquire schedule

soluna.js:5334 [00000978:WORKER0] Release schedule

soluna.js:5334 [00000979:WORKER0] Run service 1

soluna.js:5334 [00000982:WORKER0] Acquire schedule

soluna.js:5334 [00000989:WORKER0] Release schedule

soluna.js:5334 [00000990:WORKER0] Run service 6

soluna.js:5334 [00001003:WORKER0] Acquire schedule

soluna.js:5334 [00001008:WORKER0] Release schedule

soluna.js:5334 [00001009:WORKER0] Run service 6

soluna.js:5334 [00001025:WORKER0] Service 6 quit

soluna.js:5334 [00001026:WORKER0] Acquire schedule

soluna.js:5334 [00001029:WORKER0] Release schedule

soluna.js:5334 [00001030:WORKER0] Sleeping (2)

soluna.js:5334 [00001031:WORKER0] Wakeup

soluna.js:5334 [00001032:WORKER0] Acquire schedule

soluna.js:5334 [00001033:WORKER0] Release schedule

soluna.js:5334 [00001034:WORKER0] Sleeping (2)

soluna.js:5334 [00001044:WORKER0] Wakeup

soluna.js:5334 [00001045:WORKER0] Acquire schedule

soluna.js:5334 [00001046:WORKER0] Release schedule

soluna.js:5334 [00001047:WORKER0] Sleeping (2)

soluna.js:5334 [00001048:WORKER0] Wakeup

soluna.js:5334 [00001049:WORKER0] Acquire schedule

soluna.js:5334 [00001050:WORKER0] Release schedule

soluna.js:5334 [00001051:WORKER0] Sleeping (2)

soluna.js:5334 [00001059:WORKER0] Wakeup

soluna.js:5334 [00001060:WORKER0] Acquire schedule

soluna.js:5334 [00001061:WORKER0] Release schedule

soluna.js:5334 [00001062:WORKER0] Sleeping (2)

soluna.js:5334 [00001063:WORKER0] Wakeup

soluna.js:5334 [00001064:WORKER0] Acquire schedule

soluna.js:5334 [00001065:WORKER0] Release schedule

soluna.js:5334 [00001066:WORKER0] Sleeping (2)

soluna.js:5334 [00001077:WORKER0] Wakeup

soluna.js:5334 [00001078:WORKER0] Acquire schedule

soluna.js:5334 [00001079:WORKER0] Steal service 1

soluna.js:5334 [00001080:WORKER0] Release schedule

soluna.js:5334 [00001081:WORKER0] Run service 1

soluna.js:5334 [00001092:WORKER0] Sleeping (2)

soluna.js:5334 [00001094:WORKER0] Wakeup

soluna.js:5334 [00001096:WORKER0] Sleeping (2)

soluna.js:5334 [00001104:WORKER0] Wakeup

soluna.js:5334 [00001105:WORKER0] Acquire schedule

soluna.js:5334 [00001106:WORKER0] Steal service 4

soluna.js:5334 [00001107:WORKER0] Release schedule

soluna.js:5334 [00001108:WORKER0] Run service 4

soluna.js:5334 [00001117:WORKER0] Service 4 quit

soluna.js:5334 [00001118:WORKER0] Acquire schedule

soluna.js:5334 [00001121:WORKER0] Release schedule

soluna.js:5334 [00001122:WORKER0] Sleeping (2)

soluna.js:5334 [00001123:WORKER0] Wakeup

soluna.js:5334 [00001124:WORKER0] Acquire schedule

soluna.js:5334 [00001125:WORKER0] Release schedule

soluna.js:5334 [00001126:WORKER0] Sleeping (2)

soluna.js:5334 [00001136:WORKER0] Wakeup

soluna.js:5334 [00001137:WORKER0] Acquire schedule

soluna.js:5334 [00001138:WORKER0] Release schedule

soluna.js:5334 [00001139:WORKER0] Sleeping (2)

soluna.js:5334 [00001140:WORKER0] Wakeup

soluna.js:5334 [00001141:WORKER0] Acquire schedule

soluna.js:5334 [00001142:WORKER0] Release schedule

soluna.js:5334 [00001143:WORKER0] Sleeping (2)

soluna.js:5334 [00001151:WORKER0] Wakeup

soluna.js:5334 [00001152:WORKER0] Acquire schedule

soluna.js:5334 [00001153:WORKER0] Release schedule

soluna.js:5334 [00001154:WORKER0] Sleeping (2)

soluna.js:5334 [00001155:WORKER0] Wakeup

soluna.js:5334 [00001156:WORKER0] Acquire schedule

soluna.js:5334 [00001157:WORKER0] Release schedule

soluna.js:5334 [00001158:WORKER0] Sleeping (2)

soluna.js:5334 [00001169:WORKER0] Wakeup

soluna.js:5334 [00001170:WORKER0] Acquire schedule

soluna.js:5334 [00001171:WORKER0] Steal service 1

soluna.js:5334 [00001172:WORKER0] Release schedule

soluna.js:5334 [00001173:WORKER0] Run service 1

soluna.js:5334 [00001182:WORKER0] Acquire schedule

soluna.js:5334 [00001186:WORKER0] Release schedule

soluna.js:5334 [00001187:WORKER0] Run service 1

soluna.js:5334 [00001188:WORKER0] Acquire schedule

soluna.js:5334 [00001194:WORKER0] Release schedule

soluna.js:5334 [00001195:WORKER0] Run service 1

soluna.js:5334 [00001196:WORKER0] Acquire schedule

soluna.js:5334 [00001199:WORKER0] Release schedule

soluna.js:5334 [00001200:WORKER0] Sleeping (2)

soluna.js:5334 [00001201:WORKER0] Wakeup

soluna.js:5334 [00001202:WORKER0] Acquire schedule

soluna.js:5334 [00001203:WORKER0] Release schedule

soluna.js:5334 [00001204:WORKER0] Sleeping (2)

soluna.js:5334 [00001215:WORKER0] Wakeup

soluna.js:5334 [00001216:WORKER0] Acquire schedule

soluna.js:5334 [00001217:WORKER0] Steal service 3

soluna.js:5334 [00001218:WORKER0] Release schedule

soluna.js:5334 [00001219:WORKER0] Run service 3

soluna.js:5334 [00001236:WORKER0] Acquire schedule

soluna.js:5334 [00001240:WORKER0] Release schedule

soluna.js:5334 [00001241:WORKER0] Sleeping (2)

soluna.js:5334 [00001242:WORKER0] Wakeup

soluna.js:5334 [00001243:WORKER0] Acquire schedule

soluna.js:5334 [00001244:WORKER0] Release schedule

soluna.js:5334 [00001245:WORKER0] Sleeping (2)

soluna.js:5334 [00001262:WORKER0] Wakeup

soluna.js:5334 [00001263:WORKER0] Acquire schedule

soluna.js:5334 [00001264:WORKER0] Release schedule

soluna.js:5334 [00001265:WORKER0] Sleeping (1)

soluna.js:5334 [00001266:WORKER0] Wakeup

soluna.js:5334 [00001267:WORKER0] Acquire schedule

soluna.js:5334 [00001268:WORKER0] Release schedule

soluna.js:5334 [00001269:WORKER0] Sleeping (1)

soluna.js:5334 [00001279:WORKER0] Wakeup

soluna.js:5334 [00001280:WORKER0] Run service 1

soluna.js:5334 [00001291:WORKER0] Service 1 quit

soluna.js:5334 [00001292:WORKER0] Root quit

soluna.js:5334 [00001293:WORKER0] Quit

soluna.js:5334 [00000364:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000365:SCHEDULE] Service 2 is done

soluna.js:5334 [00000366:SCHEDULE] Service 2 back to schedule for sockevent

soluna.js:5334 [00000367:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000368:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000371:SCHEDULE] Assign 2 to worker 2

soluna.js:5334 [00000377:SCHEDULE] Service 1 is done

soluna.js:5334 [00000378:SCHEDULE] Message from 1 to 5 type=1

soluna.js:5334 [00000379:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000380:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000384:SCHEDULE] Service 1 is done

soluna.js:5334 [00000385:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000393:SCHEDULE] Service 5 is done

soluna.js:5334 [00000394:SCHEDULE] Message from 5 to 1 type=1

soluna.js:5334 [00000395:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000396:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000397:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000398:SCHEDULE] Assign 5 to worker 1

soluna.js:5334 [00000404:SCHEDULE] Service 5 is done

soluna.js:5334 [00000405:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000406:SCHEDULE] Assign 5 to worker 1

soluna.js:5334 [00000410:SCHEDULE] Service 5 is done

soluna.js:5334 [00000411:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000419:SCHEDULE] Service 1 is done

soluna.js:5334 [00000420:SCHEDULE] Message from 1 to 0 type=0

soluna.js:5334 [00000421:SCHEDULE] New service 6

soluna.js:5334 [00000422:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000423:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000427:SCHEDULE] Service 1 is done

soluna.js:5334 [00000428:SCHEDULE] Message from 1 to 6 type=0

soluna.js:5334 [00000429:SCHEDULE] Service 6 is in schedule

soluna.js:5334 [00000430:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000431:SCHEDULE] Assign 6 to worker 0

soluna.js:5334 [00000432:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000438:SCHEDULE] Service 1 is done

soluna.js:5334 [00000439:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000447:SCHEDULE] Service 6 is done

soluna.js:5334 [00000448:SCHEDULE] Message from 6 to 1 type=2

soluna.js:5334 [00000449:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000450:SCHEDULE] Service 6 back to schedule

soluna.js:5334 [00000451:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000452:SCHEDULE] Assign 6 to worker 1

soluna.js:5334 [00000458:SCHEDULE] Service 6 is done

soluna.js:5334 [00000459:SCHEDULE] Service 6 is idle

soluna.js:5334 [00000467:SCHEDULE] Service 1 is done

soluna.js:5334 [00000468:SCHEDULE] Message from 1 to 5 type=2

soluna.js:5334 [00000469:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000470:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000471:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000472:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000478:SCHEDULE] Service 5 is done

soluna.js:5334 [00000479:SCHEDULE] Message from 5 to 6 type=1

soluna.js:5334 [00000480:SCHEDULE] Service 6 is in schedule

soluna.js:5334 [00000481:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000482:SCHEDULE] Assign 6 to worker 0

soluna.js:5334 [00000483:SCHEDULE] Assign 5 to worker 3

soluna.js:5334 [00000487:SCHEDULE] Service 1 is done

soluna.js:5334 [00000488:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000501:SCHEDULE] Service 5 is done

soluna.js:5334 [00000502:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000510:SCHEDULE] Service 6 is done

soluna.js:5334 [00000511:SCHEDULE] Message from 6 to 5 type=1

soluna.js:5334 [00000512:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000513:SCHEDULE] Service 6 back to schedule

soluna.js:5334 [00000514:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000515:SCHEDULE] Assign 6 to worker 1

soluna.js:5334 [00000521:SCHEDULE] Service 6 is done

soluna.js:5334 [00000522:SCHEDULE] Message from 6 to 5 type=2

soluna.js:5334 [00000523:SCHEDULE] Service 6 back to schedule

soluna.js:5334 [00000524:SCHEDULE] Assign 6 to worker 1

soluna.js:5334 [00000528:SCHEDULE] Service 6 is done

soluna.js:5334 [00000529:SCHEDULE] Service 6 is idle

soluna.js:5334 [00000537:SCHEDULE] Service 5 is done

soluna.js:5334 [00000538:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000539:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000543:SCHEDULE] Service 5 is done

soluna.js:5334 [00000544:SCHEDULE] Message from 5 to 1 type=1

soluna.js:5334 [00000545:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000546:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000547:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000548:SCHEDULE] Assign 5 to worker 1

soluna.js:5334 [00000554:SCHEDULE] Service 5 is done

soluna.js:5334 [00000555:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000563:SCHEDULE] Service 1 is done

soluna.js:5334 [00000564:SCHEDULE] Message from 1 to 0 type=0

soluna.js:5334 [00000565:SCHEDULE] New service 7

soluna.js:5334 [00000566:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000567:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000571:SCHEDULE] Service 1 is done

soluna.js:5334 [00000572:SCHEDULE] Message from 1 to 7 type=0

soluna.js:5334 [00000573:SCHEDULE] Service 7 is in schedule

soluna.js:5334 [00000574:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000575:SCHEDULE] Assign 7 to worker 0

soluna.js:5334 [00000576:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000582:SCHEDULE] Service 1 is done

soluna.js:5334 [00000583:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000591:SCHEDULE] Service 7 is done

soluna.js:5334 [00000592:SCHEDULE] Message from 7 to 1 type=2

soluna.js:5334 [00000593:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000594:SCHEDULE] Service 7 back to schedule

soluna.js:5334 [00000595:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000596:SCHEDULE] Assign 7 to worker 1

soluna.js:5334 [00000602:SCHEDULE] Service 7 is done

soluna.js:5334 [00000603:SCHEDULE] Service 7 is idle

soluna.js:5334 [00000611:SCHEDULE] Service 1 is done

soluna.js:5334 [00000612:SCHEDULE] Message from 1 to 5 type=2

soluna.js:5334 [00000613:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000614:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000615:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000616:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000622:SCHEDULE] Service 5 is done

soluna.js:5334 [00000623:SCHEDULE] Message from 5 to 7 type=1

soluna.js:5334 [00000624:SCHEDULE] Service 7 is in schedule

soluna.js:5334 [00000625:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000626:SCHEDULE] Assign 7 to worker 0

soluna.js:5334 [00000627:SCHEDULE] Assign 5 to worker 3

soluna.js:5334 [00000633:SCHEDULE] Service 1 is done

soluna.js:5334 [00000634:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000642:SCHEDULE] Service 5 is done

soluna.js:5334 [00000643:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000651:SCHEDULE] Service 7 is done

soluna.js:5334 [00000652:SCHEDULE] Message from 7 to 5 type=2

soluna.js:5334 [00000653:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000654:SCHEDULE] Service 7 back to schedule

soluna.js:5334 [00000655:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000656:SCHEDULE] Assign 7 to worker 1

soluna.js:5334 [00000662:SCHEDULE] Service 5 is done

soluna.js:5334 [00000663:SCHEDULE] Message from 5 to 1 type=1

soluna.js:5334 [00000664:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000665:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000666:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000667:SCHEDULE] Assign 5 to worker 3

soluna.js:5334 [00000673:SCHEDULE] Service 7 is done

soluna.js:5334 [00000674:SCHEDULE] Service 7 is idle

soluna.js:5334 [00000682:SCHEDULE] Service 5 is done

soluna.js:5334 [00000683:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000691:SCHEDULE] Service 1 is done

soluna.js:5334 [00000692:SCHEDULE] Message from 1 to 5 type=2

soluna.js:5334 [00000693:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000694:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000695:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000696:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000702:SCHEDULE] Service 5 is done

soluna.js:5334 [00000703:SCHEDULE] Message from 5 to 7 type=1

soluna.js:5334 [00000704:SCHEDULE] Service 7 is in schedule

soluna.js:5334 [00000705:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000706:SCHEDULE] Assign 7 to worker 0

soluna.js:5334 [00000707:SCHEDULE] Assign 5 to worker 3

soluna.js:5334 [00000713:SCHEDULE] Service 1 is done

soluna.js:5334 [00000714:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000722:SCHEDULE] Service 5 is done

soluna.js:5334 [00000723:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000731:SCHEDULE] Service 7 is done

soluna.js:5334 [00000732:SCHEDULE] Message from 7 to 5 type=2

soluna.js:5334 [00000733:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000734:SCHEDULE] Service 7 back to schedule

soluna.js:5334 [00000735:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000736:SCHEDULE] Assign 7 to worker 1

soluna.js:5334 [00000742:SCHEDULE] Service 5 is done

soluna.js:5334 [00000743:SCHEDULE] Message from 5 to 1 type=1

soluna.js:5334 [00000744:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000745:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000746:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000747:SCHEDULE] Assign 5 to worker 3

soluna.js:5334 [00000751:SCHEDULE] Service 7 is done

soluna.js:5334 [00000752:SCHEDULE] Service 7 is idle

soluna.js:5334 [00000763:SCHEDULE] Service 5 is done

soluna.js:5334 [00000764:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000772:SCHEDULE] Service 1 is done

soluna.js:5334 [00000773:SCHEDULE] Message from 1 to 5 type=2

soluna.js:5334 [00000774:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000775:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000776:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000777:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000783:SCHEDULE] Service 5 is done

soluna.js:5334 [00000784:SCHEDULE] Message from 5 to 1 type=1

soluna.js:5334 [00000785:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000786:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000790:SCHEDULE] Service 1 is done

soluna.js:5334 [00000791:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000792:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000796:SCHEDULE] Service 5 is done

soluna.js:5334 [00000797:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000805:SCHEDULE] Service 1 is done

soluna.js:5334 [00000806:SCHEDULE] Message from 1 to 5 type=2

soluna.js:5334 [00000807:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000808:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000809:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000810:SCHEDULE] Assign 1 to worker 1

soluna.js:5334 [00000816:SCHEDULE] Service 1 is done

soluna.js:5334 [00000817:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000825:SCHEDULE] Service 5 is done

soluna.js:5334 [00000826:SCHEDULE] Message from 5 to 4 type=1

soluna.js:5334 [00000827:SCHEDULE] Service 4 is in schedule

soluna.js:5334 [00000828:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000829:SCHEDULE] Assign 4 to worker 0

soluna.js:5334 [00000830:SCHEDULE] Assign 5 to worker 1

soluna.js:5334 [00000836:SCHEDULE] Service 5 is done

soluna.js:5334 [00000837:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000845:SCHEDULE] Service 4 is done

soluna.js:5334 [00000846:SCHEDULE] Message from 4 to 5 type=2

soluna.js:5334 [00000847:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000848:SCHEDULE] Service 4 back to schedule

soluna.js:5334 [00000849:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000850:SCHEDULE] Assign 4 to worker 1

soluna.js:5334 [00000856:SCHEDULE] Service 4 is done

soluna.js:5334 [00000857:SCHEDULE] Service 4 is idle

soluna.js:5334 [00000865:SCHEDULE] service 5 run in mainthread

soluna.js:5334 [00000872:SCHEDULE] service 5 finish in mainthread

soluna.js:5334 [00000874:SCHEDULE] Service 2 is done

soluna.js:5334 [00000875:SCHEDULE] Service 2 back to schedule for sockevent

soluna.js:5334 [00000876:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000877:SCHEDULE] Assign 2 to worker 1

soluna.js:5334 [00000895:SCHEDULE] Service 5 is done

soluna.js:5334 [00000896:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000904:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000905:SCHEDULE] Service 2 is done

soluna.js:5334 [00000906:SCHEDULE] Service 2 back to schedule for sockevent

soluna.js:5334 [00000907:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000908:SCHEDULE] Assign 2 to worker 1

soluna.js:5334 [00000914:SCHEDULE] Service 1 is done

soluna.js:5334 [00000915:SCHEDULE] Message from 1 to 5 type=1

soluna.js:5334 [00000916:SCHEDULE] Service 5 is in schedule

soluna.js:5334 [00000917:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000918:SCHEDULE] Assign 5 to worker 0

soluna.js:5334 [00000919:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00000925:SCHEDULE] Service 1 is done

soluna.js:5334 [00000926:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000929:SCHEDULE] Service 5 is done

soluna.js:5334 [00000932:SCHEDULE] Message from 5 to 1 type=1

soluna.js:5334 [00000934:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000935:SCHEDULE] Service 5 back to schedule

soluna.js:5334 [00000936:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000937:SCHEDULE] Assign 5 to worker 2

soluna.js:5334 [00000943:SCHEDULE] Service 5 is done

soluna.js:5334 [00000944:SCHEDULE] Service 5 is idle

soluna.js:5334 [00000952:SCHEDULE] Service 1 is done

soluna.js:5334 [00000953:SCHEDULE] Message from 1 to 7 type=0

soluna.js:5334 [00000954:SCHEDULE] Service 7 is in schedule

soluna.js:5334 [00000955:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000956:SCHEDULE] Assign 7 to worker 0

soluna.js:5334 [00000957:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00000963:SCHEDULE] Service 1 is done

soluna.js:5334 [00000964:SCHEDULE] Service 1 is idle

soluna.js:5334 [00000972:SCHEDULE] Service 7 is done

soluna.js:5334 [00000973:SCHEDULE] Message from 7 to 1 type=2

soluna.js:5334 [00000974:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00000975:SCHEDULE] Service 7 back to schedule

soluna.js:5334 [00000976:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00000977:SCHEDULE] Assign 7 to worker 2

soluna.js:5334 [00000983:SCHEDULE] Service 1 is done

soluna.js:5334 [00000984:SCHEDULE] Message from 1 to 6 type=0

soluna.js:5334 [00000985:SCHEDULE] Service 6 is in schedule

soluna.js:5334 [00000986:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00000987:SCHEDULE] Assign 6 to worker 0

soluna.js:5334 [00000988:SCHEDULE] Assign 1 to worker 3

soluna.js:5334 [00000995:SCHEDULE] Service 7 is done

soluna.js:5334 [00000996:SCHEDULE] Signal 7 dead to root

soluna.js:5334 [00001004:SCHEDULE] Service 6 is done

soluna.js:5334 [00001005:SCHEDULE] Message from 6 to 1 type=2

soluna.js:5334 [00001006:SCHEDULE] Service 6 back to schedule

soluna.js:5334 [00001007:SCHEDULE] Assign 6 to worker 0

soluna.js:5334 [00001011:SCHEDULE] Service 1 is done

soluna.js:5334 [00001012:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001013:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00001027:SCHEDULE] Service 6 is done

soluna.js:5334 [00001028:SCHEDULE] Signal 6 dead to root

soluna.js:5334 [00001036:SCHEDULE] Service 1 is done

soluna.js:5334 [00001037:SCHEDULE] Message from 1 to 0 type=1

soluna.js:5334 [00001038:SCHEDULE] Delete service 7

soluna.js:5334 [00001039:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001040:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001053:SCHEDULE] Service 1 is done

soluna.js:5334 [00001054:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001055:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001068:SCHEDULE] Service 1 is done

soluna.js:5334 [00001069:SCHEDULE] Message from 1 to 4 type=0

soluna.js:5334 [00001070:SCHEDULE] Service 4 is in schedule

soluna.js:5334 [00001071:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001072:SCHEDULE] Assign 4 to worker 0

soluna.js:5334 [00001073:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00001091:SCHEDULE] Service 1 is done

soluna.js:5334 [00001093:SCHEDULE] Service 4 is done

soluna.js:5334 [00001095:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001097:SCHEDULE] Message from 4 to 1 type=2

soluna.js:5334 [00001098:SCHEDULE] Service 4 back to schedule

soluna.js:5334 [00001099:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001100:SCHEDULE] Assign 4 to worker 2

soluna.js:5334 [00001119:SCHEDULE] Service 4 is done

soluna.js:5334 [00001120:SCHEDULE] Signal 4 dead to root

soluna.js:5334 [00001128:SCHEDULE] Service 1 is done

soluna.js:5334 [00001129:SCHEDULE] Message from 1 to 0 type=1

soluna.js:5334 [00001130:SCHEDULE] Delete service 6

soluna.js:5334 [00001131:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001132:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001145:SCHEDULE] Service 1 is done

soluna.js:5334 [00001146:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001147:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001160:SCHEDULE] Service 1 is done

soluna.js:5334 [00001161:SCHEDULE] Message from 1 to 3 type=0

soluna.js:5334 [00001162:SCHEDULE] Service 3 is in schedule

soluna.js:5334 [00001163:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001164:SCHEDULE] Assign 3 to worker 0

soluna.js:5334 [00001165:SCHEDULE] Assign 1 to worker 2

soluna.js:5334 [00001183:SCHEDULE] Service 1 is done

soluna.js:5334 [00001184:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001185:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001189:SCHEDULE] Service 1 is done

soluna.js:5334 [00001190:SCHEDULE] Message from 1 to 0 type=1

soluna.js:5334 [00001191:SCHEDULE] Delete service 4

soluna.js:5334 [00001192:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001193:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001197:SCHEDULE] Service 1 is done

soluna.js:5334 [00001198:SCHEDULE] Service 1 is idle

soluna.js:5334 [00001206:SCHEDULE] Service 3 is done

soluna.js:5334 [00001207:SCHEDULE] Message from 3 to 1 type=2

soluna.js:5334 [00001208:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00001209:SCHEDULE] Service 3 back to schedule

soluna.js:5334 [00001210:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001211:SCHEDULE] Assign 3 to worker 2

soluna.js:5334 [00001229:SCHEDULE] Service 1 is done

soluna.js:5334 [00001230:SCHEDULE] Message from 1 to 2 type=0

soluna.js:5334 [00001231:SCHEDULE] Trigger sockevent of service 2

soluna.js:5334 [00001232:SCHEDULE] Service 1 back to schedule

soluna.js:5334 [00001233:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001238:SCHEDULE] Service 3 is done

soluna.js:5334 [00001239:SCHEDULE] Service 3 is idle

soluna.js:5334 [00001247:SCHEDULE] Service 1 is done

soluna.js:5334 [00001248:SCHEDULE] Service 1 is idle

soluna.js:5334 [00001256:SCHEDULE] Service 2 is done

soluna.js:5334 [00001257:SCHEDULE] Service 2 back to schedule

soluna.js:5334 [00001258:SCHEDULE] Assign 2 to worker 0

soluna.js:5334 [00001271:SCHEDULE] Service 2 is done

soluna.js:5334 [00001272:SCHEDULE] Message from 2 to 1 type=2

soluna.js:5334 [00001273:SCHEDULE] Service 1 is in schedule

soluna.js:5334 [00001274:SCHEDULE] Service 2 back to schedule

soluna.js:5334 [00001275:SCHEDULE] Assign 1 to worker 0

soluna.js:5334 [00001276:SCHEDULE] Assign 2 to worker 1

soluna.js:5334 [00001283:SCHEDULE] Service 2 is done

soluna.js:5334 [00001284:SCHEDULE] Signal 2 dead to root


Details

@cloudwu
Copy link
Owner Author

cloudwu commented Oct 31, 2025

看 log ,我发现了类似 "Service 7 quit“ 。这说明服务在 resume 时出错或结束了。但 ltask 并不会让服务代码结束,所以多半是出错。

我猜原本 https://github.com/cloudwu/ltask/blob/master/src/service.c#L426-L432 这里应该由 writestringerror 输出 error log ,但没能成功。我觉得可以把 writestringerror 这个宏修改一下,让它可以正确输出 log 。

我猜测还是 ltask mainthread api 未能正确工作。因为它依赖正确的 coroutine.resume/yield 配对。如果错配,我估计无法正确工作。 应该和 mainthread api 关系不大,看 log 只有 service 5 使用了它,而其它 service 全部都在 service_resume() 返回 1 (通常为出错)后退出了。

@yuchanns
Copy link
Contributor

yuchanns commented Oct 31, 2025

我修改了 writestringerror 的实现,但是没有打印出日志(或者说没有走到这里)。
而当我在 service_resume 里每个分支多加行日志,服务又不会退出了,一直在 yield resume 但是没有什么 lua 侧的输出
感觉又是什么大量打印会微妙影响执行时机从而不会触发退出的问题。

另外偶尔会触发 quit_all_worker 函数, 看样子应该是 root 服务出错了。我猜是因为 root 没能完成启动其他 service 的工作,所以其他服务都没实际执行 lua 代码。 我重写了 io.write 方法改为 emsripten 的方法, 终于可以看到一些 lua 侧的日志。明天继续 debug

@cloudwu
Copy link
Owner Author

cloudwu commented Oct 31, 2025

soluna.js:5334 [00000993:WORKER2] Service 7 quit
soluna.js:5334 [00000994:WORKER2] Acquire schedule
soluna.js:5334 [00000995:SCHEDULE] Service 7 is done
soluna.js:5334 [00000996:SCHEDULE] Signal 7 dead to root

以上是节选的 service 7 退出阶段的 log (按时间戳排序)

Signal 7 dead to root 发生在 https://github.com/cloudwu/ltask/blob/master/src/ltask.c#L228-L234 这里 status == SERVICE_STATUS_DEAD 条件成立。
倒退回去是 Service 7 quit 这个发生在 https://github.com/cloudwu/ltask/blob/master/src/ltask.c#L682-L685 设置了 SERVICE_STATUS_DEAD 到这里都很合理。

所以,一定是 if (service_resume(P, id)) 条件成立了。

https://github.com/cloudwu/ltask/blob/master/src/service.c#L405 这个函数有五个分支 return 1 ,最后两个会触发 writestringerror 。

前三个分别是 : S == NULL ,L == NULL ,以及 lua_resume 返回 LUA_OK (即运行的 lua vm 的 mainthread 正常结束)。

如果是第三种,那么只能是 https://github.com/cloudwu/ltask/blob/master/lualib/service.lua#L935 这里的正常退出。
若是正常退出,在另外一份 log 里就应该有 ltask.log.info "quit." 输出的 quit.

@cloudwu
Copy link
Owner Author

cloudwu commented Oct 31, 2025

会不会是 ltask 的启动阶段出了错,然后 root 服务去了退出流程?

root 服务现在是当启动完毕后,没有任何匿名服务,就把 ltask 整个退出 https://github.com/cloudwu/ltask/blob/master/service/root.lua#L284

@yuchanns
Copy link
Contributor

yuchanns commented Oct 31, 2025

我现在已经定位到是 start.lua 在调用 file.load 时报错了。

	FILE *f = fopen_utf8(filename, mode);
	if (f == NULL)
		return 0;

走到这个分支,所以没有错误信息。

不过多试几次,也不一定走到这里,有可能还没走到挂了。

难道 wasm worker 不能使用文件 api ? 所以读取不到文件? 联想到 io.write 在 wasm worker 中无法使用,需要我重写成 emscripten_outf, 感觉很有可能

拿到的错误信息就是 No such file or directory

我怀疑跨线程不共享 memfs

@cloudwu
Copy link
Owner Author

cloudwu commented Oct 31, 2025

我之前在做 Ant 的时候,倒是把所有的 IO 都集中到一个独立服务中,统一管理。

memfs 听起来是 js 侧的模块,不知道如何保证多个 worker 共享。从 https://emscripten.webassembly.net.cn/docs/api_reference/wasm_workers.html 这里看

Pthreads 具有每个线程的传入代理消息队列,而 Wasm Workers 没有
为了在其他线程上灵活地同步执行代码,并实现对例如 MEMFS 文件系统和屏幕外帧缓冲区(从 Worker 模拟的 WebGL)功能的支持 API,主浏览器线程和每个 pthread 都有一个系统支持的“代理消息队列”来接收消息。

这使得用户代码可以调用 API 函数,emscripten_sync_run_in_main_runtime_thread(),emscripten_async_run_in_main_runtime_thread(),emscripten_dispatch_to_thread() 等,从 emscripten/threading.h 执行代理调用。

听起来 pthread 版本是用消息队列完成的。

如果有必要,其实可以把所有 file.load 请求放在一个服务中,并在这个服务里使用 mainthread 切到主线程运行。另外,emscripten_async_run_in_main_runtime_thread() 不知道是什么,可否利用。

亦或用单一 zip 包的话,其实或许连 memfs 都可以不用(只在启动时打开文件加载)。

@yuchanns
Copy link
Contributor

yuchanns commented Oct 31, 2025

emscripten_async_run_in_main_runtime_thread 现在 soluna 就有在使用。这是一个 pthread 限定的函数,将函数发送到主线程执行。例如 openurl 和 ime 通过这个函数实现的。但是 wasm worker 无法使用,没有实现。

emscripten_async_run_in_main_runtime_thread(EM_FUNC_SIG_VI, soluna_wasm_open_url, url);

当然, wasm worker 有其他通信方式,可以通过

emscripten_wasm_worker_post_function_ 发送消息。

PS: https://github.com/emscripten-core/emscripten/tree/main/test/wasm_worker 列出了大部分 wasm 函数的用法和用途

@cloudwu
Copy link
Owner Author

cloudwu commented Nov 1, 2025

我在 https://cocalc.com/github/emscripten-core/emscripten/blob/main/system/include/emscripten/wasm_worker.h 看完了 wasm worker api ,尤其是 emscripten_wasm_worker_post_function_ 的注解。

感觉这个工作可以暂搞一段落,soluna 应继续使用 pthread 。如果使用 wasm worker ,还需要解决把某些 api 扔回 parent 即 mainthread 的 event loop 运行的问题。单独只是用 post function 还不足以取回返回值,得用 semaphore 同步返回值。

目前 ltask 的 mainthread api 尚不支持多个 service 以队列形式向 wasm mainthread 编排任务,只供 render 服务使用。若独立一个 io 服务出来还需要再改进。不如让 wasm pthread 在 C api 层次解决,减少 ltask/soluna 的维护成本。

不过,这次了解了 wasm worker 的原理。我认为如果能想到好的解决方案,利用 wasm worker 访问 memfs 应该能提高 io 性能:因为从 pthread 的 api 层次看,io 操作更细碎,有很大的同步成本。而如果在更高层次解决,可以合并这些操作,把整个 io 任务,例如 file.load ,一次同步。另外,也可以顺便把 openurl/ime 也合并到同一方案中。

ps. 这个分支我就不删了,备以后参考。

@cloudwu cloudwu closed this Nov 1, 2025
@cloudwu
Copy link
Owner Author

cloudwu commented Nov 1, 2025

补充:通过这次尝试,可以了解到,在 ltask 里,最好不要在不同服务同时进行 io 操作。wasm pthread 只是做了一些封装,但根源还是会把 io proxy 回主线程。猜测它会 block 住 ltask 的 worker ,等待 web mainthread 。这对 ltask 的调度器是未知的,如果多个 ltask worker 同时进行 io ,就会被 wasm pthread 串行到 web mainthread ,猜测如果 ltask worker 数量不够,非常大概率导致 ltask 调度器死锁。

另外,log 服务是否应该做一些修改,使用 emscripten_outf ,或许能更好一些。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants