[🐛 BUG]: Incorrect worker pool recreating

No duplicates 🥲.

[X] I have searched for a similar issue in our bug tracker and didn't find any solutions.

What happened?
Greetings.
I was trying to investigate reasons for some errors in processing my workflows with a lot of activities(e.g. 100+) and have found something strange when worker pools were recreated during workflow execution. Especially when max_jobs option for activities in .rr.yaml file is used, because it causes pool to be recreated more often.
Sometimes it simple causes activity execution timeout but sometimes it cause to workflow task execution error and as result - whole workflow fails.
On different setup errors slightly vary but in both cases stack trace of golang panic points to aggregatedpool/workflow.go:153 .
Also If at least workflow tasks worker pool has restarted successfully (e.g. "workflow pool restarted" appears in log) - everything works fine.
So for now I suppress exceptions in my workflows and turn of max_jobs but this imho not good decision.
Version
PHP 8.1.3
Roadrunner 2.10.3 (temporal plugin version 1.4.4)
Temporal PHP SDK 1.3.2
Relevant log output
Log 1:

DEBUG	server      	worker stopped	{"internal_event_name": "EventWorkerWaitExit", "error": "signal: killed; process_wait: signal: killed", "errorCauses": [{"error": "signal: killed"}, {"error": "process_wait: signal: killed"}]}
DEBUG	temporal    	worker stopped, restarting pool and temporal workers	{"message": "process exited"}
INFO	temporal    	reset signal received, resetting activity and workflow worker pools
DEBUG	server      	worker is allocated	{"pid": 473, "internal_event_name": "EventWorkerConstruct"}
DEBUG	server      	worker destroyed	{"pid": 461, "internal_event_name": "EventWorkerDestruct"}
DEBUG	server      	worker is allocated	{"pid": 477, "internal_event_name": "EventWorkerConstruct"}
INFO	temporal    	workflow pool restarted
DEBUG	server      	worker destroyed	{"pid": 473, "internal_event_name": "EventWorkerDestruct"}
DEBUG	server      	worker destroyed	{"pid": 466, "internal_event_name": "EventWorkerDestruct"}
DEBUG	temporal    	workflow task started	{"time": "1s"}
DEBUG	temporal    	outgoing message	{"id": 9266, "data": "", "context": ""}
DEBUG	server      	worker is allocated	{"pid": 482, "internal_event_name": "EventWorkerConstruct"}
DEBUG	server      	worker is allocated	{"pid": 481, "internal_event_name": "EventWorkerConstruct"}
INFO	temporal    	activity pool restarted
WARN	temporal    	Failed to poll for task.	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:071a4091-8f8e-4dd9-bf4b-17275481ef76", "WorkerType": "WorkflowWorker", "Error": "worker stopping"}
WARN	server      	worker stopped, and will be restarted	{"reason": "worker error", "pid": 477, "internal_event_name": "EventWorkerError", "error": "sync_worker_exec: SoftJobError:\n\tsync_worker_exec_payload: LogicException: Got the response to undefined request 9266 in /app/vendor/temporal/sdk/src/Internal/Transport/Client.php:60\nStack trace:\n#0 /app/vendor/temporal/sdk/src/WorkerFactory.php(389): Temporal\\Internal\\Transport\\Client->dispatch(Object(Temporal\\Worker\\Transport\\Command\\SuccessResponse))\n#1 /app/vendor/temporal/sdk/src/WorkerFactory.php(261): Temporal\\WorkerFactory->dispatch('\\n'\\x08\\xB2H*\"\\n \\n\\x16\\n\\x08en...', Array)\n#2 /app/vendor/spiral/temporal-bridge/src/Dispatcher.php(61): Temporal\\WorkerFactory->run()\n#3 /app/vendor/spiral/framework/src/Core/src/ContainerScope.php(46): Spiral\\TemporalBridge\\Dispatcher->serve()\n#4 /app/vendor/spiral/framework/src/Core/src/Container.php(282): Spiral\\Core\\ContainerScope::runScope(Object(Spiral\\Core\\Container), Array)\n#5 /app/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(212): Spiral\\Core\\Container->runScope(Array, Array)\n#6 /app/app.php(39): Spiral\\Boot\\AbstractKernel->serve()\n#7 {main}"}
ERROR	temporal    	Workflow panic	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:071a4091-8f8e-4dd9-bf4b-17275481ef76", "WorkflowType": "many_action_test", "WorkflowID": "cfbc01e1-6880-48da-95df-b876bcde4165", "RunID": "f280e334-79c3-4c9b-a750-4c7c0064d38a", "Attempt": 1, "Error": "sync_worker_exec: SoftJobError:\n\tsync_worker_exec_payload: LogicException: Got the response to undefined request 9266 in /app/vendor/temporal/sdk/src/Internal/Transport/Client.php:60\nStack trace:\n#0 /app/vendor/temporal/sdk/src/WorkerFactory.php(389): Temporal\\Internal\\Transport\\Client->dispatch(Object(Temporal\\Worker\\Transport\\Command\\SuccessResponse))\n#1 /app/vendor/temporal/sdk/src/WorkerFactory.php(261): Temporal\\WorkerFactory->dispatch('\\n'\\x08\\xB2H*\"\\n \\n\\x16\\n\\x08en...', Array)\n#2 /app/vendor/spiral/temporal-bridge/src/Dispatcher.php(61): Temporal\\WorkerFactory->run()\n#3 /app/vendor/spiral/framework/src/Core/src/ContainerScope.php(46): Spiral\\TemporalBridge\\Dispatcher->serve()\n#4 /app/vendor/spiral/framework/src/Core/src/Container.php(282): Spiral\\Core\\ContainerScope::runScope(Object(Spiral\\Core\\Container), Array)\n#5 /app/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(212): Spiral\\Core\\Container->runScope(Array, Array)\n#6 /app/app.php(39): Spiral\\Boot\\AbstractKernel->serve()\n#7 {main}", "StackTrace": "process event for default [panic]:\ngithub.com/temporalio/roadrunner-temporal/aggregatedpool.(*Workflow).OnWorkflowTaskStarted(0xc00088ad20, 0xc001b5e340?)\n\tgithub.com/temporalio/roadrunner-temporal@v1.4.4/aggregatedpool/workflow.go:153 +0x2e8\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc002059860, 0xc001b5e400, 0x60?, 0x1)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_event_handlers.go:815 +0x203\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc002041570, 0xc00078b9e0)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:878 +0xca8\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc0007d9130, 0xc00078b9e0, 0xc00078bd70)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:727 +0x485\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc001ff7ad0, 0xc00078b9e0)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:284 +0x2cd\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc001ff7ad0, {0x15b7080?, 0xc00078b9e0?})\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:255 +0x6c\ngo.temporal.io/sdk/internal.(*baseWorker).processTask(0xc0006e0f00, {0x15b6c40?, 0xc001aa56c0})\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_worker_base.go:398 +0x167\ncreated by go.temporal.io/sdk/internal.(*baseWorker).runTaskDispatcher\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_worker_base.go:302 +0xb5"}
WARN	temporal    	Failed to process workflow task.	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:071a4091-8f8e-4dd9-bf4b-17275481ef76", "WorkflowType": "many_action_test", "WorkflowID": "cfbc01e1-6880-48da-95df-b876bcde4165", "RunID": "f280e334-79c3-4c9b-a750-4c7c0064d38a", "Attempt": 1, "Error": "sync_worker_exec: SoftJobError:\n\tsync_worker_exec_payload: LogicException: Got the response to undefined request 9266 in /app/vendor/temporal/sdk/src/Internal/Transport/Client.php:60\nStack trace:\n#0 /app/vendor/temporal/sdk/src/WorkerFactory.php(389): Temporal\\Internal\\Transport\\Client->dispatch(Object(Temporal\\Worker\\Transport\\Command\\SuccessResponse))\n#1 /app/vendor/temporal/sdk/src/WorkerFactory.php(261): Temporal\\WorkerFactory->dispatch('\\n'\\x08\\xB2H*\"\\n \\n\\x16\\n\\x08en...', Array)\n#2 /app/vendor/spiral/temporal-bridge/src/Dispatcher.php(61): Temporal\\WorkerFactory->run()\n#3 /app/vendor/spiral/framework/src/Core/src/ContainerScope.php(46): Spiral\\TemporalBridge\\Dispatcher->serve()\n#4 /app/vendor/spiral/framework/src/Core/src/Container.php(282): Spiral\\Core\\ContainerScope::runScope(Object(Spiral\\Core\\Container), Array)\n#5 /app/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(212): Spiral\\Core\\Container->runScope(Array, Array)\n#6 /app/app.php(39): Spiral\\Boot\\AbstractKernel->serve()\n#7 {main}"}
DEBUG	temporal    	sequenceID	{"before": 38}
DEBUG	temporal    	sequenceID	{"after": 39}
DEBUG	server      	worker stopped	{"internal_event_name": "EventWorkerWaitExit", "error": "signal: killed; process_wait: signal: killed", "errorCauses": [{"error": "signal: killed"}, {"error": "process_wait: signal: killed"}]}
DEBUG	temporal    	outgoing message	{"id": 39, "data": "", "context": ""}
DEBUG	server      	worker is allocated	{"pid": 489, "internal_event_name": "EventWorkerConstruct"}
DEBUG	temporal    	received message	{"command": null, "id": 39, "data": "\n\ufffd\u000f\u0008'\"\ufffd\u000f\ndUnable to kill workflow because workflow process #f280e334-79c3-4c9b-a750-4c7c0064d38a was not found\u0012\u0007PHP_SDK\u001a\ufffd\u000eInvalidArgumentException: Unable to kill workflow because workflow process #f280e334-79c3-4c9b-a750-4c7c0064d38a was not found in /app/vendor/temporal/sdk/src/Internal/Transport/Router/DestroyWorkflow.php:48\nStack trace:\n#0 /app/vendor/temporal/sdk/src/Internal/Transport/Router/DestroyWorkflow.php(34): Temporal\\Internal\\Transport\\Router\\DestroyWorkflow->kill('f280e334-79c3-4...')\n#1 /app/vendor/temporal/sdk/src/Internal/Transport/Router.php(81): Temporal\\Internal\\Transport\\Router\\DestroyWorkflow->handle(Object(Temporal\\Worker\\Transport\\Command\\Request), Array, Object(React\\Promise\\Deferred))\n#2 /app/vendor/temporal/sdk/src/Worker/Worker.php(94): Temporal\\Internal\\Transport\\Router->dispatch(Object(Temporal\\Worker\\Transport\\Command\\Request), Array)\n#3 /app/vendor/temporal/sdk/src/WorkerFactory.php(413): Temporal\\Worker\\Worker->dispatch(Object(Temporal\\Worker\\Transport\\Command\\Request), Array)\n#4 /app/vendor/temporal/sdk/src/Internal/Transport/Server.php(60): Temporal\\WorkerFactory->onRequest(Object(Temporal\\Worker\\Transport\\Command\\Request), Array)\n#5 /app/vendor/temporal/sdk/src/WorkerFactory.php(387): Temporal\\Internal\\Transport\\Server->dispatch(Object(Temporal\\Worker\\Transport\\Command\\Request), Array)\n#6 /app/vendor/temporal/sdk/src/WorkerFactory.php(261): Temporal\\WorkerFactory->dispatch('\\nE\\x08'\\x12\\x0FDestroyWo...', Array)\n#7 /app/vendor/spiral/temporal-bridge/src/Dispatcher.php(61): Temporal\\WorkerFactory->run()\n#8 /app/vendor/spiral/framework/src/Core/src/ContainerScope.php(46): Spiral\\TemporalBridge\\Dispatcher->serve()\n#9 /app/vendor/spiral/framework/src/Core/src/Container.php(282): Spiral\\Core\\ContainerScope::runScope(Object(Spiral\\Core\\Container), Array)\n#10 /app/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(212): Spiral\\Core\\Container->runScope(Array, Array)\n#11 /app/app.php(39): Spiral\\Boot\\AbstractKernel->serve()\n#12 {main}*\u001a\n\u0018InvalidArgumentException"}
WARN	temporal    	Failed to poll for task.	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:071a4091-8f8e-4dd9-bf4b-17275481ef76", "WorkerType": "ActivityWorker", "Error": "worker stopping"}
INFO	temporal    	Stopped Worker	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:071a4091-8f8e-4dd9-bf4b-17275481ef76"}
DEBUG	temporal    	outgoing message	{"id": 0, "data": "", "context": ""}
DEBUG	temporal    	received message	{"command": null, "id": 0, "data": "\n\ufffd\u0004*\ufffd\u0004\n\ufffd\u0004\n\u0016\n\u0008encoding\u0012\njson/plain\u0012\ufffd\u0004{\"TaskQueue\":\"default\",\"Options\":{\"MaxConcurrentActivityExecutionSize\":0,\"WorkerActivitiesPerSecond\":0.0,\"MaxConcurrentLocalActivityExecutionSize\":0,\"WorkerLocalActivitiesPerSecond\":0.0,\"TaskQueueActivitiesPerSecond\":0.0,\"MaxConcurrentActivityTaskPollers\":0,\"MaxConcurrentWorkflowTaskExecutionSize\":0,\"MaxConcurrentWorkflowTaskPollers\":0,\"StickyScheduleToStartTimeout\":null,\"WorkerStopTimeout\":null,\"EnableSessionWorker\":false,\"SessionResourceID\":null,\"MaxConcurrentSessionExecutionSize\":1000},\"Workflows\":[{\"Name\":\"many_action_test\",\"Queries\":[],\"Signals\":[]}],\"Activities\":[{\"Name\":\"exec\"}]}"}
DEBUG	temporal    	worker info	{"taskqueue": "default", "options": {"MaxConcurrentActivityExecutionSize":0,"WorkerActivitiesPerSecond":0,"MaxConcurrentLocalActivityExecutionSize":0,"WorkerLocalActivitiesPerSecond":0,"TaskQueueActivitiesPerSecond":0,"MaxConcurrentActivityTaskPollers":0,"MaxConcurrentWorkflowTaskExecutionSize":0,"MaxConcurrentWorkflowTaskPollers":0,"EnableLoggingInReplay":false,"DisableStickyExecution":false,"StickyScheduleToStartTimeout":0,"BackgroundActivityContext":null,"WorkflowPanicPolicy":0,"WorkerStopTimeout":0,"EnableSessionWorker":false,"MaxConcurrentSessionExecutionSize":1000,"DisableWorkflowWorker":false,"LocalActivityWorkerOnly":false,"Identity":"","DeadlockDetectionTimeout":0,"MaxHeartbeatThrottleInterval":0,"DefaultHeartbeatThrottleInterval":0,"Interceptors":null}}
DEBUG	temporal    	workflow registered	{"taskqueue": "default", "workflow name": "many_action_test"}
DEBUG	temporal    	activity registered	{"taskqueue": "default", "workflow name": "exec"}
DEBUG	temporal    	workers initialized	{"num_workers": 1}
INFO	temporal    	Started Worker	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:ef206c5e-a1d0-4c3b-8404-fe99e29fa9fc"}
DEBUG	temporal    	worker stopped, restarting pool and temporal workers	{"message": "process exited"}
INFO	temporal    	reset signal received, resetting activity and workflow worker pools
DEBUG	server      	worker destroyed	{"pid": 489, "internal_event_name": "EventWorkerDestruct"}
DEBUG	server      	worker is allocated	{"pid": 493, "internal_event_name": "EventWorkerConstruct"}
INFO	temporal    	workflow pool restarted

Log 2:

static_pool_exec: Workers watcher stopped:\n\tstatic_pool_exec:\n\tworker_watcher_get_free_worker", "StackTrace": "process event for default [panic]:\ngithub.com/temporalio/roadrunner-temporal/aggregatedpool.(*Workflow).OnWorkflowTaskStarted(0xc0008914a0, 0xc0011ac5c0?)\n\tgithub.com/temporalio/roadrunner-temporal@v1.4.4/aggregatedpool/workflow.go:153 +0x2e8\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc000f12600, 0xc0011ac680, 0x60?, 0x1)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_event_handlers.go:815 +0x203\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc00019a5b0, 0xc0011b4d80)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:878 +0xca8\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc000fd49a0, 0xc0011b4d80, 0xc0011b5110)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:727 +0x485\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc00071a5b0, 0xc0011b4d80)\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:284 +0x2cd\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc00071a5b0, {0x15b7080?, 0xc0011b4d80?})\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:255 +0x6c\ngo.temporal.io/sdk/internal.(*baseWorker).processTask(0xc000544280, {0x15b6c40?, 0xc000efa260})\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_worker_base.go:398 +0x167\ncreated by go.temporal.io/sdk/internal.(*baseWorker).runTaskDispatcher\n\tgo.temporal.io/sdk@v1.14.0/internal/internal_worker_base.go:302 +0xb5

Hey @Torrion 👋🏻. The max_jobs option is used to have a PHP-FPM-like behavior (restart a PHP process every n-requests). You can safely skip this option if you don't have memory leaks in your PHP code.
Could you please provide me with a sample to reproduce your issue and the .rr.yaml configuration you used?

Or, if you do have memory leaks, you may use the supervisor option with a memory limit.

Thanks @rustatian for your answer

Or, if you do have memory leaks, you may use the supervisor option with a memory limit.

There was problems with supervisor on roadrunner v2.4-2.6 on my symphony setup, but you're right - now it's quite useful.
However, more recent test with supervisor and no max_jobs option produces errors like:
PanicError: sync_worker_exec: SoftJobError:
	sync_worker_exec_payload: LogicException: Got the response to undefined request 9030 in /app/vendor/temporal/sdk/src/Internal/Transport/Client.php:60
Stack trace:
#0 /app/vendor/temporal/sdk/src/WorkerFactory.php(389): Temporal\Internal\Transport\Client->dispatch(Object(Temporal\Worker\Transport\Command\SuccessResponse))
#1 /app/vendor/temporal/sdk/src/WorkerFactory.php(261): Temporal\WorkerFactory->dispatch('\n'\x08\xC6F*"\n \n\x16\n\x08en...', Array)
#2 /app/vendor/spiral/temporal-bridge/src/Dispatcher.php(61): Temporal\WorkerFactory->run()
#3 /app/vendor/spiral/framework/src/Core/src/ContainerScope.php(46): Spiral\TemporalBridge\Dispatcher->serve()
#4 /app/vendor/spiral/framework/src/Core/src/Container.php(282): Spiral\Core\ContainerScope::runScope(Object(Spiral\Core\Container), Array)
#5 /app/vendor/spiral/framework/src/Boot/src/AbstractKernel.php(212): Spiral\Core\Container->runScope(Array, Array)
#6 /app/app.php(39): Spiral\Boot\AbstractKernel->serve()
#7 {main}
process event for default [panic]:
github.com/temporalio/roadrunner-temporal/aggregatedpool.(*Workflow).OnWorkflowTaskStarted(0xc000081590, 0xc0009f97c0?)
	github.com/temporalio/roadrunner-temporal@v1.4.4/aggregatedpool/workflow.go:153 +0x2e8
go.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc0006579b0, 0xc0009f9880, 0x60?, 0x1)
	go.temporal.io/sdk@v1.14.0/internal/internal_event_handlers.go:815 +0x203
go.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc0005f2bd0, 0xc000a8e8a0)
	go.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:878 +0xca8
go.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc000806a50, 0xc000a8e8a0, 0xc000a8ec30)
	go.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:727 +0x485
go.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc000772340, 0xc000a8e8a0)
	go.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:284 +0x2cd
go.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc000772340, {0x15b7080?, 0xc000a8e8a0?})
	go.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:255 +0x6c
go.temporal.io/sdk/internal.(*baseWorker).processTask(0xc0006e0140, {0x15b6c40?, 0xc0009fb040})
	go.temporal.io/sdk@v1.14.0/internal/internal_worker_base.go:398 +0x167
created by go.temporal.io/sdk/internal.(*baseWorker).runTaskDispatcher
	go.temporal.io/sdk@v1.14.0/internal/internal_worker_base.go:302 +0xb5

or even simplier:
Error: activity_pool_execute_activity: Workers watcher stopped:
	static_pool_exec_with_context:
	static_pool_exec_with_context:
	worker_watcher_get_free_worker

Could you please provide me with a sample to reproduce your issue and the .rr.yaml configuration you used?

https://github.com/Torrion/temporal-worker-pool-leak-test

You should increase this option: https://github.com/Torrion/temporal-worker-pool-leak-test/blob/main/.rr.yaml#L13
If your tasks are CPU intensive, you should use at least 1.5*CPU_CORES workers. If your tasks are IO-bound - you may use 10-50-100 workers safely.

@Torrion Also, don't use a -d option for the RR. This is not debugging as it was in the RRv1. This is pprof server that will hugely slow down RR.

I've faced the same problem after upgrading RR to 2.10.3 and PHP-SDK to 1.3.2
Temporal can't find workers for activity reporting the same error:
Error: activity_pool_execute_activity: Workers watcher stopped:
	static_pool_exec:
	static_pool_exec:
	worker_watcher_get_free_worker

There were no such problems before upgrade with the same load

Our rr activities config:
temporal:
  address: temporal:7233
  cache_size: 1
  namespace: schedule_manager_bp
  activities:
    num_workers: 4
    max_jobs: 64
    supervisor:
      ttl: 30m
      max_worker_memory: 256

Ok, guys, thanks for the reports. I'll investigate the regression.

A couple of error messages from worker's log, hope it will help:
{"level":"debug","ts":1654603823.9559908,"logger":"temporal","msg":"outgoing message","id":178,"data":"","context":""}
{"level":"error","ts":1654603823.9560623,"logger":"temporal","msg":"Activity error.","Namespace":"schedule_manager_crud","TaskQueue":"default","WorkerID":"default:0503ba48-cc2a-4a44-84a7-9a968b92ad0b","WorkflowID":"29cb8ca5-a797-4d1e-b009-47b7079574ce","RunID":"07fce548-cae3-4de3-9d29-1aae6dcbcefe","ActivityType":"EducationServiceWasChanged.findClassTypeProperties","Attempt":5,"Error":"activity_pool_execute_activity: Workers watcher stopped:\n\tstatic_pool_exec:\n\tstatic_pool_exec:\n\tworker_watcher_get_free_worker"}

{"level":"debug","ts":1654603823.9712448,"logger":"temporal","msg":"workflow task started","time":1}
{"level":"debug","ts":1654603823.9713047,"logger":"temporal","msg":"outgoing message","id":9001,"data":"","context":""}
{"level":"debug","ts":1654603823.9744446,"logger":"temporal","msg":"received message","command":{},"id":9002,"data":"\n\ufffd\u0005\u0008\ufffdF\u0012\u0010CompleteWorkflow\u001a\u0002{}\"\ufffd\u0005\n\u000eactivity error\u0012\u0005GoSDK\u001a\ufffd\u0003/opt/app/workflows_crud/src/ScheduleManagerWorkflowsCrudBundle/Feature/EducationServiceWasChanged/EducationServiceWasChangedWorkflow.php:39\n/opt/app/vendor/temporal/sdk/src/Worker/Worker.php:94\n/opt/app/vendor/temporal/sdk/src/WorkerFactory.php:413\n/opt/app/vendor/temporal/sdk/src/WorkerFactory.php:387\n/opt/app/vendor/temporal/sdk/src/WorkerFactory.php:261\n/opt/app/bin/worker_crud:44\"\ufffd\u0001\n~activity_pool_execute_activity: Workers watcher stopped:\n\tstatic_pool_exec:\n\tstatic_pool_exec:\n\tworker_watcher_get_free_worker\u0012\u0005GoSDK*\u0007\n\u0005ErrorZm\u0008\u0005\u0010\u0006\u001a,default:0503ba48-cc2a-4a44-84a7-9a968b92ad0b\"4\n2EducationServiceWasChanged.findClassTypeProperties*\u000150\u0004*\u0000"}

A couple of error messages from worker's log, hope it will help:
{"level":"debug","ts":1654603823.9559908,"logger":"temporal","msg":"outgoing message","id":178,"data":"","context":""}
{"level":"error","ts":1654603823.9560623,"logger":"temporal","msg":"Activity error.","Namespace":"schedule_manager_crud","TaskQueue":"default","WorkerID":"default:0503ba48-cc2a-4a44-84a7-9a968b92ad0b","WorkflowID":"29cb8ca5-a797-4d1e-b009-47b7079574ce","RunID":"07fce548-cae3-4de3-9d29-1aae6dcbcefe","ActivityType":"EducationServiceWasChanged.findClassTypeProperties","Attempt":5,"Error":"activity_pool_execute_activity: Workers watcher stopped:\n\tstatic_pool_exec:\n\tstatic_pool_exec:\n\tworker_watcher_get_free_worker"}

{"level":"debug","ts":1654603823.9712448,"logger":"temporal","msg":"workflow task started","time":1}
{"level":"debug","ts":1654603823.9713047,"logger":"temporal","msg":"outgoing message","id":9001,"data":"","context":""}
{"level":"debug","ts":1654603823.9744446,"logger":"temporal","msg":"received message","command":{},"id":9002,"data":"\n\ufffd\u0005\u0008\ufffdF\u0012\u0010CompleteWorkflow\u001a\u0002{}\"\ufffd\u0005\n\u000eactivity error\u0012\u0005GoSDK\u001a\ufffd\u0003/opt/app/workflows_crud/src/ScheduleManagerWorkflowsCrudBundle/Feature/EducationServiceWasChanged/EducationServiceWasChangedWorkflow.php:39\n/opt/app/vendor/temporal/sdk/src/Worker/Worker.php:94\n/opt/app/vendor/temporal/sdk/src/WorkerFactory.php:413\n/opt/app/vendor/temporal/sdk/src/WorkerFactory.php:387\n/opt/app/vendor/temporal/sdk/src/WorkerFactory.php:261\n/opt/app/bin/worker_crud:44\"\ufffd\u0001\n~activity_pool_execute_activity: Workers watcher stopped:\n\tstatic_pool_exec:\n\tstatic_pool_exec:\n\tworker_watcher_get_free_worker\u0012\u0005GoSDK*\u0007\n\u0005ErrorZm\u0008\u0005\u0010\u0006\u001a,default:0503ba48-cc2a-4a44-84a7-9a968b92ad0b\"4\n2EducationServiceWasChanged.findClassTypeProperties*\u000150\u0004*\u0000"}

Thanks, @mzavatsky. Nice, I guess I know where is the issue 👍🏻

@Torrion @mzavatsky Would you mind guys trying this version: https://github.com/roadrunner-server/roadrunner/releases/tag/v2.10.4-rc.1?

@rustatian I've tested on test stand from previous message and now it suddenly stucks after pool restart.
Here is example:
app_1                     | 2022-06-09T17:20:39.971Z	DEBUG	temporal    	worker stopped, restarting pool and temporal workers	{"message": "process exited"}
app_1                     | 2022-06-09T17:20:39.971Z	INFO	temporal    	reset signal received, resetting activity and workflow worker pools
app_1                     | 2022-06-09T17:20:39.971Z	WARN	temporal    	Failed to poll for task.	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:a569809d-7d86-463a-9284-122a75ef8fba", "WorkerType": "WorkflowWorker", "Error": "worker stopping"}
app_1                     | 2022-06-09T17:20:39.971Z	DEBUG	server      	idle_ttl	{"reason": "idle ttl is reached", "pid": 292, "internal_event_name": "EventTTL"}
app_1                     | 2022-06-09T17:20:39.972Z	WARN	temporal    	Failed to poll for task.	 Activity workers just had waiting for tasks until 17:25:45, when expiration event have come to workflow worker.

Is that from your sample repo?

Yes

Is that from your sample repo?

Yes

Hm.. Could you please recreate your docker images, because I'm using your sample-repo, and everything finished ok.

@Torrion I slightly reduced a loop with the activities from the 1mi to 100 to have a chance to finish that workflow (random exception hardcoded in the activity).
  69, 2022-06-10T09:47:59Z, ActivityTaskScheduled
  70, 2022-06-10T09:48:01Z, ActivityTaskStarted
  71, 2022-06-10T09:48:02Z, ActivityTaskCompleted
  72, 2022-06-10T09:48:02Z, WorkflowTaskScheduled
  73, 2022-06-10T09:48:07Z, WorkflowTaskTimedOut
  74, 2022-06-10T09:48:07Z, WorkflowTaskScheduled
  75, 2022-06-10T09:48:07Z, WorkflowTaskStarted
  76, 2022-06-10T09:48:07Z, WorkflowTaskCompleted
  77, 2022-06-10T09:48:07Z, ActivityTaskScheduled
  78, 2022-06-10T09:48:07Z, ActivityTaskStarted
  79, 2022-06-10T09:48:07Z, ActivityTaskCompleted
  80, 2022-06-10T09:48:07Z, WorkflowTaskScheduled
  81, 2022-06-10T09:48:12Z, WorkflowTaskTimedOut
  82, 2022-06-10T09:48:12Z, WorkflowTaskScheduled
  83, 2022-06-10T09:48:12Z, WorkflowTaskStarted
  84, 2022-06-10T09:48:12Z, WorkflowTaskCompleted
  85, 2022-06-10T09:48:12Z, WorkflowExecutionCompleted

Result:
  Run Time: 70 seconds
  Status: COMPLETED
  Output: [nil]

Try to do the following:

Remove (docker-compose down) the previous image with the temporal bundle.
Recreate the RR image.
Re-run your test. I used a tctl tool to start a workflow: tctl workflow run --taskqueue=default --workflow_type=many_action_test

I've tested it again. Firstly I thought there was my mistake and I've forgot to recreate container yesterday as everything worked fine on the first look. Especially with supervisor. With max_jobs there were some workflow task start timeout errors within 5s after tasks had been scheduled(however timeout is 10s) but this is not a problem actually. But then I left my workflow for a long time and it became failed after 6 minutes after start.
app_1                     | 2022-06-10T10:03:20.255Z	DEBUG	temporal    	workflow task started	{"time": "1s"}
app_1                     | 2022-06-10T10:03:20.255Z	DEBUG	temporal    	outgoing message	{"id": 9024, "data": "", "context": ""}
app_1                     | 2022-06-10T10:03:20.258Z	DEBUG	temporal    	received message	{"command": {"name":"exec","options":{"ActivityID":"","TaskQueueName":"default","ScheduleToCloseTimeout":300000000000,"ScheduleToStartTimeout":0,"StartToCloseTimeout":0,"HeartbeatTimeout":0,"WaitForCancellation":false,"OriginalTaskQueueName":"","RetryPolicy":{"backoff_coefficient":2,"maximum_attempts":5}}}, "id": 9025, "data": "\n\ufffd\u0002\u0008\ufffdF\u0012\u000fExecuteActivity\u001a\ufffd\u0002{\"name\":\"exec\",\"options\":{\"TaskQueueName\":\"default\",\"ScheduleToCloseTimeout\":300000000000,\"ScheduleToStartTimeout\":0,\"StartToCloseTimeout\":0,\"HeartbeatTimeout\":0,\"WaitForCancellation\":false,\"ActivityID\":\"\",\"RetryPolicy\":{\"initial_interval\":null,\"backoff_coefficient\":2,\"maximum_interval\":null,\"maximum_attempts\":5,\"non_retryable_error_types\":[]}}}*\u0000"}
app_1                     | 2022-06-10T10:03:20.258Z	DEBUG	temporal    	ExecuteActivity	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:ec69b6c3-a4c4-473c-b6e7-336cefbf6573", "WorkflowType": "many_action_test", "WorkflowID": "9139895b-c7ea-48fa-9cdb-c998ea2593a3", "RunID": "4e5ac690-246f-4ef1-ba14-a2a47094be84", "Attempt": 1, "ActivityID": "151", "ActivityType": "exec"}
app_1                     | 2022-06-10T10:03:20.534Z	DEBUG	temporal    	worker stopped, restarting pool and temporal workers	{"message": "process exited"}
app_1                     | 2022-06-10T10:03:20.534Z	INFO	temporal    	reset signal received, resetting activity and workflow worker pools
app_1                     | 2022-06-10T10:03:20.535Z	WARN	temporal    	Failed to poll for task.	{"Namespace": "default", "TaskQueue": "default", "WorkerID": "default:ec69b6c3-a4c4-473c-b6e7-336cefbf6573", "WorkerType": "WorkflowWorker", "Error": "worker stopping"}
app_1                     | 2022-06-10T10:03:20.535Z	WARN	temporal    	Failed to poll for task.

@Torrion Could you send me a wf history?

workflow task worker with timeout error.

You have a test exception in your code and a limited number of retries. That is expected to get a timeout because temporal can't finish WF.

Here you are
https://gist.github.com/Torrion/d1bab6a7ae41784550635551263154ed

You have a test exception in your code and a limited number of retries. That is expected to get a timeout because temporal can't finish WF.

 Event 116 timed out with no reason as for me.

@Torrion It's ok to get an exception from PHP. Then, temporal will retry this execution if the exception is retryable. But, during your execution, you got too many of these exceptions (4):
RetryOptions::new()->withMaximumAttempts(5)

And timeout:
->withScheduleToCloseTimeout('5 minute')

You didn't attach a timestamp, but I guess that as you wrote before it was 5 min from the event 1 to 166.

Also, the initial issue contains a report for the Unable to kill workflow because workflow process. Do you see these errors in the logs?

And Got the response to undefined request 9030 as well.

You didn't attach a timestamp
Updated both logs with time

Also, the initial issue contains a report for the Unable to kill workflow because workflow process. Do you see these errors in the logs?
No

And Got the response to undefined request 9030 as well.
And also, no

I guess that as you wrote before it was 5 min from the event 1 to 116
I think there are different activity runs produced these errors, but it needs more investigation and you're right, looks like another problem. Also this behavior occurred only if I use max_jobs instead of supervisor, which is more applicable for usage with temporal.  I'll open a new issue if I found something.

However, sleeping for 5 minutes had place in tests with supervisor enabled. So original problem solved partially, imho.

I think there are different activity runs produced these errors

For sure, they are different. Because you have a random error in your code: https://github.com/Torrion/temporal-worker-pool-leak-test/blob/main/app/src/Temporal/TestActivity.php#L18. Thus, your workflow execution has a problem:
Random errors. As I mentioned before, generally, this is ok. But is not a good practice to have such workflows with 100+ activities (and 1mi in your case). Would be better to split that into smaller groups to let Temporal cache your executions.
I can guess, that you have bigger limits for the supervisor, so, the full resets occurred not very often, which let the workflow to complete even with test exception (using retries).
You may achieve the same by increasing max_jobs by 2mi for example.

So, the timeout in your case is an entirely expected behavior. WF execution errors are expected as well. To finish the WF anyway, use a bigger RR pool limit (max_jobs: 200000000+) or use a somewhat bigger ScheduleToClose timeout (like 9999 hours).

Ok. I tried to launch a new test without exceptions, but got the same WorkflowTaskTimedOut and I don't understand why. If I just increase max_jobs/idle_ttl/exec_ttl/whatever it will mean that workers will be reloaded during a one of the next workflow executions, so this is not a solution.
I've updated code in

https://github.com/Torrion/temporal-worker-pool-leak-test

And here is logs when the error occurred on 20th second of workflow execution:
https://gist.github.com/Torrion/61bc6e857dec1fb9160a2ff2a6dfdfaf
16:41:32 - workflow task is scheduled
16:41:37 - it timed out
And no any activity between these points

Ok. I tried to launch a new test without exceptions, but got the same WorkflowTaskTimedOut and I don't understand why.

Why you specify to restart workers every 10s? -> https://github.com/Torrion/temporal-worker-pool-leak-test/blob/main/.rr.yaml#L16

Why you specify to restart workers every 10s (idle)?

For this test it doesn't metter, but in real app, activity may open some socket connections like DB etc, so them could become broken if idle for a long time. Ok, increased idle_ttl to 20s and errors are gone. But still do not understand, how idle_ttl setted up on activity worker affects workflow worker. Does workflow worker must continue to work, not depending on what happened in activity worker pool?

@Torrion I tried your setup and don't have any Timeouts

Ok, increased idle_ttl to 20s and errors are gone.
Does workflow worker must continue to work, not depending on what happened in activity worker pool?

idle_ttl resets the whole execution. Because it restarts the RR workers with the Temporal workers. Thus some activities might be timeouted during the reset.

idle_ttl resets the whole execution
But declaration points to activity workers, not workflow workers. If some activity workers are idle but workflow worker is not idle - why it must be rebooted? That's a bit confusing. It will be great if you somehow document this approach.
One more thing. Correct me please if I'm wrong: WorkflowTaskTimedOut error in my logs means not timeout of execution itself, but that workflow worker stopped to respond (because it is rebooting) to temporal server and it decided to rerun workflow execution on another available worker.

But declaration points to activity workers, not workflow workers. If some activity workers are idle but workflow worker is not idle - why it must be rebooted?

You can manage only activity workers from the configuration. RR Workflow worker is created internally and not available for configuration.
WF worker is always on, there is no supervisor in it (it's a special type of worker). The only way to restart it - is to kill it directly or to reset it via the reset command.

WorkflowTaskTimedOut error in my logs means not timeout of execution itself

There is a term called - Sticky execution. When RR + Temporal executes your activities, temporal will put your execution in the sticky queue. But, when the idle_ttl or max_jobs limits are reached, RR purges the Sticky WF cache, stops all workers, and starts everything again. At the same time, Temporal sees that there are workers dedicated to the previous sticky queue, and you see these timeouts. That is a Workflow timeout, but just a Workflow Task timeout (it'll be rescheduled to the Normal queue and executed).

WF worker is always on, there is no supervisor in it (it's a special type of worker). The only way to restart it - is to kill it directly or to reset it via the reset command.

But, when the idle_ttl or max_jobs limits are reached, RR purges the Sticky WF cache, stops all workers, and starts everything again.

I see a contradiction in this 2 statements. The question is why not supervisored WF pool is reacting on events in supervisored Activity pool. In my vision they should be completely independent from each other. But discussion about this will be an off-topic.
In sum, original issue is resolved. Everything works well on test stand and my project staging setup. Production testing is scheduled for next week.
Thank you very much for quick answers and fixes!

I see a contradiction in this 2 statements.

Yeah, I'll clarify my statement. I wanted to describe a general approach w/o specifying many details. But, ok:
Inside a roadrunner-temporal plugin, we have three types of workers: WF worker (only 1), Activity workers (configurable by user), and Temporal workers.
You can't restart these workers independently. It'll lead to errors in the bug description. RR process supervisor will track the conditions specified in the configuration (supervisor) and sends signals to the worker_watcher (idle_ttl, exec_ttl, max_memory, ttl). Worker watcher will gracefully stop the process and also send an event about that. Roadrunner-temporal plugin listens for the process stopped events and calls a Reset internally because we should keep the state synced. So, I guess you understand now that the phrases:

The only way to restart it - is to kill it directly or reset it via the reset command.
when the idle_ttl or max_jobs limits are reached, RR purges the Sticky WF cache, stops all workers
Describes the different parts of the system.

We will cover this in the docs, thank you for your questions.
If everything works well, feel free to close the bug 👍🏻


Introduce Command - wrapper for closures used in Props for data-driven UI

Add wrapper for closure to be used in Props of data-driven UI.
It makes closure conform Equatable and Hashable, providing info about callee.
MOB-1706

Would be beneficial to add few additional things:

default values. Something like

static var nop: Command {
    return Command { _ in }
}

and
static var nop: Cmd {
    return Cmd { }
}

Dispatching on queue:

public func dispatched(on queue: DispatchQueue) -> CommandWith {
  return Command { value in
    queue.async {
      self.execute(with: value)
    }
  }
}

Chaining:

func then(_ another: Command) -> Command {
  return Command { value in
    self.execute(with: value)
    another.execute(with: value)
  }
}

Would be beneficial to add few additional things:

default values. Something like

static var nop: Command {
    return Command { _ in }
}

and
static var nop: Cmd {
    return Cmd { }
}

Dispatching on queue:

public func dispatched(on queue: DispatchQueue) -> CommandWith {
  return Command { value in
    queue.async {
      self.execute(with: value)
    }
  }
}

Chaining:

func then(_ another: Command) -> Command {
  return Command { value in
    self.execute(with: value)
    another.execute(with: value)
  }
}

Sure. I'll add those as soon as those are to be used. Also I'd like to see how far I can get without usage of .nop.

!merge


Better sanitation for variables fetch from pam_get_item()

It's unclear from the pam_get_item() documentation on what type of sanitation it does, so we can't be sure that it outputs valid strings.
So, add a wrapper function that fetches a var from pam_get_item(), copies it to a fixed-length buffer (1024 bytes should be enough for everyone!), and checks that there a no weird characters in there.  At least remove ", {, and }, because they are sensitive for the output json.

This is related to PR #103 ; sorry that I did not see this issue earlier.
PR #103 checks the input in a separate function input_is_safe(). This could also be done in a wrapper around tty_input() or in tty_input() itself, but it does not seem to be strictly necessary for group input since that is parsed by strtol() which already catches errors, and input_is_safe() can also be used on input from other sources, e.g. the username.
I see no remaining cases of user or system input that is not validated. There is also input from the web service, but that needs to be trustworthy anyway.

'aa}bb' rejected
'aa{bb' rejected
"aa"bb" rejected
"a(*255)" accepted (MAX_INPUT_LENGTH = 256)
"a(*256)" rejected
OK


WIP: git spec handling revamp

xref https://github.com/openshift/origin/pull/15071

[test]

/cc @deads2k this change will have to be bumped into origin once it merges here (at least so i assume, i haven't looked at exactly what @jim-minter has done yet)

@bparees ptal...

@openshift/devex fyi

[merge]


Can't add or send pictures

Hi folks,
hitting the "+" Button usually openend the folder search and allowed to send pictures. However with V1.7, I select the picture I want to send/upload, but nothing happens or appears? Anyone that can help me?
Cheers and Thx for that amazing project :)

Same problem here. Windows x64 version.

same issue on mac

also have this problem on mac

Same problem, Mac :-(

Any help so far???

Same, windows 64, cant upload, can send, can erase......

Have a fix for ya'll!
(https://github.com/tomlandia/fuckr/files/475985/Send.Image.Fix.zip)

The fix has been committed but not released, closing due to the API v2 shutdown.


Meta-question about the content sent to the LLM server.

I was looking at the content you send to the AI server.
You talk to it very humanlike, almost like to a friend, even child. I was close to expecting you to tuck the LLM in and wish it nice dreams.
Now this might come across as condescending, but that is not my intent.
Do you think, we are already there yet that an NLP AI LLM can actually comprehend that or would it handle just keywords better, ie normal user <-> computer interaction, the way it's used with stable diffusion.

There is a community-contributed condensed system prompt that you can play with here: https://github.com/cpacker/MemGPT/blob/main/memgpt/prompts/system/memgpt_chat_compressed.txt
It's much more concise than the default.  Would be interested to know how well it performs compared to the lengthier version.


file filesize.min.js.map missing

When I call http://<IP_ADDRESS>:8025/# the message filesize.min.js.map missing appears once in a while in the console.
I run MailHog_windows_amd64.exe as provided on github MailHog v0.2.0

thanks @bardware, should be fixed in the next release!


Bug: read_arrow with attribute or spatial filtering produces unusable Table (sometimes)

TLDR: calling combine_chunks, when an attribute filter, bbox or mask is supplied, might be worth doing unconditionally.
Environment details (conda managed, linux x64):

python 3.10.13
pyogrio 0.7.2
pyarrow, libarrow* 14.0.1
gdal 3.8.0
libgdal-arrow-parquet 3.8.0
geopandas 0.14.1 (for the mask)
fsspec, s3fs 2023.10.0

Reproduction:
import pyogrio
import pyogrio.raw
import geopandas as gpd

# NB: independent of fs, but somewhat dependent on data
target_path = "s3://overturemaps-us-west-2/release/2023-11-14-alpha.0/part-00000-6cb89013-4ec2-4b94-8e4b-8e27c7d30865.c000.zstd.parquet"

countries_gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
au_mask = countries_gdf[countries_gdf.name == 'Australia'].geometry.iloc[0]

meta, table = pyogrio.raw.read_arrow(target_path, mask=au_mask)
# Attempt to convert to pandas, with or without self-destruct
table.to_pandas() # ⚡ throws obscure/unpredictable column conversion errors

Supplying the max_features flag fixes this because combine_chunks is called when that flag's present (plugging in a very large max_features is enough for a temporary workaround).
It seems to be restricted to geoparquet files involving Map<String, String> columns - running validate(full=True) without first calling combine_chunks, on just the map columns (sourceTags in this case) gets you this:

In chunk 0: Invalid: List child array invalid: Invalid: Struct child array #0 invalid: Invalid: Offset invariant failure: non-monotonic offset at slot 3505: 23393 < 24692

I suspect the post-filter arrow stream construction is slightly bugged in gdal, given a number of 'null count greater than array length' style validation errors also crop up (though these are much less severe, since to_pandas corrects them).

It looks like this is solved in GDAL #8768 in the forthcoming 3.8.1 release.

@H-Plus-Time GDAL 3.8.1 has been released and is available in Conda-Forge.


Fixes / UX Improvements

1 - Polynomial Parser Improved (New Algorithm) and Fixed parsing free term and first degree term
2 - Polynomial Renderer Improved
3 - Added Polynomial Division (Fully Working)
4 - Added Polynomial Division Reminder [Modulus] (Logic Added - Not
added to GUI)

@faroukm15
In MainForm.cs, in LogInHistory, you don't have a case for OperationTypeEnum.Modulus, which means the _historyTrie will not store the Modulus operations. Is that on purpose?!
There is also, I suppose, unnecessary empty method called BtnDiv_Click. It may have been, presumably, created by the designer. Consider removing it!

@faroukm15
I'll check the parser new algorithm as it manipulates the input value and might fall for signed numbers ( +,-)

@Ahmed-YehiaGPEL  about expr = expr.Replace("+X", "1X");, just make it expr = expr.Replace("+X", "+1X"); it will fix the problem.

Review
#14 Input string not valid when inputting no coefficient , must be auto calculated as 1
Example

Check MainForm.cs

I think this should fix it:
string[] cofpow = s.Split(new string[] { "x^", "X^" }, StringSplitOptions.RemoveEmptyEntries);
double coff = 1;
double.TryParse(cofpow[0], out coff);
sList.Add(int.Parse(cofpow[1]), new Complex(coff,0));

Added Normally!!

I'm just wondering: why there is no button for modulus?!

mainForm does not have enough space, so I left it for @Ahmed-YehiaGPEL  to find space and add a button.

I'm just wondering, mdy2een awi mn my code leh? :"D

Thinking of Improving Main UX
Issue #16- Main UX Improvement


DevMenu

when i use devmenu to debug, i found when i open many rootview , shake device ,will open many devmenu . but i want just open one .
be more easy , i want modify the bridge showshake property , but when i modify in other place ,will update , because RN use userdefault save . so can't just one to one save?
RN 0.39.2

Hey, thanks for reporting this issue!
It looks like your description is missing some necessary information. Does this reproduce on the latest version of RN? Can you please add all the details specified in the template? This is necessary for people to be able to understand and reproduce the issue being reported.
I am going to close this, but feel free to open a new issue with the additional information provided. Thanks!


python312Packages.dnslib: 0.9.24 -> 0.9.25

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.dnslib is: Simple library to encode/decode DNS wire-format packets
meta.homepage for python312Packages.dnslib is: https://github.com/paulc/dnslib
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.9.25 with grep in /nix/store/brpmrmlq341ynfxl7d71c9czsc3jadf3-python3.12-dnslib-0.9.25
found 0.9.25 in filename of file in /nix/store/brpmrmlq341ynfxl7d71c9czsc3jadf3-python3.12-dnslib-0.9.25

Rebuild report (if merged into master) (click to expand)

10 total rebuild path(s)

10 package rebuild(s)

First fifty rebuilds by attrpath

dnschef
localstack
python311Packages.dnslib
python311Packages.localstack
python311Packages.localstack-ext
python312Packages.dnslib
python312Packages.localstack
python312Packages.localstack-ext
visidata

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/brpmrmlq341ynfxl7d71c9czsc3jadf3-python3.12-dnslib-0.9.25 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.dnslib https://github.com/r-ryantm/nixpkgs/archive/f18288618beb76a426f06f9e120d768a6dff8a7b.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/f18288618beb76a426f06f9e120d768a6dff8a7b#python312Packages.dnslib

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/brpmrmlq341ynfxl7d71c9czsc3jadf3-python3.12-dnslib-0.9.25
ls -la /nix/store/brpmrmlq341ynfxl7d71c9czsc3jadf3-python3.12-dnslib-0.9.25/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

6 packages failed to build:

localstack (python312Packages.localstack)
localstack.dist (python312Packages.localstack.dist)
python311Packages.localstack
python311Packages.localstack.dist
visidata
visidata.dist

9 packages built:

dnschef
python311Packages.dnslib
python311Packages.dnslib.dist
python311Packages.localstack-ext
python311Packages.localstack-ext.dist
python312Packages.dnslib
python312Packages.dnslib.dist
python312Packages.localstack-ext
python312Packages.localstack-ext.dist

Maintainer pings

Result of nixpkgs-review pr 325560 at f1828861 run on x86_64-linux 1

3 packages failed to build:

localstack (python312Packages.localstack)
python311Packages.localstack
visidata

5 packages built successfully:

dnschef
python311Packages.dnslib
python311Packages.localstack-ext
python312Packages.dnslib
python312Packages.localstack-ext


Err, don't panic, on unbound variable (#518)

I don't know why this change makes test_type_reqs fail; I'll look into this tomorrow.

This alias is datoms00.v instead of datoms00.value_type_tag.
Actually, you should useextracted_types, not column_bindings here.

extracted_types should be used here, not column_bindings.

Yep, that'll do it! Thanks for saving me some time, @rleungx :)


Post release automated changes for playwrighttesting releases

Post release automated changes for azure-arm-playwrighttesting

API change check
API changes are not detected in this pull request.


Approach (documentation) ambiguity

Hi, I'm trying to understand xgboost approach to model training. By that I mean the following. I can either use Booster and invoke xgb.train or I can use sklearn APIs to use Classifier/Regressor. The problem that in former approach (according to xgboost documentation) I need to specify number of boosting iterations and do not specify any number of trees, while in later I do specify number of boosted trees to fit, but I don't have any option to specify number of boosted iterations. Does number of boosting iterations is number of estimators? Can someone clarify this?
If I read code correctly, the sklearn APIs uses internal booster, so I can assign clf._Booster to my xgb.train where n_estimators is equal to number of boosted rounds. And, I don't need to call clf.fit if such assignment has been made. Am I right? If so, can documentation be adjust to say explicitly that n_estimators is what num_rounds used for xgb.train.
It would be nice to have documentation which explains exactly relationship between low-level booster approach and sklearn APIs, I understand that later will call former one, but it would be nice to understand how it's done and clarify this in documentation to avoid confusion for end-users.

Hi Vladimir,
Boosting, in general, is a meta-algorithm which iteratively (or in "rounds") trains a sequence of simple/weak learners (or estimators) in such a way that the whole combination performs better. There could be various kinds of weak learners, not only trees. E.g., xgboost has trees and (generalized) linear model options. Curiously, these weak learners in xgboost are referred to as "boosters", and the whole combination model is referred to as a "learner". That perplexed me a bit when I was initially reading xgboost's docs and code, as it was kind of reverse to my own mental imprint of the terminology.
While it would be nice to have consistent nomenclature between different projects related to the same subject matter and to have consistent high quality cross-link documentation, it's not always feasible or easily maintainable, especially in open source projects. Novice users tend to mostly use a single interface. Users who are well familiar with the subject matter would be easily able to map the commonalities.  And whoever cares about low-level details, they usually care enough to read the code.
As for your specific question, you are reading right that the n_estimators parameter in the sklearn wrapper code [1] maps to num_boost_round within train [2]. However, why as an end-user would you want to hack a sklearn wrapper object that way? To do it in a controllable manner, you would have to get to know the wrapper code rather well.
[1] https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2] https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12

are there same problems for R?
On Thu, Nov 26, 2015 at 11:39 AM, Vadim Khotilovich <
<EMAIL_ADDRESS>wrote:

Hi Vladimir,
Boosting, in general, is a meta-algorithm which iteratively (or in
"rounds") trains a sequence of simple/weak learners (or estimators) in such
a way that the whole combination performs better. There could be various
kinds of weak learners, not only trees. E.g., xgboost has trees and
(generalized) linear model options. Curiously, these weak learners in
xgboost are referred to as "boosters", and the whole combination model is
referred to as a "learner". That perplexed me a bit when I was initially
reading xgboost's docs and code, as it was kind of reverse to my own mental
imprint of the terminology.
While it would be nice to have consistent nomenclature between different
projects related to the same subject matter and to have consistent high
quality cross-link documentation, it's not always feasible or easily
maintainable, especially in open source projects. Novice users tend to
mostly use a single interface. Users who are well familiar with the subject
matter would be easily able to map the commonalities. And whoever cares
about low-level details, they usually care enough to read the code.
As for your specific question, you are reading right that the n_estimators
parameter in the sklearn wrapper code [1] maps to num_boost_round within
train [2]. However, why as an end-user would you want to hack a sklearn
wrapper object that way? To do it in a controllable manner, you would have
to get to know the wrapper code rather well.
[1]
https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2]
https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12
—
Reply to this email directly or view it on GitHub
https://github.com/dmlc/xgboost/issues/651#issuecomment-159956213.

@khotilov, thanks for explanation. It is sufficient for my needs and I'll close the ticket.


Will this also work for facebook ads manager?

I wanted to know will this work for event logging with Facebook ads manager.

@SoloCarryGuy This plugin don't add dependency to facebook-marketing, but you can add it manually. For example see how https://github.com/DrMoriarty/godot-firebase-crashlytics adds dependency to the crashlytics library.

@SoloCarryGuy This plugin don't add dependency to facebook-marketing, but you can add it manually. For example see how https://github.com/DrMoriarty/godot-firebase-crashlytics adds dependency to the crashlytics library.

@DrMoriarty I am just a beginner with a few months of coding experience only in godot. I checked out the crashlytics link. And, I have tried to do it with some documentaion from facebook. this is done by you from what I understand. I have tried to implement this .This is the code I end up with
gradle.conf looks like this:
[buildscript_repositories]

[buildscript_dependencies]

[allprojects_repositories]

[dependencies]
implementation 'com.facebook.android:facebook-android-sdk:5.+'
implementation 'com.facebook.android:facebook-marketing:[4,5)'
implementation 'com.google.android.gms:play-services-ads:15.0.0'

[android_defaultconfig]

[global]

AndroidManifest.conf looks like this:
[user_permissions]
<uses-permission android:name="android.permission.INTERNET"/>

[application]
<activity android:name="com.facebook.FacebookActivity"
          android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
          android:theme="@style/com_facebook_activity_theme"
          android:label="@string/godot_project_name_string" />
<activity android:name="com.facebook.CustomTabActivity" android:exported="true">
          <intent-filter>
                          <action android:name="android.intent.action.VIEW" />
                          <category android:name="android.intent.category.DEFAULT" />
                          <category android:name="android.intent.category.BROWSABLE" />
                          <data android:scheme="@string/fb_login_protocol_scheme" />
          </intent-filter>
</activity>

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />
<meta-data android:name="com.facebook.sdk.CodelessDebugLogEnabled" android:value="true" />

[application_attribs]

Is this okay?

@DrMoriarty I am just a beginner with a few months of coding experience only in godot. I checked out the crashlytics link. And, I have tried to do it with some documentaion from facebook. this is done by you from what I understand. I have tried to implement this .This is the code I end up with
gradle.conf looks like this:
[buildscript_repositories]

[buildscript_dependencies]

[allprojects_repositories]

[dependencies]
implementation 'com.facebook.android:facebook-android-sdk:5.+'
implementation 'com.facebook.android:facebook-marketing:[4,5)'
implementation 'com.google.android.gms:play-services-ads:15.0.0'

[android_defaultconfig]

[global]

AndroidManifest.conf looks like this:
[user_permissions]
<uses-permission android:name="android.permission.INTERNET"/>

[application]
<activity android:name="com.facebook.FacebookActivity"
          android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
          android:theme="@style/com_facebook_activity_theme"
          android:label="@string/godot_project_name_string" />
<activity android:name="com.facebook.CustomTabActivity" android:exported="true">
          <intent-filter>
                          <action android:name="android.intent.action.VIEW" />
                          <category android:name="android.intent.category.DEFAULT" />
                          <category android:name="android.intent.category.BROWSABLE" />
                          <data android:scheme="@string/fb_login_protocol_scheme" />
          </intent-filter>
</activity>

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />
<meta-data android:name="com.facebook.sdk.CodelessDebugLogEnabled" android:value="true" />

[application_attribs]

Is this okay?

@SoloCarryGuy I think that you don't need AndroidManifest.conf at all. Only gradle.conf with dependencies.

@SoloCarryGuy I think that you don't need AndroidManifest.conf at all. Only gradle.conf with dependencies.

So, what should I do to correct it? implementation 'com.facebook.android:facebook-marketing:[4,5)' This is the only dependency here

So, what should I do to correct it? implementation 'com.facebook.android:facebook-marketing:[4,5)' This is the only dependency here

yes

yes

Okay. Thanks for the help.

Okay. Thanks for the help.


Map breaks when created dynamically in combination with disabled worldCopyJump

I've come across a strange issue when creating the map container in JS, appending it to a wrapper and setting the map size at a later time. This only occurs when worldCopyJump is disabled, however.
https://jsfiddle.net/2w6apqxy/
The map tiles are partially broken and the map center is at an incorrect position. When appending the container before L.map() (https://jsfiddle.net/2w6apqxy/1/) or after L.tileLayer() (https://jsfiddle.net/2w6apqxy/2/), the issue isn't present. When enabling worldCopyJump, the issue isn't present either, regardless of when the container is appended to the wrap.
Is this a bug related to how the map dimensions are determined when worldCopyJump is disabled vs. enabled, or is this expected behavior?

Hi!
Thanks for a thorough report. I can reproduce this, and from what you're saying, it clearly sounds like a bug.
I investigated for a short while, but didn't find why this is happening, so some further investigation is going to be necessary.

@ghybs your solution seems reasonable 👍

@ghybs thanks for the explanation. Your solution works in my implementation as well 👍

Hi @alex2wong,
Your screenshot and description look like a totally different issue from what OP described.
I suspect your case to be similar to:
https://stackoverflow.com/questions/38835758/leaflet-drawing-tiles-disjointly/38836996#38836996


Resolve "Could not find module" error when used in an Ember CLI Addon

When an addon is built a module is defined with the < addon name > that has a dependency named the name of the module plus the text of "/index" (ie. < addon name >/index), such as in the following:
define('sl-ember-components', ['sl-ember-components/index', 'ember', 'exports'], function(__index__, __Ember__, __exports__) {
  'use strict';
  var keys = Object.keys || __Ember__['default'].keys;
  var forEach = Array.prototype.forEach && function(array, cb) {
    array.forEach(cb);
  } || __Ember__['default'].EnumerableUtils.forEach;

  forEach(keys(__index__), (function(key) {
    __exports__[key] = __index__[key];
  }));
});

This dependency does not actually exist, which then causes the following error to be thrown in the console from the ember-cli/loader.js package:
Error: Could not find module "sl-ember-components/index" imported from "sl-ember-components(…)"
I initially attempted to add an entry for this module in the loaderExclusions entry in the config file as discussed in the related https://github.com/sglanzer/ember-cli-blanket/issues/14, but due to the fact that shouldExclude() in vendor/blanket-require.js uses indexOf() the correct combination can never be achieved to catch this undesired module name.
Therefore I have added an additional check for this specific condition which compares the module name created in this situation, < addon name >, against the blanket.options('modulePrefix') and if they match the/this module should be excluded.

Reviewed 1 of 1 files at r1.
Review status: :shipit: all files reviewed at latest revision, all discussions resolved, all commit checks successful.

Comments from the review on Reviewable.io

@jschilli I'm going to merge this barring any objections

+1
-jeff

On Oct 7, 2015, at 6:37 PM, Steven Glanzer<EMAIL_ADDRESS>wrote:
@jschilli I'm going to merge this barring any objections
—
Reply to this email directly or view it on GitHub.


Resting animation presists after moving

Apologies in advance as I have no idea what causes this to happen, but it does happen sporadically enough that it's lead to me keeping the plugin off since I discovered it last month.

After it's started no setting change seems to fix the issue, turning the plugin off does not change anything, but logging out and back in does work.
If it'd help I can keep the plugin on for a couple days and try and notice why it starts

Thanks for sending this. I've noticed it too periodically but have struggled to recreate it; I'll try get it sorted out

This should now be resolved


Fullscreen abacus

Add a fullscreen button to the Abacus activity.
Fixes issue #402
@FreddieN @eohomegrownapps @utkarsh-raj @llaske @ashish0910

It's a good start.
Two remarks:

Only lines added/updated should be changed in your files. Here it seems that your editor (or JSLint) has changed more lines than needed.

You call resizeCanvas() method and it's a good thing but the resizeCanvas() method consider that the toolbar is always present even in fullscreen mode. The number 55 in this line is the size of the toolbar. So currently, even in fullscreen mode, the size of the board is still the same.

Thank you! I disabled JSLint and reset the file, and added the fix to resizeCanvas(). Is there anything else that needs to be done?

Good job. Thanks.


Add FTP upload

Tasks

[x] General-purpose FTP upload class
[x] ENADataUploader
[x] Integrate with CLI
[x] Unit tests

@kdp-cloud I think it's there already, unless you mean something else?


NPM Installation Package

I tried installing it via NPM, but all the grunt dependencies caused me to give up (they aren't installed automatically anymore with NPM 3). Is there a way to install it without requiring Grunt for those that don't use it?
Thanks :)

using bower: http://bower.io/

So I can not install directly from npm ? I use npm , and do not want to have two package managers.
Please add to npm!!

font-awesome-animation is also published to npm.
You just need to execute:
npm install font-awesome-animation --save

then the files are in node_modules/font-awesome-animation/dist

Thanks @felicienfrancois :)


Plans to support Firefox?

Have you considered porting this to Firefox?
The only alternative I found for Firefox is https://addons.mozilla.org/en-US/firefox/addon/send-to-xbmc/ but that only supports Youtube links.
Thanks!

See #93

@martijnvermaat Thanks, missed that.


app crash when launch

My environment
Processor: M2 Pro
OS: Sonoma 14.5
App name: tableplus
Xcode install: No

sudo sh auto_hack.sh

Script executed successfully but when launch app it crashed instantly. Did i miss anything?

Try to turn off the sip.


Cognitive Services API always returns error: {code: "404", message: "Resource not found"}

The cognitive services API is always returning error: {code: "404", message: "Resource not found"}. I have tried everything but I can't get it to work. Any help would be appreciated.
My code for the page:

My Azure resource:

Log Error:
RestError: Resource not found
{
"name": "RestError",
"code": "404",
"statusCode": 404,
"request": {
"url": "https://dev-wal-e-document-intel.cognitiveservices.azure.com/ /formrecognizer/documentModels/prebuilt-receipt:
"headers": {
"content-type": "application/octet-stream",
"accept": "application/json",
"accept-encoding": "gzip,deflate",
"user-agent": "azsdk-js-ai-form-recognizer/4.0.0 core-rest-pipeline/1.11.0 Node/v20.9.0 OS/(x64-Windows_NT-10.0.19045)
"x-ms-client-request-id": "5d77f38a-314e-4556-9ba4-70bf6f7eab18",
"ocp-apim-subscription-key": "REDACTED"
},
"method": "POST",
"timeout": 0,
"disableKeepAlive": false,
"streamResponseStatusCodes": {},
"withCredentials": false,
"tracingOptions": {
"tracingContext": {
"_contextMap": {}
}
},
"requestId": "5d77f38a-314e-4556-9ba4-70bf6f7eab18",
"allowInsecureConnection": false,
"enableBrowserStreams": false
},
"details": {
"error": {
"code": "404",
"message": "Resource not found"
}
},
"message": "Resource not found"
}
Please tell me if any more information is required

@Amal-Baby-seqato
We are going to close this thread .if there are any further questions regarding the documentation, please tag me in your reply and we will be happy to continue the conversation.


Much improved batch evolve (aka evolve all) mechanism

Short Description:
Selective batch evolve on startup. See improvements below:
Fixes:

Pokemons are evolved from high CP to low CP.
Can specify "all" to evolve the entire inventory or a list (e.g., "Pidgey,Weedle") to only evolve specific types.
Evolved pokemons are automatically transferred based on the release criteria.

TODO: release and transfer code was copied from catch worker. We need to refactor these functionalities out of the workers and into utils so that they can easily re-use this logic.

Works for me good job :)

Good job, @guyz.
@michi0987 How does it make sense to evolve a pokemon and then transfer it?

works fine for me and it is very fast.
I didn't get it stopped with ctrl + c though.

README need a update too. :) amazing.

@krook1024

How does it make sense to evolve a pokemon and then transfer it?

Evolving yields XP.


[hi] Localize /en/docs/reference/glossary/replica-set.md

Prerequisites:

If this is your first contribution, visit Contribute to K8s docs for information on how to get started.
Review a few https://github.com/kubernetes/website/issues/35600#issuecomment-1214215859 to see which
content you have to change and which you leave unchanged.

Procedure:

Make sure your base, target branch is main and create a working branch called hi-replica-set.md.
Create a file called content/hi/docs/reference/glossary/replica-set.md
Copy the content of
https://github.com/kubernetes/website/blob/main/content/en/docs/reference/glossary/replica-set.md to
the file you created
Localize the content.
Push your change and create a pull request.

Completing this feature issue fixes part of https://github.com/kubernetes/website/issues/35600

Note:- Don't forget to join slack kubernetes-docs-hi channel if facing any problem!

/language hi
/triage accepted

/assign


Activate https for cabotapp.com

Hi guys,
as you can see in this post https://blog.github.com/2018-05-01-github-pages-custom-domains-https/ GH-pages support https with custom domains now.
Activating it for the homepage would be nice.

I've updated DNS but may take a while to propagate; if this isn't working by tomorrow can you nudge?

@dbuxton sure. Fast reply 👍
Is already reachable without errors. But is not redirected to https automatically. Shouldn't that be if https is activated on gh-pages?
Also you could add the link to the website to the repo here on GH.


Import "wtforms.ext.sqlalchemy.fields" could not be resolved (requirements/testing.txt does not support Python 3.10)

Summary of the issue in case anyone finds this via Google having the same problem.
The issue was simply that I was running Python version 3.10 on my laptop, but the Google Bigquery python library im the requirements/testing.txt file is restricted to versions less than 3.10, causing, causing pip install -r requirements/testing.txt to fail. To work around it, I used pip install -r requirements/local.txt instead.

When following the instructions for setting up a local development environment:
https://github.com/apache/superset/blob/master/CONTRIBUTING.md
The instructions fail at this step:
# Initialize the database
superset db upgrade

with errors such as:
ModuleNotFoundError: No module named 'wtforms.ext'

How to reproduce the bug

Confirm that you have a supported python version
Follow all steps for setting up the OS dependencies.
create and clone a clean fork of superset
Skip to the[ Flask Server instructions  ](export LDFLAGS="-L$(brew --prefix openssl)/lib"
export CFLAGS="-I$(brew --prefix openssl)/include")
Follow the steps:

python3 -m venv venv # setup a python3 virtualenv
source venv/bin/activate

# Install external dependencies
pip install -r requirements/testing.txt

# Install Superset in editable (development) mode
pip install -e .

# Initialize the database
superset db upgrade

Expected results
what you expected to happen.
Actual results
When installing requirements/testing.txt the following errors are observed:
Collecting google-auth-oauthlib==0.4.6
  Downloading google_auth_oauthlib-0.4.6-py2.py3-none-any.whl (18 kB)
ERROR: Ignored the following versions that require a different python version: 1.3.0 Requires-Python ~=2.7,~=3.5; 2.10.0 Requires-Python >=3.6, <3.10; 2.11.0 Requires-Python >=3.6, <3.10; 2.12.0 Requires-Python >=3.6, <3.10; 2.13.0 Requires-Python >=3.6, <3.10; 2.13.1 Requires-Python >=3.6, <3.10; 2.14.0 Requires-Python >=3.6, <3.10; 2.15.0 Requires-Python >=3.6, <3.10; 2.16.0 Requires-Python >=3.6, <3.10; 2.16.1 Requires-Python >=3.6, <3.10; 2.17.0 Requires-Python >=3.6, <3.10; 2.18.0 Requires-Python >=3.6, <3.10; 2.19.0 Requires-Python >=3.6, <3.10; 2.20.0 Requires-Python >=3.6, <3.10; 2.21.0 Requires-Python >=3.6, <3.10; 2.22.0 Requires-Python >=3.6, <3.10; 2.22.1 Requires-Python >=3.6, <3.10; 2.23.0 Requires-Python >=3.6, <3.10; 2.23.1 Requires-Python >=3.6, <3.10; 2.23.2 Requires-Python >=3.6, <3.10; 2.23.3 Requires-Python >=3.6, <3.10; 2.24.0 Requires-Python >=3.6, <3.10; 2.24.1 Requires-Python >=3.6, <3.10; 2.25.0 Requires-Python >=3.6, <3.10; 2.25.1 Requires-Python >=3.6, <3.10; 2.25.2 Requires-Python >=3.6, <3.10; 2.26.0 Requires-Python >=3.6, <3.10; 2.27.0 Requires-Python >=3.6, <3.10; 2.27.1 Requires-Python >=3.6, <3.10; 2.28.0 Requires-Python >=3.6, <3.10; 2.28.1 Requires-Python >=3.6, <3.10; 2.29.0 Requires-Python >=3.6, <3.10; 2.6.2 Requires-Python >=3.6, <3.9; 2.7.0 Requires-Python >=3.6, <3.10; 2.8.0 Requires-Python >=3.6, <3.10; 2.9.0 Requires-Python >=3.6, <3.10
ERROR: Could not find a version that satisfies the requirement google-cloud-bigquery[bqstorage,pandas]==2.29.0 (from versions: 0.20.0, 0.21.0, 0.22.0, 0.22.1, 0.23.0, 0.24.0, 0.25.0, 0.26.0, 0.27.0, 0.28.0, 0.29.0, 0.30.0, 0.31.0, 0.32.0, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.2, 1.8.0, 1.8.1, 1.8.2, 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.11.1, 1.11.2, 1.11.3, 1.11.4, 1.12.0, 1.12.1, 1.12.2, 1.13.0, 1.13.1, 1.14.0, 1.14.1, 1.15.0, 1.15.1, 1.16.0, 1.16.1, 1.17.0, 1.17.1, 1.18.0, 1.18.1, 1.19.0, 1.19.1, 1.20.0, 1.21.0, 1.22.0, 1.23.0, 1.23.1, 1.24.0, 1.25.0, 1.26.0, 1.26.1, 1.27.2, 1.28.0, 1.28.1, 1.28.2, 2.0.0, 2.1.0, 2.2.0, 2.3.1, 2.4.0, 2.5.0, 2.6.0, 2.6.1, 2.30.0, 2.30.1, 2.31.0, 2.32.0, 2.33.0, 2.34.0, 2.34.1, 2.34.2, 2.34.3, 2.34.4, 3.0.0b1, 3.0.0, 3.0.1, 3.1.0, 3.2.0, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.5)
ERROR: No matching distribution found for google-cloud-bigquery[bqstorage,pandas]==2.29.0

Running superset db upgrade results in the following errors:
 % superset db upgrade
'FLASK_ENV' is deprecated and will not be used in Flask 2.3. Use 'FLASK_DEBUG' instead.
--------------------------------------------------------------------------------
                                    WARNING
--------------------------------------------------------------------------------
A Default SECRET_KEY was detected, please use superset_config.py to override it.
Use a strong complex alphanumeric string and use a tool to help you generate
a sufficiently random sequence, ex: openssl rand -base64 42
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
logging was configured successfully
2022-11-03 09:45:54,756:INFO:superset.utils.logging_configurator:logging was configured successfully
2022-11-03 09:45:54,770:INFO:root:Configured event logger of type <class 'superset.utils.log.DBEventLogger'>
We haven't found any Content Security Policy (CSP) defined in the configurations. Please make sure to configure CSP using the TALISMAN_CONFIG key or any other external software. Failing to configure CSP have serious security implications. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP for more information. You can disable this warning using the CONTENT_SECURITY_POLICY_WARNING key.
2022-11-03 09:45:54,771:WARNING:superset.initialization:We haven't found any Content Security Policy (CSP) defined in the configurations. Please make sure to configure CSP using the TALISMAN_CONFIG key or any other external software. Failing to configure CSP have serious security implications. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP for more information. You can disable this warning using the CONTENT_SECURITY_POLICY_WARNING key.
Falling back to the built-in cache, that stores data in the metadata database, for the following cache: `FILTER_STATE_CACHE_CONFIG`. It is recommended to use `RedisCache`, `MemcachedCache` or another dedicated caching backend for production deployments
2022-11-03 09:45:54,773:WARNING:superset.utils.cache_manager:Falling back to the built-in cache, that stores data in the metadata database, for the following cache: `FILTER_STATE_CACHE_CONFIG`. It is recommended to use `RedisCache`, `MemcachedCache` or another dedicated caching backend for production deployments
Falling back to the built-in cache, that stores data in the metadata database, for the following cache: `EXPLORE_FORM_DATA_CACHE_CONFIG`. It is recommended to use `RedisCache`, `MemcachedCache` or another dedicated caching backend for production deployments
2022-11-03 09:45:54,781:WARNING:superset.utils.cache_manager:Falling back to the built-in cache, that stores data in the metadata database, for the following cache: `EXPLORE_FORM_DATA_CACHE_CONFIG`. It is recommended to use `RedisCache`, `MemcachedCache` or another dedicated caching backend for production deployments
No PIL installation found
2022-11-03 09:45:55,190:INFO:superset.utils.screenshots:No PIL installation found
Failed to create app
Traceback (most recent call last):
  File "/Users/rickspencer/superset/superset/app.py", line 37, in create_app
    app_initializer.init_app()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 473, in init_app
    self.init_app_in_ctx()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 420, in init_app_in_ctx
    self.configure_data_sources()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 493, in configure_data_sources
    __import__(module_name, fromlist=class_names)
  File "/Users/rickspencer/superset/superset/connectors/sqla/__init__.py", line 17, in <module>
    from . import models, views
  File "/Users/rickspencer/superset/superset/connectors/sqla/views.py", line 28, in <module>
    from wtforms.ext.sqlalchemy.fields import QuerySelectField
ModuleNotFoundError: No module named 'wtforms.ext'
2022-11-03 09:45:55,273:ERROR:superset.app:Failed to create app
Traceback (most recent call last):
  File "/Users/rickspencer/superset/superset/app.py", line 37, in create_app
    app_initializer.init_app()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 473, in init_app
    self.init_app_in_ctx()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 420, in init_app_in_ctx
    self.configure_data_sources()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 493, in configure_data_sources
    __import__(module_name, fromlist=class_names)
  File "/Users/rickspencer/superset/superset/connectors/sqla/__init__.py", line 17, in <module>
    from . import models, views
  File "/Users/rickspencer/superset/superset/connectors/sqla/views.py", line 28, in <module>
    from wtforms.ext.sqlalchemy.fields import QuerySelectField
ModuleNotFoundError: No module named 'wtforms.ext'
Traceback (most recent call last):
  File "/Users/rickspencer/superset/venv/bin/superset", line 33, in <module>
    sys.exit(load_entry_point('apache-superset', 'console_scripts', 'superset')())
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/click/core.py", line 1654, in invoke
    super().invoke(ctx)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/flask/cli.py", line 354, in decorator
    app = __ctx.ensure_object(ScriptInfo).load_app()
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/flask/cli.py", line 308, in load_app
    app = locate_app(import_name, name)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/flask/cli.py", line 237, in locate_app
    return find_app_by_string(module, app_name)
  File "/Users/rickspencer/superset/venv/lib/python3.10/site-packages/flask/cli.py", line 165, in find_app_by_string
    app = attr(*args, **kwargs)
  File "/Users/rickspencer/superset/superset/app.py", line 44, in create_app
    raise ex
  File "/Users/rickspencer/superset/superset/app.py", line 37, in create_app
    app_initializer.init_app()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 473, in init_app
    self.init_app_in_ctx()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 420, in init_app_in_ctx
    self.configure_data_sources()
  File "/Users/rickspencer/superset/superset/initialization/__init__.py", line 493, in configure_data_sources
    __import__(module_name, fromlist=class_names)
  File "/Users/rickspencer/superset/superset/connectors/sqla/__init__.py", line 17, in <module>
    from . import models, views
  File "/Users/rickspencer/superset/superset/connectors/sqla/views.py", line 28, in <module>
    from wtforms.ext.sqlalchemy.fields import QuerySelectField
ModuleNotFoundError: No module named 'wtforms.ext'

python version: Python 3.10.8
node.js version: v16.14.0

I ran:
pip install pillow

To remove the PIL-related errors/warnings:
2022-11-03 09:45:55,190:INFO:superset.utils.screenshots:No PIL installation found

Ok, I traced it down to incorrect imports, I think. After making this change, it seems to build:
% git diff
diff --git a/superset/connectors/sqla/views.py b/superset/connectors/sqla/views.py
index 7133cdfab..158903130 100644
--- a/superset/connectors/sqla/views.py
+++ b/superset/connectors/sqla/views.py
@@ -25,7 +25,8 @@ from flask_appbuilder.fieldwidgets import Select2Widget
 from flask_appbuilder.models.sqla.interface import SQLAInterface
 from flask_appbuilder.security.decorators import has_access
 from flask_babel import lazy_gettext as _
-from wtforms.ext.sqlalchemy.fields import QuerySelectField
+
+from wtforms_sqlalchemy.fields import QuerySelectField
 from wtforms.validators import DataRequired, Regexp

 from superset import app, db
diff --git a/superset/views/database/forms.py b/superset/views/database/forms.py
index a44a412b4..615870d48 100644
--- a/superset/views/database/forms.py
+++ b/superset/views/database/forms.py
@@ -28,7 +28,7 @@ from wtforms import (
     SelectField,
     StringField,
 )
-from wtforms.ext.sqlalchemy.fields import QuerySelectField
+from wtforms_sqlalchemy.fields import QuerySelectField
 from wtforms.validators import DataRequired, Length, NumberRange, Optional, Regexp

 from superset import app, db, security_manager

here is the output of pip freeze
charset-normalizer==2.1.1
idna==3.4
influxdb-client==1.33.0
protobuf==4.21.9
psycopg2-binary==2.9.4
python-dateutil==2.8.2
reactivex==4.0.4
requests==2.28.1
six==1.16.0
typing_extensions==4.4.0
urllib3==1.26.12

Ok, so it looks like the problem was that I am running Python 3.10, and bigquery requires <3.10. When I used requirments/local.text everything started working

@rickspencer3 is there anything else that you need on this issue? It sounds like you got it resolved?

I don't personally need anything, but it seems like the upstream project would probably want to support Python 3.10 by default. Feel free to close, though, as I did get it working as described perviously.

I am using python 3.8.5 and also encountered this issue .
I installed superset using pip,version is 2.0.1

I am using python 3.8.5 and also encountered this issue . I installed superset using pip,version is 2.0.1

I am also having this issue with python 3.8.8

I found this comment on wtform repository https://github.com/wtforms/wtforms/pull/202#issuecomment-118543433 .
the ext module is not supported on wtforms 3.x. Pinning the installed version of wtforms to < 3.x works.
In my case I pinned the version of wtforms to 2.3.3

I found this comment on wtform repository wtforms/wtforms#202 (comment) . The ext module is not supported on wtforms 3.x, which appears to be a version that superset installs by default. Pinning the installed version of wtforms to < 3.x fixes the issue. In my case I pinned the version of wtforms to 2.3.3

it works for me,  execute pip list show wtforms version is 3.0.1

I can confirm with the base.txt trick I get the installation going with v2.0.1 and ubuntu 20.04 py38
pip install --upgrade pip
sudo -u ubuntu pip install --upgrade pip --no-warn-script-location
sudo -u ubuntu pip install testresources --no-warn-script-location
sudo -u ubuntu pip install aiohttp==3.8.1 aiosignal==1.2.0 alembic==1.6.5 amqp==5.1.0 apispec[yaml]==3.3.2 async-timeout==4.0.2 attrs==21.2.0 babel==2.9.1 backoff==1.11.1 billiard==<IP_ADDRESS> bleach==3.3.1 brotli==1.0.9 cachelib==0.4.1 celery==5.2.2 cffi==1.14.6 charset-normalizer==2.0.4 click==8.0.4 click-didyoumean==0.3.0 click-plugins==1.1.1 click-repl==0.2.0 colorama==0.4.4 convertdate==2.4.0 cron-descriptor==1.2.24 croniter==1.0.15 cryptography==3.4.7 deprecation==2.1.0 dnspython==2.1.0 email-validator==1.1.3 flask==2.0.3 flask-appbuilder==4.1.3 flask-babel==1.0.0 flask-caching==1.10.1 flask-compress==1.10.1 flask-jwt-extended==4.3.1 flask-login==0.4.1 flask-migrate==3.1.0 flask-sqlalchemy==2.5.1 flask-talisman==0.8.1 flask-wtf==0.14.3 frozenlist==1.3.0 func-timeout==4.3.5 geographiclib==1.52 geopy==2.2.0 graphlib-backport==1.0.3 gunicorn==20.1.0 hashids==1.3.1 holidays==0.14.2 humanize==3.11.0 idna==3.2 isodate==0.6.0 itsdangerous==2.1.1 jinja2==3.0.3 jsonschema==3.2.0 kombu==5.2.4 korean-lunar-calendar==0.2.1 mako==1.1.4 markdown==3.3.4 markupsafe==2.0.1 marshmallow==3.13.0 marshmallow-enum==1.5.1 marshmallow-sqlalchemy==0.23.1 msgpack==1.0.2 multidict==5.1.0 numpy==1.22.1 packaging==21.3 pandas==1.3.4 parsedatetime==2.6 pgsanity==0.2.9 polyline==1.4.0 prison==0.2.1 prompt-toolkit==3.0.28 pyarrow==5.0.0 pycparser==2.20 pyjwt==2.4.0 pymeeus==0.5.11 pyparsing==3.0.6 pyrsistent==0.16.1 python-dateutil==2.8.2 python-dotenv==0.19.0 python-editor==1.0.4 python-geohash==0.8.5 pytz==2021.3 pyyaml==5.4.1 redis==3.5.3 selenium==3.141.0 simplejson==3.17.3 six==1.16.0 slackclient==2.5.0 sqlalchemy==1.3.24 sqlalchemy-utils==0.37.8 sqlparse==0.3.0 tabulate==0.8.9 typing-extensions==<IP_ADDRESS> urllib3==1.26.6 vine==5.0.0 wcwidth==0.2.5 webencodings==0.5.1 werkzeug==2.0.3 wtforms==2.3.3 wtforms-json==0.3.3 yarl==1.6.3 --no-warn-script-location
sudo -u ubuntu pip install psycopg2-binary pillow gunicorn gevent --no-warn-script-location
sudo -u ubuntu pip install requests --upgrade --no-warn-script-location
sudo -u ubuntu pip install trino thrift pyhive --no-warn-script-location

status-set maintenance "About to pip install apache-superset $(date +"%H:%M")"
juju-log -l "WARNING" "About to pip install apache-superset"
sudo -u ubuntu pip install apache-superset --no-warn-script-location

notice
wtforms==2.3.3 wtforms-json==0.3.3

I'm not sure if anything on this thread is still an issue in current versions of Superset (3.x). If it is, we can re-open this, or feel free to open a new issue with updated context. We're no longer supporting Superset 2.x or prior, and it's been a while since this thread saw any activity, so I'm closing this as stale.


LEGO: Pull request from lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20210715093926733 to main

LEGO: Pull request from lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20210715093926733 to main with localized lcls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.001%) to 42.731%

Totals

Change from base Build<PHONE_NUMBER>:
0.001%

Covered Lines:
26222

Relevant Lines:
55694

💛  - Coveralls


bump version to 0.1.11

Description
Questions

Metadata
Fixes

Fixes # [Link to Issue]

Contributing Agreement

[x] I have read and understood the Optimism Contributing Guide and Code of Conduct and am following those guidelines in this pull request.

Lets try to get https://github.com/ethereum-optimism/contracts/pull/261 in first


fixed submitting search form by JS

fixed submitting form, problem described in https://github.com/sanoma/django-arctic/issues/248

Coverage remained the same at 72.086% when pulling 075876fb7295533a0808cb7652aeca981cafe3be on bug/248-fix-search-form-submitting into 8dd977ab90c527b1f93cc9f28b35876023e9e8f3 on develop.

Coverage remained the same at 72.086% when pulling 075876fb7295533a0808cb7652aeca981cafe3be on bug/248-fix-search-form-submitting into 8dd977ab90c527b1f93cc9f28b35876023e9e8f3 on develop.


Skip failing tests

+1 for skipping tests we know to fail.
However, do we know why they fail or how we can fix that?

Just looked at one of the failing tests. It appears "cat" doesn't get generated, as intended, in test_token_identity_prompt_early. I agree with skipping tests for now. Would like to look into this again when writing up the token identity tutorial.

test_token_identity_prompt has the same problem, only difference is it patches into the last layer, as opposed to an early layer in test_token_identity_prompt_early

Just looking at test_over quickly, I think it fails because of this change in patchscope.Patchscope.over:

The indexing of the values is off in the test as a result:

What's the best way to proceed, merge this PR and shall I write up an issue for this?

I’d say merge this first fix the tests in a separate PR. I think this change is strictly better than the current state of running failing tests.
We can create GH issues for the failing tests if we can’t figure out why they fail yet.
One thing I notice is that the autobuild for this project has been failing for a while. I believe this is part of the reasons.

Lol. GPT-2 predicts that the next token of "it has whiskers and a tail. it domesticated itself. it is a species of" is "bird".
That's probably why the concept of "cat" never appears in the token identity prompt test.


React 16 and styled-components library upgrade

This pull request will upgrade the following libraries and update ref to innerRef for map-container to work with react 16.
Changes

react: 16.8.3
styled-components: 4.1.3

This should trigger a minor version bump to => 0.3.0

I saw in https://github.com/uber/kepler.gl/issues/364#issuecomment-469166853 that innerRef is being deprecated?

I saw in #364 (comment) that innerRef is being deprecated?

Yeah I saw that.
Styled-components is deprecating innerRef. My change is adding one innerRef to a non styled-component element (no issue).
React 16 still supports innerRef but has also taken a completely different approach which requires the following changes: https://reactjs.org/docs/forwarding-refs.html
I am reserving to deal with Refs in a different pull request

Styled-components is deprecating innerRef. My change is adding one innerRef to a non styled-component element (no issue).

Hm.. not sure I understand this statement. Does that mean it's is an innerRef for a component that we created? innerRef isn't a React thing from what I gathered, I thought it was just ref.

Styled-components is deprecating innerRef. My change is adding one innerRef to a non styled-component element (no issue).

Hm.. not sure I understand this statement. Does that mean it's is an innerRef for a component that we created? innerRef isn't a React thing from what I gathered, I thought it was just ref.

The innerRef was used by styled-compoenents. In order to remove any innerRef references I went ahead and replaced them with Refs to make sure we are aligned with stylled-components v4 guidelines.


Implement proper typecasting for response

The response in the RequestHandled event can be of different types, so the DocBlock here is incorrect. Types are

Symfony\Component\HttpFoundation\Response

\Illuminate\Http\Response
\Illuminate\Http\JsonResponse -> Symfony\Component\HttpFoundation\JsonResponse
\Illuminate\Http\RedirectResponse -> \Symfony\Component\HttpFoundation\RedirectResponse
\Symfony\Component\HttpFoundation\BinaryFileResponse

Added via DocBlock.


Test zlib-rs

https://tweedegolf.nl/en/blog/134/current-zlib-rs-performance

This is added with https://github.com/wcampbell0x2a/backhand/pull/641, not as default, but maybe in the future :tm:


MSSQL view lineage does not work for tables with multiple database

Affected module
Ingestion Framework
Describe the bug
Lineage, it seems that it doesn't work for views that are constructed from tables in multiple databases
slack conversation: https://openmetadata.slack.com/archives/C02B6955S4S/p1663539130896229

closing the issue as not reproduceable, able to generate lineage for queries involving multiple databases


Identify COVID19-TEST-Facility

As an epidemiologist I want to identify the presence of a COVID19-TEST-Facility in my facility so that people can find me and do the test.
healthcare:speciality=COVID19-TEST-Facility
https://wiki.openstreetmap.org/wiki/Global_Healthsites_Mapping_Project#Complete
https://redpen.io/az5a991386c40c7fac
https://redpen.io/ckecd5ba4adb39e69f
https://redpen.io/nb1187c9845547471b
Next steps:
Confirm that 'COVID19-TEST-Facility' is the correct tag to add to OSM
Confirm that OSM is happy to accept such a tag..
https://wiki.openstreetmap.org/wiki/Key:healthcare#Subtags

Hi,
so far there has not been a tag far testing sides, see https://taginfo.openstreetmap.org/search?q=covid#values

Am I right with the assumption that this is meant for amenities like hospitals, clinics, "drive-through" testing stations, or doctors? And not the laboratories which actually perform the e.g. PCR tests. Because for the latter, I potentially see issue with the verifyability of such information.
(the following is just my first personal impression regarding this topic)

Confirm that '[healthcare:speciality=]COVID19-TEST-Facility' is the correct tag to add to OSM

Formal stuff:
The all-caps tag value looks odd, normally such tag values would be lower case (cf. healthcare:speciality=radiology). Also, the "_Facility" suffix seems superfluous, as it would be only used to add the function of an already tagged health facility (like for a certain amenity=hospital, the speciality would be tagged as healthcare:speciality=paediatrics, not healthcare:speciality=paediatrics_Facility). Considering this, covid19_testing would probably be a more fitting tag value.
Conceptual stuff:
[healthcare:speciality(]https://wiki.openstreetmap.org/wiki/Key:healthcare#Subtags) in OSM seems to be already "fully" defined and not be suited for such specific information. I would assume that healthcare:speciality=pulmonology, healthcare:speciality=intensive or even healthcare:speciality=general already describe the type of specialization of health facility treating patients with COVID-19 quite well.
In OSM, I found one existing tag for indicating treatment of a specific disease:  healthcare:cholera=*. This schema might work for COVID-19 as well. healthcare:covid19 could have different tags: yes, no, dedicated, …etc.
While I don't see much added value for "normal" health facilities through this tag (are there any hospitals specialized in pulmonology which would reject patients with COVID-19?), I can see the case for facilities which perform only COVID-19 tests, and nothing else. These may be described quite well as (for example) healthcare:speciality=other + healthcare:covid19=testing. But regarding these I see the following additional issue:

Confirm that OSM is happy to accept such a tag.

I've just read in the OSM forum, that (at least in Germany), the exact locations of the new drive-through COVID-19 testing facilities are supposedly kept "undisclosed" on purpose in order to avoid too many people showing up who don't actually need to be tested. People are advised to talk to their doctors and/or "corona" health hotline, which would tell patients whether they should and where they can get tested.

Thank you very much for this @tyrasd ! Reading this and also going through OSM community chat, I wonder if we should for the moment start the "call to action" rather for health care data in general again? Showing that knowing the current capacity helps to also learn about potential high risk areas, which will not be able to cope if number of cases increases.

Hi all, I think we can find consensus on a tag. I started a doc after Mark asked in the HOT Slack... https://docs.google.com/document/d/1mM9IiLG_s0LQ2w32x3Nh_cTifV8Tq1BPSIbOt23zlqQ/edit?usp=sharing
I'm now thinking we can use the existing healthcare:specialty=* Key. However, I think that's where I would suggest using something more generic, like testing and maybe borrow disease=* from the Healthcare 2.0 proposal

After more research, I believe healthcare=laboratory is the 'proper' tag for this. Although I thought there might be some separation between the testing site and laboratory that does the analysis; I don't see any when looking at definitions of these on wikipedia. More over, there really isn't a 'testing site' definition for medical that doesn't include laboratory or similar language; see https://en.wikipedia.org/wiki/COVID-19_testing

Thanks for your comments all in thread! @russdeffner if we used healthcare=laboratory could we also have a way to explicitly mark COVID-19 (covid_19) as @tyrasd has proposed by adding this tag: healthcare:covid19=testing. I take on board your comments about maintaining locations secret @tyrasd though I expect that in other sectors getting this information from official channels like doctor's rooms may be a) challenging and b) cause additional stress for people trying to get tested if they have to make a visit first to a doctor. That said I am no expert on this so it would be great to hear from a medical practitioner what the best practice is.

Hi, quick comment based on what I read and heard the last days. I think mapping testing sides in OSM is very tricky, due to 1) the very ferquent updates, 2) the need of patients to consult their doctor first in many countries. If people show up with consulting first, they are sent away... This is to manage stress actually as otherwise the facilities would be overrun. If you have oter infos, happy to discuss, but am really not to sure about them and would rather focus on improving the quality of health care data.

Ok @MelEckle It seems prudent to not map it right now - we don't want to create problems. Thanks for your inputs all.

There are only a few records in the world that currently meet the criterion
healthcare='laboratory' and speciality='clinical_pathology'