[Bug] Got the response to undefined request

Describe the bug
Sometimes when a child worker process throws an exception, the parent worker process throws the following panic error:
PanicError: flush queue: SoftJobError:
	codec_execute:
	sync_worker_exec:
	sync_worker_exec_payload: LogicException: Got the response to undefined request 10389 in /srv/vendor/temporal/sdk/src/Internal/Transport/Client.php:60

and after it:
PanicError: unknown command CommandType: ChildWorkflow, ID: edfb1479-3d88-407e-a428-7e304e0d7bdf, possible causes are nondeterministic workflow definition code or incompatible change in the workflow definition

Environment/Versions

Temporal Version: 1.16.2 and 1.2.0 SDK
We use Kubernetes

Additional context
We tried to scale the pods so that can be split in different zones for fault tolerance. Maybe that causing these problems.

Hey @dmitry-pilipenko 👋🏻. I guess the problem is in the workers' restarts. SoftJobError indicates some error that leads to process (PHP) restart. I expect that fix will be released the following week.

@rustatian Can I do something about it now? This happens in a production now :(

@dmitry-pilipenko, I'm not sure what is the initial reason for this error. Could you please turn on debug in the logs and send me this file? Especially before and after this error.

I hope this helps you:
wf-default-6f974d785d-7rspn.log
temporalio-history-85d87b8945-vks9v.log

@dmitry-pilipenko Thank you. Could you please update RR version? You use an unsupported version (v2.7.4). You may try v2.10.2.

@rustatian this problem is still observed, but now it is in cases unknown to me.
Trace:
PanicError: sync_worker_exec: SoftJobError:
	sync_worker_exec_payload: LogicException: Got the response to undefined request 12445 in /srv/vendor/temporal/sdk/src/Internal/Transport/Client.php:60
Stack trace:
#0 /srv/vendor/temporal/sdk/src/WorkerFactory.php(389): Temporal\Internal\Transport\Client->dispatch()
#1 /srv/vendor/temporal/sdk/src/WorkerFactory.php(261): Temporal\WorkerFactory->dispatch()
#2 /srv/src/Infrastructure/CLI/TemporalWorker.php(67): Temporal\WorkerFactory->run()
#3 /srv/vendor/symfony/console/Command/Command.php(308): App\Infrastructure\CLI\TemporalWorker->execute()
#4 /srv/vendor/symfony/console/Application.php(989): Symfony\Component\Console\Command\Command->run()
#5 /srv/vendor/symfony/console/Application.php(299): Symfony\Component\Console\Application->doRunCommand()
#6 /srv/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
#7 /srv/vendor/helpcrunch/foundation/src/Runtime/Handler.php(29): Symfony\Component\Console\Application->run()
#8 /srv/vendor/helpcrunch/foundation/src/Runtime/Runner.php(34): Helpcrunch\Foundation\Runtime\Handler->__invoke()
#9 /srv/vendor/autoload_runtime.php(29): Helpcrunch\Foundation\Runtime\Runner->run()
#10 /srv/bin/app(11): require('...')
#11 {main}
process event for default [panic]:
github.com/temporalio/roadrunner-temporal/aggregatedpool.(*Workflow).OnWorkflowTaskStarted(0xc0007a7b30, 0xc00065ba08?)
	github.com/temporalio/roadrunner-temporal@v1.4.1/aggregatedpool/workflow.go:153 +0x2e8
go.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc000835c98, 0xc001a4db80, 0x0?, 0x1)
	go.temporal.io/sdk@v1.14.0/internal/internal_event_handlers.go:815 +0x203
go.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc00079f960, 0xc001b1df50)
	go.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:878 +0xca8
go.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc0006c0210, 0xc001b1df50, 0xc000572300)
	go.temporal.io/sdk@v1.14.0/internal/internal_task_handlers.go:727 +0x485
go.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc0001131e0, 0xc001b1df50)
	go.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:284 +0x2cd
go.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc0001131e0, {0x15e0ae0?, 0xc001b1df50?})
	go.temporal.io/sdk@v1.14.0/internal/internal_task_pollers.go:255 +0x6c
go.temporal.io/sdk/internal.(*baseWorker).processTask(0xc000170500, {0x15e06a0?, 0xc0007b8e40})
	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

Log file:
wf-default-5794999ddc-r4h94.log

Did you update RR to v2.10.4 ?

yes, I have updated my last comment and added more details

yes, I have updated my last comment and added more details

You didn't update RR, because, according to the stack trace, you are using the temporal plugin version 1.4.1, but in the 2.10.4 it was updated to v1.4.7.

@rustatian my current RR version is 2.10.2. If I update to 2.10.4 will my problem go away?

Yes, we fixed this problem in the latest version.

@rustatian update didn't help :(

wf-default-7f9b7d986b-5bqtw.log

@dmitry-pilipenko Please, attach the entire sample (link to your repo preferable) in the description to reproduce your issue.

@rustatian, I can provide a child workflow that has problems:
https://github.com/helpcrunch/temporal/blob/main/workflows.php

@rustatian, I can provide a child workflow that has problems: https://github.com/helpcrunch/temporal/blob/main/workflows.php

Please, remove the not needed parts from your code and provide a minimal example to run it with rr, as I showed in the sample. The minimal example should reproduce the bug and contain all code to run it (your .rr.yaml should also be included).

@dmitry-pilipenko Friendly ping 😃

@rustatian I haven't been able to reproduce yet.
Our workflows generated dynamically from user settings and I'm trying to find what is causing this problem. It hasn't been done locally yet.
One of the main differences: locally I deployed using docker-compose, and in production using a k8s.
The problem appears only for flows where we waiting signal with a timeout. Do you have any hypotheses that might help?
        yield Temporal::awaitWithTimeout(
            $interval = CarbonInterval::minutes(30),
            fn () => $this->answer !== null
        );
        if ($this->answer === null) {
            throw new ReplyTimeout($interval);
        }

It's execute in a child workflow. After that parent workflow got error:
{
    "eventTime": "2022-07-01T10:17:00.000Z",
    "eventType": "WorkflowTaskStarted",
    "eventId": "26",
    "details": {
      "scheduledEventId": "25",
      "identity": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8",
      "requestId": "3bb264c4-76ac-4962-a6be-8d128650c38c",
      "eventId": "26",
      "eventType": "WorkflowTaskStarted",
      "kvps": [
        {
          "key": "eventTime",
          "value": "Jul 1st 1:17:00 pm"
        },
        {
          "key": "eventId",
          "value": "26"
        },
        {
          "key": "scheduledEventId",
          "value": "25"
        },
        {
          "key": "identity",
          "value": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8"
        },
        {
          "key": "requestId",
          "value": "3bb264c4-76ac-4962-a6be-8d128650c38c"
        }
      ],
      "eventTime": "Jul 1st 1:17:00 pm"
    },
    "eventTimeDisplay": "Jul 1st 1:17:00 pm",
    "timeElapsedDisplay": "15s",
    "eventSummary": {
      "requestId": "3bb264c4-76ac-4962-a6be-8d128650c38c",
      "eventId": "26",
      "eventType": "WorkflowTaskStarted",
      "kvps": [
        {
          "key": "requestId",
          "value": "3bb264c4-76ac-4962-a6be-8d128650c38c"
        }
      ]
    },
    "eventFullDetails": {
      "scheduledEventId": "25",
      "identity": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8",
      "requestId": "3bb264c4-76ac-4962-a6be-8d128650c38c",
      "eventId": "26",
      "eventType": "WorkflowTaskStarted",
      "kvps": [
        {
          "key": "scheduledEventId",
          "value": "25"
        },
        {
          "key": "identity",
          "value": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8"
        },
        {
          "key": "requestId",
          "value": "3bb264c4-76ac-4962-a6be-8d128650c38c"
        }
      ]
    }
  },
  {
    "eventTime": "2022-07-01T10:17:00.000Z",
    "eventType": "WorkflowTaskFailed",
    "eventId": "27",
    "details": {
      "scheduledEventId": "25",
      "startedEventId": "26",
      "cause": "WORKFLOW_TASK_FAILED_CAUSE_NON_DETERMINISTIC_ERROR",
      "failure": {
        "message": "unknown command CommandType: ChildWorkflow, ID: 31ab4b00-a18a-44e8-851a-baf9de182600, possible causes are nondeterministic workflow definition code or incompatible change in the workflow definition",
        "source": "GoSDK",
        "stackTrace": "process event for default [panic]:\ngo.temporal.io/sdk/internal.panicIllegalState(...)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:409\ngo.temporal.io/sdk/internal.(*commandsHelper).getCommand(0x8?, {0x3?, {0xc000bc2d50?, 0x0?}})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:881 +0x109\ngo.temporal.io/sdk/internal.(*commandsHelper).handleStartChildWorkflowExecutionInitiated(0x7f7cc1a01f18?, {0xc000bc2d50?, 0xc000196000?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:1124 +0x29\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc001373770, 0xc00156aa00, 0xd8?, 0x0)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_event_handlers.go:905 +0x6ae\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc0007f9080, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:902 +0xd68\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc000a40c60, 0xc000559680, 0xc000702510)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:749 +0x485\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc0005b3a00, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:284 +0x2cd\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc0005b3a00, {0x16063c0?, 0xc000559680?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:255 +0x6c\ngo.temporal.io/sdk/internal.(*baseWorker).processTask(0xc00067e8c0, {0x1605f80?, 0xc00047f9c0})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:400 +0x167\ncreated by go.temporal.io/sdk/internal.(*baseWorker).runTaskDispatcher\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:305 +0xb5",
        "cause": null,
        "applicationFailureInfo": {
          "type": "PanicError",
          "nonRetryable": true,
          "details": null
        },
        "failureInfo": "applicationFailureInfo"
      },
      "identity": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8",
      "baseRunId": "",
      "newRunId": "",
      "forkEventVersion": "0",
      "binaryChecksum": "23bc61c98cc56611c0691d0c4fd23834",
      "eventId": "27",
      "eventType": "WorkflowTaskFailed",
      "kvps": [
        {
          "key": "eventTime",
          "value": "Jul 1st 1:17:00 pm"
        },
        {
          "key": "eventId",
          "value": "27"
        },
        {
          "key": "scheduledEventId",
          "value": "25"
        },
        {
          "key": "startedEventId",
          "value": "26"
        },
        {
          "key": "cause",
          "value": "WORKFLOW_TASK_FAILED_CAUSE_NON_DETERMINISTIC_ERROR"
        },
        {
          "key": "failure",
          "value": "PanicError: unknown command CommandType: ChildWorkflow, ID: 31ab4b00-a18a-44e8-851a-baf9de182600, possible causes are nondeterministic workflow definition code or incompatible change in the workflow definition \nprocess event for default [panic]:\ngo.temporal.io/sdk/internal.panicIllegalState(...)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:409\ngo.temporal.io/sdk/internal.(*commandsHelper).getCommand(0x8?, {0x3?, {0xc000bc2d50?, 0x0?}})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:881 +0x109\ngo.temporal.io/sdk/internal.(*commandsHelper).handleStartChildWorkflowExecutionInitiated(0x7f7cc1a01f18?, {0xc000bc2d50?, 0xc000196000?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:1124 +0x29\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc001373770, 0xc00156aa00, 0xd8?, 0x0)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_event_handlers.go:905 +0x6ae\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc0007f9080, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:902 +0xd68\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc000a40c60, 0xc000559680, 0xc000702510)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:749 +0x485\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc0005b3a00, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:284 +0x2cd\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc0005b3a00, {0x16063c0?, 0xc000559680?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:255 +0x6c\ngo.temporal.io/sdk/internal.(*baseWorker).processTask(0xc00067e8c0, {0x1605f80?, 0xc00047f9c0})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:400 +0x167\ncreated by go.temporal.io/sdk/internal.(*baseWorker).runTaskDispatcher\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:305 +0xb5"
        },
        {
          "key": "identity",
          "value": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8"
        },
        {
          "key": "baseRunId",
          "value": ""
        },
        {
          "key": "newRunId",
          "value": ""
        },
        {
          "key": "forkEventVersion",
          "value": "0"
        },
        {
          "key": "binaryChecksum",
          "value": "23bc61c98cc56611c0691d0c4fd23834"
        }
      ],
      "eventTime": "Jul 1st 1:17:00 pm"
    },
    "eventTimeDisplay": "Jul 1st 1:17:00 pm",
    "timeElapsedDisplay": "15s",
    "eventSummary": {
      "message": "unknown command CommandType: ChildWorkflow, ID: 31ab4b00-a18a-44e8-851a-baf9de182600, possible causes are nondeterministic workflow definition code or incompatible change in the workflow definition",
      "eventId": "27",
      "eventType": "WorkflowTaskFailed",
      "kvps": [
        {
          "key": "message",
          "value": "unknown command CommandType: ChildWorkflow, ID: 31ab4b00-a18a-44e8-851a-baf9de182600, possible causes are nondeterministic workflow definition code or incompatible change in the workflow definition"
        }
      ]
    },
    "eventFullDetails": {
      "scheduledEventId": "25",
      "startedEventId": "26",
      "cause": "WORKFLOW_TASK_FAILED_CAUSE_NON_DETERMINISTIC_ERROR",
      "failure": {
        "message": "unknown command CommandType: ChildWorkflow, ID: 31ab4b00-a18a-44e8-851a-baf9de182600, possible causes are nondeterministic workflow definition code or incompatible change in the workflow definition",
        "source": "GoSDK",
        "stackTrace": "process event for default [panic]:\ngo.temporal.io/sdk/internal.panicIllegalState(...)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:409\ngo.temporal.io/sdk/internal.(*commandsHelper).getCommand(0x8?, {0x3?, {0xc000bc2d50?, 0x0?}})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:881 +0x109\ngo.temporal.io/sdk/internal.(*commandsHelper).handleStartChildWorkflowExecutionInitiated(0x7f7cc1a01f18?, {0xc000bc2d50?, 0xc000196000?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:1124 +0x29\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc001373770, 0xc00156aa00, 0xd8?, 0x0)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_event_handlers.go:905 +0x6ae\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc0007f9080, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:902 +0xd68\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc000a40c60, 0xc000559680, 0xc000702510)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:749 +0x485\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc0005b3a00, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:284 +0x2cd\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc0005b3a00, {0x16063c0?, 0xc000559680?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:255 +0x6c\ngo.temporal.io/sdk/internal.(*baseWorker).processTask(0xc00067e8c0, {0x1605f80?, 0xc00047f9c0})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:400 +0x167\ncreated by go.temporal.io/sdk/internal.(*baseWorker).runTaskDispatcher\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:305 +0xb5",
        "cause": null,
        "applicationFailureInfo": {
          "type": "PanicError",
          "nonRetryable": true,
          "details": null
        },
        "failureInfo": "applicationFailureInfo"
      },
      "identity": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8",
      "baseRunId": "",
      "newRunId": "",
      "forkEventVersion": "0",
      "binaryChecksum": "23bc61c98cc56611c0691d0c4fd23834",
      "eventId": "27",
      "eventType": "WorkflowTaskFailed",
      "kvps": [
        {
          "key": "scheduledEventId",
          "value": "25"
        },
        {
          "key": "startedEventId",
          "value": "26"
        },
        {
          "key": "cause",
          "value": "WORKFLOW_TASK_FAILED_CAUSE_NON_DETERMINISTIC_ERROR"
        },
        {
          "key": "failure",
          "value": "PanicError: unknown command CommandType: ChildWorkflow, ID: 31ab4b00-a18a-44e8-851a-baf9de182600, possible causes are nondeterministic workflow definition code or incompatible change in the workflow definition \nprocess event for default [panic]:\ngo.temporal.io/sdk/internal.panicIllegalState(...)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:409\ngo.temporal.io/sdk/internal.(*commandsHelper).getCommand(0x8?, {0x3?, {0xc000bc2d50?, 0x0?}})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:881 +0x109\ngo.temporal.io/sdk/internal.(*commandsHelper).handleStartChildWorkflowExecutionInitiated(0x7f7cc1a01f18?, {0xc000bc2d50?, 0xc000196000?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_decision_state_machine.go:1124 +0x29\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0xc001373770, 0xc00156aa00, 0xd8?, 0x0)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_event_handlers.go:905 +0x6ae\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0xc0007f9080, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:902 +0xd68\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0xc000a40c60, 0xc000559680, 0xc000702510)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_handlers.go:749 +0x485\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0xc0005b3a00, 0xc000559680)\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:284 +0x2cd\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0xc0005b3a00, {0x16063c0?, 0xc000559680?})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_task_pollers.go:255 +0x6c\ngo.temporal.io/sdk/internal.(*baseWorker).processTask(0xc00067e8c0, {0x1605f80?, 0xc00047f9c0})\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:400 +0x167\ncreated by go.temporal.io/sdk/internal.(*baseWorker).runTaskDispatcher\n\tgo.temporal.io/sdk@v1.15.0/internal/internal_worker_base.go:305 +0xb5"
        },
        {
          "key": "identity",
          "value": "default:3bfa8009-a174-424b-a20c-2eb5f01c93e8"
        },
        {
          "key": "baseRunId",
          "value": ""
        },
        {
          "key": "newRunId",
          "value": ""
        },
        {
          "key": "forkEventVersion",
          "value": "0"
        },
        {
          "key": "binaryChecksum",
          "value": "23bc61c98cc56611c0691d0c4fd23834"
        }
      ]
    }
  }

@dmitry-pilipenko 👋🏻
Might be you use a different RR versions locally and in the k8s?
We had this issue in our past versions.

@dmitry-pilipenko Thanks for the logs, but to help you, we need to reproduce this issue. Please, as I suggested earlier, create a repository with a reproducible sample that includes .rr.yaml and sample minimum app. It can either be in Docker or run with rr serve.

IDK if this maybe of help, but I've experienced the same issue twice, both times our pods were lacking available memory. IDK how this happens and if it would be the same to you.

IDK if this maybe of help, but I've experienced the same issue twice, both times our pods were lacking available memory. IDK how this happens and if it would be the same to you.

Do you have a supervisor in the RR's configuration?

Nope, we probably should, but after increasing memory everything is stable, handling 4+Million workflows a day for half a year now. I'll enable it when I get the chance.

It's not that PHP or RR was leaking memory, we falsely set the memory too low constraining the pod.

wow, that's big numbers 😮

Nope, we probably should, but after increasing memory everything is stable, handling 4+Million workflows a day for half a year now. I'll enable it when I get the chance.

wow 😮
Might be OOM kill the workflow worker?

Yeah, it should kill the whole pod cause of OOM, but it gets into a weird state before that with undefined request. I haven't investigated it enough to reproduce it :(

Ok, thanks. Please keep us updated; if we can reproduce this weird issue, we will fix it ASAP.

I'll try to reproduce it with OOM when I get some free time :D :pray:

@rustatian Hi, I noticed same issue, sync_worker_exec: SoftJobError:\\n\\tsync_worker_exec_payload: LogicException: Got the response to undefined request 9022
I can say that, container was not restarted from 2 weeks. I have a memory limit per worker (temporal.activities.supervisor.max_worker_memory).
Looks like there is memory leak somewhere, because memory is not released after execution - keeps growing.

Hey @cv65kr 👋🏻
Thanks for the detailed report 👍🏻. We have a few guesses on how to fix that. @roxblnfk is working on that now.

@cv65kr hello. Could you provide some information about that image?

What does mean each curve?
The gray curve is a workflow worker memory usage and the blue curve is an activity worker memory usage, right?

@roxblnfk Hi, sorry for late response, but I missed somehow notification. Both are ECS memory utilization for worker (by worker I mean container with Roadrunner which using only Temporal plugin). I don't have metrics directly from Roadrunner because it not supporting Datadog.
And yes it just a different scale. Sorry for being not descriptive, my fault 😞

Hey @cv65kr 👋🏻
Could you please try to reduce the cache_size option in the RR's configuration: https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml#L182.
Temporal saves the whole our workflow definition structure, which is pretty big. Could you please set it to, let's say, 10 and observe memory consumption?

I don't have metrics directly from Roadrunner because it not supporting Datadog

You may use the metrics plugin and get the information directly about the Go runtime. Unfortunately, I think we should not rely on uber/tally since they are veeeery slow in reviewing PRs that they are not interested in.

Hi @rustatian I will try on monday

@rustatian Sorry for delay, I needed couple days to ensure that those changes not generate any issues.
I tested it with workflow like:
#[WorkflowMethod]
public function start(): iterable
{
while(true) {
$result = yield $this->activity->execute();
if ($result) {
break;
}
yield Workflow::timer(CarbonInterval::minutes(2));
}
}

It's kinda simulation of polling status.
So e.g. in last 11 hours it growing up 27.23% to 28.02% and still growing up. With two enabled workflows. (Numbers are small because traffic is small).
Will try to run it with higher traffic.

@rustatian I did more tests and on screenshot I marked places when I triggered workflows (20 for one time). Still looks like memory is not released properly because I expected that memory will goes down instead of straight line (there was any awaiting workflows/activities).
This time chart is based on metrics from RR.

Configuration:
metrics:
  address: <IP_ADDRESS>:8234

temporal:
    address: ${TEMPORAL_CLI_ADDRESS}
    cache_size: 10
    activities:
        num_workers: 8
        debug: true
    metrics:
        driver: prometheus
        address: <IP_ADDRESS>:8233

Thanks @cv65kr 👍🏻
@roxblnfk Seems like we leak (I mean, PHP) 😢

@cv65kr Hey 👋🏻
What is your temporal PHP SDK version?

I missed that, but do not use the debug option with the activities pool while testing. RR, in that case, allocates a worker on-demand before the request, which is unsuitable for memory testing.

Hi @rustatian
I am using the v2.3.1 of SDK and PHP 8.1.
I tried today without debug mode as well, and memory is still not released.

You can tell me how you tested it? Let's compare our steps.

I used that workflow: https://github.com/temporalio/sdk-php/issues/177#issuecomment-1340542716
Started one every second for more than 3h. The config is the same as yours, except for the debug mode.

@rustatian sorry crazy day

And I started around 40 workflows on my machine during this time

And, this is fine. It's only 4MB for the PHP workers (all as far as I understand) and RR.
This is my bench env:

Temporal + RR + workflows (new one every 800ms).

I'll leave this bench overnight; let's see after that.

@rustatian I really need vacations, ofc nothing happen on your machine because I sent you wrong workflow example.
I prepared repo with my test code, in README you will find all necessary informations. Now we should be on the same page.
https://github.com/cv65kr/temporal-sdk-leaks
If you want want talk we can do this on some communicator.

We all need some vacation 😆 Sure, I'll try to run your sample 👍🏻 Thanks ⚡

@cv65kr Yeah, it seems that you're right, 1 hour: 40->111Mb... ~2200 executions. Thanks, we have at least test for that now 👍🏻

@rustatian thanks for letting know. Do you think the problem is with RR or PHP SDK?

Definitely not with RR. According to a test, RR even won't need to run a GC (only forced GC every minute by the Go runtime). You may see that here on the screenshot: https://github.com/temporalio/sdk-php/issues/177#issuecomment-1344530668
(thanks pointers 😄)
This is smt with the PHP workflow logic. Alex @roxblnfk is already looking into the issue. I guess this is not an easy case since the temporal in a PHP world is a pretty new concept, but we're working hard on resolving that case. Sorry for the inconvenience 😭

Right, good point.
I profiled SDK yesterday and issue might be cause by circular references, so PHP GC is not able to clean memory properly. Thanks for your input and help, I really appreciate that 👍  We are on the same page. I will try to help as well and if I discover something I will immediately share with you guys.

When the worker fails due to the memory limit being exceeded, I see this error:

So now, I can confirm that the memory leak is the reason for this error.

Hey @Zylius @cv65kr 👋🏻
We've found the code, which smells, on it now 👍🏻

The leak was in the timer's cleanup routine where awaitWithTimeout was triggered by the internal timeout.  @roxblnfk Will push the PR later (and you'll be able to review it 😄 )

Basically we have internal code to make sure that no floating timers left after leaving awaitWithTimeout. This optimization did not behave as expected, but we properly isolated the issue, so patch is on it's way.

Great job guys thank you ;)

@Zylius @cv65kr Guys, could you please set the sticky_cache size to, let's say, 10k? On the latest PHP-SDK version. The memory will grow since the WFs will be uploaded to the PHP worker, but it should stop growing.

Okay, i think we did it (including reproducable env). So the problem was in collapsing of awaitWithTimeout in cases when workflow was interruped inside this statement (i.e. when you have more workflow running that your cache allows). Without cache offloading - no memory leaks, that's why it took so much time to figure out.
Very interesting edge case, only reproducable for awaitWithTimeout (due to internal Promise chain), but i think we confirmed patch is working. Stay tuned.

I can confirm that I don't see that the memory grows after the fix (not released yet):

Great news guys! Looking forward to see PR and generally way how you solved this issue

Fixed in v2.3.2


UI improvements in the email domain discovery feature

Describe the issue:

1.The user  should notify that the email as a username feature has to be configured to tryout the end-to- end  flow sucessfully

2.Better to provide an example of the expected email.domain for better clarity

How to reproduce:

Expected behavior:

Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: [e.g., IS 5.10.0, IS 5.9.0]
OS: [e.g., Windows, Linux, Mac]
Database: [e.g., MySQL, H2]
Userstore: [e.g., LDAP, JDBC]

Optional Fields
Related issues:

Suggested labels:

Fixed with https://github.com/wso2/identity-apps/pull/4466


KinematicBody does not collide with new position of a moved KinematicBody - can tunnel through

Godot version: 3.1.1
OS/device including version: Windows 8.1
Issue description:
If two kinematic bodies move toward each other using move_and_collide() in the same frame, they can intersect, or even tunnel through, since the collision does not seem to take into account the updated position of the KinematicBody that moved first.

Steps to reproduce:
Put one kinematic body above the other with space in between.  Move the bottom kinematic body up toward the top body using move_and_collide().  In the same physics process frame, move the top body down below the new position of the bottom body.  Note that the top body can partially (or even completely, if the movement is large enough) pass through the bottom body without registering a collision.
Minimal reproduction project:
test_broken_collision1.zip

Worth noting: if I move the movement of one of these from _physics_process() to _process(), they collide, so it seems the position update is deferred.  Is there some way to force this update immediately after moving a kinematic body?

the example code is not correct i think
extends KinematicBody

var did_thing := false

func _physics_process(delta : float):
	if !did_thing:
		var collision_info := move_and_collide(Vector3(0.0, 1.0, 0.0))
		if collision_info:
			print("platform hit.")
			did_thing = true
		else:
			print("platform missed (expected)")

and it works
what you are doing is setting did_thing to true regardless if there is a collision. so i think it just moves the object without checking for a collision, then did_thing gets set to true, and the collision doesn't happen at the right spot (thus, it passes through)

The purpose of the example is to do 1 step, and one step only.  The end result is that the kinematic bodies are inside of each other at the end of the frame (as seen by the screenshot).  If you move the platform up slightly so that it collides on the first frame, it'll still exhibit the issue, even with your change.

alrighty, my bad. afaik, if you don't want kinematic bodies inside each other, a RigidBody can/should be used.

RigidBody doesn't offer the level of control that I need.  I need to be able to step multiple times in a frame with move_and_collide().

I've partially fixed this by directly updating the position of the body on the physics server:
PhysicsServer.body_set_state(get_rid(), PhysicsServer.BODY_STATE_TRANSFORM, global_transform)
Unfortunately, it's a two-stage problem.  The body position is updated, however, the broadphase is not, so collision still does not happen (unless you "trick" it into having a larger broadphase by having additional collision shapes on the kinematic body.
Now I just need to find a way to force the broadphase to update, but I'm concerned about potential performance issues with that.

Ok, I've got a little hack to work around around this for now.  Not sure what the performance implications are to always updating the broadphase and transform on every kinematic move, so I just did this, for now:
void CollisionObjectBullet::set_transform(const Transform &p_global_transform) {

	set_body_scale(p_global_transform.basis.get_scale_abs());

	btTransform bt_transform;
	G_TO_B(p_global_transform, bt_transform);
	UNSCALE_BT_BASIS(bt_transform);
	set_transform__bullet(bt_transform);

	// jitspoe - force the broadphase to update.
	if (get_space()) {
		get_space()->get_dynamics_world()->updateSingleAabb(bt_collision_object);
	}
}

And in GDScript, I use this after moving objects that can interact with each other:
PhysicsServer.body_set_state(get_rid(), PhysicsServer.BODY_STATE_TRANSFORM, global_transform)
That body_set_state function calls set_transform.  Down side is, this gets done twice, since the transforms are set at the end of the physics frame, and also the broadphase aabbs are updated as well, so the aabb gets updated 3 times instead of once, but at least it fixes my particular case of an elevator platform and player moving through each other.
A better solution might be to just update the transform and aabb's whenever a move happens.  Again, not sure what performance implications are of that, but it would be more robust.  This is just a bit of a hack to make my game shippable.

Another issue I'm running into now is the depenetration / recover_from_penetration() logic seems to push the character to the side when I move it down enough to collide with the platform again.
The depenetration logic is the source of a lot of bugs (slowly sliding down slopes, etc).  I've tried disabling it in SpaceBullet::test_body_motion and just using the sweep, which actually gets me better results in general, except for the fact that the character often sticks when moving parallel to a surface (which is likely the whole purpose of the margin and depenetration in the first place).

Does KinematicBody use continuous collision detection internally?
Since KinematicBody is just a RigidBody in Kinematic mode internally, why are collision signals and some relevant methods from rigidbody not bound with classdb ?

Still valid in 3.2.4 beta4

sounds like this proposal discusses the mentioned issue: https://github.com/godotengine/godot-proposals/issues/2332

My current workaround for this is to use force_update_transform and then also remove the physics body from the physics space and put it back in using PhysicsServer.body_set_space. The second step is necessary to force the broadphase to update.
In godot 3.x, this only works on bullet, and does not work on godot physics. I do not know why.

In my case (3.5.1, bullet physics, with two kinematic bodies moving toward one another), it was sufficient to just use force_update_transform on the body that moves first.
An aspect of my case that was confusing to me was how directional it was, even when the end result should theoretically have been the same.  The body moving first was always effectively inside where the area the second (larger) one would end up covering, but the issue only happened when they were moving in opposite directions (i.e. toward each other).

My current workaround for this is to use force_update_transform and then also remove the physics body from the physics space and put it back in using PhysicsServer.body_set_space. The second step is necessary to force the broadphase to update.
In godot 3.x, this only works on bullet, and does not work on godot physics. I do not know why.

I tried this on 4.0 beta 17 (godot physics only), it did not work. Tried both space_create() and RID() for empty spaces.

My current workaround for this is to use force_update_transform and then also remove the physics body from the physics space and put it back in using PhysicsServer.body_set_space. The second step is necessary to force the broadphase to update.
In godot 3.x, this only works on bullet, and does not work on godot physics. I do not know why.

I tried this on 4.0 beta 17 (godot physics only), it did not work. Tried both space_create() and RID() for empty spaces.

Godot 4 uses godot physics IIRC so that makes sense.

Godot 4 uses Godot physics, yes.


Fix notification-related things

Fix build of gtk module with USE_LIBNOTIFY. Also add new calls to the menu even if notifications are disabled.

thank you for the quick response, Charles :)
builds fine for me, on Debian Testing and OSX 10.9

Cool!

Fixes #107 for me.


Support recursive scripts

Evo does not currently support recursion. Scripts are written as the body of a single function, and cannot be called recursively. To support recursion, we should update the way scripts are written.
Related: https://github.com/polywrap/evo.ninja/issues/130, https://github.com/polywrap/evo.ninja/pull/206

Closing this as scripts have been removed from the UI and de-emphasized in general.


feat(ha_nexus): implementing HA Cluster agent stages

HA Cluster agents has to implement different stages when it receives Nvme path failover request from HA Node agent. This PR includes code to support those stages.
This also includes node socket information as well in ReportFailedPath which allows cluster agent to register node upon receiving new request incase Cluster agent got restarted and node is not registered.


mock is part of the stdlib as of py3.3 as unittest.mock

Not sure this module is fully functional/actively developed, but if it is then this PR will allow it to be added to octoDNS's test-module list https://github.com/octodns/octodns/blob/4bcc8200b2b591e847620b282398aeb2bdf209d3/.github/workflows/modules.yml#L13-L37.
I found the module/repo in pypi and went to add it as part of https://github.com/octodns/octodns/pull/951, but ran into problems running it with ./script/test-module that this PR along with https://github.com/doddo/octodns-lexicon/pull/7 will fix.

Thanks!


10-bit color appears to be working, but the actual video signal seems to be 8-bit.

Already reported ? *

[X] I have searched the existing open and closed issues.

Regression?
No
System Info and Version
 System/Version info
Hyprland 0.45.2 built from branch  at commit 12f9a0d0b93f691d4d9923716557154d74777b0a  ([gha] Nix: update inputs).
Date: Tue Nov 19 21:47:18 2024
Tag: v0.45.2, commits: 5451
built against aquamarine 0.5.0

flags set:
debug

System Information:
System name: Linux
Node name: durandal
Release: 6.12.3-gentoo
Version: #1 SMP PREEMPT_DYNAMIC Mon Dec  9 17:04:18 JST 2024

GPU information:
0b:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] [1002:73bf] (rev c0) (prog-if 00 [VGA controller])

os-release: NAME=Gentoo
ID=gentoo
PRETTY_NAME="Gentoo Linux"
ANSI_COLOR="1;32"
HOME_URL="https://www.gentoo.org/"
SUPPORT_URL="https://www.gentoo.org/support/"
BUG_REPORT_URL="https://bugs.gentoo.org/"
VERSION_ID="2.17"

plugins:
  hyprexpo by Vaxry ver 1.0

Description
I set the bitdepth to 10 and started Hyprland.
There were no problems with startup and the image appears on the display.
The format was also recognized as 10bit in hyprctl monitors.
However, the indicator on the display showed the color depth as 8 bps. (The display I am using is an ASUS XG32UQ, which has an indicator showing the current color depth.)
Other devices that receive HDMI signals also confirmed that the actual signal being received was 8 bits.
I set render_bit_depth to 10 in sway-1.10 and started it up, and sway is correctly sending a 10-bit signal as far as I can see in the indicator.
In other words, I think that Hyprland is not correctly transmitting 10-bit video signals.
I visually compared the images generated by https://github.com/jursonovicst/gradient.
The indicator on the display showed that the image was recognized as 8-bit, but to my eyes it looked like it was actually a 10-bit output.
In reality, this may not be a problem, but the behavior seems strange.
How to reproduce
set bitdepth, 10 like below.
monitor=DP-1, 3840x2160@120, 0x0, 1, bitdepth, 10

Crash reports, logs, images, videos
hyprland.log with HYPRLAND_TRACE=1 AQ_TRACE=1

[TRACE] [AQ] drm: Using drmModeAddFB2WithModifiers to import buffer into KMS: Size [Vector2D: x: 3840, y: 2160] with format XR30 and mod<PHONE_NUMBER>22392067

All seems in ordnung from the logs. KMS gets an XR30 (XRGB2101010) buffer and accepts it.
I can't think of why your display would do that, maybe it somehow samples the cursor plane? (which would be 8 bit yes) - though those shouldnt be visible to the display. IDK, maybe the driver is drunk.
Anyways, if to your eyes it's 10b, I think it might just be a bug in reporting the bitness.

@vaxerski
Thank you very much for your response!
I am not familiar with the mechanics of display rendering, but I wonder if some bug could bury the difference between the actual signal and the reported color depth bit.
Anyway, The logs indicate that the rendering itself is likely to be done properly, so I trust my eyes.
Thank you again.
If there is nothing of concern from the maintainer's point of view, the issue can be closed.

closing then


Support for HCL format

It would be nice if Terraform and other file formats based on HCL to be supported as well.

I'm working on this now.

I'm starting a PR for HCL now!
Welcome for any testing and review comments!


Multi-App Run - Feature Feedback Discussion

Hi, starting this topic as a Multi-App Run feedback discussion.
At the point of writing this post this feature is still in preview.
First I would like to thank the contributor for providing this feature :)
Use case: Start multiple .net based services and their Dapr sidecars during development. Previously I used Tye (no longer maintained).
What I like so far:

Faster startup time compared to Tye
Easy Yaml config

What I am having some difficulties with:

After running dapr run in case some service fails to start that is not indicated in the CLI output.
Logs have a hard coded path, namely the projects .dapr/logs subdirectory.
It's not very easy to hunt for the logs in different folders and files, especially as each run generates new files.

p.s. Maybe Dapr admins could enable GitHub discussions so we don't clutter up the issues section with plain discussion topics.

Hi @mcrio, thanks for your feedback! The enhancements for Multi-App Run are being tracked in this issue: https://github.com/dapr/cli/issues/1240. Certainly the logging part is on the list.
I'm not one of the maintainers, but my guess is that the Dapr Discord is the preferred place for discussions (check the discussions topic). There's also a cli channel there where you can provide feedback.

Thanks @marcduiker  Closing this one.


[Task] Fix: drawer issue on android

Seems the latest change on the action introduced an issue in Android, fixing now

The issue is that drawers in Android cant be closed anymore using a swipe gesture


feat(metrics-api): use common attributes definitions

Which problem is this PR solving?
Use common attributes definitions.
Fixes https://github.com/open-telemetry/opentelemetry-js/issues/2587
Short description of the changes

Allow non-string values like array, number, strings in MetricAttributes.
Export non-string values to Prometheus with the transformation defined in https://github.com/open-telemetry/opentelemetry-specification/blob/v1.12.0/specification/common/README.md#attribute.

Type of change

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?

[x] hashAttributes
[x] PrometheusSerializer
[ ] OTLP exporters

Checklist:

[x] Followed the style guidelines of this project
[x] Unit tests have been added
[x] Documentation has been updated

Just forgot to update the OTLP exporter tests 😅. Marking this as a draft again.

@dyladan I noticed that you removed this PR from the metrics GA milestone. Is there any specific reason to exclude this from metrics GA?

Thank you for the explanation. Make sense to me.

Fixed tests introduced on the main branch which need to be updated accordingly in this PR.


the terminal of vscode 1.9.1 didn't work until restart the computer.

when I edit the “Path”, the terminal of vscode 1.9.1 didn't work. I need to restart the computer.

VSCode Version:1.9.1
OS Version:Win 7

You will need to restart all instances of VS Code in order for path changes to take affect.


Installation for M1 max

Provide a detailed description of the proposed feature
Installation for M1 max
What is the motivation for the feature?
Installation for M1 max
How will the feature be relevant to at least 90% of Homebrew users?
Installation for M1 max
What alternatives to the feature have been considered?
Installation for M1 max

https://stackoverflow.com/questions/66666134/how-to-install-homebrew-on-m1-mac

https://brew.sh/

was this fixed? The answer in stack overflow still shows the issue with the PATH @carlocab

https://brew.sh/

this doesn't work perfectly. Use the SO I sent above.

Did you follow the Next Steps shown to you by the installer? It should've looked something like
- Add Homebrew to your PATH in ~/.zprofile:
    echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zprofile
    eval $(/opt/homebrew/bin/brew shellenv)

where should that be?
I can't see it in the url you sent.

On Feb 7, 2022, at 5:40 PM, Carlo Cabrera @.***> wrote:
Did you follow the Next Steps shown to you by the installer? It should've looked something like

Add Homebrew to your PATH in ~/.zprofile:
echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zprofile
eval $(/opt/homebrew/bin/brew shellenv)
—
Reply to this email directly, view it on GitHub https://github.com/Homebrew/brew/issues/12811#issuecomment-1032051118, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOE6LUBASKOODHCNO5LFCDU2BJ6PANCNFSM5NDDZQZQ.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.

It's the message displayed when the install script is finished running.

must have missed it I suppose... :/ Can't confirm anymore :( but then why did the SO person missed it too?

On Feb 7, 2022, at 6:36 PM, Carlo Cabrera @.***> wrote:
It's the message displayed when the install script is finished running.
—
Reply to this email directly, view it on GitHub https://github.com/Homebrew/brew/issues/12811#issuecomment-1032089827, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOE6LQBLKA2IZRLNGRQ6CTU2BQPVANCNFSM5NDDZQZQ.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.

must have missed it I suppose... :/ Can't confirm anymore :( but then why did the SO person missed it too?

Perhaps they wrote that answer long after they ran the installer, so they're not likely to remember what the installer actually said, and are therefore reconstructing the steps they took from memory.

alas...can you paste what the installer says?

On Feb 7, 2022, at 6:52 PM, Adrian Ho @.***> wrote:
must have missed it I suppose... :/ Can't confirm anymore :( but then why did the SO person missed it too?
Perhaps they wrote that answer long after they ran the installer, so they're not likely to remember what the installer actually said, and are therefore reconstructing the steps they took from memory.
—
Reply to this email directly, view it on GitHub https://github.com/Homebrew/brew/issues/12811#issuecomment-1032099216, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOE6LW2743HCPTRFKH5MDDU2BSMHANCNFSM5NDDZQZQ.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.

@carlocab already did that: https://github.com/Homebrew/brew/issues/12811#issuecomment-1032051118

cool! Wonder I missed when I installed it myself.

must have missed it I suppose... :/ Can't confirm anymore :( but then why did the SO person missed it too?
…

Depends on which SO person. See:
https://stackoverflow.com/a/70006281
https://stackoverflow.com/a/70112105


Release v0.24.0 [Draft]

What's left for release

[ ] ready for js-ipfs v0.41 (#767)
[ ] Orbit-db-store update to v3.2.0

[ ] https://github.com/orbitdb/orbit-db-store/pull/87

[ ] Update documentation

[ ] Include oplog specific events into API.md

[ ] adds toJSON method to orbitdb address class (https://github.com/orbitdb/orbit-db/pull/756)
[ ] _addOperation calls are serialized fixes #737 (https://github.com/orbitdb/orbit-db-store/pull/85)

Additional tasks:

[ ] Update change log
[ ] Blog post on orbitdb.org
[ ] Update field manual.
[ ] Contributors & thank yous list

Estimated shipping date
TBD
General bugfixes and updates:
Relevant PRs

fix: fix documentation (https://github.com/orbitdb/orbit-db/pull/770)
Update matrix and discord links (https://github.com/orbitdb/orbit-db/pull/766)
fix: fix Module with IPFS Instance (https://github.com/orbitdb/orbit-db/pull/770)
Fix assert.notEqual (https://github.com/orbitdb/orbit-db/pull/769)

Relevant issues:

Add queue for db operations (https://github.com/orbitdb/orbit-db/issues/737)

This release is not finalized yet additional changes prior to release may be added. Considerable amount of review is required before finalization.
Reviewer and contributions are welcome.

Thanks for doing this @vaultec81

i think it would be great if these could be included with the next release:
https://github.com/orbitdb/orbit-db/pull/756
https://github.com/orbitdb/orbit-db-store/pull/85
they definitely need more feedback from @haadcode and @shamb0t before being considered

@tabcat Added! Additional review will be done before finalization. However, if your PRs get merged before this next version has been released they will be included either way.

Might be good to simply link to the project for the issues / PRs, but keep the administrative stuff here like the blog post, etc. That way we won't have to keep the project and the list here in sync

@aphelionz that sounds good. Definitely we should keep this format or a similar format when the release is published so people will know what has been changed, features, etc.

So to be clear my suggestion is to simply remove the checkboxes between "What's left for release" and "additional tasks" and keep everything else. That way, to your point, you can just copy and paste everything under "General bugfixes and updates" to the CHANGELOG

Release 0.24.0 is out... We need a changelog, a release, and a blog post!

We have a changelog, a release, and a blog post :)


feat: COPY supports large files and streaming input from PostgreSQL

Adds support for large files for COPY to import large amounts of data into Cloud Spanner using the PostgreSQL COPY statement. Importing large data sets is only possible after first executing set autocommit_dml_mode='partitioned_non_atomic'. The following COPY operation will then automatically be split into multiple transactions that are executed partly in parallel for efficient loading into Cloud Spanner.
The feature can be used both to import previously exported files as well as streaming data directly from a real PostgreSQL database by piping the output of a COPY .. TO STDOUT into a COPY .. FROM STDIN command.
The feature has been tested with large datasets to ensure that it does not run out of memory or in other ways breaks if it is fed a very large stream of records. The PR refactors the MutationWriter class extensively to achieve this, as it is necessary to connect the different streams of data directly to each other, instead of first loading everything into memory before processing it. This is achieved by connecting the data streams in the following ways:

The MutationWriter.addCopyData writes the received bytes into a PipedOutputStream. This is done by the normal worker thread of the connection (the ConnectionHandler).
The PipedOutputStream is connected to a PipedInputStream, which automatically receives all data from the PipedOutputStream. The pipe has a (default) buffer size of 65Kb.
The CSVParser is created with the PipedInputStream as its input source. This ensures that the CSVParser can read the records directly from the incoming data stream, instead of having to wait for all data to be received first.
Reading from the CSVParser is done using a separate worker thread that is created specifically for the entire COPY operation (this is the new ExecutorService in CopyStatement). This ensures that the main ConnectionHandler worker thread will write the data to the stream, while the COPY worker thread will read the data.
The COPY worker thread reads records from the CSVParser and creates a mutation for each CSVRecord. Note: the CSVParser iterator will block until there is enough data to construct a complete record, so we don't have to worry about getting an incomplete record from this iterator.
If we are using PARTITIONED_NON_ATOMIC:
6.1. When we reach one of the transaction limits (commit size or number of mutations), a Commit with all the mutations in that batch will be prepared.
6.2. The Commit operation is executed using a separate thread pool (the ExecutorService in MutationWriter). This enables multiple commits to be processed in parallel on the backend, as we know (or assume) that the records a non-overlapping.
6.3 Each Commit operation is also added to a BlockingDeque that allows at most 128 operations in parallel. This BlockingDeque ensures that we apply back pressure in the entire stream if the backend cannot keep up with the incoming data stream. A Commit operation can only be started if there is a free spot in this BlockingDeque, and if there is no space, the COPY worker thread will be blocked until there is space. This cascades backwards in the pipeline, as that also means that it pauses reading records from the CSVParser, which again means that writing to the PipedOutputStream that is used by addCopyData will block (when the 65Kb buffer is full). This all means that the client must wait before it can send any more data to the server.

The above behavior has been verified by streaming an (almost) endless stream of generated data from a real PostgreSQL server using the following command:
psql -h localhost -d my-test-db \
-c "copy (select (random()*1000000000)::bigint, random()<0.5, md5(random()::text || clock_timestamp()::text)::bytea, \
random()*123456789, (random()*999999)::int, (random()*999999)::numeric, now()-random()*interval '50 year', \
md5(random()::text || clock_timestamp()::text)::varchar \
from generate_series(1, 100000000) s(i)) to stdout" \
| psql -h localhost -p 5433 -d test \
-c "set autocommit_dml_mode='partitioned_non_atomic'" \
-c "copy all_types from stdin;"

The above example uses this data model:
create table all_types (
  col_bigint bigint not null primary key,
  col_bool bool,
  col_bytea bytea,
  col_float8 float8,
  col_int int,
  col_numeric numeric,
  col_timestamptz timestamptz,
  col_varchar varchar(100))

Performance
Copying 1,000,000 rows using the above table definition (approx 180MB of text data) takes less than 1min15sec when executed on from local laptop against a Cloud Spanner instance:
Three test runs:
time psql -h localhost -d my-test-db -c "copy (select (random()*1000000000)::bigint, random()<0.5, md5(random()::text || clock_timestamp()::text)::bytea, random()*123456789, (random()*999999)::int, (random()*999999)::numeric, now()-random()*interval '50 year', md5(random()::text || clock_timestamp()::text)::varchar from generate_series(1, 1000000) s(i)) to stdout" | psql -h localhost -p 5433 -d test -c "set autocommit_dml_mode='partitioned_non_atomic'" -c "copy all_types from stdin;"
SET
COPY 1000000

real    1m13.944s
user    0m0.590s
sys     0m0.428s

-------------------------------------------

time psql -h localhost -d my-test-db -c "copy (select (random()*1000000000)::bigint, random()<0.5, md5(random()::text || clock_timestamp()::text)::bytea, random()*123456789, (random()*999999)::int, (random()*999999)::numeric, now()-random()*interval '50 year', md5(random()::text || clock_timestamp()::text)::varchar from generate_series(1, 1000000) s(i)) to stdout" | psql -h localhost -p 5433 -d test -c "set autocommit_dml_mode='partitioned_non_atomic'" -c "copy all_types from stdin;"
SET
COPY 1000000

real    1m14.647s
user    0m0.545s
sys     0m0.384s

-------------------------------------------

time psql -h localhost -d my-test-db -c "copy (select (random()*1000000000)::bigint, random()<0.5, md5(random()::text || clock_timestamp()::text)::bytea, random()*123456789, (random()*999999)::int, (random()*999999)::numeric, now()-random()*interval '50 year', md5(random()::text || clock_timestamp()::text)::varchar from generate_series(1, 1000000) s(i)) to stdout" | psql -h localhost -p 5433 -d test -c "set autocommit_dml_mode='partitioned_non_atomic'" -c "copy all_types from stdin;"
SET
COPY 1000000

real    1m7.251s
user    0m0.589s
sys     0m0.469s

@tinaspark FYI

LGTM. Thanks for adding this functionality!

Thanks for looking into this. I know it was a large PR, and so not a very easy one to review.


Move cip-mm to kpromo mm

What type of PR is this?
/kind cleanup deprecation
What this PR does / why we need it:
Part one of https://github.com/kubernetes-sigs/promo-tools/issues/508:

cip-mm: Add deprecation notices in documentation and remove targets
Move cip-mm to kpromo mm
kpromo(pr): Add cip-mm deprecation punchlist

Signed-off-by: Stephen Augustus<EMAIL_ADDRESS>ref: https://github.com/kubernetes-sigs/promo-tools/issues/473#issuecomment-991167871
Which issue(s) this PR fixes:

Special notes for your reviewer:
Does this PR introduce a user-facing change?

- cip-mm: Add deprecation notices in documentation and remove targets
- Move `cip-mm` to `kpromo mm`

/assign @puerco @cpanato
cc: @kubernetes-sigs/release-engineering @CecileRobertMichon

(I'm opting not to fully deprecate in this PR as there some other fixes in the manifest growing options I'd like to make that warrant their own PR.)

Nice, perhaps we can also hide the subcommand before deprecating it.
Thanks!
/lgtm

Nice, perhaps we can also hide the subcommand before deprecating it.

We'll plan to do one minor release with the subcommand, ensure kpromo pr matches the functionality, and then remove the subcommand altogether in the next minor.


thread 'main' panicked at src/tools/rustfmt/src/parse/session.rs:42:9

query stack during panic:
end of query stack
rustc-ice-2024-02-18T21_13_56-96599.txt

@emhane thanks for the report. Without a code snippet that we can run rustfmt on to reproduce the panic there's little we can do to help. It would also be very helpful to know what version of rustfmt you're using and what configurations you might be using.

rustfmt 1.7.0-stable (07dca489 2024-02-04)
sorry, I don't have a minimal repro at my disposal.

Unfortunately without that we can't really help 😔

@emhane just wanted to say thanks again for bringing this to our attention. After looking over the panic text that you linked this seems nearly identical to #6082. I believe the panic is related to a recent change in the compiler. Out of curiosity, were you running rustfmt on a public repository at the time when you experienced the panic?

sure, yes I was https://github.com/paradigmxyz/reth


Add initialEvent management in subscription

Problem description
Hello, one more on subscription.
Looking to define a standard behavior within our implementations.
If we got a suscription for geofencing area-entered event type for a device already present in the geo zone, or for roaming-on for a mobile already in roaming mode what is the pattern to adopt ?
To make it generic, if we have a subscription for a given "thing" and the target of this subscription is already in this situation do we trigger an event?
Possible evolution
Proposal from the Device location team:

add in the subscription a initialEvent attribute. If set to true, if the subscription request (when it's managed by the server) matches current device situation an event is triggered.
This is commented in details here https://github.com/camaraproject/DeviceLocation/issues/124

Alternative solution
Other Pattern
Additional context
Issue valid at least for device location & device status

fyi @PedroDiez

@bigludo7 :
My 2-cents on this issue:
The new requirements around configuration and filters for subscriptions will keep coming even more frequently as we now have api subprojects that focus on connectivity insights etc. Not all subprojects will need every of these configs and filters.
I would hence recommend taking a brief look at both ideas presented here (though wip)
https://github.com/cloudevents/spec/blob/main/subscriptions/spec.md#filters and
https://github.com/cloudevents/spec/blob/main/subscriptions/spec.md#config
and see if at least the core idea can be reused in Camara as this will also allow API subprojects to have config keys and filters which are very specific to them, and we could also have common ones when most API subprojects find them useful.

Hello @shilpa-padgaonkar
Thanks for the sharing.
For me it looks a bit complex - for exemple the use of attributes config or filter seems not trivial but perhaps this is my lack of expertise with CloudEvents subscription.
What is also the maturity of this specification ? This is still a 0.1 wip version with an update 4 months ago.
But also I understood that it not (yet) too late to change our subscription model so the point you raised is very fair.
In order to progress on this and separate topic,  could we Shilpa have a separate issue to discuss this (Migrate or not to CloudEvent subscriptions model)  and get feedback from our community ?
We can reference you post in a new issue.
WDYT?

@bigludo7 : I am not insisting on migrating to Cloudevents subscription spec. Like I myself have mentioned earlier in my comment that I am aware it is still wip. I was hoping we could come up with a pattern that uses the core idea proposed in this Cloudevents subscription model regarding configs and filters and see if we can apply those (if needed in a simpler way) for our requirements in Camara (and with no intention to block your changes). I will try to prepare some content in this regard in the next days.

@bigludo7 : @rartych pointed out a similar discussion happening currently in device location https://github.com/camaraproject/DeviceLocation/issues/138#issuecomment-1894191964

Thanks as always  @bigludo7  for your offer to contribute and help :) I will create a new issue & add content there.

Hi, wrt the topic here, I think that we can split defining a new property for the use case (initialEvent) and then discussing where this parameter is to be conveyed in the subscription model. If we follow the CloudEvents subscription model (wip), it seems to me that config would be the placeholder, but first discussion would be if we move that model, as it has other implications, as for example allowing subscription to multiple event types in one request.

yes first a new issue will be created to discuss if we need the new model or not.


Multiple files sections lead to "route not found"

Describe the bug
I am trying to deliver a website with assets. The requirement is that everything except the assets is protected by authentication. I have therefore created two files sections, one with authentication, one without. Then I have chosen different base_path and document_root.
As a result, I get a 404 error for both / and /assets/icon.png.
Here is a screenshot of my folder structure and the relevant part of the couper config.

To Reproduce
Steps to reproduce the behavior:

Which Couper version? Run couper version or docker run coupergateway/couper version

1.12.1 2023-03-20 233f0d7
go version go1.19.6 darwin/amd64

Provide your configuration file *.hcl. Remove sensitive data.

server {

    files "htdocs" {
        base_path = "/"
        document_root = "../htdocs"
        access_control = ["AccessToken"]
    }

    files "assets" {
        base_path = "/assets"
        document_root = "../assets"
    }
}

Provide a curl call for reproduction

curl 'http://localhost:8080/'

See an error response or error log.

{
  "error": {
    "id":      "cl906224io83a3975kr0",
    "message": "route not found error",
    "path":    "/",
    "status":  404
  }
}

Expected behavior
For / index.html is delivered from the htdocs folder, for /assets/icon.png the file icon.png is delivered from the assets folder.

@erwinschliske I cannot reproduce the 404 on http://localhost:8080/, but a 404 on http://localhost:8080/assets/icon.png.
Unfortunately the "htdocs" files handler is sorted before the "assets" files handler, and so is used even for requests to "/assets/icon.png".
If I add a path segment to the basepaths ("/files" and "/files/assets"), everything is as I'd expect ("longer" "/files/assets" wins against "shorter" "/files" when requesting "/files/assets/icon.png").
@malud Any idea why the sorting in server.SortPathPatterns() sorts "/" before "/a" (while sorting  "/**" after "/a/**"), as in TestSortPathPatterns() (server/mux_test.go)?
BTW, in RegisterConfigured() (server/mux.go) the utils.JoinOpenAPIPath(path, "/**") for entries of m.opts.FileRoutes is done after sorting.
So I see two options:

change the sorting order OR
already add the wildcard to the path before passing it to setRoutesFromHosts() in (config/runtime/server.go)  		err = setRoutesFromHosts(serverConfiguration, portsHosts, serverOptions.FilesBasePaths[i], fileHandler, files)


LUCENE-10496: avoid unnecessary attempts to evaluate skipping doc if index sort and search sort are in opposite direction

users ofter write doc with indexSorting in one direction(asc or desc) , but need to search top docs both in two directions (asc and desc)
if index sort and search sort are in opposite direction, NumericLeafComparator needn't to check if it can skip non-competitive doc inside one segments, because the rest docs of the same segment are all competitive.
Checklist
Please review the following and check all that apply:

[x] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
[x] I have created a Jira issue and added the issue ID to my pull request title.
[x] I have given Lucene maintainers access to contribute to my PR branch. (optional but recommended)
[x] I have developed this patch against the main branch.
[x] I have run ./gradlew check.
[ ] I have added tests for my changes.

@jpountz Ok, tanks. As users ofter need to search on both directions but index data can only be index sorted by one directions. This situation may be common for users.

If you can find an approach that is less intrusive

can you give me any hits to achieve this? Thanks.

Why do you sort the index if you need to sort in both directions? Is it for range queries? Could you use points instead?
Sorry I don't have good ideas for making it less intrusive.

@jpountz Hi, I add an adaptive skip interval to avoid unnecessary frequent attempts to skip docs, can you help to review again.
I also rerun the rally tests, following is the result:
data set
es rally httpLog
main operations

use ssd disk
add index sort desc of field @timestamp
set shard_number as 2
force merge to 1 segment
only search one index logs-241998 which is 13GB and 181million docs in total

query result

Metric
Task
Baseline
Contender
Diff
Unit

50th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
6750.63
4849.66
-1900.97
ms

90th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
6844.34
4921.1
-1923.23
ms

99th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
7011.71
5076.31
-1935.41
ms

100th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
7014.05
5112.71
-1901.33
ms

we can see 28% decrease  (6844.34ms->4921.1ms) of query latency if we apply this pr.

@jpountz Hi, I modify the logic.  The skip interval is only changed when updateCounter is bigger than 256, and the speed of double skip interval is 3 times slower than the speed of divide skip interval.
Based on the new logic, following is the performance tests result of no index sort in multiple segments and one segment per shard:
data set
es rally httpLog
main operations

use ssd disk
no index sort
set shard_number as 2
only search one index logs-241998 which is 13GB and 181million docs in total

query result

case asc_sort_timestamp 6.28% decrease  (121.195ms->113.581ms) of query latency
case  asc-sort-timestamp-after-force-merge-1-seg 9.36% decrease  (485.229ms->439.778ms) of query latency
case asc-sort-with-after-timestamp-after-force-merge-1-seg 9.31% decrease  (441.676ms->400.519ms) of query latency
other cases also have performance improvement

Metric
Task
Baseline
Contender
Diff
Unit

50th percentile service time
desc_sort_timestamp
10.0582
9.32669
-0.73154
ms

90th percentile service time
desc_sort_timestamp
10.7014
9.61116
-1.09025
ms

99th percentile service time
desc_sort_timestamp
13.8007
9.93615
-3.86456
ms

100th percentile service time
desc_sort_timestamp
30.3847
10.2724
-20.1123
ms

50th percentile service time
asc_sort_timestamp
118.245
111.074
-7.17049
ms

90th percentile service time
asc_sort_timestamp
121.195
113.581
-7.61345
ms

99th percentile service time
asc_sort_timestamp
126.698
114.86
-11.838
ms

100th percentile service time
asc_sort_timestamp
131.592
126.641
-4.95039
ms

50th percentile service time
desc_sort_with_after_timestamp
71.1903
67.4284
-3.76184
ms

90th percentile service time
desc_sort_with_after_timestamp
72.1165
68.5731
-3.54346
ms

99th percentile service time
desc_sort_with_after_timestamp
81.3781
70.8015
-10.5765
ms

100th percentile service time
desc_sort_with_after_timestamp
82.0475
94.6865
12.6391
ms

50th percentile service time
asc_sort_with_after_timestamp
92.1529
94.0611
1.90815
ms

90th percentile service time
asc_sort_with_after_timestamp
96.2921
95.5402
-0.75191
ms

99th percentile service time
asc_sort_with_after_timestamp
118.337
114.149
-4.18805
ms

100th percentile service time
asc_sort_with_after_timestamp
119.652
186.802
67.1499
ms

50th percentile service time
desc-sort-timestamp-after-force-merge-1-seg
131.23
125.879
-5.3516
ms

90th percentile service time
desc-sort-timestamp-after-force-merge-1-seg
133.185
130.755
-2.43072
ms

99th percentile service time
desc-sort-timestamp-after-force-merge-1-seg
154.65
140.28
-14.37
ms

100th percentile service time
desc-sort-timestamp-after-force-merge-1-seg
158.243
151.763
-6.47964
ms

50th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
472.373
429.798
-42.5744
ms

90th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
485.229
439.778
-45.4507
ms

99th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
504.165
455.842
-48.3231
ms

100th percentile service time
asc-sort-timestamp-after-force-merge-1-seg
532.754
457.975
-74.7793
ms

50th percentile service time
desc-sort-with-after-timestamp-after-force-merge-1-seg
84.5181
80.2796
-4.2385
ms

90th percentile service time
desc-sort-with-after-timestamp-after-force-merge-1-seg
85.9541
82.4319
-3.52219
ms

99th percentile service time
desc-sort-with-after-timestamp-after-force-merge-1-seg
116.454
96.489
-19.9651
ms

100th percentile service time
desc-sort-with-after-timestamp-after-force-merge-1-seg
120.934
97.8837
-23.0508
ms

50th percentile service time
asc-sort-with-after-timestamp-after-force-merge-1-seg
428.985
392.431
-36.5541
ms

90th percentile service time
asc-sort-with-after-timestamp-after-force-merge-1-seg
441.676
400.519
-41.1567
ms

99th percentile service time
asc-sort-with-after-timestamp-after-force-merge-1-seg
449.748
411.862
-37.8854
ms

100th percentile service time
asc-sort-with-after-timestamp-after-force-merge-1-seg
450.671
424.775
-25.8964
ms

I'm curious about tryUpdateFailCount, did you get better results on the benchmark with it than without it?

@jpountz yes, with tryUpdateFailCount, the case asc_sort_with_after_timestamp perform better than without it.


Extend Schema Support

This PR adds support for extend Schema syntax used with Apollo Federation.

Cool! Thanks for this contribution!
Are you using this package as an Apollo Federation Subgraph library? If so, it could be cool to get a quick example for some documentation and potentially an entry on the Apollo website

Yep yep thats the goal but theres a few things to build before thats possible.


Write a tutorial to use Chaos Mesh to test a simple program

Feature Request
Is your feature request related to a problem? Please describe:

Write a very simple program and use chaos mesh test it
Describe the feature you'd like:

write a simple program
use chaos mesh test it
write the tutorial about the program and how to use chaos mesh to test it

Describe alternatives you've considered:

None
Teachability, Documentation, Adoption, Migration Strategy:

None

I feel that this tutorial should also have a dashboard to do some visualization.
Ref #170

I feel that this tutorial should also have a dashboard to do some visualization.
Ref #170

yichen，this days we are design for dashboard and write a web application demo for it、the web application is ready、the design will come out in few days


[DOC] - Improve screenshots

The screenshots in the user guide have text that's too small to read.
The getting started page shows examples of screenshots that should be updated.  There are other pages that are similar and need updates.  I recommend taking screenshots with your browser window less than full width of your monitor.  There is a lot of wasted space in the images and the text is small, like the Server Options screen.  The QHub training cluster page has good examples of better screenshots.
The screenshots are also placed before the text descriptions on some pages.
When the screenshot is before the text that describes the screenshot, the guide is awkward to read.  I suggest moving the screenshots after the related text.
Related: #1076

Resolved in #1144


Renew API cert with added --tls-san

I have a 3 master k3s cluster setup on Ubuntu 20, running etcd.
I need to update the api cert to add an additional floating IP to the cert, so I've updated the k3s.service file on master 1, adding a second --tls-san option for that IP.
So it now looks like this:
ExecStart=/usr/local/bin/k3s \
    server --disable servicelb --disable traefik \
        '--cluster-init' \
        '--tls-san' \
        '<IP_ADDRESS>' \
        '--tls-san' \
        '<IP_ADDRESS>' \

Master 2/3 have service files that look like this, so I have made no changes to them.
ExecStart=/usr/local/bin/k3s \
    server --disable servicelb --disable traefik \
        '--server' \
        'https://<IP_ADDRESS>:6443' \

I have restarted the K3S service on all systems, rebooted master 1, and fully drained master 2 and master 3, but the API cert doesn't seem to be updating with the additional IP address?
If there a way to manually force the certificate to be rotated with the new config, or steps I need to take to force the rotation and then updating of the cert on the management pane for all masters?
I have done some googling, but haven't managed to find anything, apologies if I've missed the steps somewhere!
Thanks
Gareth

You should see additional DNS or IP SAN entries show up on the port 6443 listener after you have made a request to that IP or hostname.

You should see additional DNS or IP SAN entries show up on the port 6443 listener after you have made a request to that IP or hostname.

You should see additional DNS or IP SAN entries show up on the port 6443 listener after you have made a request to that IP or hostname.

I’m assuming that’s after updating the —tls-san parameter and restarting the service? When I was testing that earlier that didn’t seem to be working, subsequent requests where reporting the same inital IP addresses?

You should see additional DNS or IP SAN entries show up on the port 6443 listener after you have made a request to that IP or hostname.

I’m assuming that’s after updating the —tls-san parameter and restarting the service? When I was testing that earlier that didn’t seem to be working, subsequent requests where reporting the same inital IP addresses?

Are you getting an error when accessing it at the floating IP address? Have you added that arg to all the nodes that might host the floating IP?

Are you getting an error when accessing it at the floating IP address? Have you added that arg to all the nodes that might host the floating IP?

Running into the same issue with the same setup (cluster with embedded etcd) and adding the load balancer after.
Have added the tls parameter to the service setup of all 3 servers, restarted the service, attempted to use kubectl and got the tls error. Get the error every time I try to access via the load balancer IP.
Will it only trigger if I add a worker to the cluster using the load balancer ip?

Running into the same issue with the same setup (cluster with embedded etcd) and adding the load balancer after.
Have added the tls parameter to the service setup of all 3 servers, restarted the service, attempted to use kubectl and got the tls error. Get the error every time I try to access via the load balancer IP.
Will it only trigger if I add a worker to the cluster using the load balancer ip?

I had the same problem initially with v1.20.4+k3s1, using K3S_CONFIG_FILE which had the tls-san spesified.
When running the installer script after changes, it just said No change detected so skipping service start. So I restarted each k3s instance manually with systemctl restart k3s.
It took some minutes after that when kubectl started to work using the new hostnames without tls error.
Maybe the change detection algorithm in the installer needs a bit of TLC, to check if K3S_CONFIG_FILE has any changes in it?
It could also be, that k3s tracks chages to the config file and the whole restart process was unnecessary...

That is correct. If you are relying on the install script to restart K3s for you, you should be aware that it only detects changes to the systemd unit. If you change the environment or config file, you should manually restart the service.
In general I wouldn't rely on the install script as a general-purpose utility for changing configuration. If that's all you need to do, just edit the systemd unit, environment file, or config file, and then reload/restart the service.

Can anyone explain what needs to be changed and where in order to update the tls-san options? Or maybe link some useful documentation that I can read upon to understand how to configure it?
I just want to add a domain to the tls-san but I don't have a clue how to do it. I can only find half a sentence of context for this functionality in the k3s docs.

I've found the solution here, you just have to renew the dns cache. I could execute this on the master node:
export MY_LB_IP=<IP>
curl -vk --resolve $MY_LB_IP:6443:<IP_ADDRESS>  https://$MY_LB_IP:6443/ping

No changes to the external/client kubeconfig are needed after this!


Is it possible to update the R version of the botometer?

Hello, according to your pages over at https://botometer.iuni.iu.edu/#!/api, there is an R package link: https://github.com/marsha5813/botcheck but is very out of date, so is it possible to have it updated? Last update was 2 years ago, and many things have changed since then. I would really appreciate your help!

No worries Joey Marshall will update it soon, I have been in contact with him on Twitter.


Add GIFs?

I'd really love to see this plugin "in motion" from the README

FYI @Jamalam360 shared a short video of the early version on Discord, I think it should be possible to convert it to GIFs and show them in README.
Or use this https://github.com/arciisine/vscode-chronicler ?

Sure, I'll get some once I've finished the refractors to work with other editors

https://github.com/pest-parser/pest-ide-tools/blob/feat/tower-lsp/README.md


Fix cors tests not resetting instance config

Should fix the flaky tests disabled here: https://github.com/edgedb/edgedb/pull/6850

I went and switched to using start_edgedb_server for the auth test. For the http test, that was going to be a little more annoying, and there doesn't seem to be any major benefit to testing the instance configuration stuff twice. (And start_edgedb_server is pretty slow, too)


named services

Currently this is an example serving configuration:
gateway-solution/another-service.xml:
  url: "/another-service-example"
  httpMethods:
  - "DELETE"
  - "POST"
  - "GET"
  - "PUT"
  properties: {}

The service does not have a name, it is associated with a policy located at gateway-solution/another-service.xml.
In order to enable multiple services to use the same policy name it so that services are named. Update the service configuration to be:
my-service:
  policy: gateway-solution/some-policy.xml:
  url: "/another-service-example"
  httpMethods:
  - "DELETE"
  - "POST"
  - "GET"
  - "PUT"
  properties: {}
folder/my-other-service:
  policy: gateway-solution/some-policy.xml:
  url: "/another-service-example"
  httpMethods:
  - "DELETE"
  - "GET"
  - "PUT"
  properties:
    myProperty:"123"

In the above both services use the same policy XML but have different names and properties.
Acceptance Criteria:

new service configuration does not have to be compatible with the old one
When services are exported using the export plugin their name is the full service path minus the
When services are built using the developer plugin they are put into a folder based on their name

Prepend the project name as the root folder. For example the service from the configuration above with the name folder/my-other-service would be in this location on a gateway if the project name is gateway-solution: Root Folder -> gateway-solution -> folder -> my-other-service

@kazvictor I think is missing something in the second item of the acceptance criteria.


test: fix shellcheck egrep warnings

test:450:54: note: egrep is non-standard and deprecated. Use grep -E instead. [SC2196]

Already picked this up in #8523

@heyitsanthony Right, 👍


Added support for Lyricsmode.com and Google

Added functionality to search lyricsmode.com and google for lyrics of the song currently playing. Made changes in the tests for the current implementation.

Adding Google
I think it doesn't make much sense

Not necessarily, we don't have enough data to know. It should be tested first


Automated cherry pick of #2277

Cherry pick of #2277 on release-5.2.
/cc  @devinbinnie
NONE

The file .circleci/config.yml is in the blocklist for external contributors. Hence, these changes are not tested by the CI pipeline active until the build is re-triggered by a core committer or the PR is merged. Please be careful when reviewing it.
/cc @mattermost/core-security @mattermost/core-build-engineers


Please elaborate on {PolicyName}

[Enter feedback here]
Mentioning {PolicyName} without any example is not very helpful. Could you please update the documentation with valid/read-world example of a PolicyName?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 1c6760bb-c278-da56-a95c-4e82e221f1e8
Version Independent ID: e25cbd2a-b415-214f-7d50-c403992c9361
Content: az policy assignment
Content Source: latest/docs-ref-autogen/policy/assignment.yml
Service: azure-resource-manager
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

ARM

@zaalion PolicyName is an existing policy definition https://docs.microsoft.com/en-us/cli/azure/policy/definition?view=azure-cli-latest#az-policy-definition-create. These documents are specific to the respective commands and their usages and not related to all the related commands.
For information on Azure Policy https://docs.microsoft.com/en-us/azure/governance/policy/assign-policy-portal


Added details about data size in description.

added "in bytes" to further explain the Segment Size property.

Merging.
@thadguidry for the future, please raise JIRA prior to submitting PR (regardless how small/trivial the issue may be)

@olegz sure


what to do to make it scroll horizontally?

Please help

Sorry mate as of now there is no functionality for horizontal scroll, but I can add it to my bucket list to implement

Thanks bud but I got solution for this..
On 10 Dec 2017 12:02 p.m., "Sarabjeet Singh"<EMAIL_ADDRESS>wrote:

Sorry mate as of now there is no functionality for horizontal scroll, but
I can add it to my bucket list to implement
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/savvisingh/DateRangePicker/issues/5#issuecomment-350528342,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AcwHxw-wicUz_QUtwj-0Qc_1r3KFf6dvks5s-3rxgaJpZM4Ok4mt
.

Ohh cool man, can you share it here so others can also use that.

@niranjan1231   Could you tell me if you do that   Thank you very much

Thanks bud but I got solution for this..
…
On 10 Dec 2017 12:02 p.m., "Sarabjeet Singh" @.***> wrote: Sorry mate as of now there is no functionality for horizontal scroll, but I can add it to my bucket list to implement — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#5 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AcwHxw-wicUz_QUtwj-0Qc_1r3KFf6dvks5s-3rxgaJpZM4Ok4mt .

can u give solution for this

Thanks bud but I got solution for this..
…
On 10 Dec 2017 12:02 p.m., "Sarabjeet Singh" @.***> wrote: Sorry mate as of now there is no functionality for horizontal scroll, but I can add it to my bucket list to implement — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#5 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AcwHxw-wicUz_QUtwj-0Qc_1r3KFf6dvks5s-3rxgaJpZM4Ok4mt .

can u tell me the solution ?

what's the solution?

I have used recycler pager view instead of list view.
Thanks:
Niranjan
Software Engineer - Happay
+91-8197940131
On Fri, Feb 8, 2019 at 1:21 PM avcolar<EMAIL_ADDRESS>wrote:

what's the solution?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/savvisingh/DateRangePicker/issues/5#issuecomment-461719136,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AcwHxyANYbK6TLVPkwcLhKZDw6OAj9Awks5vLSyHgaJpZM4Ok4mt
.

--
--
The information contained and transmitted by this email is confidential and
proprietary to VA Tech Ventures Pvt Ltd (Happay) and is included for use
only by the addressee. If you are not the intended recipient, you are
notified that any dissemination or copying of this email or contents
therein is strictly prohibited. If this message is not intended for you,
then you are requested to delete this email immediately and notify the
originator.

extend "CalendarPickerView" with recycler view instead of listview.
and in layout manager change scroll direction to horizontal.

I'm having trouble with the MonthAdapter because it's not a RecyclerView.Adapter. Would you mind sharing your code? Thanks

private class MonthAdpater extends RecyclerView.Adapter {
private final LayoutInflater inflater;
    private MonthAdpater() {
        inflater = LayoutInflater.from(getContext());
    }

    public class MothViewHolder extends ViewHolder {

        MonthView monthView;

        public MothViewHolder(View itemView) {
            super(itemView);
            monthView = (MonthView) itemView;
        }
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View monthView = MonthView.create(parent, inflater, weekdayNameFormat, listener, today, dividerColor,
                dayBackgroundResId, dayTextColorResId, titleTextColor, displayHeader,
                headerTextColor, decorators, locale, dayViewAdapter);
        monthView.setTag(R.id.day_view_adapter_class, dayViewAdapter.getClass());

        return new MothViewHolder(monthView);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MothViewHolder rvh = (MothViewHolder) holder;
        MonthView monthView = rvh.monthView;

        monthView.setDecorators(decorators);

        if (monthsReverseOrder) {
            position = months.size() - position - 1;
        }
        monthView.init(months.get(position), cells.getValueAtIndex(position), displayOnly,
                titleTypeface, dateTypeface, deactivatedDates, selectedCells, selectionMode);

    }

    @Override
    public int getItemCount() {
        return months.size();
    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }

}

In the latest version 1.3.0 I have added this feature to make it scroll horizontally just add
app:tsquare_orientation_horizontal="true" to make it horizontal scroll

app:tsquare_orientation_horizontal = true not working :( @savvisingh


Added .set_fill_by_value() to :class:~ParametricSurface

Changelog / Overview

Added the method .set_fill_by_value() to :class:~ParametricSurface enabling a color gradient to be applied to parametric surfaces, including the ability to define at which points the colors should be centered.

Motivation

The new method .set_fill_by_value() allows for applying a color gradient to parametric surfaces, enhancing readability of surface plots.
Explanation for Changes

Documentation Reference

The changes introduce the new method .set_fill_by_value() which takes in the axes on which the parametric surface resides and a list of colors (e.g. [BLUE, GREEN, YELLOW, ORANGE, RED]).  If the list of colors are input as a tuple of colors and z-values, then each color will be centered around the z-value in the tuple (e.g. [(BLUE, -3), (GREEN, -1), (YELLOW, 0), (ORANGE, 1), (RED, 3)]).
Here is an example:

And the code that generated this example:
from manim import *

class SurfaceColorscaleExample(ThreeDScene):
    def construct(self):
        resolution_fa = 100
        self.set_camera_orientation(phi=75 * DEGREES, theta=-30 * DEGREES)

        axes = ThreeDAxes(
                x_range=(-3, 3, 1),
                y_range=(-3, 3, 1),
                z_range=(-5, 5, 1)
                )

        def param_trig(u, v):
            x = u
            y = v
            z = y**2/2 - x**2/2
            return z

        trig_plane = ParametricSurface(
            lambda x, y: axes.c2p(x, y, param_trig(x, y)),
            resolution=(resolution_fa, resolution_fa),
            v_min=-3,
            v_max=+3,
            u_min=-3,
            u_max=+3,
        )

        trig_plane.set_fill_by_value(axes=axes, colors=[BLUE, GREEN, YELLOW, ORANGE, RED])
        VGroup(axes, trig_plane)
        self.add(axes, trig_plane)

Testing Status

Added a new tests which checks that future changes do not break the application of a color gradient to a parametric surface.
  This enhancement colors each of these mobjects a different color depending on the z-value of it's midpoint.  In order to get a nice color gradient effect, the number of mobjects should be about 10,000, meaning a surface resolution of 100x100.  Such a large amount of mobjects takes time to render, especially when animations are applied to the surface.
There are a number of colorscale libraries available for python, but there are issues with some.  Both matplotlib and plotly have issues where the colors in some of the colorscales are defined in a format which does not work well with manim.  On the other hand, all of the colorscales in colorcet work well with manim.  And of course users can define their own colorscales, like what was done in the above example.  Bottom line, beware if you use other libraries for colorscales.

Checklist

[X] I have read the Contributing Guidelines
[X] I have written a descriptive PR title (see top of PR template for examples)
[X] I have written a changelog entry for the PR or deem it unnecessary
[X] My new functions/classes either have a docstring or are private
[X] My new functions/classes have tests added and (optional) examples in the docs
[X] My new documentation builds, looks correctly formatted, and adds no additional build warnings

Reviewer Checklist

[ ] The PR title is descriptive enough
[ ] The PR is labeled correctly
[ ] The changelog entry is completed if necessary
[ ] Newly added functions/classes either have a docstring or are private
[ ] Newly added functions/classes have tests added and (optional) examples in the docs
[ ] Newly added documentation builds, looks correctly formatted, and adds no additional build warnings

Documentation page

Did you try to see how long the example you've added to the documentation renders? Currently it isn't formatted in neither a code block nor in a manim directive.

First time adding an example to the docstring, just needed to make some minor changes to get it work.  The Documentation Page looks good now.

Sorry it took me so long to get back to you!
In general, I like the example -- however, it currently adds about 30 seconds to the overall build time of the documentation, which is too much:
mobject.three_dimensions.ParametricSurface..................35.771s  => 2 EXAMPLES
                                                             3.524s ParaSurface
                                                            32.247s Fill_by_valueExample

I'd like to keep examples in a 5-10 seconds range at most, do you think the example could be simplified (e.g., by reducing the resolution) to get there?
Otherwise we might have to postpone adding this until we have changed to rendering the documentation with OpenGL.

@behackl I changed the resolution from 84 to 42 and now it is under 10 seconds:
mobject.three_dimensions.ParametricSurface..................11.852s  => 2 EXAMPLES
                                                             3.545s ParaSurface
                                                             8.307s Fill_by_valueExample

I think axes should be optional here since ParametricSurface can be used without them, that's how I use it at least. So it would be nice to only pass colors (list of colors or tuples) to the function and it automatically applies them in a gradient way in the z-axis (or any chosen axis).

I think axes should be optional here since ParametricSurface can be used without them, that's how I use it at least. So it would be nice to only pass colors (list of colors or tuples) to the function and it automatically applies them in a gradient way in the z-axis (or any chosen axis).

Initially I was hoping to implement this without having to pass in axes, but I could not find a way to do that.  All my attempts led me to including axes as a required argument, as that is how z_values are mapped to colors.  Otherwise ParametricSurface is just some object floating in space with no orientation (which way is up? what constitutes a higher or lower value?).

Initially I was hoping to implement this without having to pass in axes, but I could not find a way to do that. All my attempts led me to including axes as a required argument, as that is how z_values are mapped to colors. Otherwise ParametricSurface is just some object floating in space with no orientation (which way is up? what constitutes a higher or lower value?).

Maybe first get all points of the surface and then find the minimum and maximum x, y, or z value, which are the first, second, and third entries in each vector respectively, and progress accordingly?
I don't know if this is guaranteed to work in all situations but it may worth a try.

Maybe first get all points of the surface and then find the minimum and maximum x, y, or z value, which are the first, second, and third entries in each vector respectively, and progress accordingly?
I don't know if this is guaranteed to work in all situations but it may worth a try.

Given that this pull request has been tested extensively and is ready to go, I think it would be best to open an issue on this and go from there.  If you agree then we can move this discussion to there.

Maybe first get all points of the surface and then find the minimum and maximum x, y, or z value, which are the first, second, and third entries in each vector respectively, and progress accordingly?
I don't know if this is guaranteed to work in all situations but it may worth a try.

Given that this pull request has been tested extensively and is ready to go, I think it would be best to open an issue on this and go from there. If you agree then we can move this discussion to there.

Sure, we can merge this for now and add enhancements later.


Add compatibility to DiffEqDevTools.jl

along with a few benchmarks.

Codecov Report

Merging #73 (3c58f0a) into main (842d044) will decrease coverage by 0.17%.
The diff coverage is 85.71%.

@@            Coverage Diff             @@
##             main      #73      +/-   ##
==========================================
- Coverage   88.05%   87.88%   -0.18%
==========================================
  Files          22       23       +1
  Lines         879      916      +37
==========================================
+ Hits          774      805      +31
- Misses        105      111       +6

Impacted Files
Coverage Δ

src/ProbNumDiffEq.jl
72.22% <ø> (ø)

src/devtools.jl
77.77% <77.77%> (ø)

src/integrator_utils.jl
100.00% <100.00%> (ø)

src/perform_step.jl
93.84% <100.00%> (+0.14%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 842d044...3c58f0a. Read the comment docs.