Merit order appears to be disabled

The merit order for the following scenario won't resolve. When checking the 'settings_enable_merit_order'
value the merit order seems to be enabled. What could be wrong?
https://engine.energytransitionmodel.com/api/v3/scenarios/947555/curves/merit_order

I also noted that this error is quite hard to catch as I'd have expected ETEngine to return a 422 including a JSON encoded message, where I now received a 200 with a TEXT encoded message.

@antw do you maybe have time to have a look at this issue?

This is because the end year for the scenario is set to 2019, and 2019 is also the start year for the NL2019 dataset. Currently, ETEngine does not support the two years being the same, and doing so has the undesired effect of turning off the merit order (and all hourly calculations).
In theory, I expect we could support this but I'm not sure how big an effort it would be. In the meantime, I'll add a validation when creating a scenario and have ETEngine return a more appropriate response.

I also noted that this error is quite hard to catch as I'd have expected ETEngine to return a 422 including a JSON encoded message, where I now received a 200 with a TEXT encoded message.

I've fixed this to return a 404 Not Found instead of 200 OK. That seemed like the most appropriate code to me, since the curves are not available if Merit is turned off.

In theory, I expect we could support this but I'm not sure how big an effort it would be. In the meantime, I'll add a validation when creating a scenario and have ETEngine return a more appropriate response.

The aim is to use these scenario's to reference default states. I know that a lot of outputs have a 2019 reference value, but it's not always present or unambiguous, e.g. for reference values for hourly curves or the default input parameters of a scenario that is copied from another scenario. The need is not necessarily in manipulating the 2019 scenario but in fetching the reference states. For now we can bypass this by creating reference scenarios with a different end year than 2019.


How to classify just one class in segnet?

Hey Dusty,
I'd like to get the pixels of cars and then make my own mask for them from another image.   I'm just a hobbyist but do have a couple of questions related to this.

Should I just make it ignore all other classes except car class?  (It seems like the probability would be above some threshold, maybe .5 or something if it matches a car?)
Where would the class list IDs be?
Would it be ok to do the image pixel swap on the cpu using C instead of cuda? (I know very, very little about how cuda works)
For these networks is Tensornet.cpp,  is the output format common to TensorRT?   ( I dont think i need to know anything about it yet but am just curious ).  Eventually I'd like to run pose-trt alongside this one.

Thanks, Daniel
I saw this code in segnet.cpp
`	uint8_t* classMap = mClassMap[0];
for( uint32_t y=0; y < s_h; y++ )
{
	for( uint32_t x=0; x < s_w; x++ )
	{
		float p_max = -100000.0f;
		int   c_max = -1;

		for( int c=0; c < s_c; c++ )
		{
			// skip ignoreID
			if( c == ignoreID )
				continue;

			// check if this class score is higher
			const float p = scores[c * s_w * s_h + y * s_w + x];

			if( c_max < 0 || p > p_max )
			{
				p_max = p;
				c_max = c;
			}
		}

		classMap[y * s_w + x] = c_max;
		//printf("(%u, %u) -> class %i\n", x, y, (uint32_t)c_max);
	}
}

`
It seems to be going through each pixel and checking the probabilities of each class like they talk about in the segnet paper

The output of the soft-max
classifier is a K channel image of probabilities where K is the
number of classes. The predicted segmentation corresponds to the
class with maximum probability at each pixel.

Hi @Daniel-10 , are you using Python or C++?
You can get that class mask from segNet::Mask() function (there is a similar way to access it from Python) and then look for the classID that corresponds to car.
You can find the class ID with segNet::FindClassID()

@dusty-nv,  Either Python or C++ would be ok.  If it's possible I'd like to start with python so I dont have to compile while I'm trying stuff out.
I think I understand what to do from your explanation.  What would be the python calls to access the class mask and classID?
Plus thanks a lot for making these tutorials so accessible and for giving the guidance!  It's very exciting to get these things running!

@dusty-nv,  are these the two python functions to use?
	{ "Mask", (PyCFunction)PySegNet_Mask, METH_VARARGS|METH_KEYWORDS, DOC_MASK},	 	{ "GetClassDesc", (PyCFunction)PySegNet_GetClassDesc, METH_VARARGS, DOC_GET_CLASS_DESC},

I think I'm good to go.  Thanks again for the guidance!

Yep you got it, pass a gray8 image to segNet.Mask() and it will give you the class ID's back.
It is how the --stats option is implemented in the segnet.py example:
https://github.com/dusty-nv/jetson-inference/blob/4e6b7ff37935a9bc64271119f42cd25366ce8c79/python/examples/segnet_utils.py#L72
You can either get the class ID's at the raw resolution, which is grid_width, grid_height = net.GetGridSize()
That will be much smaller than the original resolution of the input image, so the processing overhead is less.
However if you want it upscaled, you can just pass in a larger buffer and it will upscale the classID's for you.

@dusty-nv ,  wow, that was much easier than i expected.  It seems pretty straightforward to get trt_pose in there as well.  I'm glad yall have made these fairly easy to handle.  Thank you for the hobbyist support.  I cant wait to show the kids during their social distant car parade they can make their car disappear by waving their hands around.


parfors copy propagation hanging

Reporting a bug

[x] I am using the latest released version of Numba (most recent is visible in
the change log (https://github.com/numba/numba/blob/master/CHANGE_LOG).
[x] I have included below a minimal working reproducer (if you are unsure how
to write one see http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports).
This:

from numba import njit, prange, objmode

from numpy import *
import numpy as np
import time

@njit(parallel=True)
def run(src, dst, v_num):
    with objmode(start='float64'):
        start = time.time()
    damp = 0.85
    s = 5
    id = zeros((v_num,), dtype=int32)
    e_num = len(src)
    for i in prange(v_num):
        id[i] = i
    degree = zeros((v_num,), dtype=int32)
    iod = zeros((v_num,), dtype=float64)
    for i in prange(e_num):
        degree[src[i]] += 1
    for i in prange(v_num):
        if degree[i] == 0:
            iod[i] = 1
        else:
            iod[i] = 1 / degree[i]
    pr = zeros((v_num,), dtype=float64)
    for i in prange(v_num):
        pr[i] = 1 / v_num * iod[i]
    pr_new = zeros((v_num,), dtype=float64)
    step = 0
    fix = (1 - damp) / v_num
    while step < s or step == 0:
        for v in prange(e_num):
            pr_new[dst[v]] += pr[src[v]]
        pr, pr_new = pr_new, pr
        for v in prange(v_num):
            pr[v] = (pr[v] * damp + fix) * iod[v]
            pr_new[v] = 0
        step += 1

    with objmode():
        print(time.time() - start)

src = dst = np.ones(5, np.int32)
v_num = np.int32(1)

run(src, dst, v_num)

hangs in compilation. SIGINT yields backtrace:
  File "gi197.py", line 48, in <module>
    run(src, dst, v_num)
  File "<path>/numba/core/dispatcher.py", line 353, in _compile_for_args
    return self.compile(tuple(argtypes))
  File "<path>/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock
    return func(*args, **kwargs)
  File "<path>/numba/core/dispatcher.py", line 788, in compile
    cres = self._compiler.compile(args, return_type)
  File "<path>/numba/core/dispatcher.py", line 77, in compile
    status, retval = self._compile_cached(args, return_type)
  File "<path>/numba/core/dispatcher.py", line 91, in _compile_cached
    retval = self._compile_core(args, return_type)
  File "<path>/numba/core/dispatcher.py", line 104, in _compile_core
    cres = compiler.compile_extra(self.targetdescr.typing_context,
  File "<path>/numba/core/compiler.py", line 549, in compile_extra
    return pipeline.compile_extra(func)
  File "<path>/numba/core/compiler.py", line 329, in compile_extra
    return self._compile_bytecode()
  File "<path>/numba/core/compiler.py", line 391, in _compile_bytecode
    return self._compile_core()
  File "<path>/numba/core/compiler.py", line 362, in _compile_core
    pm.run(self.state)
  File "<path>/numba/core/compiler_machinery.py", line 332, in run
    self._runPass(idx, pass_inst, state)
  File "<path>/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock
    return func(*args, **kwargs)
  File "<path>/numba/core/compiler_machinery.py", line 291, in _runPass
    mutated |= check(pss.run_pass, internal_state)
  File "<path>/numba/core/compiler_machinery.py", line 264, in check
    mangled = func(compiler_state)
  File "<path>/numba/core/untyped_passes.py", line 257, in run_pass
    cres = compile_ir(state.typingctx, state.targetctx, main,
  File "<path>/numba/core/compiler.py", line 612, in compile_ir
    return pipeline.compile_ir(func_ir=func_ir, lifted=lifted,
  File "<path>/numba/core/compiler.py", line 339, in compile_ir
    return self._compile_ir()
  File "<path>/numba/core/compiler.py", line 398, in _compile_ir
    return self._compile_core()
  File "<path>/numba/core/compiler.py", line 362, in _compile_core
    pm.run(self.state)
  File "<path>/numba/core/compiler_machinery.py", line 332, in run
    self._runPass(idx, pass_inst, state)
  File "<path>/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock
    return func(*args, **kwargs)
  File "<path>/numba/core/compiler_machinery.py", line 291, in _runPass
    mutated |= check(pss.run_pass, internal_state)
  File "<path>/numba/core/compiler_machinery.py", line 264, in check
    mangled = func(compiler_state)
  File "<path>/numba/core/typed_passes.py", line 279, in run_pass
    parfor_pass.run()
  File "<path>/numba/parfors/parfor.py", line 2573, in run
    simplify(self.func_ir, self.typemap, self.calltypes)
  File "<path>/numba/core/ir_utils.py", line 1418, in simplify
    save_copies = apply_copy_propagate(
  File "<path>/numba/core/ir_utils.py", line 988, in apply_copy_propagate
    f(stmt, var_dict, name_var_table,
  File "<path>/numba/parfors/parfor.py", line 4080, in apply_copies_parfor
    apply_copy_propagate(blocks, in_copies_parfor, name_var_table, typemap,
  File "<path>/numba/core/ir_utils.py", line 993, in apply_copy_propagate
    stmt.value = replace_vars_inner(stmt.value, var_dict)
  File "<path>/numba/core/ir_utils.py", line 325, in replace_vars_inner
    return visit_vars_inner(node, replace_var_callback, vardict)
  File "<path>/numba/core/ir_utils.py", line 408, in visit_vars_inner
    node._kws[arg] = visit_vars_inner(node._kws[arg], callback, cbdata)
  File "<path>/numba/core/ir_utils.py", line 396, in visit_vars_inner
    return callback(node, cbdata)
  File "<path>/numba/core/ir_utils.py", line 306, in replace_var_callback
    var = ir.Var(new_var.scope, new_var.name, new_var.loc)
  File "<path>/numba/core/ir.py", line 979, in __init__
    assert scope is None or isinstance(scope, Scope)

Reported here: https://gitter.im/numba/numba?at=5e7b4cb09ee489692833f64e CC: @amosbird

Thanks!

Removing the while loop works around this issue

CC @DrTodd13 do you think this is a parfors problem? I don't think we've tried nesting a parallel loop inside a while loop.

As of 0.49, this does not reproduce. Suspect SSA fixed the problem, would guess at the issue being related to analysis of pr, pr_new = pr_new, pr.


Added foreignKey method for yii\db\ColumnSchemaBuilder

Q
A

Is bugfix?
no

New feature?
yes

Breaks BC?
no

Tests pass?
yes

Fixed issues
#13016, #8163

since tags are missing. What about unit tests?

Related:
https://github.com/yiisoft/yii2/issues/9657
https://github.com/yiisoft/yii2/issues/14623
I think this should be rewritten to allow define FK for SQLite - FK definition should be injected into CREATE TABLE command.
See https://github.com/yiisoft/yii2/issues/14623#issuecomment-338854045 https://sqlite.org/foreignkeys.html


Add MANIFEST.in

I totally forgot to add this. Without this file, python setup.py sdist upload does not include README.rst and requirements.txt
Please merge this PR and re-push to PyPI (otherwise the installation will fail.)

Thanks a lot. Sorry for my mistake. I also confirmed that I can successfully finish pip install ipymol and pip3 install ipymol. :smile:


How to run with libPcmMsr.dylib in current folder?

Hello! it s not a problem, but a question
need to run it without installing libPcmMsr.dylib to system
now it works:
cd "$(dirname "$0")"
sudo kextload PcmMsrDriver.kext
export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
MSR_IA32_PERF_STATUS=$(./pcm-msr.x 0x198 | grep value | awk '{print $3}')

maybe there is a better way?
Thanks

looks good to me

question answered

doesnot work anymore (since one of the newest commits)
found another option
install_name_tool -change /usr/lib/libPcmMsr.dylib @executable_path/libPcmMsr.dylib pcm-msr.x

Not sure why. Thanks for the workaround. Moving to discussion to make it more visible


Some of display name of config is not correct.

OS Version:

Steps to Reproduce:

Install Azure IoT Hub Toolkit: https://github.com/microsoft/vscode-azure-iot-toolkit
Got to VS Code settings

Actual:

Expected:
D2C and IoT are one word, should not be truncated

Closing in favour of https://github.com/microsoft/vscode/issues/191807


Almost black screen just after downloading audio

Hi, I'm sorry by advance if this is me not using well the application, but : just after started an audio only download the screen become almost full black, except the current song's progress bar. And when it does that, I'm totally unable to go back to the main window. I have to kill everything and launch invidtui again. Please, see the attached screenshots :

Hi, I just tested on another computer and have exactly the same issue.

Noted. This is likely an internal issue, where on closing the download dialog the application switches to the wrong "page".


Rename files in System.CommandLine to remove `

As suggested by @justinvp in dotnet/corefx#8646 to allow nuget symbols to work with this package

Hi @hughbe, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

Looks good. Thanks for the fix!


Cannot deploy controller with a self-signed certificate on EKS using AWS CDK because serving-cert cannot be found

Describe the bug
I can't deploy the controller on EKS via AWS CDK using a self-signed certificate because the manager pod volume mounts cannot find my serving-cert secret. I set up a webhook-server-cert secret before running the Helm deploy, but during the CDK helm deploy itself the manager pods fail to start with this error:
Warning  FailedMount  116s (x12 over 10m)  kubelet            MountVolume.SetUp failed for volume "cert" : secret "githubrunnerseksclusterchartarcba0feba7-serving-cert" not found

I checked the pod's volumes and see that this is from the cert secret mount:
Volumes:
  cert:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  githubrunnerseksclusterchartarcba0feba7-serving-cert
    Optional:    false

The issue is the AWS CDK prepends a prefix onto all services and pods it deploys via Helm, and the name of the manager cert secret is dynamically determined from the name of the manager deployment. Because the deployments have a random hash attached at the end of the prefix (in this case ba0feba7), I can't deploy automate the cert secret creation in my setup for the Helm chart.
I got the install to complete by checking the crashing pod during the deploy, and manually creating the cert secret via kubectl using the name that the mount expects. It would be great if we could get around this in the controller by doing one of the following:

use a hardcoded name for the serving-cert secret, similar to how we set up the controller-manager secret mount
allow us to pass in the name of the secret that the manager pods should use for the cert secret mount via Helm values
allow us to override the volume mounts for the manager pods so that I can hardcode the cert mount to use a secret I created through the CDK before the Helm deploy

Here's the full crashing pod description:
Name:           githubrunnerseksclusterchartarcba0feba7-5db7d46b9f-nwf7f
Namespace:      actions-runner-system
Priority:       0
Node:           ip-10-1-6-67.ec2.internal/<IP_ADDRESS>
Start Time:     Thu, 03 Feb 2022 20:56:48 -0500
Labels:         app.kubernetes.io/instance=githubrunnerseksclusterchartarcba0feba7
                app.kubernetes.io/name=arc
                pod-template-hash=5db7d46b9f
Annotations:    kubernetes.io/psp: eks.privileged
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/githubrunnerseksclusterchartarcba0feba7-5db7d46b9f
Containers:
  manager:
    Container ID:
    Image:         summerwind/actions-runner-controller:v0.20.3
    Image ID:
    Port:          9443/TCP
    Host Port:     0/TCP
    Command:
      /manager
    Args:
      --metrics-addr=<IP_ADDRESS>:8080
      --enable-leader-election
      --sync-period=10m
      --docker-image=docker:dind
      --runner-image=summerwind/actions-runner:latest
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:
      GITHUB_TOKEN:                <set to the key 'github_token' in secret 'controller-manager'>                Optional: true
      GITHUB_APP_ID:               <set to the key 'github_app_id' in secret 'controller-manager'>               Optional: true
      GITHUB_APP_INSTALLATION_ID:  <set to the key 'github_app_installation_id' in secret 'controller-manager'>  Optional: true
      GITHUB_APP_PRIVATE_KEY:      /etc/actions-runner-controller/github_app_private_key
    Mounts:
      /etc/actions-runner-controller from secret (ro)
      /tmp from tmp (rw)
      /tmp/k8s-webhook-server/serving-certs from cert (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hgmdb (ro)
  kube-rbac-proxy:
    Container ID:
    Image:         quay.io/brancz/kube-rbac-proxy:v0.10.0
    Image ID:
    Port:          8443/TCP
    Host Port:     0/TCP
    Args:
      --secure-listen-address=<IP_ADDRESS>:8443
      --upstream=http://<IP_ADDRESS>:8080/
      --logtostderr=true
      --v=10
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hgmdb (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  secret:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  controller-manager
    Optional:    false
  cert:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  githubrunnerseksclusterchartarcba0feba7-serving-cert
    Optional:    false
  tmp:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  kube-api-access-hgmdb:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason       Age                  From               Message
  ----     ------       ----                 ----               -------
  Normal   Scheduled    10m                  default-scheduler  Successfully assigned actions-runner-system/githubrunnerseksclusterchartarcba0feba7-5db7d46b9f-nwf7f to ip-10-1-6-67.ec2.internal
  Warning  FailedMount  8m7s                 kubelet            Unable to attach or mount volumes: unmounted volumes=[cert], unattached volumes=[kube-api-access-hgmdb secret tmp cert]: timed out waiting for the condition
  Warning  FailedMount  5m51s                kubelet            Unable to attach or mount volumes: unmounted volumes=[cert], unattached volumes=[cert kube-api-access-hgmdb secret tmp]: timed out waiting for the condition
  Warning  FailedMount  116s (x12 over 10m)  kubelet            MountVolume.SetUp failed for volume "cert" : secret "githubrunnerseksclusterchartarcba0feba7-serving-cert" not found
  Warning  FailedMount  78s (x2 over 3m34s)  kubelet            Unable to attach or mount volumes: unmounted volumes=[cert], unattached volumes=[secret tmp cert kube-api-access-hgmdb]: timed out waiting for the condition

Here's my AWS CDK helm chart setup - its in Typescript but you can see the Helm values under the values key in the addHelmChart properties hash:
const runnerControllerChart = this.cluster.addHelmChart('a-r-c', {
    chart: 'actions-runner-controller',
    repository: 'https://actions-runner-controller.github.io/actions-runner-controller',
    version: '0.15.1',
    namespace: ACTION_RUNNER_SYSTEM_NAMESPACE,
    createNamespace: false,
    wait: true,
    timeout: cdk.Duration.minutes(10),
    values: {
        addmissionWebhooks: {
            caBundle,
        },
        certManagerEnabled: false,
        nameOverride: 'arc',
        githubWebhookServer: {
            enabled: true,
            logLevel: 'info',
            ingress: {
                enabled: true,
                annotations: {
                    'alb.ingress.kubernetes.io/load-balancer-name': 'github-runners-lb',
                    'alb.ingress.kubernetes.io/listen-ports': '[{"HTTP": 80}, {"HTTPS": 443}]',
                    'alb.ingress.kubernetes.io/ssl-redirect': '443',
                    'alb.ingress.kubernetes.io/scheme': 'internet-facing',
                    'alb.ingress.kubernetes.io/backend-protocol': 'HTTP',
                    'alb.ingress.kubernetes.io/target-type': 'ip',
                },
                hosts: [{
                    host: 'my-github-runners.com',
                    paths: [{
                        path: '/actions',
                    }],
                }],
            },
            nameOverride: 'gws',
            service: {
                type: 'NodePort',
            },
            serviceAccount: {
                name: 'action-runner-system-github-webhook-server',
            },
        },
        image: {
            actionsRunnerImagePullSecrets: [IMAGE_PULL_SECRET_NAME],
        },
        imagePullSecrets: [{
            name: IMAGE_PULL_SECRET_NAME,
        }],
        podDisruptionBudget: {
            enabled: true,
            minAvailable: 1,
        },
        serviceAccount: {
            name: 'actions-runner-controller',
        },
    },
});

Checks

[n/a] My actions-runner-controller version (v0.x.y) does support the feature
[n/a] I'm using an unreleased version of the controller I built from HEAD of the default branch

To Reproduce
Steps to reproduce the behavior:

Set up a self-signed cert named webhook-server-cert as outlined here
Try to deploy the Helm chart via AWS CDK on AWS EKS
Use kubectl get pods -n actions-runner-system during the deploy to see the manager pods failing to start up
Use kubectl describe pod <crashing-manager-pod-name> -n actions-runner-system to see the mount error
TO RESOLVE: create a TLS secret that is named after what the crashing pod mount expects, using the secret data from webhook-server-cert that you set up in step 1.

Expected behavior
To be able to deploy the controller with a self-signed cert using the AWS CDK on EKS.
Screenshots
Environment (please complete the following information):

Controller Version 0.20.3
Deployment Method Helm via AWS CDK
Helm Chart Version 0.15.1

And actually I have now run into this problem where the self-signed certificate itself is invalid because it does not support the webhook service domain name with the AWS EKS CDK prefix attached, githubrunnerseksclusterchartarcba0feba7-webhook.actions-runner-system.svc:
Error from server (InternalError): error when creating "lib/github-runners/iris-fargate-runner.yaml": Internal error occurred: failed calling webhook "mutate.runnerdeployment.actions.summerwind.dev": Post "https://githubrunnerseksclusterchartarcba0feba7-webhook.actions-runner-system.svc:443/mutate-actions-summerwind-dev-v1alpha1-runnerdeployment?timeout=10s": x509: certificate is valid for webhook-service.actions-runner-system.svc, webhook-service.actions-runner-system.svc.cluster.local, not githubrunnerseksclusterchartarcba0feba7-webhook.actions-runner-system.svc
``

Not sure if this is something that can be worked around at this point with the EKS namespace prefixing. It seems impossible to deploy using the AWS CDK with a self-signed cert. I'll leave this open in case there's something folks can gather/figure out that I'm missing but I'll be trying out a cert manager setup instead.

Gonna closet this ticket, the issue is with the AWS CDK and how it ships EKS helm resources with added name prefixes (which messes with the pod DNS). Issue opened with the containers-roadmap repo here: https://github.com/aws/containers-roadmap/issues/1644


feat(rhineng-5519): empty states for workloads details

https://issues.redhat.com/browse/RHINENG-5519
https://www.sketch.com/s/46f6d8e3-a4d0-4249-9d57-e6a79b518a6d/a/9lZVpvn
https://www.sketch.com/s/46f6d8e3-a4d0-4249-9d57-e6a79b518a6d/a/P1Wm4yQ

Codecov Report
Attention: 88 lines in your changes are missing coverage. Please review.

Comparison is base (8a8db73) 6.57% compared to head (8abc233) 7.27%.
Report is 4 commits behind head on master.

Files
Patch %
Lines

src/Components/WorkloadRules/WorkloadRules.js
0.00%
58 Missing :warning:

src/Components/Common/Tables.js
7.69%
12 Missing :warning:

...ts/ExpandedRulesDetails.js/ExpandedRulesDetails.js
0.00%
6 Missing :warning:

src/Utilities/Workloads.js
84.37%
5 Missing :warning:

src/Components/MessageState/EmptyStates.js
33.33%
4 Missing :warning:

src/Services/Filters.js
33.33%
2 Missing :warning:

...omponents/WorkloadsListTable/WorkloadsListTable.js
0.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff            @@
##           master    #656      +/-   ##
=========================================
+ Coverage    6.57%   7.27%   +0.70%
=========================================
  Files          64      65       +1
  Lines        3196    3300     +104
  Branches      700     739      +39
=========================================
+ Hits          210     240      +30
- Misses       2986    3060      +74

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:tada: This PR is included in version 1.34.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


WIP: Print usage to stderr

Related to https://github.com/oamg/leapp/issues/474.

Can one of the admins verify this patch?

This should cover all the cases where usage is printed.


No progress after rbenv init

Hey all,
I am running into an issue where after running rbenv init, it barks back:
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

I have that line in .bash_profile
and also that line in .profile
I used homebrew to run the installation and Im OSX 10.11.5.
Not really sure what I did wrong but any help would be greatly appreciated :D

What did you expect instead when you ran rbenv init manually?

Not really sure.  I am a complete noob when it comes to this type of stuff.  I even had one of web developers at this internship im working at to look at it and he wasn't sure either. I am assuming once i put that:
eval "$(rbenv int -)"
Into my ~/.bash_profile it would see it and stop barking at me to append it into the file when it was already appended to it AND ~/.profile.

Just to clarify.
I "think" I am finished with a working installation.  I went through all the way through:
gem install bundler
And it correctly installed.
I apologize if I wasted your time.
But it would be nice for that reply to go away if you had already appended the line:
eval "$(rbenv init -)"
To your file.  If you are new like me it just confuses you into oblivion.
Thanks so much for the help :)

But it would be nice for that reply to go away if you had already appended the line:

That's a good idea for me to consider. For now, rbenv init simply gives you instructions what to do to configure rbenv. It doesn't detect whether you've already done it, though. So if everything works for you, don't worry about its output 😉 I just hope you're able to switch Ruby versions and all.
Let me know if you need more help setting up Ruby.

agreed, I was stuck on this same thing, perhaps think about removing that message if rbenv has already been configured in bash :)

The output is very confusing

I just stumbled on this switching to rbenv from RVM after a long time.


Change documentation to use crystal run.

Hi, guys o/
I'd like to change the main documentation to show only usage of crystal run file1_test.cr file2_test.cr, because calling only crystal file1_test.cr file2_test.cr seems do run only the first file.
Example:
%  git clone https://gist.github.com/ccb4fd84ffd7e77e4f06f578ce192971.git
Cloning into 'ccb4fd84ffd7e77e4f06f578ce192971'...
remote: Counting objects: 25, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 25 (delta 5), reused 25 (delta 5), pack-reused 0
Unpacking objects: 100% (25/25), done.
%  cd ccb4fd84ffd7e77e4f06f578ce192971
%  crystal deps install
Using compiled compiler at .build/crystal
Fetching https://github.com/ysbaddaden/minitest.cr.git
Installing minitest (0.3.5)
%  crystal test1_test.cr test2_test.cr  # Only run the first file
Using compiled compiler at .build/crystal
.

Finished in 00:00:00.0015572,<PHONE_NUMBER>8738769 runs/s

1 tests, 0 failures, 0 errors, 0 skips
%  crystal test1_test.cr && crystal test2_test.cr
Using compiled compiler at .build/crystal
.

Finished in 00:00:00.0015097,<PHONE_NUMBER>5131483 runs/s

1 tests, 0 failures, 0 errors, 0 skips
Using compiled compiler at .build/crystal
.

Finished in 00:00:00.0012568,<PHONE_NUMBER>8548695 runs/s

1 tests, 0 failures, 0 errors, 0 skips
%  crystal run test1_test.cr test2_test.cr # This way all test run
Using compiled compiler at .build/crystal
..

Finished in 00:00:00.0016399,<PHONE_NUMBER>7805361 runs/s

2 tests, 0 failures, 0 errors, 0 skips
%

And, of course, there is the same issue while filtering:
%  crystal test1_test.cr test2_test.cr -- -n /test_assert_false/
Using compiled compiler at .build/crystal

Finished in 00:00:00.0014618,<PHONE_NUMBER>4863861 runs/s

0 tests, 0 failures, 0 errors, 0 skips
%  crystal run test1_test.cr test2_test.cr -- -n /test_assert_false/
Using compiled compiler at .build/crystal
.

Finished in 00:00:00.0014448,<PHONE_NUMBER>4429676 runs/s

1 tests, 0 failures, 0 errors, 0 skips

:)

Thank you!


Softmax Function

A Softmax function is required which is usually used in machine learning algorithms but can be used as a general function as well.

I would like to contribute to this myself.


[examples/conditional_generation/peft_prefix_tuning_seq2seq.ipynb] need to fix the code

When I run the sample code, there is an error.

I have the same issue, on latest transformers installed from github.

transformers version - 0.47.0.dev0
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 693, in forward
self_attention_outputs = self.layer[0](
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 600, in forward
attention_output = self.SelfAttention(
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 550, in forward
position_bias = position_bias + mask  # (batch_size, n_heads, seq_length, key_length)
RuntimeError: The size of tensor a (128) must match the size of tensor b (148) at non-singleton dimension 3

Interesting, i can run the same code and dataset on Loraconfig fine but prefix tuning is giving this error

trainer.train()
File "/usr/local/lib/python3.8/dist-packages/transformers/trainer.py", line 1631, in train
return inner_training_loop(
tr_loss_step = self.training_step(model, inputs)  File "/usr/local/lib/python3.8/dist-packages/transformers/trainer.py", line 1898, in _inner_training_loop
File "/usr/local/lib/python3.8/dist-packages/transformers/trainer.py", line 2640, in training_step
tr_loss_step = self.training_step(model, inputs)
File "/usr/local/lib/python3.8/dist-packages/transformers/trainer.py", line 2640, in training_step
loss = self.compute_loss(model, inputs)
File "/usr/local/lib/python3.8/dist-packages/transformers/trainer.py", line 2672, in compute_loss
loss = self.compute_loss(model, inputs)
File "/usr/local/lib/python3.8/dist-packages/transformers/trainer.py", line 2672, in compute_loss
outputs = model(**inputs)
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1194, in _call_impl
return forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/deepspeed/utils/nvtx.py", line 11, in wrapped_fn
ret_val = func(*args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/deepspeed/runtime/engine.py", line 1832, in forward
outputs = model(**inputs)
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1194, in _call_impl
return forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/deepspeed/utils/nvtx.py", line 11, in wrapped_fn
loss = self.module(*inputs, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
ret_val = func(*args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/deepspeed/runtime/engine.py", line 1832, in forward
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/peft/peft_model.py", line 676, in forward
return self.base_model(
loss = self.module(*inputs, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/peft/peft_model.py", line 676, in forward
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 1704, in forward
return self.base_model(
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
decoder_outputs = self.decoder(
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 1704, in forward
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 1061, in forward
decoder_outputs = self.decoder(
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
layer_outputs = checkpoint(
File "/usr/local/lib/python3.8/dist-packages/torch/utils/checkpoint.py", line 249, in checkpoint
return CheckpointFunction.apply(function, preserve, *args)
File "/usr/local/lib/python3.8/dist-packages/torch/utils/checkpoint.py", line 107, in forward
outputs = run_function(*args)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 1057, in custom_forward
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 1061, in forward
return tuple(module(*inputs, use_cache, output_attentions))
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
layer_outputs = checkpoint(
File "/usr/local/lib/python3.8/dist-packages/torch/utils/checkpoint.py", line 249, in checkpoint
return CheckpointFunction.apply(function, preserve, *args)
File "/usr/local/lib/python3.8/dist-packages/torch/utils/checkpoint.py", line 107, in forward
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 693, in forward
outputs = run_function(*args)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 1057, in custom_forward
self_attention_outputs = self.layer[0](
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
return tuple(module(*inputs, use_cache, output_attentions))
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 600, in forward
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 693, in forward
attention_output = self.SelfAttention(
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
self_attention_outputs = self.layer[0](
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 550, in forward
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 600, in forward
position_bias = position_bias + mask  # (batch_size, n_heads, seq_length, key_length)
RuntimeError: The size of tensor a (128) must match the size of tensor b (148) at non-singleton dimension 3
attention_output = self.SelfAttention(
File "/usr/local/lib/python3.8/dist-packages/torch/nn/modules/module.py", line 1212, in _call_impl
result = forward_call(*input, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/transformers/models/t5/modeling_t5.py", line 550, in forward
position_bias = position_bias + mask  # (batch_size, n_heads, seq_length, key_length)
RuntimeError: The size of tensor a (128) must match the size of tensor b (148) at non-singleton dimension 3
0%|                                                                                | 0/210 [00:03<?, ?it/s]
[2023-03-09 12:26:25,009] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63353
[2023-03-09 12:26:25,015] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63354
[2023-03-09 12:26:25,797] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63355
[2023-03-09 12:26:25,801] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63356
[2023-03-09 12:26:25,805] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63357
[2023-03-09 12:26:25,809] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63361
[2023-03-09 12:26:25,813] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63362
[2023-03-09 12:26:25,817] [INFO] [launch.py:318:sigkill_handler] Killing subprocess 63363

Found the issue, turning gradient_checkpointing off and use_cache while loading the model solves this issue

But cant fit flan-t5-xl with gradient_checkpointing off ..

Errors in inference now

No, at that time the code was very buggy, setting some random thing sometimes worked and sometimes didnt after library upgrade.. i havent used 8bit for a while now.

i have same problem, how to solv  it.


Permalinks

From time to time we restructure the manual in a way that breaks links coming in from outside sources. Our own sites that link to the manual are of particular concern:

threefold.io
dashboard.grid.tf (including playground)
...?

Requiring updates to these other sites whenever the manual changes is a rather fragile arrangement. While we check links internal to the manual on every PR, checking links from external sites and requiring manual maintainers to be responsible for seeing that they are updated is asking too much, in my opinion.
Redirects
mdbook supports a redirect table that can be used to improve this situation. However, simply adding a redirect each time a link changes is not a manageable or sustainable solution.
Permalinks
Instead, I propose that we can add a small set of permalinks to the manual. These would cover the needs we have for ThreeFold sites that link to the manual and be guaranteed to always redirect to a valid and relevant manual link.
Here are a few possible examples:
manual.grid.tf/buy_tft
manual.grid.tf/deploy_getstarted
manual.grid.tf/farming_getstarted

Each would be setup with a single redirect to an appropriate page. If the target page is ever moved, all that's needed is to update the redirect accordingly.
Reference page
The final piece would be a reference page within the manual that embeds all current permalinks (maybe under the contribution section). This serves two purposes:

Provide a reference for anyone wanting to use these permalinks on other sites
Ensure that permalinks are checked by the link checker workflow. Thus manual contributors will be alerted if their changes break a permalink and can likewise update the appropriate redirect

This is a very good idea but since we are soon moving the manual to the gitea git.ourworld.tf which is using hero mdbook, we won't be able to have permalinks easily with how hero mdbook works. Thus closing for now but we keep in mind to find a way to use permalinks with hero mdbook.
Thanks @scottyeager


Subscriptions may get invoked before router is created

Model subscriptions may get invoked by Choo at a stage where Choo hasn't yet created its router, as a result of calling _store.start. This can lead to havoc in that subscriptions may trigger rendering, which again depends on the internal router reference.  When the internal router is null in this case, a bug occurs.
Is this down to a bug in Choo, i.e. that subscriptions might get invoked before the router is instantiated? Seems that way to me, but I can't tell for sure.

Yeah, looks like a regression - we should enforce subscriptions only get
loaded on the next tick. This can be done by initializing barracks without
subs enabled (like in
https://github.com/yoshuawuyts/choo/blob/master/index.js#L47) and then
turning them on later
On Wed, Mar 1, 2017 at 5:28 PM Arve Knudsen<EMAIL_ADDRESS>wrote:

Model subscriptions may get invoked by Choo at a stage where Choo hasn't
yet created its router, as a result of calling _store.start
https://github.com/yoshuawuyts/choo/blob/master/index.js#L65. This can
lead to havoc in that subscriptions may trigger rendering, which again
depends on the internal router reference. When the internal router is null
in this case, a bug occurs.
Is this down to a bug in Choo, i.e. that subscriptions might get invoked
before the router is instantiated? Seems that way to me, but I can't tell
for sure.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/yoshuawuyts/choo/issues/420, or mute the thread
https://github.com/notifications/unsubscribe-auth/ACWlekGcXHTCESCUJPsKG4JbrwV5g7kQks5rhZykgaJpZM4MP4b5
.

Thanks @yoshuawuyts. Should I try to come up with a PR for this issue?

In choo v5 there's the DOMContentLoaded event - I think that should mitigate this.

Closing because choo@5 will introduce a new API. See #425 for the merged PR. Thanks!


[BUG] Accepting more than 256 sessions on single instance of ServiceBusSessionReceiverAsyncClient breaks connectivity but does not throw an error

Describe the bug
When using a single instance of ServiceBusSessionReceiverAsyncClient and calling acceptSession for >= 257 sessions, all previously registered sessions with the same ServiceBusSessionReceiverAsyncClient will stop receiving any messages from any of the sessions.
We are able to work around the issue by using multiple instances of ServiceBusSessionReceiverAsyncClient but the behavior of the SDK is not very helpful.
In comparison, the .NET SDK's limit of what a single Instance of ServiceBusClient can handle is much higher (5000 Subscriptions) and it throws an exception when the limit is exceeded.
Exception or Stack Trace
No exception is thrown, it's possible to call acceptSession even for > 10000 sessions without any error.
To Reproduce
See below Code-Snipped. It is based on https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/ReceiveNamedSessionAsyncSample.java
Provide your connection string and the Name of your Queue in the respective constants.
The queue must have sessions enabled.
None of the subscriptions will receive any messages from any of the sessions.
Changing SessionCount to 256 establishes connectivity for all of the sessions.
Code Snippet
package com.azure.messaging.servicebus;

import com.azure.messaging.servicebus.models.ServiceBusReceiveMode;
import org.junit.jupiter.api.Test;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.ArrayList;
import java.util.Scanner;

public class ReceiveNamedSessionAsyncSample {
    static String connectionString = "<PROVIDE__CONNECTION_STRING>";
    static String queueName = "<PROVIDE_QUEUE_NAME_OF_SESSION_ENABLED_QUEUE>";

    // 256 works, 257 will break the receiver
    final static Integer SessionCount = 257;

   public static void main(String[] args) throws InterruptedException {
        ReceiveNamedSessionAsyncSample sample = new ReceiveNamedSessionAsyncSample();

        // Create a receiver.
        ServiceBusSessionReceiverAsyncClient sessionReceiver = new ServiceBusClientBuilder()
            .connectionString(connectionString)
            .sessionReceiver()
            .receiveMode(ServiceBusReceiveMode.PEEK_LOCK)
            .queueName(queueName)
            .buildAsyncClient();

        ArrayList<Disposable> subscriptions = new ArrayList<Disposable>();

        for(Integer i=0; i<SessionCount; i++) {
            String sessionId = i.toString();
            System.out.println("Receiving from Session " + sessionId);

            Disposable sub = sample.run(sessionReceiver, sessionId);
            subscriptions.add(sub);
        }

        System.out.println("All session receivers active. Press any key to exit.");

        Scanner in = new Scanner(System.in);

        String s = in.nextLine();

        System.out.println("Disposing subscriptions ...");
        for(var sub: subscriptions) {
            sub.dispose();
        }

        System.out.println("Closing receiver ...");
        sessionReceiver.close();

        System.out.println("Bye.");
    }

    @Test
    public Disposable run(ServiceBusSessionReceiverAsyncClient sessionReceiver, String sessionId) throws InterruptedException {

        try {
            Mono<ServiceBusReceiverAsyncClient> receiverMono = sessionReceiver.acceptSession(sessionId);

            System.out.println("-- Session " + sessionId + " accepted.");

            Disposable subscription = Flux.usingWhen(receiverMono,
                    receiver -> receiver.receiveMessages(),
                    receiver -> Mono.fromRunnable(() -> receiver.close()))
                .subscribe(message -> {
                    System.out.printf("Session: %s. Sequence #: %s. Contents: %s%n", message.getSessionId(),
                        message.getSequenceNumber(), message.getBody());

                }, error -> {
                    System.err.println("Error occurred: " + error);
                });

            return subscription;
        } catch(Exception ex) {
            System.err.println("Error accepting session " + sessionId + ": " + ex );
            return null;
        }
    }
}

Expected behavior
When there is a limit of 256 subscriptions i would expect an exception to be thrown.
The .NET SDK allows for 5000 subscriptions via a single ServiceBusClient. I would expect both of the SDKs to have the same limits.
Screenshots
Setup (please complete the following information):

OS: Windows
IDE: IntelliJ
Library/Libraries: [azure-messaging-servicebus:7.13.0-beta.1]
Java version: [OpenJdk-18]
App Server/Environment: -
Frameworks: -

Additional context
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Bug Description Added
[x] Repro Steps Added
[x] Setup information Added

@liukun-msft could you please take a look?

@marxxxx Thank you for contacting us! I'll check it and get back to you soon.

I can succesfully repro the issue and see lots of The session lock has expired on the MessageSession errors. I suspect we may limit the buffer that holds the session locks. I may need some time to find the root cause. I'll keep you updates for any progress.

By digging into the logs, I found that the reason is that the service side has session number limitation. When a client accepts more than 255 sessions, it will receive an amqp:resource-limit-exceeded error from the service side, and causes the client to close all sessions and stop receiving messages.
[reactor-executor-1] INFO  com.azure.core.amqp.implementation.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose","connectionId":"MF_5a5d03_1670384269853","errorCondition":"amqp:resource-limit-exceeded","errorDescription":"Cannot allocate more handles to the current session or connection. The maximum number of handles allowed is 255. Please free up resources and try again.","sessionName":"sessionqueue"}
[reactor-executor-1] INFO  com.azure.core.amqp.implementation.handler.SessionHandler - {"az.sdk.message":"onSessionRemoteClose closing a local session.","connectionId":"MF_5a5d03_1670384269853","errorCondition":"amqp:resource-limit-exceeded","errorDescription":"Cannot allocate more handles to the current session or connection. The maximum number of handles allowed is 255. Please free up resources and try again.","sessionName":"sessionqueue"}
…
[reactor-executor-1] ERROR reactor.core.publisher.Operators - Operator called default onErrorDropped
reactor.core.Exceptions$ErrorCallbackNotImplemented: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_4a8002_1670395912049], entityName[sessionqueue] condition[Error{condition=amqp:resource-limit-exceeded, description='Cannot allocate more handles to the current session or connection. The maximum number of handles allowed is 255. Please free up resources and try again.', info=null}], errorContext[NAMESPACE: servicebusliuku.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: sessionqueue]
Caused by: com.azure.core.amqp.exception.AmqpException: onSessionRemoteClose connectionId[MF_4a8002_1670395912049], entityName[sessionqueue] condition[Error{condition=amqp:resource-limit-exceeded, description='Cannot allocate more handles to the current session or connection. The maximum number of handles allowed is 255. Please free up resources and try again.', info=null}], errorContext[NAMESPACE: servicebusliuku.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: sessionqueue]
	at com.azure.core.amqp.implementation.ExceptionUtil.toException(ExceptionUtil.java:85)
	at com.azure.core.amqp.implementation.handler.SessionHandler.onSessionRemoteClose(SessionHandler.java:136)
	at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:152)
	at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108)
	at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324)
	at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291)
	at com.azure.core.amqp.implementation.ReactorExecutor.run(ReactorExecutor.java:91)
	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

.NET should also be limited to 255 sessions, can you provide the corresponding .NET code snippet? I can double check that.

We are able to work around the issue by using multiple instances of ServiceBusSessionReceiverAsyncClient but the behavior of the SDK is not very helpful.

Due to the limitation of the service side, if you want to receive more sessions, you need to create a new client.
ArrayList<ServiceBusSessionReceiverAsyncClient> receivers = new ArrayList<>();
        ServiceBusSessionReceiverAsyncClient sessionReceiver = null;
        for (int i = 0; i < SessionCount; i++) {
            if (i % 255 == 0) {
                sessionReceiver = new ServiceBusClientBuilder()
                        .connectionString(Credentials.serviceBusConnectionString)
                        .sessionReceiver()
                        .receiveMode(ServiceBusReceiveMode.PEEK_LOCK)
                        .queueName(sessionQueue)
                        .buildAsyncClient();
                receivers.add(sessionReceiver);
            }

            String sessionId = String.valueOf(i);
            System.out.println("Receiving from Session " + sessionId);

            Disposable sub = sample.run(sessionReceiver, sessionId);
            subscriptions.add(sub);
        }

I guess you may use the same ServiceBusClientBuilder to create new client, which uderlying use the shared connection. Because the limitation is 255 sessions for one connection, if we use a shared connection, the error still exists.
Enhancement
For SDK team, since the our logs contains a lot of close procedures that hide the real errors, we will going to tune the log afterwards, which is tracked by this issue: #20836. We will also review the error handling logic when this particular error occurs.
/cc @Azure/azsdk-sb-java

.NET should also be limited to 255 sessions, can you provide the corresponding .NET code snippet? I can double check that.

Sorry for the delay. I just verified that the current .NET Core SDK does not show this behavior.
You can use this sample code to replicate it:

using Azure.Messaging.ServiceBus;

const string ConnectionString = "<PROVIDE_YOUR_CONNECTION_STRING>";
const string QueueName = "<PROVIDE_YOUR_QUEUE_NAME>";

const int MaxSessions = 300; // above 255, works!

var client = new ServiceBusClient(ConnectionString);

for (int i = 0; i < MaxSessions; i++)
{
    try
    {
        var sessionId = i.ToString();

        _ = Task.Run(async () => await ReceiveFromSessionAsync(sessionId, client));
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Console.WriteLine("Established connections. Press any key to exit.");
Console.ReadLine();

client.DisposeAsync();

Console.WriteLine("Bye.");

static async Task ReceiveFromSessionAsync(string sessionId, ServiceBusClient client)
{
    try
    {
        var sessionReceiver = await client.AcceptSessionAsync(QueueName, sessionId, new ServiceBusSessionReceiverOptions() { ReceiveMode = ServiceBusReceiveMode.ReceiveAndDelete });
        Console.WriteLine($"Session {sessionId} accepted.");

        await foreach (var item in sessionReceiver.ReceiveMessagesAsync())
        {
            var message = item.Body.ToString();

            Console.WriteLine($"Received message from session {sessionId}: {message}");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Failed to receive messages from session {sessionId}: {ex}");
    }
}

You can tell us more about why this work around is not helpful for your scenarios.

We can currently live with this workaround but i'm a bit doubleful about the behavior, the SDK shows. When we don't receive any exceptions in our code when this limit is hit and all the existing subscriptions just stop working from this point, the root causes are very hard to track and put us at risk for service disruptions.
Also when we hard-code this limit in our application and you decide to change it at a later stage, chances are high that this adjustment will not be done in our application and either we face errors hard to track (if you decide to lower the limit) or make sub-optimal use of resources (if you raise the limit and a connection could hold more than 255 connections but we still have this limitation applied).

Thanks! I will compare the differences with the .NET code and see if we can increase the limit.

Hi @marxxxx,
The behavior is different because the implementation of acceptSession() is different in Java and .NET
In Java SDK, it uses a shared AQMP session to communicate with the same entity (i.e. queue or topic). When we call acceptSession(), it creates different AMQP links to receive messages, but all the links are attached to the same AMQP Session. In other words, messages with different session id are delivered on different AMQP links, but these AMQP links are attached to the same AMQP Session. Because AMQP Sessions can have maximum 255 AMQP links, we will receive the error amqp:resource-limit-exceeded when we accept more than 255 sessions.
In NET SDK, when we call acceptSession(), it will create both a new AMQP session and a new AMQP link. Thus, messages with different session id will be delivered on different AMQP sessions and links. In this case, the limitation is 5000, because one AMQP connection can have maximum 5000 AMQP links.
When we call acceptSession(), it makes sense to create a new AMQP session for receiving message with same session id. I will discuss this in our team, but based on the current implementation and code structure, it may need some time to make changes.


Fix typo in help text for SDRAM command-line argument

Just a quick PR to clean up the accidental duplication of an argument's help text.

Thanks!


[curl] Update version to 8.1.2

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[x] The "supports" clause reflects platforms that may be fixed by this new version
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

@dg0yt, Thanks for your PR, when I tested the feature by command ./vcpkg install curl[*] --allow-unsupported, I got this error:
[1/2] "C:/Program Files/CMake/bin/cmake.exe" -E chdir "../../x86-windows-dbg" "C:/Program Files/CMake/bin/cmake.exe" "F:/Feature-test/curl/vcpkg/buildtrees/curl/src/curl-8_1_2-48a3152245.clean" "-G" "Ninja" "-DCMAKE_BUILD_TYPE=Debug" "-DCMAKE_INSTALL_PREFIX=F:/Feature-test/curl/vcpkg/packages/curl_x86-windows/debug" "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" "-DCMAKE_PROJECT_INCLUDE=F:/Feature-test/curl/vcpkg/ports/curl/cmake-project-include.cmake" "-DUSE_NGHTTP2=ON" "-DCURL_USE_WOLFSSL=ON" "-DCURL_USE_OPENSSL=ON" "-DCURL_USE_MBEDTLS=ON" "-DCURL_USE_LIBSSH2=ON" "-DBUILD_CURL_EXE=ON" "-DENABLE_ARES=ON" "-DCURL_WINDOWS_SSPI=ON" "-DCURL_BROTLI=ON" "-DCURL_USE_SCHANNEL=ON" "-DCURL_USE_SECTRANSP=ON" "-DUSE_LIBIDN2=ON" "-DUSE_WIN32_IDN=ON" "-DUSE_WIN32_LDAP=ON" "-DENABLE_WEBSOCKETS=ON" "-DHTTP_ONLY=OFF" "-DCURL_DISABLE_LDAP=OFF" "-DPKG_CONFIG_EXECUTABLE=F:/Feature-test/curl/vcpkg/downloads/tools/msys2/5b9374e6ec2c4e17/mingw32/bin/pkg-config.exe" "-DCURL_CA_PATH=none" "-DCURL_CA_BUNDLE=none" "-DENABLE_UNICODE=ON" "-DBUILD_TESTING=OFF" "-DENABLE_MANUAL=OFF" "-DCURL_CA_FALLBACK=ON" "-DCURL_USE_LIBPSL=OFF" "-DCMAKE_DISABLE_FIND_PACKAGE_Perl=ON" "-DCMAKE_MAKE_PROGRAM=C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe" "-DBUILD_SHARED_LIBS=ON" "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=F:/Feature-test/curl/vcpkg/scripts/toolchains/windows.cmake" "-DVCPKG_TARGET_TRIPLET=x86-windows" "-DVCPKG_SET_CHARSET_FLAG=ON" "-DVCPKG_PLATFORM_TOOLSET=v143" "-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=ON" "-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DVCPKG_APPLOCAL_DEPS=OFF" "-DCMAKE_TOOLCHAIN_FILE=F:/Feature-test/curl/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON" "-DVCPKG_CXX_FLAGS=" "-DVCPKG_CXX_FLAGS_RELEASE=" "-DVCPKG_CXX_FLAGS_DEBUG=" "-DVCPKG_C_FLAGS=" "-DVCPKG_C_FLAGS_RELEASE=" "-DVCPKG_C_FLAGS_DEBUG=" "-DVCPKG_CRT_LINKAGE=dynamic" "-DVCPKG_LINKER_FLAGS=" "-DVCPKG_LINKER_FLAGS_RELEASE=" "-DVCPKG_LINKER_FLAGS_DEBUG=" "-DVCPKG_TARGET_ARCHITECTURE=x86" "-DCMAKE_INSTALL_LIBDIR:STRING=lib" "-DCMAKE_INSTALL_BINDIR:STRING=bin" "-D_VCPKG_ROOT_DIR=F:/Feature-test/curl/vcpkg" "-D_VCPKG_INSTALLED_DIR=F:/Feature-test/curl/vcpkg/installed" "-DVCPKG_MANIFEST_INSTALL=OFF" "-DENABLE_DEBUG=ON"
FAILED: ../../x86-windows-dbg/CMakeCache.txt
"C:/Program Files/CMake/bin/cmake.exe" -E chdir "../../x86-windows-dbg" "C:/Program Files/CMake/bin/cmake.exe" "F:/Feature-test/curl/vcpkg/buildtrees/curl/src/curl-8_1_2-48a3152245.clean" "-G" "Ninja" "-DCMAKE_BUILD_TYPE=Debug" "-DCMAKE_INSTALL_PREFIX=F:/Feature-test/curl/vcpkg/packages/curl_x86-windows/debug" "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" "-DCMAKE_PROJECT_INCLUDE=F:/Feature-test/curl/vcpkg/ports/curl/cmake-project-include.cmake" "-DUSE_NGHTTP2=ON" "-DCURL_USE_WOLFSSL=ON" "-DCURL_USE_OPENSSL=ON" "-DCURL_USE_MBEDTLS=ON" "-DCURL_USE_LIBSSH2=ON" "-DBUILD_CURL_EXE=ON" "-DENABLE_ARES=ON" "-DCURL_WINDOWS_SSPI=ON" "-DCURL_BROTLI=ON" "-DCURL_USE_SCHANNEL=ON" "-DCURL_USE_SECTRANSP=ON" "-DUSE_LIBIDN2=ON" "-DUSE_WIN32_IDN=ON" "-DUSE_WIN32_LDAP=ON" "-DENABLE_WEBSOCKETS=ON" "-DHTTP_ONLY=OFF" "-DCURL_DISABLE_LDAP=OFF" "-DPKG_CONFIG_EXECUTABLE=F:/Feature-test/curl/vcpkg/downloads/tools/msys2/5b9374e6ec2c4e17/mingw32/bin/pkg-config.exe" "-DCURL_CA_PATH=none" "-DCURL_CA_BUNDLE=none" "-DENABLE_UNICODE=ON" "-DBUILD_TESTING=OFF" "-DENABLE_MANUAL=OFF" "-DCURL_CA_FALLBACK=ON" "-DCURL_USE_LIBPSL=OFF" "-DCMAKE_DISABLE_FIND_PACKAGE_Perl=ON" "-DCMAKE_MAKE_PROGRAM=C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe" "-DBUILD_SHARED_LIBS=ON" "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=F:/Feature-test/curl/vcpkg/scripts/toolchains/windows.cmake" "-DVCPKG_TARGET_TRIPLET=x86-windows" "-DVCPKG_SET_CHARSET_FLAG=ON" "-DVCPKG_PLATFORM_TOOLSET=v143" "-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=ON" "-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE" "-DCMAKE_VERBOSE_MAKEFILE=ON" "-DVCPKG_APPLOCAL_DEPS=OFF" "-DCMAKE_TOOLCHAIN_FILE=F:/Feature-test/curl/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON" "-DVCPKG_CXX_FLAGS=" "-DVCPKG_CXX_FLAGS_RELEASE=" "-DVCPKG_CXX_FLAGS_DEBUG=" "-DVCPKG_C_FLAGS=" "-DVCPKG_C_FLAGS_RELEASE=" "-DVCPKG_C_FLAGS_DEBUG=" "-DVCPKG_CRT_LINKAGE=dynamic" "-DVCPKG_LINKER_FLAGS=" "-DVCPKG_LINKER_FLAGS_RELEASE=" "-DVCPKG_LINKER_FLAGS_DEBUG=" "-DVCPKG_TARGET_ARCHITECTURE=x86" "-DCMAKE_INSTALL_LIBDIR:STRING=lib" "-DCMAKE_INSTALL_BINDIR:STRING=bin" "-D_VCPKG_ROOT_DIR=F:/Feature-test/curl/vcpkg" "-D_VCPKG_INSTALLED_DIR=F:/Feature-test/curl/vcpkg/installed" "-DVCPKG_MANIFEST_INSTALL=OFF" "-DENABLE_DEBUG=ON"
-- The C compiler identification is MSVC 19.36.32532.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: F:/Feature-test/curl/vcpkg/downloads/tools/msys2/5b9374e6ec2c4e17/mingw32/bin/pkg-config.exe (found version "0.29.2")
-- Checking for module 'libidn2'
--   Found libidn2, version 2.3.4
-- curl version=[8.1.2-DEV]
-- Looking for getch in ws2_32;c-ares::cares
-- Looking for getch in ws2_32;c-ares::cares - found
-- Looking for getch in winmm;ws2_32;c-ares::cares
-- Looking for getch in winmm;ws2_32;c-ares::cares - found
CMake Error at CMakeLists.txt:421 (message):
  CoreFoundation framework not found

-- Configuring incomplete, errors occurred!

could you please take a look?

Note: I will be converting your PR to draft status. When you respond, please revert to "ready for review". That way, I can be aware that you've responded since you can't modify the tags.

@JonLiu1993 Please review without --allow-unsupported. Unsupported means unsupported.

when I tested the feature by command ./vcpkg install curl[brotli,c-ares,http2,idn,idn2,mbedtls,non-http,openssl,schannel,ssh,sspi,tool,websockets,winidn,winldap,winssl,wolfssl]:x86-windows, I got this error:
FAILED: lib/CMakeFiles/libcurl.dir/vtls/wolfssl.c.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x86\cl.exe   -DBUILDING_LIBCURL -DCURLDEBUG -DCURL_HIDDEN_SYMBOLS -DDEBUGBUILD -DHAVE_CONFIG_H -DLIBSSH2_WIN32 -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_UNICODE -D_WINDLL -Dlibcurl_EXPORTS -IF:\Feature-test\curl\vcpkg\buildtrees\curl\src\curl-8_1_2-48a3152245.clean\include -IF:\Feature-test\curl\vcpkg\buildtrees\curl\x86-windows-dbg\lib\..\include -IF:\Feature-test\curl\vcpkg\buildtrees\curl\src\curl-8_1_2-48a3152245.clean\lib\.. -IF:\Feature-test\curl\vcpkg\buildtrees\curl\src\curl-8_1_2-48a3152245.clean\lib\..\include -IF:\Feature-test\curl\vcpkg\buildtrees\curl\x86-windows-dbg\lib\.. -IF:\Feature-test\curl\vcpkg\buildtrees\curl\src\curl-8_1_2-48a3152245.clean\lib -IF:\Feature-test\curl\vcpkg\buildtrees\curl\x86-windows-dbg\lib -external:IF:\Feature-test\curl\vcpkg\installed\x86-windows\include -external:W0 /nologo /DWIN32 /D_WINDOWS /W4 /utf-8 /MP  /MP /D_DEBUG /MDd /Z7 /Ob0 /Od /RTC1  -MDd /showIncludes /Folib\CMakeFiles\libcurl.dir\vtls\wolfssl.c.obj /Fdlib\CMakeFiles\libcurl.dir\ /FS -c F:\Feature-test\curl\vcpkg\buildtrees\curl\src\curl-8_1_2-48a3152245.clean\lib\vtls\wolfssl.c
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\wolfssl/openssl/compat_types.h(54): error C2371: 'EVP_MD': redefinition; different basic types
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\openssl/types.h(106): note: see declaration of 'EVP_MD'
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\wolfssl/openssl/compat_types.h(55): error C2371: 'EVP_MD_CTX': redefinition; different basic types
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\openssl/types.h(107): note: see declaration of 'EVP_MD_CTX'
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\wolfssl/openssl/compat_types.h(56): error C2371: 'EVP_CIPHER': redefinition; different basic types
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\openssl/types.h(104): note: see declaration of 'EVP_CIPHER'
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\wolfssl/openssl/compat_types.h(57): error C2371: 'EVP_CIPHER_CTX': redefinition; different basic types
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\openssl/types.h(105): note: see declaration of 'EVP_CIPHER_CTX'
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\wolfssl/openssl/compat_types.h(58): error C2371: 'ASN1_PCTX': redefinition; different basic types
F:\Feature-test\curl\vcpkg\installed\x86-windows\include\openssl/types.h(82): note: see declaration of 'ASN1_PCTX'

Check if it is a regression. Port curl traditionally supports various ssl backends via features. But I'm not surprised if you can't combine openssl (version 3 in vcpkg) and wolfssl with its openssl compatibility layer (unknown version of openssl).

Feature brotli,c-ares,http2,idn,idn2,mbedtls,non-http,schannel,sspi,tool,websockets,winidn,winldap,winssl,wolfssl tested successfully in the following triplet:

x86-windows
x64-windows
x64-windows-static


System.ArgumentException on starting hardware counter session

I am unable to create hardware-based session, because EnableKernelProvider throws System.ArgumentException. Simple example:
class Program
{
    static void Main(string[] args)
    {
        var infos = TraceEventProfileSources.GetInfo();
        TraceEventProfileSources.Set(infos["BranchInstructions"].ID, infos["BranchInstructions"].Interval);
        var session = new TraceEventSession(KernelTraceEventParser.KernelSessionName);
        session.EnableKernelProvider(KernelTraceEventParser.Keywords.PMCProfile |
                                     KernelTraceEventParser.Keywords.Profile);

        session.Source.Kernel.PerfInfoCollectionStart += _ => { }; // we must subscribe to this event, otherwise the PerfInfoPMCSample is not raised ;)
        session.Source.Kernel.PerfInfoPMCSample += OnPerfInfoPmcSample;
    }
    private static void OnPerfInfoPmcSample(PMCCounterProfTraceData obj)
    {
    }
}

The exception:
{System.ArgumentException: Value does not fall within the expected range.
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   at Microsoft.Diagnostics.Tracing.Session.TraceEventSession.EnableKernelProvider(Keywords flags, Keywords stackCapture) in F:\GithubProjects\perfview\src\TraceEvent\TraceEventSession.cs:line 717
   at ConsoleApp1.Program.Main(String[] args) in F:\GithubProjects\perfview\ConsoleApp1\Program.cs:line 15}

This happens in a simple console app that I've added to perfview solution, referencing freshly built TraceEvent library. But the same happens with TraceEvent from Nuget and even with TraceEvent used by BenchmarkDotNet. The same happens also on my second computer...
What I see is that underlying ETWKernelControl.StartTraceW returns 0x57 but I completely have no clue how to debug it further.

@kkokosa what is the .Interval returning? Could you try .MaxInterval instead?

@adamsitnik the same exception with .MaxInterval. Values:
infos["BranchInstructions"].Interval
65536
infos["BranchInstructions"].MaxInterval
2147483647
infos["BranchInstructions"].MinInterval
4096

@kkokosa I was able to reproduce because I have hit exactly the same issue today ;)
Works with TraceEvent 1.0.41, fails since 2.0.2

@kkokosa I have found the source of the bug in the closed-source OSExtensions.dll I will start internal MS conversation from here to get it fixed and let you know once we have a fix

@adamsitnik great, thank you!


Fix for two column layout placeholder button overlap

Description 📝
In PR #8615 a bug was introduced that caused empty state landing pages that had more than one action button to overlap the buttons. This PR fixes that by wrapping the buttons in a div and making that div flex with gap. This should help dealing with more buttons in the future as well.
Preview 📷
Before:

After:

How to test 🧪
Navigate to domains and get it in an empty state
Ensure both buttons are visible and not overlapping
Change the screen size to a phone and ensure that the two buttons stack
How do I run relevant unit or e2e tests?
run yarn cy:run -s "cypress/e2e/domains/smoke-create-domain.spec.ts"

LGTM, the buttons didn't stack for me in mobile view though

@dwiley-akamai I forgot to push that commit should be up now

@dwiley-akamai I forgot to push that commit should be up now

👍  🚢


Cannot login at all: not only with premium account but also none premium account.

Problem Summary

Cannot login.
Tried premium and none premium account.
Neither can login.
How to reproduce
log out / log in.
Environment

leetcode-cli version:

OS version: Ubutu 18 LTS

Same problem.
version: 2.6.2
Premium Account.

Same problem. test on all accounts, even the new created one.

Same problem, non-premium account:
OS: win 10
node: V12.13.0
npm: 6.12.0
leetcode-cli: 2.6.2

@skygragon / @jdneo . Sorry for bothering. We're totally stuck because we cannot login. Could you please help us out?

Same problem.
OS: MacOS 10.13
Version: 2.6.2

Same problem.

OS: Manjaro 18.1.3
leetcode-cli: 2.6.2
non-premium account.

Same problem.
OS: MacOS 10.15.1
Version: 2.6.2
Node.js version: v13.2.0

I'm a newbie here and cannot login ><...

Same problem.
OS: macOS 10.14.6
Version: 2.6.2

#196

the plugin is now blocked by leetcode, i guess

Same problem.
OS: ubuntu 16.04
Version: 2.6.2

Could be an issue with LC adding another level of authentication through captcha.

if you are account that registed from cn, you an edit ~/.plugins.json and set the leetcode.cn value true.

My dev env is mac, it works for me below.
Edit ~./lc/plugin.json, set the cookie.chrome value is true,  open the chrom and login in leetcode accout.
Next login will success.

Thank you @leonyzhe! I can log in successfully by editing ~/.lc/plugin.json as @leonyzhe shows. My plugin.json has the following content now:
{"cache":true,"retry":true,"leetcode":true,"cookie.chrome":true}

I appended "cookie.chrome":true.

After leetcode plugin -i cookie.chrome, it works!
Thanks!

@lang010 did you have to log in through the browser before cli? I don’t have access to a browser (VPS through SSH), so even when I edit the plugins.json, I get the error:

[ERROR] Failed to copy cookies from profile "Default"
[ERROR] Error: SQLITE_CANTOPEN: unable to open database file
[ERROR] invalid password?

I am having the same problem.  My dev environment is Mac. I tried setting "leetcode plugin -i cookie.chrome" and login using Chrome but that did not work for me.
Can you please look into this? This is blocking us. Thanks in advance!

vsc-leetcode-cli
https://www.npmjs.com/package/vsc-leetcode-cli

vsc-leetcode-cli
https://www.npmjs.com/package/vsc-leetcode-cli

Thank you for the link! Appreciate that.
Btw, I tried installing vsc-leetcode-cli which went fine. But, I am still not able to get leetcode executable.. Am I missing something?
$ sudo npm i vsc-leetcode-cli

<EMAIL_ADDRESS>updated 1 package and audited 465 packages in 4.125s
found 0 vulnerabilities

$ leetcode
-bash: leetcode: command not found
$
Thanks in advance!!

Thank you @hardboydu ! I was able to make it work.

@lang010 did you have to log in through the browser before cli? I don’t have access to a browser (VPS through SSH), so even when I edit the plugins.json, I get the error:
[ERROR] Failed to copy cookies from profile "Default"
[ERROR] Error: SQLITE_CANTOPEN: unable to open database file
[ERROR] invalid password?

UPDATE: This helped me fix it.

Same issue. Did you move to using VSCode Leetocode ?

vsc-leetcode-cli
https://www.npmjs.com/package/vsc-leetcode-cli

Thank you @hardboydu for the link! Appreciate that.
Btw, I tried installing vsc-leetcode-cli which went fine. But, I am still not able to get leetcode executable.. Am I missing something? Is it just for Visual Studio Code?
$ sudo npm i vsc-leetcode-cli

<EMAIL_ADDRESS>updated 1 package and audited 465 packages in 4.125s
found 0 vulnerabilities

$ leetcode
-bash: leetcode: command not found
$
Thanks in advance!!

npm install -g vsc-leetcode-cli
leetcode user -l

Paste your user name and cookies here.

@lang010 did you have to log in through the browser before cli? I don’t have access to a browser (VPS through SSH), so even when I edit the plugins.json, I get the error:
[ERROR] Failed to copy cookies from profile "Default"
[ERROR] Error: SQLITE_CANTOPEN: unable to open database file
[ERROR] invalid password?

UPDATE: This helped me fix it.

Same issue. Did you move to using VSCode Leetocode ?

eventually it worked to me just doing leetcode user -lc  then insert username and password and it worked. I had a leetcode session legged in on chrome  but I don't think it counts in any way

Error: Cannot find module 'C:\Users\z\AppData\Roaming\npm\node_modules\leetcode-cli\node_modules\sqlite3\lib\binding\node-v72-win32-x64\node_sqlite3.node'


FIX: Adding EMIT functions to PyAEDT docs

This PR adds EMIT functions to the PyAEDT document page.

@ramin4667 What is difference compared to this page? https://aedt.docs.pyansys.com/version/stable/API/_autosummary/ansys.aedt.core.emit.Emit.html
All applications are there.


[WIP]fix(transaction): Improve Numeric Json Serialization

Current implementation sometimes fails to properly serialize numbers in the toJson() method.
This is especially an issue in some Linux builds and all Arduino IDE builds (Arduino IDE Library Manager version (Cpp-Crypto-Arduino-v.0.3.0)).
Specifically, this PR does the following:

moves <cinttypes> to crypto_helpers.h for non-IoT builds.
forces type serialization for:

amount (llu/uint64_t).
fee (llu/uint64_t).
network (uint8_t/int).
timestamp (lu/uint32_t).
type (uint8_t/int).
version (uint8_t/int).

updates the changelog.

This PR resolves #99.
Tests will fail until #101 is merged and this PR is rebased.
What kind of change does this PR introduce?

[x] Bugfix

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Does this PR release a new version?

[ ] Yes
[x] No

If yes, please describe the impact and migration path for existing applications:
The PR fulfills these requirements:

[x] It's submitted to the develop branch, not the master branch
[x] All tests are passing
[ ] New/updated tests are included

The ci/circleci: build-linux-default job is failing as of c0a326fa0cf246c7734ad048423bb0e743c22c0d. Please review the logs for more information.
Once you've pushed the fixes, the build will automatically re-run. Thanks!

The ci/circleci: build-linux-default job is failing as of c0a326fa0cf246c7734ad048423bb0e743c22c0d. Please review the logs for more information.
Once you've pushed the fixes, the build will automatically re-run. Thanks!

@faustbrian This is good to go 👍


Instagram Data values retrival

Hello, I am using this library in node.js and running express and when I console log data in js file I get the data but when I pass the data to jade I keep getting [object Object]. I am using a each loop for the values but I cant get certain values like id or likes only.

I have never used jade but are you sure you there is no sub objects when you try to access the data?

I though it might be that, when I use the console.log to see the data it has {"pagination: {}, data: [{}]}. How do you get the data only or delete the first sub object? Thanks for getting back to me, I appreciate all the help I can get

can you provide your jade template and the function you use to inject the data inside the tempate?

I figured out what the issue was, When making the API call it would return a array with 3 different arrays in data. I did not see it when all the data was displayed in the console. I just wrote a loop to filter out the first empty array and the meta array and get data only. It works perfectly now, thanks for your help I appreciate your time!


ModuleNotFoundError: No module named 'micropip'

Neat idea sippycup. It looks like a lot of it works from the below console. I did a fresh run from the frontend folder.
npm install
npm start

It draws the UI and then crashes on the micropip module not being found.
(index):50 Uncaught TypeError: Cannot read properties of null (reading 'style')
    at (index):50:26
react refresh:6 Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
about:srcdoc:1 An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.
2
pyodide.asm.js:10 Loading distutils
pyodide.asm.js:10 Loaded distutils
pyodide.asm.js:10 distutils already loaded from default channel
pyodide.asm.js:10 Loading micropip, pyparsing, packaging
pyodide.asm.js:10 Loaded distutils
pyodide.asm.js:10 distutils already loaded from default channel
pyodide.asm.js:10 Loading micropip, pyparsing, packaging
2
pyodide.asm.js:10 Loaded pyparsing, packaging, micropip
pyodide.asm.js:10 Uncaught (in promise) PythonError: Traceback (most recent call last):
  File "/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'micropip'

    at new_error (pyodide.asm.js:10:218123)
    at pyodide.asm.wasm:0xdef7c
    at pyodide.asm.wasm:0xdf077
    at Module._pythonexc2js (pyodide.asm.js:10:900301)
    at Module.callPyObjectKwargs (pyodide.asm.js:10:119233)
    at Module.callPyObject (pyodide.asm.js:10:119442)
    at Function.apply (pyodide.asm.js:10:126886)
    at Object.apply (pyodide.asm.js:10:125914)
    at Object.pyimport (pyodide.asm.js:10:151534)
    at sippycup.js:102:1
    at async Module.start (sippycup.js:102:1)
pyodide.asm.js:10 Loading jinja2, markupsafe
pyodide.asm.js:10 [Violation] 'setTimeout' handler took 88ms
pyodide.asm.js:10 Loaded markupsafe, jinja2

I worked around it by setting a 1ms timeout.
    await pyodide.loadPackage('micropip');
    setTimeout(async ()=>{
        const micropip = await pyodide.pyimport("micropip");
        await micropip.install('flask');
    },1);

I couldn't see how your code had anything to do with it


Adding data-cdb-st-id attribute to improve automated STs

Starting with login page. Will add to more UI as tests are implemented.

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

Frontend tests were OK :+1: (details)

ping!

cc @saleiva
It's a bad time to do this according to @javisantana. It should be halted for a bit.

yep, let's wait to do this until we have the CI under our control


can't use 'tab' key

the 'tab' key don't function,  for example:   when I write a file in vim as follow
a  1    1
b  2    2
c  3    3

then run cut -f 1  in cmd of linux, I will get the result of whole file, it seems like that there is no 'tab' in every line;
Is any one have good idea to solve this problem?

That's probably because of https://github.com/skwp/dotfiles/blob/f721304a2c45fc7e035555ed51b44d71e4e59da2/vimrc#L65 (check the documentation at :h softtabstop).
If you need to actually insert a tab character instead of expanding it to spaces, you need to overwrite that (via the after file, or a specific plugin, or autocommands for a specific filetype, etc).
But unless it's a filetype that demands actual tab chars, nowadays it's pretty much an industry standard not to use actual tabs in the name of consistency, as they vary in width from editor to editor, from env to env...


Support Node 14 on Windows and release 0.3.1

I missed that we also used replaceAll, but only on Windows, in https://github.com/google/wireit/pull/160. This PR replaces those uses, adds Windows + Node 14 to our test matrix, and drops lib down to es2020 in tsconfig.json (which catches this error in tsc).
Actually fixes https://github.com/google/wireit/pull/160

I discovered that there was an additional extremely gnarly problem relating to the way environment variable case sensitivity works in Windows. There was a subtle difference between Node 14 and 16, which is now fixed!
PTAL, non trivial new code!

Thank you! Published.


symbol not found in flat namespace '__end'

#161 is back again, this time on the execution side (and only on mac). From https://github.com/spacemeshos/go-spacemesh/actions/runs/11674170614/job/32506374469?pr=6380:
=== FAIL: node TestSpacemeshApp_TransactionService (0.49s)
panic: loading Athena VM: loading library: dlopen(/Users/m1/actions-runner/_work/go-spacemesh/go-spacemesh/build/libathenavmwrapper.dylib, 0x000A): symbol not found in flat namespace '__end' [recovered]
	panic: loading Athena VM: loading library: dlopen(/Users/m1/actions-runner/_work/go-spacemesh/go-spacemesh/build/libathenavmwrapper.dylib, 0x000A): symbol not found in flat namespace '__end'

goroutine 1817 [running]:
testing.tRunner.func1.2({0x106fe5ce0, 0xc0010a4280})
	/Users/m1/actions-runner/_work/_tool/go/1.23.2/arm64/src/testing/testing.go:1632 +0x2c4
testing.tRunner.func1()
	/Users/m1/actions-runner/_work/_tool/go/1.23.2/arm64/src/testing/testing.go:1635 +0x47c
panic({0x106fe5ce0?, 0xc0010a4280?})
	/Users/m1/actions-runner/_work/_tool/go/1.23.2/arm64/src/runtime/panic.go:785 +0x124
github.com/spacemeshos/go-spacemesh/vm/sdk/wallet.Spawn({0xc00059ecc0, 0x40, 0x40}, 0x0, {0xc0006cfe70, 0x1, 0x0?})
	/Users/m1/actions-runner/_work/go-spacemesh/go-spacemesh/vm/sdk/wallet/tx.go:45 +0x5d0
github.com/spacemeshos/go-spacemesh/node.TestSpacemeshApp_TransactionService(0xc00029b[380](https://github.com/spacemeshos/go-spacemesh/actions/runs/11674170614/job/32506374469?pr=6380#step:14:381))
	/Users/m1/actions-runner/_work/go-spacemesh/go-spacemesh/node/node_test.go:554 +0xc98
testing.tRunner(0xc00029b380, 0x1072b89f8)
	/Users/m1/actions-runner/_work/_tool/go/1.23.2/arm64/src/testing/testing.go:1690 +0x188
created by testing.(*T).Run in goroutine 1
	/Users/m1/actions-runner/_work/_tool/go/1.23.2/arm64/src/testing/testing.go:1743 +0x5e4

This issue is very odd. sp1 has precisely the same code, and I can compile it fine on my Mac. I've isolated the problem to this commit: it compiles before this point, but something here broke it: https://github.com/athenavm/athena/pull/145/commits/d540a820aacf7010992dae67ff3827064e6a777d

I isolated it further, to this change: https://github.com/athenavm/athena/pull/145/commits/d540a820aacf7010992dae67ff3827064e6a777d#diff-1a9c17ef3b6a70254124f54ee4a8f2ceb17a3a7f8ed9570473a03e3246860ba4. Sort of.
If you use 1a9c17ef3b6a70254124f54ee4a8f2ceb17a3a7f8ed9570473a03e3246860ba4 and roll back this change, it compiles. If you apply this change, the error appears.
But rolling back this change on the main branch today doesn't fix the issue.

Note that a macOS/mach-O-specific solution is quite complex:
Here's how you can implement a macOS-specific solution:
Understanding Mach-O and Segments
Mach-O Format: macOS uses the Mach-O (Mach Object) file format for executables and libraries. This format organizes code and data into segments and sections.
Segments and Sections: Segments are large divisions of a binary (like __TEXT, __DATA), and segments contain sections (like __text, __data).
Solution Overview
Use Mach-O Headers: Access the Mach-O headers to find the __DATA segment and its sections.
Find the End of the Data Segment: Calculate the end address of the data segment.
Modify Your Code to Use This Address: Use the calculated end address as the starting point for your heap allocator.
Implementation Steps

Include Necessary Headers
In order to use Mach-O APIs, you'll need to include the following headers:

rust
Copy code
extern crate libc;
use libc::{c_char, c_void};
use std::ptr;
For FFI (Foreign Function Interface) with C functions, you'll need to use extern "C" blocks.

Access the Mach-O Headers
You can access the Mach-O headers using functions provided by the dyld API. Since you're working within a dynamic library, you need to get the correct image header.

rust
Copy code
#[link(name = "dyld")]
extern "C" {
fn _dyld_get_image_header(index: u32) -> *const mach_header;
fn _dyld_get_image_vmaddr_slide(index: u32) -> isize;
fn _dyld_image_count() -> u32;
}
#[repr(C)]
struct mach_header {
magic: u32,
cputype: i32,
cpusubtype: i32,
filetype: u32,
ncmds: u32,
sizeofcmds: u32,
flags: u32,
}
Note: The actual definitions of the Mach-O structures (mach_header, segment_command_64, etc.) are quite involved. You may need to import or define these structures according to the Mach-O specification.

Find the Data Segment
Implement a function that iterates over the load commands in the Mach-O header to find the __DATA segment and determine its end address.

rust
Copy code
unsafe fn get_data_segment_end() -> usize {
use std::mem::size_of;
// Get the number of images (libraries/executables) loaded
let image_count = _dyld_image_count();

// Iterate over the images to find the one corresponding to your library
for i in 0..image_count {
    let header = _dyld_get_image_header(i);
    let slide = _dyld_get_image_vmaddr_slide(i);

    if header.is_null() {
        continue;
    }

    let mut cmd_ptr = (header as *const u8).offset(size_of::<mach_header>() as isize);

    // Iterate over the load commands
    let header_ref = &*header;
    for _ in 0..header_ref.ncmds {
        let cmd = &*(cmd_ptr as *const load_command);

        if cmd.cmd == LC_SEGMENT_64 {
            let seg_cmd = &*(cmd_ptr as *const segment_command_64);
            let segname = &seg_cmd.segname;

            // Check if this is the __DATA segment
            if segname.starts_with(b"__DATA\0") {
                // Calculate the end address of the __DATA segment
                let end_addr = seg_cmd.vmaddr + seg_cmd.vmsize + slide as u64;
                return end_addr as usize;
            }
        }

        cmd_ptr = cmd_ptr.offset(cmd.cmdsize as isize);
    }
}

panic!("__DATA segment not found");

}
Definitions Needed:
You'll need to define the following constants and structs according to the Mach-O specification.
rust
Copy code
const LC_SEGMENT_64: u32 = 0x19;
#[repr(C)]
struct load_command {
cmd: u32,
cmdsize: u32,
}
#[repr(C)]
struct segment_command_64 {
cmd: u32,
cmdsize: u32,
segname: [u8; 16],
vmaddr: u64,
vmsize: u64,
fileoff: u64,
filesize: u64,
maxprot: i32,
initprot: i32,
nsects: u32,
flags: u32,
}
// Implement a method to check the segment name
impl segment_command_64 {
fn segname_as_str(&self) -> &str {
let cstr = &self.segname;
let len = cstr.iter().position(|&c| c == 0).unwrap_or(16);
std::str::from_utf8(&cstr[..len]).unwrap_or("")
}
}
4. Use the End Address in Your Allocator
Modify your allocator function to use the calculated end address:
rust
Copy code
#[allow(clippy::missing_safety_doc)]
#[no_mangle]
pub unsafe extern "C" fn sys_alloc_aligned(bytes: usize, align: usize) -> *mut u8 {
// Pointer to next heap address to use, or 0 if the heap has not yet been initialized.
static mut HEAP_POS: usize = 0;
// SAFETY: Single threaded, so nothing else can touch this while we're working.
let mut heap_pos = HEAP_POS;

if heap_pos == 0 {
    heap_pos = get_data_segment_end();
}

let offset = heap_pos & (align - 1);
if offset != 0 {
    heap_pos += align - offset;
}

let ptr = heap_pos as *mut u8;
let (heap_pos_new, overflowed) = heap_pos.overflowing_add(bytes);

if overflowed || MAX_MEMORY < heap_pos_new {
    panic!("Memory limit exceeded (0x78000000)");
}

HEAP_POS = heap_pos_new;
ptr

}
5. Handle Edge Cases and Test Thoroughly
Error Handling: Ensure you handle cases where the __DATA segment isn't found.
Thread Safety: If your application is multithreaded, you'll need to make HEAP_POS thread-safe.
Testing: Thoroughly test your allocator to ensure it behaves correctly on macOS.
Important Notes
Complexity: Parsing Mach-O headers is complex and can be error-prone. Ensure you understand the Mach-O file format and the structures involved.
Maintenance: This solution is macOS-specific and adds complexity to your codebase.
Alternatives: Consider whether you can use system memory allocation functions or other cross-platform libraries to handle memory allocation.
Additional Considerations
Use sbrk(0) on macOS
Although sbrk is deprecated on macOS, it can still be used to get the current program break. However, using deprecated functions is generally discouraged.
rust
Copy code
extern "C" {
fn sbrk(increment: isize) -> *mut c_void;
}
unsafe fn get_heap_start() -> usize {
sbrk(0) as usize
}
Caution: Using sbrk can lead to undefined behavior and is not recommended for new applications.
Manually Define the _end Symbol
You can define the _end symbol in assembly and link it with your Rust code.
Assembly File (end_symbol.s):
assembly
Copy code
.globl _end
_end:
Compile the assembly file and link it with your Rust library.
Linking Steps:
bash
Copy code
as -o end_symbol.o end_symbol.s
ar rcs libend_symbol.a end_symbol.o
Modify your build script to link libend_symbol.a with your Rust code.
Usage in Rust:
rust
Copy code
extern "C" {
static _end: u8;
}
unsafe fn get_heap_start() -> usize {
&(_end) as *const u8 as usize
}
Caution: This approach requires careful handling to ensure that _end is placed correctly in memory.

The best clue I can find is this: https://stackoverflow.com/questions/54368717/undefined-symbols-for-mh-execute-header


design: Rerank

We need to provide some built-in rerankers e.g. model-based rerankers and fresness.

Different ranking methods require more metadata than the doc itself, i.e. updated_at, vector, quality_score (not the similarity score).
This requires a structure to represent. Although these metadata are not mandatory.
The interface is like reranker.rank(query, docs) that will apply all predefined rankers sequentially.
Rankers can be:

cross-encoder models
time decay (similar to the HackerNews ranking algorithm)
diversity (Maximal Marginal Relevance)
etc.

I have implement the basic interface here

End-to-end RAG

data source: notes, webpages, docs, etc.
ETL:

vector embedding (option: use PCA to reduce the dim)
inverted index
structured metadata (time, author, tag, etc. used for filtering & reranking)

storage

snapshot + update
authorization

hybrid search:

vector similarity search (order by distance)
full-text search (order by BM25/TF-IDF)

reranking

cross-encoder
rule-based

user feedback & a/b test

text-based end2end SDK

Insert text
Query by text
Configurable intermediate step

end2end latency
documentation
sparse vector integration (fastembed/bge-m3)


Updated environment.yml to make it compatible with both Linux and Mac OSX

This PR updates the environment.yaml file so that it works on both Mac OSX and Linux systems.

Works on my Linux OS.  Well done, and thank you.


Direction of movement

Is there a possibility to choose in which direction a servo will be moving towards set position?

This depends on the mode of operation of the servo.
In standard position mode, the servo cannot move more than a single turn - though it may be able to do 360° (most STS servos), where 4096 maps to the same angle as 0, the servo will never cross the 0/4096 threshold. So in this mode, the servo has only one direction to go to reach the target position.
What you want to do is possible in step mode, where, instead of moving to an absolute position, the servo moves by incremental steps. There, you can do multiturn motion (there is no longer an angle limit).
To go into this mode, use STSServoDriver::setMode(servoId, STSMode::STEP);. Then, calling STSServoDriver::setTargetPosition(servoId, 500); will make the servo move 500 steps in the clockwise position. Call this function again and the servo will again move 500 steps (note that this is quite different from position mode, where 500 is an absolute position, so calling this again wouldn't make the servo move: it has already reached its target).
In this mode, using positive / negative numbers, you can set the direction of rotation at will. The drawback of course is that the position is no longer absolute - though you can still read the servo's encoder to know its current position, so you could then write a function that behaves likes absolute position mode, but with you choosing the direction of rotation.
Note that at least on the STS3215 there is a bug in the servo firmware where using STEP mode together with a position offset (set through STSServoDriver::setPositionOffset - this offset is not taken into accound in STEP mode so it creates a position discontinuity. But other than that the mode works fine - and you can always reset the offset to zero to make it work.

Thank you very much for the help! That's exactly what I needed :)


FFI transfer ownership instead of cloning

Inside ffi/derive/src/arg.rs when receiving input parameters to functions, every opaque structure is cloned so as not to deal with ownership transfer. In FFI calls best practice dictates that memory should be deallocated on the side of the FFI that allocated it. Cloning doesn't seem optimal and, if possible, some form of ownership transfer should replace it

Considering that opaque pointers are always allocated on the Rust side of the FFI their ownership can be sent back over and deallocated. But care must be taken to not transfer ownership of other structs

Ownership of opaque structs will be shared across FFI boundary after #2314 is merged


Follow breaking change of didReceiveRegistrationToken signature of Firebase pod version 7.0.0

Thank you @QuentinFarizon for the fix!


Lag when typing long text blocks with a lot of complex emojis.

Type many complex emojis (family emojis, flags, etc) in a textfield such as the one in flutter gallery.
After typing a large amount of text, further input becomes very slow and laggy/sluggish (on debug mode).
Tested on a Nexus 5X

This also happens in release mode, but takes a much larger amount of emojis to become noticeable. When it begins to lag, non-emoji text input also becomes laggy.
This is also not restricted to complex emojis. Simple emojis such as :) also lag with enough of them. This does not happen to any other script such as chinese or arabic.

Fixed by https://github.com/flutter/engine/pull/7208


Start using client.authentication.k8s.io/v1beta1 api for the client auth plugin

Recently client authentication api was updated from v1alpha1 to v1beta1.
https://github.com/kubernetes/client-go/commit/f58a8f4fd079a6e2d027afeba4eb8c2ef3a233f5
This commit switches keystone-client-auth on the new api and removes the outdated
one.
The difference between two versions is that in alpha interactive mode was checked
in client-go and provided to the plugin with the environment variable
KUBERNETES_EXEC_INFO. In beta the plugin uses a TTY check to determine if it's
appropriate to prompt a user interactively. That's why KUBERNETES_EXEC_INFO is
not used anymore and can be removed.
Another change is that ExecCredentialSpec struct doesn't contain any fields now,
which means the plugin shouldn't write anything in this section during printing
response output.
https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins

/retest

defer to others for lgtm.
This PR has some changes on using TTY check to determine if it's appropriate to prompt a user interactively instead of reading from env vars.

/lgtm