[BUG] Some nodes going down brings down the whole Harvester Cluster

Describe the bug

We have observed a critical issue within our 6-node Harvester cluster. Specifically, the last two nodes added to the cluster, when they go down, cause the entire cluster to become unresponsive. This issue prevents access to the kubectl API, and the Harvester UI dashboard becomes unresponsive. Although the login page occasionally loads, attempts to log in result in a redirect back to the login page. Notably, when these nodes are brought back online, we've observed additional nodes going down unexpectedly, despite no changes being made to them. These nodes serve both management and compute roles.
To Reproduce
Steps to reproduce the behavior:
Steps to reproduce the behavior seem to be tied to shutting down nodes randomly. Our cluster setup includes five management nodes. We attempted to demote two of these nodes via lables, intending to repurpose them as worker nodes. However, despite removing the management roles, etcd continues to recognize them as management nodes. This issue has persisted, and we've opened another ticket regarding this matter https://github.com/harvester/harvester/issues/5421. Our cluster configuration is standard, with minimal workloads currently running, including  two virtual machines . The network setup is also standard, without any complex configurations.
Expected behavior

Given our cluster has six nodes, we expect the cluster to remain operational even if one or two nodes go down, especially since the design should support functioning with three management nodes. The unresponsiveness and cascading failure of additional nodes is unexpected and severely impacts our operations. Our nodes are equipped with ample disk capacity and are configured with Longhorn for storage, anticipating resilience and redundancy with at least three replicas per data.
Support bundle

We have generated support logs from several servers but have not identified any clear indicators related to this issue. We will provide these logs for further analysis privately via email.
Environment

Harvester ISO version: 1.2.1
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): Baremetal with Dell PowerEdge R620 and R730 servers.

Additional context
This issue represents a significant disruption to our cluster's functionality, with a straightforward setup seemingly contributing to an unexpected and severe failure mode. Any insights or guidance on mitigating these issues would be greatly appreciated.

Similar https://github.com/harvester/harvester/issues/2203

The maximum count of the management nodes (control plane node with etcd service) in a cluster is 3, is it possible the 2 down nodes are in this role? You can check with kubectl get nodes. The control plane requires at least two alive management nodes to function.

We have 6 nodes and unfortunately all them have control plane and etcd service so all are management technically. and in this scenario, as we have already have 4 management nodes cluster should be still functioning.

is it possible to get a support bundle? Was anything done to manually promote the nodes, the harvester controller will not try and promote more nodes if 3 are found to have been promoted.

is it possible to get a support bundle? Was anything done to manually promote the nodes, the harvester controller will not try and promote more nodes if 3 are found to have been promoted.

@ibrokethecloud yes, i can provide the support logs via email. Let me if know if you don't find it in<EMAIL_ADDRESS>I can share it via Slack. Thanks

we would appreciate a supportbundle, the supportconfig does not provide us any k8s object info. https://docs.harvesterhci.io/v1.3/troubleshooting/harvester#generate-a-support-bundle

alternative if you could please check how many etcd members you have in the cluster. We do not recommend manually labelling nodes to trigger promotion.

we would appreciate a supportbundle, the supportconfig does not provide us any k8s object info. docs.harvesterhci.io/v1.3/troubleshooting/harvester#generate-a-support-bundle

Yes, sent support bundle.

@ibrokethecloud are you looking for the overall list of the nodes with etcd or output from the etcd cli ?
etcdctl member list

yes. I am unable to access the support bundle from the shared folder. It might be better to upload it here or dm it on rancher user slack

@ibrokethecloud sent you via Slack DM.

The support bundle indicates that you only have 3 etcd members:
etcd-hci-04                                              1/1     Running   3 (5d22h ago)      102d    <IP_ADDRESS>    hci-04   <none>           <none>
etcd-hci-05                                              1/1     Running   5 (5d20h ago)      102d    <IP_ADDRESS>    hci-05   <none>           <none>
etcd-hci-06                                              1/1     Running   5 (5d18h ago)      102d    <IP_ADDRESS>    hci-06   <none>           <none>

As a result shutting down hci-05 and hci-06 together will cause the outage.
Harvester will not auto-promote node to being an etcd member until the node exists in the apiserver.
Ideally the API should have displayed a warning when you tried to place a second etcd member node into maintainence after another etcd member was already put in maintenance.

The support bundle indicates that you only have 3 etcd members:
etcd-hci-04                                              1/1     Running   3 (5d22h ago)      102d    <IP_ADDRESS>    hci-04   <none>           <none>
etcd-hci-05                                              1/1     Running   5 (5d20h ago)      102d    <IP_ADDRESS>    hci-05   <none>           <none>
etcd-hci-06                                              1/1     Running   5 (5d18h ago)      102d    <IP_ADDRESS>    hci-06   <none>           <none>

As a result shutting down hci-05 and hci-06 together will cause the outage.

@ibrokethecloud this make sense to me.

Harvester will not auto-promote node to being an etcd member until the node exists in the apiserver.

However, putting the existing management node in maintenance shouldn't the other node be promoted to the management node? Or I'm missing something here?

Ideally the API should have displayed a warning when you tried to place a second etcd member node into maintainence after another etcd member was already put in maintenance.

the promotion logic checks to see if atleast 3 nodes exist which are controlplane nodes. If not, then another one is picked for promotion to controlplane.
placing a node in maintenance mode does not delete the node from the cluster state(node object still exists). Maintenance is meant to be a temporary outage, and promotion logic will meet the check which successfully finds 3 nodes promoted to controlplane so no further action is needed. A new node will be promoted if you delete node 05 or 06, which which case node will be gone from the apiserver and new promotion will be triggered.

the promotion logic checks to see if atleast 3 nodes exist which are controlplane nodes. If not, then another one is picked for promotion to controlplane.
placing a node in maintenance mode does not delete the node from the cluster state(node object still exists). Maintenance is meant to be a temporary outage, and promotion logic will meet the check which successfully finds 3 nodes promoted to controlplane so no further action is needed. A new node will be promoted if you delete node 05 or 06, which which case node will be gone from the apiserver and a new promotion will be triggered.

Thanks for clarifying this, however, In DR you can loose two or three nodes and need a way to recover and in that case we need manually promote demote.
Is there a way to promote and demote nodes or taint them? as we do not want 4,5,6 to be management nodes?

I'm seeing the same issue here I think.  It looks like maybe hacking the yaml configs for kubernetes directly might be a temporary fix.  I was looking for other suggestions and stumbled across the suggestion in this thread:
https://github.com/rancher/rancher/issues/22319
It would be nice to have a sanctioned way to promote nodes on a temporary basis in order to keep the cluster stable while we fix the underlying problem though.

the promotion logic checks to see if atleast 3 nodes exist which are controlplane nodes. If not, then another one is picked for promotion to controlplane.
placing a node in maintenance mode does not delete the node from the cluster state(node object still exists). Maintenance is meant to be a temporary outage, and promotion logic will meet the check which successfully finds 3 nodes promoted to controlplane so no further action is needed. A new node will be promoted if you delete node 05 or 06, which which case node will be gone from the apiserver and a new promotion will be triggered.

Thanks for clarifying this, however, In DR you can loose two or three nodes and need a way to recover and in that case we need manually promote demote.
Is there a way to promote and demote nodes or taint them? as we do not want 4,5,6 to be management nodes?

@ibrokethecloud checkin back on this, any suggestion ?

The label disaster-recovery (DR) is added.
Both https://github.com/harvester/harvester/issues/5421 and https://github.com/harvester/harvester/issues/5424 will be taken into account for further enhancements:
(1) Allow user to set e.g. 5 management nodes; the node-promoter can work for more nodes promotion.
(2) Change the node-role on the fly.
(3) Different number of management role and etcd role, e.g. 3 mgmt & 5 etcd, or 5 mgmt & 3 etcd.
TBD...

@dipakparmar

Our cluster setup includes five management nodes. We attempted to demote two of these nodes via lables, intending to repurpose them as worker nodes. However, despite removing the management roles, etcd continues to recognize them as management nodes.

Could you add more details, thanks.
(1) How did you set the additional 2 nodes to be management nodes, by default Harvester sets 3 of them for this role;
(2) We attempted to demote two of these nodes via lables, which detailed leables were operated and were those nodes rebooted after changing the labels? did you check the rke2-server and rke2-agent service on those 2 nodes, any abnormal logs?


ENH: Added bounds to boxcox and boxcox_normmax

Reference issue
Closes #11909
What does this implement/fix?
Adds optional bounds on lambda for boxcox.

Travis failure seems unrelated to my changes.

Failures seem to be unrelated to my changes. @pvanmulbregt what do you think about the new changes?

@mloning thanks for your patience on this. Are you still interested in finishing this up? I think switching to minimize_scalar was a good idea, and I agree that maintaining backwards compatibility is essential. But we're getting an error now. Can there be a default value?
scipy/stats/tests/test_morestats.py:1437: in test_all
    maxlog_all = stats.boxcox_normmax(self.x, method='all')
        self       = <scipy.stats.tests.test_morestats.TestBoxcoxNormmax object at 0xd283cb6c>
scipy/stats/morestats.py:1206: in boxcox_normmax
    return optimfunc(x)
E   TypeError: _all() missing 1 required positional argument: 'brack'
        _all       = <function boxcox_normmax.<locals>._all at 0xd3b8a194>
        _mle       = <function boxcox_normmax.<locals>._mle at 0xd3b8a3d4>
        _pearsonr  = <function boxcox_normmax.<locals>._pearsonr at 0xd3b8a4ac>
        bounds     = None
        bracket    = None
        method     = 'all'
        methods    = {'all': <function boxcox_normmax.<locals>._all at 0xd3b8a194>, 'mle': <function boxcox_normmax.<locals>._mle at 0xd3b8a3d4>, 'pearsonr': <function boxcox_normmax.<locals>._pearsonr at 0xd3b8a4ac>}
        optimfunc  = <function boxcox_normmax.<locals>._all at 0xd3b8a194>
        optimize_method = 'brent'
        optimizer  = <function boxcox_normmax.<locals>.optimizer at 0xd396f074>
        options    = None
        tol        = None
        x          = array([6.44415491, 6.75434284, 7.33520463, 7.12469502, 6.87684706,
       7.06817079, 6.97381781, 5.87097216, 7.109229...82, 6.23760424, 6.08050404, 6.56410623, 5.95006374,
       6.97523879, 7.28473632, 6.47890964, 6.93560427, 6.62632851])

Hi @mdhaber - thanks for looking into this! I'm having issue building SciPy locally and getting the tests to run. I'll look into this again!

@mloning what OS are you using? Just making sure you know about the contributor guide; perhaps some i information there will help.

macOS - I've followed the guide there and tried a few times but eventually gave up. I'll try again and report back!

Some have said that the guide could be more concise. (It's tricky to write for people with all different backgrounds.) If that's part of the problem, here is a minimal set of steps that has worked reliably for me on Mac, given that you already seem to have cloned SciPy.

Install Anaconda. I would remove and reinstall if you've been having problems.
Install Apple Developer Tools by entering in a terminal xcode-select --install
In the terminal, pull the latest version of master and make sure everything is clean.

git checkout master
git fetch upstream
git rebase upstream/master
git status

To ensure the repo is in a really clean state, you might also want to delete the build directory, git reset --hard HEAD to clear any changes to tracked files, and git clean -fd to remove any files and folders that aren't tracked. (Make sure you have everything you need from the SciPy directory before doing those.)
4. Install Homebrew according to their instructions (the latest command for the terminal is /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)")
5. brew install gcc. Make sure gcc, gfortran, and g++ give errors like  fatal error: no input files compilation terminated.; that means they're on the path.
6.  (I suggest Python 3.7 has given me fewer problems than 3.8, 3.9. spyder is optional if you prefer another IDE.)
7. Activate the virtual environment: conda activate scipydev
7. I suggest performing an in-place build: python3 setup.py build_ext --inplace
8. "Install" SciPy so conda can see it from any directory: conda develop .
9. Run the tests: python runtests.py -v
Let me know which step causes problems!

Hi @mdhaber, the building step python setup.py build_ext --inplace  fails with the following error:

ld: in /Users/mloning/.conda/envs/scipy-dev/lib/python3.7/site-packages/numpy/core/lib/libnpymath.a(npy_math.o), could not parse object file /Users/mloning/.conda/envs/scipy-dev/lib/python3.7/site-packages/numpy/core/lib/libnpymath.a(npy_math.o): 'Unknown attribute kind (61) (Producer: 'LLVM10.0.1' Reader: 'LLVM APPLE_1_1<IP_ADDRESS>_0')', using libLTO version 'LLVM version 11.0.0, (clang-1<IP_ADDRESS>)' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: Command "gcc -bundle -undefined dynamic_lookup -L/Users/mloning/.conda/envs/scipy-dev/lib -arch x86_64 -L/Users/mloning/.conda/envs/scipy-dev/lib -arch x86_64 -arch x86_64 build/temp.macosx-10.9-x86_64-3.7/scipy/spatial/src/distance_wrap.o -L/Users/mloning/.conda/envs/scipy-dev/lib/python3.7/site-packages/numpy/core/lib -Lbuild/temp.macosx-10.9-x86_64-3.7 -lnpymath -o scipy/spatial/_distance_wrap.cpython-37m-darwin.so" failed with exit status 1

There's also an unanswered issue on SO.
Any idea how to fix that?

Hmm I'm not sure. You might try the mailing list, and mention that you're running into the same problem as that one on SO.

A copy of my mailing list message:
It looks like it's caused by the XCode you have installed being older than the one with which libnpymath.a (shipped with the numpy installed in your conda env). Upgrading XCode should fix it. However, it looks like you can't upgrade XCode to a recent enough version unless you're at least on macOS 10.15 (Catalina).
A workaround is to install an older numpy version to build against. 1.17.3 should work.
This should work:
conda create -n scipy-dev
conda activate scipy-dev
conda install numpy=1.17.3 cython pybind11 pytest
python setup.py develop

The conda-forge compilers indeed work fine. That should be our current recommendation I think:
conda create -n scipy-dev
conda activate scipy-dev
conda config --env --add channels conda-forge
conda install numpy cython pybind11 pytest compilers openblas
python setup.py develop

Thanks @rgommers and @isuruf - it now works!

So I've made the necessary changes to fix the remaining error. Tests are running now.
As far as I can see, the only thing that's no longer backward compatible is the default value for brack which changes from brack=(-2.0, 2.0) to brack=None.
Thanks again for your help with getting the SciPy dev version set up.

@rgommers i can update the guide. Does openblas need to be explicit?

@rgommers i can update the guide. Does openblas need to be explicit?

Sounds good. And yes, openblas needs to be explicit.

@mdhaber not sure if the failures are related to my changes and if there's anything else I can do 🙂

Could you help me with these failures? I'm not really sure if they're related to my changes and what I have to do to fix them. I'd love to get this merged, it's been open for a long time and think we're almost there!

Some of those failures weren't caused by this PR. There were other issues with master or our CI setup. I went ahead and committed the reference fix to re-run tests.

@mdhaber thanks - all tests pass now! I'm happy for this to be merged, and thanks again for your help for setting up SciPy locally.

I started to review more carefully, but before I go any further, I wondered - have you considered just allowing the user to specify the optimizer callable for both methods?
That is, rather than adding a ton of new parameters, including the confusing bounds when we have to maintain brack, have you considered adding only optimize_method?
As written, the PR refers to the scipy.optimize.minimize_scalar documentation frequently, and even recommends "For detailed control, use solver-specific options" - which can't be done without providing a custom callable, right?
So maybe the simplest and most powerful solution would be to accept just the custom callable and to carefully document how it's used, including an example. More careful documentation for the custom optimizer needs to be provided either way, so why don't we just stop there?

@mdhaber that's for the review. I'm not entirely sure what you have in mind. How would we specify the bounds if we only add optimize_method? brack and bounds refer to different things as far as I know. I'm happy for you to go ahead and make the suggested changes, exposing the underlying optimisation interface more seems like a good idea, but I'm not familiar enough with the code to implement it without further guidance.

Sure. Let me try explaining in more detail, and I'll write more complete code if need be.
Currently, your boxcox_normmax accepts several parameters, e.g. optimize_method, bounds, bracket, tol, and options only to pass them into minimize_scalar.
So, instead of accepting all of these parameters and passing them into minimize_scalar, the user would wrap their desired optimization method in a function with all these things already passed in, and they would simply pass this callable into boxcox_normmax as an optimizer argument.
For example, if the user wanted to use minimize_scalar(method='bounded') with their own bounds and tolerances, they would create a function like this:
def my_minimize(fun, args):
    method = "bounded"
    bounds = (-4, 4)
    options = {'xatol': 1e-8}
    return minimize_scalar(fun, args=args, method=method, bounds=bounds, options=options)

and call boxcox_normmax like:
boxcox_normmax(x, my_minimize)

The statement from the original code in boxcox_normmax that looked like:
return optimize.brent(_eval_mle, brack=brack, args=(x,))

Would instead look like:
if optimizer:
    return optimizer(_eval_mle, args=(x,))
else:
    return optimize.brent(_eval_mle, brack=brack, args=(x,))

(Except that it should probably have some error handling.)
Does that make sense?

Okay, thanks, that makes it much clearer. What about backwards compatibility? So would you deprecate the current brack argument?

No deprecation. Existing calls to the functions would work exactly as they have. Only if the user provides optimizer does anything change.

Hi @mloning looks like we were pretty close here. Are you able to finish it up?

Hi @mdhaber yes would love to finish this (had to focus on sktime and finishing my thesis in the last weeks), but should have a bit more time over the next weeks.

Hi @mdhaber, I had a first go at the suggested changes.
I'm unsure about input checks for the new optimizer input argument and about unit tests.
For input checks, we're currently only checking whether its a callable. Should we additional check that:

the return object of optimizer is an OptimizeResult instance (or some other convention)?
brack=None if optimizer is not None since it will be ignored?

For tests, we're currently only checking a particular optimizer function with multiple values for bounds.

This looks great!

Should we additional check that: the return object of optimizer is an OptimizeResult instance (or some other convention)?

Depends on what sort of error you naturally get if the return is not an OptimizeResult. What happens? If it's unintelligible, it would be nice to either check before assuming it is - or catch the exception - and raise something more helpful.

brack=None if optimizer is not None since it will be ignored?

Well, you say it will be ignored. Technically that is enough. But you could also raise an error or produce a warning. I get the impression that other developers might not agree with a warning in this case, so maybe error would be safest.

For tests, we're currently only checking a particular optimizer function with multiple values for bounds.

I think that's a good idea, but it would strengthen the test to make sure it does not do the same thing as calling without an optimizer argument. For instance, you could call first with optimize=None, check the result, then use a custom optimize with bounds that excludes the original result. Does that make sense?
One thing to add: example use to documentation.
Thanks!

FYI Installation and testing seems to work fine now, but I still ran into some issue when trying to import the development version of SciPy:

ImportError: dlopen(.../scipy/optimize/_nnls.cpython-38-darwin.so, 2): Library not loaded: /usr/local/opt/gcc/lib/gcc/9/libgfortran.5.dylib
Referenced from: .../scipy/optimize/_nnls.cpython-38-darwin.so
Reason: image not found

Not sure what the best way is to fix this. What seems to work for now, is to install gcc version 9 and sim-link the folder to the folder mentioned in the error message:
brew install gcc@9
ln -s<EMAIL_ADDRESS>/usr/local/opt/gcc/lib/gcc/9

Thanks @mdhaber - feel free to push directly to this branch if you can. Let me know if I should pick up any of the suggestions.

@mloning I can push directly to this branch, but instead I submitted mloning/scipy#1 so you can review the changes first. Please do check carefully before merging into your branch -  I can make mistakes!

@mdhaber I merged your PR, thanks for the careful review and changes.

@mdhaber I had a look at the error message from Circle CI but I'm not sure if this is related to our changes here.

I don't think so. It's been popping up everywhere lately. It might already be fixed, but there seem to be other failures on master now. I think we should wait and I'll re-run CI when things settle down. That might be next weekend - is that ok?

@mdhaber sounds good!

@mloning Another PR at scipy/mloning#2. If that looks good, please merge, and tests will re-run.

@mloning Does the purpose of the latest change make sense? I think that the new test would not have passed previously because the custom optimizer does not pass the arguments into the objective function. We could have stated in the documentation that the optimizer must pass args into the function, but I think this simplifies things a bit.
I'll go ahead and merge this in a week if we don't get any other feedback.

Yes, I agree. Thanks for the feedback throughout the process - I've learnt quite a bit!

@mdhaber shall we merge this now?
Would you be interested in adding other method arguments to boxcox_normmax beyond "mle" and "pearsonr", I'm thinking about "guerrero" in particular, but that may require additional input arguments (i.e. the seasonal periodicity of the data) (for more info, see https://github.com/alan-turing-institute/sktime/issues/778)?

@tupui would you be willing to take a look at this? The original idea was to add bounds on lmbda in boxcox_normmax. That turned into adding many other arguments to customize the optimization, each of which would simply be passed through to the optimizer. This would be simple, but it would essentially duplicate the interface of the minimize_scalar in this function, complicating the documentation and adding maintenance burden. It was suggested that the user could achieve all those things and more if we allow the user to pass in a callable to be used for the optimization, and that is what this PR does now. There is precedent for this (e.g. rv_continuous.fit), and I think we've done a decent job here at documenting the interface here. It looks like a pretty long PR, but there really isn't much change to the existing code; a lot of this is testing and documentation. I would merge it myself, but I thought it would be good to have another set of eyes on the interface before doing so.

Would you be interested in adding other method options...

Not personally, as I don't actually have experience with boxcox except for this PR. If other methods are popular and there is support from other users, it sounds like a reasonable idea.

@tupui would you be willing to take a look at this? The original idea was to add bounds on lmbda in boxcox_normmax. That turned into adding many other arguments to customize the optimization, each of which would simply be passed through to the optimizer. This would be simple, but it would essentially duplicate the interface of the minimize_scalar in this function, complicating the documentation and adding maintenance burden. It was suggested that the user could achieve all those things and more if we allow the user to pass in a callable to be used for the optimization, and that is what this PR does now. There is precedent for this (e.g. rv_continuous.fit), and I think we've done a decent job here at documenting the interface here (see rendered documentation). It looks like a moderately long PR, but there really isn't much change to the existing code; a lot of this is testing and documentation. I would merge it myself, but I thought it would be good to have another set of eyes on the interface before doing so.

Sure I can have a look! Lot of things today but might have some time tmr if I don't manage tonight.

Thanks @tupui. Whenever you have time for a more complete review is fine; thank you!

@tupui CircleCI doesn't merge master before building docs. Do you agree that's the cause of the doc failure? Do you want to see that green before merging?

Sure sure I saw the log. You can merge :)

Thanks @mloning, and thanks @tupui for the review!

Thanks @mloning, and thanks @tupui for the review!

Pleasure, feel free to ping me 😉

Thanks again @tupui and @mdhaber for the review and feedback!


benchmark function that gets code from file and input/expected from command args

use like: test/evmone-bench codefile.hex calldatahex expectedreturnhex
~/evmone/build# test/evmone-bench sha1code.hex 1605782b00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006010203040506  5d211bad8f4ee70e16c7d343a838fc344a1ed961000000000000000000000000 --benchmark_filter=bench_evm_code

Put the hex EVM code into an ascii file:
echo "608060405234801561001057600080fd5b506004361061002b5760003560e01c80631605782b14610030575b600080fd5b6100d66004803603602081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b604080516bffffffffffffffffffffffff199092168252519081900360200190f35b60006040518251602084019350604067ffffffffffffffc06001830116016009828203106001811461012957610130565b6040820191505b50776745230100efcdab890098badcfe001032547600c3d2e1f0610183565b60008383101561017c5750808201519282900392602084101561017c5760001960208590036101000a0119165b9392505050565b60005b8281101561045c5761019984828961014f565b85526101a984602083018961014f565b6020860152604081850310600181146101c1576101ca565b60808286038701535b50604083038114600181146101de576101ee565b8460031b60208701511760208701525b5060405b608081101561027157858101603f19810151603719820151601f19830151600b1984015118911818600181901b7ffffffffefffffffefffffffefffffffefffffffefffffffefffffffefffffffe16601f9190911c7c010000000100000001000000010000000100000001000000010000000116179052600c016101f2565b5060805b6101408110156102f557858101607f19810151606f19820151603f1983015160171984015118911818600281901b7ffffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffcfffffffc16601e9190911c7c030000000300000003000000030000000300000003000000030000000316179052601801610275565b508160008060005b60508110156104325760148104801561032d576001811461034e576002811461036d5760038114610391576103ac565b602885901c605086901c8118607887901c16189350635a82799992506103ac565b8460501c8560781c189350838560281c189350636ed9eba192506103ac565b605085901c607886901c818117602888901c169116179350638f1bbcdc92506103ac565b8460501c8560781c189350838560281c18935063ca62c1d692505b50601f8460bb1c168063ffffffe086609b1c1617905080840190508063ffffffff86160190508083019050808260021b8b015160e01c0190508060a01b8560281c179450633fffffff8560521c1663c00000008660321c161760501b77ffffffff00ffffffff000000000000ffffffff00ffffffff8616179450506001810190506102fd565b5050509190910177ffffffff00ffffffff00ffffffff00ffffffff00ffffffff1690604001610186565b5063ffffffff811667ffffffff000000008260081c166bffffffff00000000000000008360101c166fffffffff0000000000000000000000008460181c1673ffffffff000000000000000000000000000000008560201c161717171760601b94505050505091905056fea165627a7a72305820227af8b272b9b0e3d345f580ebcde55f50e3e8b7ecafabffcadb92e55e4de68e0029" \
> sha1code.hex

~/evmone/build# test/evmone-bench sha1code.hex 1605782b00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006010203040506  5d211bad8f4ee70e16c7d343a838fc344a1ed961000000000000000000000000 --benchmark_filter=bench_evm_code

Thanks @cdetrio,
I think this is really good idea to allow loading benchmark from files. I will try to integrate it soon.
What do you think about allowing loading all files from a directory and run all benchmarks?
I suppose it will also help @zac-williamson as he was adding his own benchmarks.
I should also allow running benchmarks from https://github.com/ethereum/aleth/tree/master/test/unittests/performance by @gcolvin.

Thanks @cdetrio, I missed this until @chfast mentioned me.  I would like to see those benchmarks too, as I've been using them for a while.  Do all tests have to be in hex?  Can we keep source around when we have it?

What do you think about allowing loading all files from a directory and run all benchmarks?

My benchmarking script already does them one by one, but this feature might be useful to somebody else.

I pushed some improvements:

the benchmark renamed to "external_evm_code",
the benchmark is registered only when proper args provided (still have to be filtered),
error is reported by benchmark library API,
the output check is removed from the benchmarking loop.

Let me know if this looks ok and works.

Codecov Report

Merging #3 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #3   +/-   ##
=======================================
  Coverage   93.37%   93.37%
=======================================
  Files           9        9
  Lines        1646     1646
  Branches      153      153
=======================================
  Hits         1537     1537
  Misses         67       67
  Partials       42       42

@cdetrio @chfast can this be merged so that we can refer to an evmone version in the benchmarking report?

👍


Update browser.ts

I only adjusted minor typing, imports and condition errors

Hi @o5maks, was this causing an issues or just some formatting fixes? I appreciate the work, but I generally avoid merging formatting-only changes to minimize unnecessary diffs and ensure that functional updates remain the focus of commits.


How do i infer the logs or tensorboard?

Hello @fcdl94, I really liked your research work, and I was trying to reproduce the results.
I tried for 19-1, 15-5, and 15-5s split on PASCAL VOC. The command shown below is for the 19-1 split.
Could you also please confirm whether these default settings are enough to reproduce the result in Table 1: Mean IoU on the Pascal-VOC 2012 dataset for different incremental class learning scenarios of your research paper?
#disjoint
python -m torch.distributed.launch --nproc_per_node=4 run.py --data_root /ssd_scratch/cvit/dksingh/ --batch_size 6 --dataset voc --name MiB --task 19-1 --step 0 --lr 0.01 --epochs 30 --method MiB --logdir /ssd_scratch/cvit/dksingh/mib_logs/
python -m torch.distributed.launch --nproc_per_node=4 run.py --data_root /ssd_scratch/cvit/dksingh/ --batch_size 6 --dataset voc --name MiB --task 19-1 --step 1 --lr 0.001 --epochs 30 --method MiB --logdir /ssd_scratch/cvit/dksingh/mib_logs/

#overlap
python -m torch.distributed.launch --nproc_per_node=4 run.py --data_root /ssd_scratch/cvit/dksingh/ --batch_size 6 --dataset voc --name MiB --task 19-1 --step 0 --lr 0.01 --epochs 30 --method MiB --logdir /ssd_scratch/cvit/dksingh/mib_logs/ --overlap
python -m torch.distributed.launch --nproc_per_node=4 run.py --data_root /ssd_scratch/cvit/dksingh/ --batch_size 6 --dataset voc --name MiB --task 19-1 --step 1 --lr 0.001 --epochs 30 --method MiB --logdir /ssd_scratch/cvit/dksingh/mib_logs/ --overlap

I was wondering on infering the tensorboard logs or the general log file

Hi @deepakksingh!
The command should be right and should be enough to reproduce it.
Do you mean how to infer the results from the tensorboard log?
The code adds a table on the tensorboard which contains the results after the last epochs.
You can find in TEXT/Results a table with four rows: Val-Acc, Val-IoU, Test-IoU, Test-Acc.
The reported results are the one in the line Test-IoU but removing the background from the average (since the background class is not a class of interest for the performance).
I hope of having understood the question, otherwise, please, can you clarify?

Thank you for your prompt reply.
I'm a bit confused while understanding the tensorboard logs.
I have attached the following screenshots for Disjoint 19-1 training
The all IoU of 67.4 is being found in the logs(stdout), and their classwise IoUs are also in the tensorboard logs.
May I know where do the IoUs 69.6 and 25.6 found in the tensorboard, or how do I calculate them?
Screenshot of the paper showing disjoint 19-1:

Result after step-1 of disjoint 19-1:

Tensorboard result after step-1 of disjoint 19-1:

Screenshot of the logs showing result after step-0 of disjoint 19-1

Yes, it may not be intuitive.
Actually, what I made to computed the partial mIoU (19-1 and 20) was making a Google sheet with all the per-class results and then averaging directly there.
It's perfectly fine, since mIoU is computed as a mean by classes.
However, you can see the mIoU for class 20 directly in the last column of the tensor board results after step 1. I must admin that you got 18.3 instead of 25.4 for it, so there may be some issue in the script you used to run it or it may be due to the variability of the 19-1 setting. Can you ran the 15-5 to check it is ok?

I'm attaching the screenshots for the 15-5 disjoint experiment on voc:
Screenshot with the highlighted region:

Tensorboard table after step-1 of disjoint 15-5 on voc for MiB:

List of class IoUs after step-1 of disjoint 15-5 on voc for MiB:

I got confused on finding 21 classes: class-0 to class 20
I believe with my experiment setting I'm having the following, Could you kindly confirm them.
For all : Reproduced: 65.2, Paper's: 64.7
I got confused while calculating 1-15 and 16-20, so as mentioned in the above image where the list of class IoUs are shown, I calculated the mIoU whose results are shown below:

mIoU of class 1-15
71.09
mIoU of class 16-20
42.6

mIoU of class 0-14
71.39
mIoU of class 15-19
48.88

The paper's results are 71.8 for class 1-15 and 43.3 for class 16-20.
So I believe the IoU calculation of the 1st row is correct, which can also mean that class 0  is unnecessary. Kindly confirm this too.
Thank you and sorry for bothering you this much.

Hi @deepakksingh!
Yes, you're correct. Class 0 (which is the background) has been excluded from the results.
The first way of calculating results is correct 1-15 for old and 16-20 new for the 15-1 and 15-5 settings, 1-19 for old and 20 for new in the 19-1.
Also from the all I excluded the background, so be sure that also the all is between 1-20, and not 0-20.
It's my pleasure to see people interested in this work, no bother at all :)
Let me know if now it's clear how to compute results 👍

Thank you so much for clarifying my doubts.
I'm currently reproducing results on ADE.
But I will close this issue for the time being.
PS: I really appreciate your codebase, it's very elegant.


[Feature]: make a separate page for html

Is your feature request related to a problem? Please describe.
just like we have a separate page for js https://www.nsccbpit.tech/js
make a separate page for html also
Describe the solution you'd like
No response
Describe alternatives you've considered
No response
Additional context
No response

Hey! I would like to work on this issue.

@bkpecho assigned you this issue

[Suggesstion] : there are no links to redirect to the JS page or the HTML page. And in the resource page, we have the web dev card. So, there can be link to the JS and HTML pages in the page that web dev card refers to. #75


Bug: Validation nested array throws exception

PHP Version
7.4
CodeIgniter4 Version
4.1.9
CodeIgniter4 Installation Method
Composer (using codeigniter4/appstarter)
Which operating systems have you tested for this bug?
Linux
Which server did you use?
apache
Database
MySQL 4.9
What happened?
    protected array $validationRules = [
        'customer_account_number'                 => [
            'label' => 'ACCOUNT NUMBER',
            'rules' => 'required|exact_length[5]',
        ],
        'debit_amount'                            => [
            'label' => 'DEBIT AMOUNT',
            'rules' => 'required|decimal|is_natural_no_zero',
        ],
        'beneficiaries_accounts.*.account_number' => [
            'label' => 'BENEFICIARY ACCOUNT NUMBER',
            'rules' => 'exact_length[5]',
        ],
        'beneficiaries_accounts.*.credit_amount'  => [
            'label' => 'CREDIT AMOUNT',
            'rules' => 'required|decimal|is_natural_no_zero',
        ],
        'beneficiaries_accounts.*.purpose'        => [
            'label' => 'PURPOSE',
            'rules' => 'required_without[beneficiaries_accounts.*.account_number]|min_length[3]|max_length[255]',
        ],
    ];

Case 1:
        $this->validation->setRules($model->getValidationRules());

        $data = [
             "customer_account_number" => "A_490",
             "debit_amount"            => "1500",
             "beneficiaries_accounts"  => [],
        ];

        if (! $this->validation->run($data))) {
            if ($this->validation->hasError())) {
                return $this->validation->listErrors();
            }

            return "Success";
        }

Case 2:
        $data = [
             "customer_account_number" => "A_490",
             "debit_amount"            => "1500",
             "beneficiaries_accounts"  => [
                 "account_1" => [
                     "account_number" => "A_103",
                     "credit_amount"  => 1000,
                     "purpose"        => "",
                ],
            ],
        ];

        if (! $this->validation->run($data))) {
            if ($this->validation->hasError())) {
                return $this->validation->listErrors();
            }

            return "Success";
        }

Case 3:
        $data = [
             "customer_account_number" => "A_490",
             "debit_amount"            => "1500",
             "beneficiaries_accounts"  => [
                 "account_1" => [
                     "account_number" => "A_103",
                     "credit_amount"  => 1000,
                     "purpose"        => "Personal",
                ],
                 "account_2" => [
                     "account_number" => "A_258",
                     "credit_amount"  => null,
                     "purpose"        => "A",
                ],
            ],
        ];

        if (! $this->validation->run($data))) {
            if ($this->validation->hasError())) {
                return $this->validation->listErrors();
            }

            return "Success";
        }

Steps to Reproduce
Case 1: validation throws an exception: Argument 1 passed to CodeIgniter\Validation\Rules::exact_length() must be of the type string or null, array given, called in .*/vendor/codeigniter4/framework/system/Validation/Validation.php on line 292.
Case 2:
beneficiaries_accounts.account_1.account_number validation successfully as expected
beneficiaries_accounts.account_1.credit_amount validation successfully as expected.
beneficiaries_accounts.account_1.purpose validation successfully as expected.
Case 3:
beneficiaries_accounts.account_1.account_number validation successfully as expected
beneficiaries_accounts.account_1.credit_amount validation successfully as expected.
beneficiaries_accounts.account_1.purpose validation successfully as expected.
beneficiaries_accounts.account_2.account_number validation successfully as expected.
beneficiaries_accounts.account_2.credit_amount validation successfully while value is null, and it's ignored required rule.
beneficiaries_accounts.account_2.purpose validation fails Purpose field must be at least 3 characters in length, and it's ignored required_without rule.
Expected Output
Case 1: expect validation fails without throws an exception
Case 3: validate each array separately
Anything else?
No response

@mostafakhudair

beneficiaries_accounts.account_2.purpose validation fails Purpose field must be at least 3 characters in length, and it's ignored required_without rule.

The error message seems to be expected behavior.
The purpose is A. So it is invalid.

@kenjis the required_without rule will not work if the field is specified with a wildcard (asterisk).
For a field with dot notation, the dot_array_search() helper will be called. https://github.com/codeigniter4/CodeIgniter4/blob/051a5780e2c95852249b59bfafa0a4c01512e5bc/system/Validation/Rules.php#L302
$data = [
    'a' => [
        ['b' => 1, 'c' => 2],
        ['c' => ''],
    ]
];

dd(dot_array_search('a.*.b', $data)); // 1

// Therefore, this test will fail.
$this->validation->setRules([
    'a.*.c' => 'required_without[a.*.b]',
])->run([
    'a' => [
        ['b' => 1, 'c' => 2],
        ['c' => ''],
    ]
]);

$this->assertSame(
    'The a.*.c field is required when a.*.b is not present.',
    $this->validation->getError('a.1.c')
);

@iRedds Thank you for explanation. I created an issue: #5942


Remove MPI awareness requirements from Temporary Directory Changer and Output Cache

#689 added some MPI awareness and barriers to a few commonly-used utility functions like the output cache and the directory changer. However, this has some unintended consequences when these utilities are being used by worker MPI nodes again and again in parallel. For example, if worker x has 10 tasks to do, all of which require tempdirs, and worker y has 5 tasks, then there will be 10 barrier calls in x and 5 in y, which will unsync the whole mpi space-time continuum and cause confusing, difficult-to-debug lockups while things deadlock waiting for barriers that are never going to arrive. .
Anyway we want to remove those waitAll calls and their underlying mpi.barrier calls from those utilities for this reason.
If they are truly necessary to solve issues we were searching for, we will need to design and implement non-global MPI solutions, which should hopefully be possible.

@mgjarrett @onufer Just FYI.


feat(i18N): update translation strings.

Update the translation for new strings.

Deploy preview ready!
Built with commit 057d31e2259321ab303b412dd35b53664b251010
https://deploy-preview-365--mcslite.netlify.com

Deploy preview ready!
Built with commit 057d31e2259321ab303b412dd35b53664b251010
https://deploy-preview-365--mcs-lite-ui.netlify.com

Deploy preview ready!
Built with commit 057d31e2259321ab303b412dd35b53664b251010
https://deploy-preview-365--mcs-lite-introduction.netlify.com


Unit converion from kg to punds and vice versa.

Fixes Issue🛠

Closes #17
Description👨💻
Swiftly convert weight from kgs to pounds and vice-versa.
Type of change📄

[] Bug fix (non-breaking change which fixes an issue)
[X] New feature (non-breaking change which adds functionality)

Checklist✅

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have added demonstration in the form of GIF/video file
[X] I am an Open Source Contributor

Screenshots/GIF📷

Pls resolve the conflicts @maadi7

hii @Rakesh9100, its resloved now. Please check.

Good, Merged!! Congrats on getting your PR merged to this repo under SWOC S4 🎉 @maadi7


beta/contrast maps for constant

Hello,
I am trying to write out a nifti-image for the contrast of the "constant" (i.e. the last regressor in the design matrix consisting of only ones). My code for the contrasts looks like this:
` z_map, t_map, eff_map, var_map  = fmri_glm.transform(contrast_val, contrast_name=contrast_id, output_z=True,  output_stat=True, output_effects=True, output_variance=True)
eff_map_image_path = path.join(target_dir, subjs[curr_sub] + '_' + contrast_id + '_eff_map_map.nii')
nib.save(eff_map, eff_map_image_path)   #and same for t_map, eff_map, var_map etc`
Looping this over my sample, I produce a lot of contrasts and their respective z-,t-, and eff-images that all look pretty reasonable. But the constant doesn't. In particular, my assumption was that the eff_map would correspond to the 'beta' images, and that the beta-image for the constant would represent basically the mean across time (although different packages use weird scaling that I don't fully understand). However, instead of finding values around 100, 400, or even 2000 (depending on the raw values from the scanner), the "eff_map" images for the constant have positive and negative values. Seems I doing something very wrong here, but I couldn't find a solution by going through the code. So basically the question is: does the eff_map represent what I think of as beta (or the contrast - which in case of the constant should be identical)? Is there anything else to consider (in setting up the fmri_glm i am setting standardize to False)?
Perhaps I should say that my ultimate goal is to extract data from ROIs (for which I'd want the interesting effect and the constant image), which I'd do via nilearn (and also 2nd level modeling using the mass-univariate example therein).
Thanks, Ralf.

Have you set percent_signal_change=False when instantiating the glm ?
Best,
Bertrand

that was it, sorry! I had missed that it is set true by default. Still not fully understanding all implications and minute differences between SPM and nistats, but results now look reasonable and the overall pattern between nistats and SPM looks very similar. Thanks for getting me back on track ...
Best,
Ralf


matlab plotly api version number updated

My PR for updating the plotly version number has succeeded. They're now at 2.2.7

Added a version check during imatlab_export_fig('fig2plotly').

@imatlab-helper closing under the assumption that the version check works for you but let me know if it doesn't.

I sadly haven't had time to test this yet, but will reply to this thread if it doesn't.

I finally got around to testing this. The version check does work.
However, I have a new problem with inline graphics that is preventing plotting in plotly that I'll post a new issue on (or follow-up on the other inline graphics thread).


Kruskal's MST

Submission Title
Kruskal's MST
Submission Type
Algorithm
Submission Description
Kruskal's algorithm finds a minimum spanning forest of an undirected edge-weighted graph. If the graph is connected, it finds a minimum spanning tree.
Contributors

[ ]  C++ -
[ ]  C -
[ ]  Python -
[ ] Java -
[ ] JavaScript -
[ ] TypeScript -
[ ] Golang -
[ ] Ruby -
[ ] Scala -

I can do it in C++, assign it to me

Hi, @ahampriyanshu . This is my first hacktoberfest request. I am interested in doing it in cpp. Could you please assign it to me.

Hey! Would be happy to do this in Python.

Hello @rohitbarvekar , I have already assigned @LDiazN in C++
Please opt a different language or issue

I would like to work on this issue. I can implement quicksort in c++, c and python also. Please allow me to work on this issue. I'll also add an explanation in my code.

I've already started working on C. Can you assign that to me?

Hello @ahampriyanshu, I want to contribute to this issue. I will implement Kruskal's algorithm in C++. Please assign it to me.

@ahampriyanshu ,  I would like to implement this in JAVA.

thanks @everyone :v:


search emails by "TO" - list all emails sent to certain address

Describe the solution you'd like
it would be nice to be able to search my mails by receiving mail addresses.
My Universitymailaccount is subscribed to a few mailing lists, and I would like to be able to filter by who mails where sent to.
Example:
<EMAIL_ADDRESS>Is a list which all students are subscribed to.
There are also lists for each faculty and the library and so on.
If there is a general issue to add features to the search, then I would like to link/mention this there. Please give me a hint :)

Duplicate of #1127


"Account Security Alert and Authentication Options"

User received an email regarding logging into their Customer.io account and is advised to change their password if they did not initiate the login. They are also provided with options to enable Two-Factor Authentication or Single Sign-On.

Summarized feedback from<EMAIL_ADDRESS>
User received an email regarding logging into their Customer.io account and is advised to change their password if they did not initiate the login. They are also provided with options to enable Two-Factor Authentication or Single Sign-On.


Add syntax highlight to the repodata example in README

Thanks @nicoddemus!

Thanks for the tool! 👍


Minor typo fixes

This should be a no-brainer. Cleaning up/ correcting some comments from my previous commits.

I'm digging it. Thank you!


feat: add new loadblancer controller

add loadbalacner resource types
add loadbalancer cotnroller
add loadbalancer nginx proxy controller
add loadbalancer ipvsdr provider controller

@kdada @ddysher review it please

split into multiple commits


error rendering jupyter notebook

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.63.2 Commit: 899d46d82c4c95423fb7e10e68eba52050e30ba3
OS Version: mac OS Monterey12.1 Apple M1

Steps to Reproduce:
1.brew install --cask visual-studio-code
2.install jupyter extension
3. Raise error

[Modified]
Result after running "extension bisect"

[ ]

This is fixed in the latest pre-release build of the Jupyter extension.

@greazer  I appreciate your support !! it works out! (c.f  Jupyter version v2021.11.1001550889 -> pre-release v2022.1.1001722501)


Is it actually possible to directly extract the decryption key from the msixvc file without going through the kernel bridge, registry or something like that?

The .msixvc file doesn't contain the decryption key, only its associated content id which is used to retrieve your game license from microsofts servers. While you could emulate the process of obtaining the license and parsing that directly to get the CIK (see my xvdtool fork for how to parse licenses), you'd still need your device key to decrypt/unwrap the actual CIK for which you need access to the registry anyway.

What's exactly the role of the device key in the decryption process?

The CIKs in the license are wrapped (AES Key Wrap, https://www.rfc-editor.org/rfc/rfc3394) using the device key, meaning that only the device whose device key matches the one used for wrapping can unwrap (= decrypt) the key and get the actual CIK.


replacing hardcoded patch.json with generated in runtime

https://github.com/ScienceSoft-Inc/k8s-container-integrity-mutator/pull/16


Ignore hidden folder (e.g. .git folder)

This addresses #26 which I think is very nice for those who want to keep the photos and metadata in their own Git repository.

I strongly agree this is needed.  This might be a better way to do it (puts it in the same place that directories starting wtih _ are handled/ignored):
diff --git a/expose.sh b/expose.sh
index 3aa8d3d..80ac6f5 100755
--- a/expose.sh
+++ b/expose.sh
@@ -239,7 +239,7 @@ do
        nav_name+=("$node_name")
        nav_depth+=("$node_depth")
        nav_type+=("$node_type")
-done < <(find "$topdir" -type d ! -path "$topdir*/_*" | sort)
+done < <(find "$topdir" -type d ! -path "$topdir*/_*" ! -path "$topdir*/.*" | sort)

 # re-create directory structure
 mkdir -p "$topdir/_site"


"coda client" command to add a new peer - Feature Request

Having to restart to add a new peer is cumbersome and causing downtime.
Request feature to add peers in "coda client".
"add-peer" would provide great benefit to the network as a standard feature.

Agreed, this would help to resolve connection issues by manually adding a peer.

Closing this issue as it is stale for a long time.


Error after renaming Item set (having annotations)

Error processing POST to http://portia-staging.scrapinghub.com/projects/14338/bot/fetch
with data {"spider":"startuphire","request":{"url":"http://www.startuphire.com/search/?keywords=Mobile&k=fa&location=NY"}}
The server returned error(Internal Server Error)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/base.py", line 824, in runUntilCurrent
call.func(*call.args, **call.kw)
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 382, in callback
self._startRunCallbacks(result)
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 490, in _startRunCallbacks
self._runCallbacks()
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/defer.py", line 577, in _runCallbacks
current.result = callback(current.result, *args, **kw)
---  ---
File "/app/slyd/slyd/bot.py", line 144, in fetch_callback
request.project, request.auth_info, params)
File "/app/slyd/slyd/bot.py", line 182, in create_spider
self.bot.runner.settings, **kwargs),
File "/app/slybot/slybot/spider.py", line 44, in init
instance.setup_bot(settings, spec, item_schemas, all_extractors)
File "/app/slybot/slybot/plugins/scrapely_annotations/annotations.py", line 59, in setup_bot
schema = items[itemclass_name]
exceptions.KeyError: u'startuphire_items'

Now the items get assigned an Id that won't change during it's lifetime, so renaming will not cause this problem.


RFC: unfixing

It'd be convenient to be able to unfix a parameter, I think it should satisfy the following:
unfix(p) = p
unfix(p::Fixed) = p.value

plus recursively applying unfix on nested structures, not quite sure what exactly that should look like, perhaps mapping on NamedTuple/Tuple/Dict?
What do you think ?

I think this would be helpful for the kinds of situations we discussed elsewhere. Specifically, when you want to optimise a subset of your parameters initially with a subset held fixed, and then optimise the remainder of your parameters once that initial optimisation has completed.
I would be interested in seeing a PR that does this -- would definitely want a worked example to shove in the readme too.


More Error Cleanup

We've seen a handful of issues for error message cleanup. Summarizing these here:
#520 - desc err when cannot connect to server
#147 - firewall error
#138 - repo name / pipeline conflicts / etc
#136 - fuse write error

Also we have some error strings that start with capitals which is against the go style guide so we should fix that as well.

Additionally ... going to update fuse to not report the FileNotFound errors to stdout ... those are confusing to users.


libvmi: introduce WithRunStrategy and prefer it over WithRunning in many tests

What this PR does
As we have a proposal to deprecate the running field (https://github.com/kubevirt/kubevirt/issues/11993)
Let's have some tests use run strategies instead of the running field via libvmi,
similarly to how we would also steer users towards the same direction.
Note we cannot simply abandon running (semver) and thus we will keep it in many test suites.
Storage tests were picked for some coverage of WithRunStrategy
since they're more of a "casual" user of the running/runstrategy API
(indifferent to the specifics of running vs runstrategy)
For more info about the reasoning for runstrategies:
https://kubevirt.io/user-guide/compute/run_strategies/

Fixes #
Why we need it and why it was done in this way
The following tradeoffs were made:
The following alternatives were considered:
Links to places where the discussion took place:
Special notes for your reviewer

Checklist
This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.

[ ] Design: A design document was considered and is present (link) or not required
[ ] PR: The PR description is expressive enough and will help future contributors
[ ] Code: Write code that humans can understand and Keep it simple
[ ] Refactor: You have left the code cleaner than you found it (Boy Scout Rule)
[ ] Upgrade: Impact of this change on upgrade flows was considered and addressed if required
[ ] Testing: New code requires new unit tests. New features and bug fixes require at least on e2e test
[ ] Documentation: A user-guide update was considered and is present (link) or not required. You want a user-guide update if it's a user facing feature / API change.
[ ] Community: Announcement to kubevirt-dev was considered

Release note

NONE

/cc @iholder101

/cc

/sig code-quality

just pushed a rebase

Hey @akalenyu!
Bear in mind that a similar PR is ongoing: https://github.com/kubevirt/kubevirt/pull/12029. For awareness to avoid you two working on the same code.

/test pull-kubevirt-e2e-k8s-1.30-sig-network
/test pull-kubevirt-e2e-k8s-1.30-sig-compute
/test pull-kubevirt-e2e-k8s-1.30-sig-compute-migrations
/test pull-kubevirt-e2e-k8s-1.30-sig-compute-serial
/test pull-kubevirt-e2e-k8s-1.30-sig-storage

/test pull-kubevirt-e2e-k8s-1.30-sig-storage

/test pull-kubevirt-e2e-k8s-1.30-sig-network
/test pull-kubevirt-e2e-k8s-1.30-sig-compute
/test pull-kubevirt-e2e-k8s-1.30-sig-compute-migrations
/test pull-kubevirt-e2e-k8s-1.30-sig-compute-serial
/test pull-kubevirt-e2e-k8s-1.30-sig-storage

/test pull-kubevirt-e2e-k8s-1.30-sig-network
/test pull-kubevirt-e2e-k8s-1.30-sig-compute
/test pull-kubevirt-e2e-k8s-1.30-sig-compute-migrations
/test pull-kubevirt-e2e-k8s-1.30-sig-compute-serial
/test pull-kubevirt-e2e-k8s-1.30-sig-storage

/test pull-kubevirt-e2e-k8s-1.30-sig-compute-migrations
unrelated

Interesting, I did not know I got promoted to approve other SIGs changes.
Anyway, placing a hold so @akalenyu can decide if he wants to take care of the comments.
/hold

Interesting, I did not know I got promoted to approve other SIGs changes.
Anyway, placing a hold so @akalenyu can decide if he wants to take care of the comments. Please unhold when you think it is ready.
/hold

I see that you are an approver for:

.golangci.yml
pkg/libvmi
tests

So everything seems to be working as it should.
@EdDev do I overlook something here or why do you think you might not be eligible for approval?

/hold cancel


DBClient integration tests for MySQL, MadiaDB, PostgreSQL and MS SQL

Added DBClient IT for more databases and JDBC drivers.
To run the tests, type:
cd <helidon_src>/tests/integration/dbclient
mvn clean install -D<db> -Pdocker -pl common,jdbc

Where

<helidon_src> is your Helidon source tree directory
and <db> is value from:

mysql
mariadb
pgsql
mssql

@romain-grecourt please check maven things and whether / how we can run this in our CICD environment
Theoretically every DB profile may run as parallel task.

@tomas-langer I did some changes in DbClientHealthCheck API. This needs to be checked.


⚠ Bofrost.be has degraded performance

In 4d0150f, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1696 ms

Resolved: Bofrost.be performance has improved in bd2889f.


Adding an os field to vsphere

rancher/dashboard#4859

@mantis-toboggan-md @codyrancher The backend PR has been merged. Can we get this PR reviewed asap?
cc: @Jono-SUSE-Rancher @luthermonson

cc: @gaktive as well


Crash when redeclaring a property from interface.

TypeScript Version:  3.5.1

Search Terms:
Debug Failure. Unhandled declaration kind! GetAccessor for
Debug Failure. Unhandled declaration kind! 159 for
Code
// A *self-contained* demonstration of the problem follows...
// Test this by running `tsc` on the command-line, rather than through another build tool such as Gulp, Webpack, etc.

export interface IHasAName {
  readonly name: string;
}

export class HasAName implements IHasAName {

  public readonly get name(): string {
    return 'foo';
  }

  constructor(
    public readonly name: string,
  ) {
  }

}

Expected behavior:
Should result in a duplicate-identifier error
Actual behavior:
tsc exits witout writing file and prints error to console
Debug Failure. Unhandled declaration kind! GetAccessor for { name: name; flags: Property|GetAccessor; declarations: GetAccessor,Parameter }

Playground Link:
https://www.typescriptlang.org/play/#code/KYDwDg9gTgLgBASwHY2FAZgQwMbDgSQAlMBnAQQDlMBbPAbwCg44phMATCJAGwE84kNYAC44JGFGQBzANwMAvgwahIsONm6kScYuSq1E1MN2C0U2oqUpC4jJnDABXAEbcE2Fm049+U4PEFaAAoASlFxSSQpW3tmVhhHKCQ4AHJ0CAgUuWZFe2wuCMdsGGgg2IcXNw9WDi4+ASFwiWkAGnsQmJylRSA
Related Issues:
https://github.com/microsoft/TypeScript/issues/31225
https://github.com/microsoft/TypeScript/issues/27352

Thanks for the simple repro!

I was not aware of the use of access keywords in the constructor arguments.  It appears the error only occurs if the getter is defined in the class before the regular parameter.
Fails:
interface IHasAName {
    readonly name:string
}
class HasAName implements IHasAName {
    get name() {
        return 'foo';
    }
    name:string
}

OK (gives Duplicate identifier error):
interface IHasAName {
    readonly name:string
}
class HasAName implements IHasAName {
    name:string
    get name() {
        return 'foo';
    }
}


Use a random UUID as 'request id'

This matches the other responses given by the API.

Codecov Report

Merging #29 into master will increase coverage by 0.43%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #29      +/-   ##
==========================================
+ Coverage   38.38%   38.81%   +0.43%
==========================================
  Files          21       21
  Lines         284      286       +2
  Branches        8       10       +2
==========================================
+ Hits          109      111       +2
  Misses        175      175

Impacted Files
Coverage Δ

...scala/me/snov/sns/response/SubscribeResponse.scala
54.28% <100%> (+1.34%)
:arrow_up:

Continue to review full report at Codecov.

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


Valid comments get high Spam values with default Spam settings

Example:
Comment Interesting. Like to know more on the process suitable for electro plating industry
Score type:"PROBABILITY" value:0.71243495
Comment Tempting. However, Chennai Udupi hotel dosai is the best
Score type:"PROBABILITY" value:0.93607247
Please let me know if you need more examples, there are many.
Maybe we need to adjust our settings?

Thanks! The current SPAM classifier is still very experimental and is not as good as I'd like it; it's trained on the NYT spam dataset, but the NYT doesn't get much spam because they have human reviewers examine all comments before they are published, so people don't bother trying to spam them much. if you have a dataset of real spam, that could be used to help train it further, and we'd welcome that. We're trying to create and collect more creative commons datasets to help build better models for this and other attributes to help online conversation. You can find our form for data contribution here: https://docs.google.com/forms/d/e/1FAIpQLScAivfFHiwq08JfsHuIkTbdECLK0nSmyBi4JMvaqDrom2aVQw/viewform?c=0&w=1


Function property issue

mujs:
> function myFunction (a,b,c) { return [a,b,c] };
> typeof myFunction
function
> typeof myFunction.name
undefined
> Object.getOwnPropertyNames (myFunction)
length,prototype

Chromium :
function myFunction (a, b, c) { return [a,b,c] }
myFunction(a, b, c) { return [a,b,c] }
Object.getOwnPropertyNames (myFunction)
["length", "name", "arguments", "caller", "prototype"]

So the function properties name, arguments and caller are are not implemented.

The function properties 'arguments' and 'caller' are deprecated and not allowed at all in strict mode. The property 'name' is not part of the language specification (though implemented by many interpreters).

Ok, I agree. But name would be nice to have ;-)


Issue23 read wav

Small changes to the readWav function to fix the detection of the header and the reading of the wav files.

I think this is now ready for merging, just finished applying the changes you proposed.


Support for Context API, initial support for useState and useReducer hooks

minor bugs with timejump. Issue between rendering Step 0 to Step 2 where Step 1 does not render

Wrong branch


Bluetooth: ascs: Invalid error code returned - expected Invalid ASE ID

Describe the bug
In the test case test_sink_ase_codec_configure_invalid_ase_id the ASE Control Operation is performed with ASE_ID that is set to the one that is not exposed on the server. The operation shall be rejected with Invalid ASE ID error  as per ASCS specification.
To Reproduce
Steps to reproduce the behavior:

fetch this PR: https://github.com/zephyrproject-rtos/zephyr/pull/55229
Run ./scripts/twister -v -T tests/bluetooth/audio/ascs --enable-valgrind
See error FAIL - [ascs_ase_control_test_suite.test_sink_ase_codec_configure_invalid_ase_id] duration = 0.000 seconds

Expected behavior
Test shall pass.

Closing as turned out I had typo in test code


⚠ Secret Website 3 has degraded performance

In d213f5d, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 2893 ms

Resolved: Secret Website 3 performance has improved in dc67242.


Elixir: Add defdelagate keyword and for function/module name

This is my first PR here. Hopeful that I've followed the guidelines properly!
This adds support for:

modules (aliased as class-name)
function names in definitions
defdelegate is added as a keyword

Here's a screenshot of the "module attributes" example with the module name and function name properly highlighted:

Thank you for contributing @matthewlehner!

Thank you for contributing @matthewlehner!


Error: Building package boost-test:x64-windows failed with: BUILD_FAILED

Error: Building package boost-test:x64-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: boost-test:x64-windows
Vcpkg version: 2020.02.04-nohash

C:\dev\vcpkg>.\vcpkg update
Using local portfile versions. To update the local portfiles, use git pull.
No packages need updating.
C:\dev\vcpkg>git pull
Already up to date.

Hi @moregion, thanks for reporting this issue!
Could you provide failure logs?
Thanks.

Hi.
The problem have been solved.
Thanks for your reply！

发件人：Jack·Boos·Yu<EMAIL_ADDRESS>发送时间：2020年2月17日(星期一) 21:55
收件人：microsoft/vcpkg<EMAIL_ADDRESS>抄　送：moregion<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>主　题：Re: [microsoft/vcpkg] Error: Building package boost-test:x64-windows failed with: BUILD_FAILED (#10093)
Hi @moregion, thanks for reporting this issue!
Could you provide failure logs?
Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hello @moregion ,
I actually have the same boost-test issue. May I ask how did you solve this issue? Thanks.


Android scene viewer animation speed slower

Description
When accessing a model from Android Scene Viewer, the animation seems twice slower than on other platforms (iOS quicklook usdz, desktop chrome etc...).
It was working some days ago, no animation speed problem. I suspect a bug in chrome 86 ?
Live Demo
https://prod.easytopia.app/experiences/thrillersuite
click "let's try" button
Version

model-viewer: v1.0.0
chrome: 86.0.4240.99
android: 10

Browser Affected

[x] Chrome
[ ] Edge
[ ] Firefox
[ ] IE
[ ] Safari

OS

[x] Android
[ ] iOS
[ ] Linux
[ ] MacOS
[ ] Windows

If it works in the 3D mode but not in SceneViewer AR, then it sounds like a SceneViewer bug rather than a Chrome bug: @tpsiaki. Can you check if ar-mode="webxr" works (you may also want to upgrade your model-viewer version)? That is the all Chrome path.

Was a SceneViewer issue. It is now fixed.


Fix polymer package name, appears to be case sensitive

I noticed, while following this guide, that the polymer install failed with a 404 on polymer-CLI but worked perfectly with polymer-cli.
$ npm install -g polymer-CLI
npm ERR! code E404
... etc
$ npm install -g polymer-cli
npm WARN deprecated<EMAIL_ADDRESS>🙌  Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update!
... etc

Appears to be lowercase on their guide: https://www.polymer-project.org/1.0/docs/tools/polymer-cli

Weird that I even put this in caps in the first place. Possibly some kind of auto-correct issue...


Adding footnotes to existing RichTextField features

The README implies to add features=["footnotes"] but doesn't give guidance on how to simply extend the list of already existing features.
Do I need to register a hook? Or do I write out the entire features list like:
RichTextField(features=["h1", "h2", "h3", "h4", "h5", "h6", "bold", "italic", "ol", "ul", "hr", "link", "document-link", "image", "embed", "footnotes"])

you could define this globally
# settings.py
WAGTAILADMIN_RICH_TEXT_EDITORS = {
    "default": {
        "WIDGET": "wagtail.admin.rich_text.DraftailRichTextArea",
        "OPTIONS": {"features": ["bold", "italic", "h3", "h4", "ol", "ul", "link", "footnotes"]},
    }
}

alternatively try adding your setting with default features, and do what you describe. It should work (note: haven't tried)
the DraftailRichTextArea widget does:
https://cs.github.com/wagtail/wagtail/blob/12ba7d8161a0055211541402f759f92acfbd0ba3/wagtail/admin/rich_text/editors/draftail/__init__.py?q=DraftailRichTextArea#L9 and https://cs.github.com/wagtail/wagtail/blob/12ba7d8161a0055211541402f759f92acfbd0ba3/wagtail/admin/rich_text/editors/draftail/init.py?q=DraftailRichTextArea#L33

Thank you!! Exactly the advice I was looking for :heart:
I'll try to make a PR with some README updates, don't close the issue yet :)

I was just checking if I can use get_default_features for RichTextField(features=...) but I don't think there's an easy way since it cannot be imported at model load time.
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

Fixed in #37


Improve functionality of the 'Contact Us' page

The 'Contact Us' page can be improved by adding a message length validation to ensure more detailed inquiries. Additionally, a confirmation message popup should be displayed after successful submission, enhancing user experience by providing immediate feedback.

Closed via #271


Add my first file

I have created a new branch, created a file, and made a commit!

what is this about my g

what if you contribute to my chatbot


Missing github tags

The package is at version 0.0.4 on pypi yet there is not a single tag on github.
Having tags helps with git blaming/etc, could you please add them?

Tags have been added: https://github.com/di/pip-api/releases


add a preloader

Hello @arghadipmanna101, can you please assign this issue to me under gssoc'24?

Hey there! I'm Ashutosh Kumar, a full-stack MERN web developer. With experience in numerous successful MERN stack  projects, I excel in  HTML, CSS,JavaScript,C, C++,jQuery, Node.js, React.js, Bootstrap, Tailwind, Express, MongoDB, API,GraphQL,WebRTC.
You can find me on LinkedIn : https://www.linkedin.com/in/ashutosh-kumar-60b262251/
GitHub : https://github.com/Ashutosh-0506.
Looking forward to contributing to GSSOC 2024!

Hi, @arghadipmanna101 can you please assign me to this issue,
my profile: https://www.linkedin.com/in/shuvangi-de-369071236/


Prepare loki usage demo

Context
Prepare a demo to show how to identify root cause of a given problem using Loki in the context of a Kubernetes component failing.
There is already great content we can re-use for general and basic LogQL understanding, so let's make sure our demo do not overlap with those and focus on a specific use-case.
We want to produce a short (under 10mn) recorded video.
Content

Scenario

Resolve an issue where a component fails (e.g. pod in CrashLoopBackoff state)
Showcase how to read logs from multiple components (e.g. errors from all VPA components)

Features

Grafana Explore

Formatting
Filter in/out on formatted fields
Pattern matching

Resources
Documentation:

https://intranet.giantswarm.io/docs/observability/loki-usage/
https://grafana.com/docs/loki/latest/logql/
https://github.com/giantswarm/loki-app/#links

Videos:

Query basics - https://www.youtube.com/watch?v=UiiZ463lcVA
Query performance tips - https://www.youtube.com/watch?v=YED8XIm0YPs
[advanced] Pattern parser - https://www.youtube.com/watch?v=zIdEVNA6YTI
Long and complete LogQL tutorial - https://www.youtube.com/watch?v=HDpE9v1Syz8

I reckon we have at least 3 different use cases:

searching for system (node) logs
searching for kube (pod) logs
searching for kube events

Would be nice to have an example for each.
And these examples would be useful to test all expected logs are collected well.

Here a logging demo scenario to be recorded as "short" video
# Logging demo

## Intro

* query builder vs code explorer
	* builder for discovery
	* code for advanced usage
* scrape job for logs type: pod, systemd, audit

## Show basic pods logs

	Scenario: Show basic pod logs, along with label filtering and formatting with logfmt

	* Build
		* use builder to show prometheus-operator warning logs
		* add label filters for prometheus-operator pod logs
	* Parse
		* use logfmt auto suggested parsers
		* show: line contains filter should comes first for performance reasons
	* Filter
		* add label filter level=warn
		* show: logs lines comes by default newest first oldest last

	# Get prometheus-operator-app-operator warning logs
	{cluster_id="gorilla", scrape_job="kubernetes-pods", app="prometheus-operator-app-operator"} | logfmt | level=`warn`

## Get kubelet errors from problematic node

	Scenario: Show systemd unit logs, advanced code filtering with regex, line formatting with json and log metrics

	* Build
		* use builder to show kubelet errors logs
		* add label filters for kubelet logs
		* show: prettyfy json for readability
	* Parse & format
		* parse with json
		* format line to show MESSAGE only
	* Filter
		* add regex to filter by error: ^E
		* ad-hoc statistics and UI fields filters to filter by node with most errors
		* show: context to explore sourrounding log lines

	# Get kubelet error logs
	{cluster_id="gorilla", systemd_unit="k8s-kubelet.service"} | json | line_format `{{.MESSAGE}}` |~ `^E`

	* switch to code explorer to build query for error rate per minute per node

	# Count kubelet error/minute on each node
	sum(count_over_time({cluster_id="gorilla", scrape_job="system-logs", systemd_unit="k8s-kubelet.service"} | json | line_format `{{.MESSAGE}}` |~ `^E` [1m])) by (node_name)

## Show audit logs

	Scenario: Show audit logs, advanced line formatting

	NOTE: Run manual kubectl commands to generate log entries

	* Build
		* use builder to show audit logs
	* Parse & format
		* parse with json
		* format line to show "time user verb resource"
	* Filter
		* Filter out system users

	# Show which user is doing what
	{cluster_id="gorilla", scrape_job="audit-logs"} | json | line_format "{{.requestReceivedTimestamp}} \t {{.user_username}}  \t  {{.verb}}  \t  {{.requestURI}}" | stage = `RequestReceived` | user_username!~`^system:.+|g8s.gorilla.eu-central-1.aws.gigantic.io`

Demo is out https://drive.google.com/file/d/1CikCLzhoj8h7P0OXSQ3J2YtUlGcLrG-6/view?usp=sharing and shared https://gigantic.slack.com/archives/C0601RK0URX/p1698665984310019


[docs] Fix typo

https://github.com/IDRnD/ReDimNet/blob/f9c3a4cd3f99f3339a3f34785dcfb7a47e015822/redimnet.py#L124
Comment is outdated (code below is for LayerNorm)

Fixed


remove link

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

aspnetcore/security/authentication/sociallogins.md
:white_check_mark:Succeeded

Details

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


el.clientWidth returns 0 in ref function.

Describe the bug
There is a code snippets.
When I try to get dom clientWidth in ref function. I found it always return 0.
Is the ref function called in a wrong time or I use it in a wrong way?
Thanks for help.
Your Example Website or App
https://codesandbox.io/p/devbox/u1in-issue-demo-hnj7r6?file=%2Fsrc%2Findex.tsx
Steps to Reproduce the Bug or Issue

Waiting for the log called in ref function. It shows 0.

Expected behavior
I expected el.clientWidth return the div's clientWidth as it shows but i got 0.
Platform
OS: Windows11
Browser: Chrome 120.0.6099.130
SolidJS Version: 1.8.8
Additional context
No response

From the docs  https://github.com/solidjs/solid-docs/blob/main/langs/en/api/api.md#ref

Refs are assigned at render time but before the elements are connected to the DOM.

So element.isConnected is false and doesn't have a clientWidth yet.

From the docs https://github.com/solidjs/solid-docs/blob/main/langs/en/api/api.md#ref

Refs are assigned at render time but before the elements are connected to the DOM.

So element.isConnected is false and doesn't have a clientWidth yet.

Thanks for your reply. Seems I do use the ref functions in a wrong way.

The ref function is called as soon as the actual element is created, you need to wait for it to be mounted using onMount
<div
    ref={(el: HTMLDivElement) => {
        onMount(() => {
            console.log(el.clientWidth);
        });
    }}
/>

Thanks for your reply. It helps me a lot.

Is there any other way to detect when element is in DOM? onMount calls the function before the component is inserted.

const [element, setElement] = createSignal()

createEffect(()=>{
    if(element() && element().isConnected){
        console.log('element is in the Document')
    }
})

<div ref={setElement}/>

Is there any other way to detect when element is in DOM? onMount calls the function before the component is inserted.

It shouldn't. Only if you are holding on to it and not inserting it. onMount doesn't fire until all rendering is done which means unless you are waiting to insert it to some later point it will be inserted at that point. If that isn't the case, this might be an indicator of different possibly more serious issue with your code. (like double rendering things that aren't being inserted etc).


Combine ILnRpcClient::route_htlcs() and ILnRpcClient::complete_htlc() using oneshot channels

Currently ILnRpcClient's API contract expects that the caller calls route_htlcs(), and subsequently calls complete_htlc() exactly once for each item produced by the returned stream. I believe the API is designed this way because it very closely mirrors LND's HTLC interception API. An API like this makes sense for LND since it operates over a network boundary and each bidirectional message is stateless (hence the need to provide identifying info in each response including the incoming channel ID, htlc ID, and payment hash to uniquely identify the HTLC). However, within a single binary this API contract is clunky for two reasons:

It requires copying identifying info from each incoming HTLC interception request into the response
It cannot enforce that each HTLC interception request is responded to exactly once

Both of these issues can be solved if we get rid of complete_htlc() and, for every incoming HTLC interception request, we call tokio::sync::oneshot::channel(), include the tokio::sync::oneshot::Sender in the stream item, and spawn a task that awaits the tokio::sync::oneshot::Receiver and responds accordingly to the underlying lightning node.

include the tokio::sync::oneshot::Sender in the stream item, and spawn a task that awaits the tokio::sync::oneshot::Receiver

Will you be persisting incoming payment attempts (either HTLCs in LNv1 or payments in LNv2)? Maybe I am misunderstanding, but if gatewayd crashes while it is processing an HTLC, how will you know to re-spawn the task that is waiting on the receiver?
My first reaction is this sounds like an implementation detail of LDK. I don't quite understand the benefits for refactoring this forLND

It might work, we just need to check with the LN impls. For CLN I know that it will send all the open HTLCs again after a restart. LND and LDK idk.

@tvolk131 Worth documenting in the code


publish error !

I can't find the reason for help！

Make sure to set the GITHUB_TOKEN environment variable before running electron-forge publish.

tks, i use auth-token fail, use GITHUB_TOKEN sucess！

--auth-token is being removed in v6 in favor of the environment variables.


Visualizing pose3d or smpl meshes on undistorted ego images

Hi Thanks for the great dataset. Following the instructions in VISUALIZE.md, I can successfully visualize the SMPL meshes on the fisheye ego views, e.g.

However, I wonder if there's a script to visualize them on the undistorted images, as in the video here?

Thanks for the reply.
-- Paul

Hey Paul,
This functionality is now supported. Please checkout Blender vis for SMPL.


10 Rep: Watch verzdesign.com

10 Rep requests the watch of the watch_keyword verzdesign\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

verzdesign\.com has been seen in 2 true positives, 0 false positives, and 0 NAAs.

Approved by tripleee in Charcoal HQ


Refactor code for readability.

Update code to use Java8 Streams. Broke main function into several
more readable functions. Added a line about Cloud Foundry to the README.
Updated pom.xml to target Java8

lgtm
Do we have any CI set up on this?

@colindean - no CI, but that would be awesome and should be 100% doable within Bluemix itself.  We just haven't had the time to fiddle with it.


Ingest and load local refcat demo gen3

Tutorial covering how to create a gen3 refcat and load it in butler I/O
Example dataset used is a healpixel from DELVE Dr1

@psferguson was it your intent to update DC2_refcat_loader_demo.ipynb in this PR? Seems cleaner to deal with it in #259

Good catch @kadrlica, I have updated to not include that file.
We should add the file /project/shared/data/delve_dr1/cat/cat_hpx_07798.fits to the IDF before merging this.


data.dmlc.ml redirect (security breach?)

Checking the broken links and found this really weird redirect for anything going to data.dmlc.ml
Goes to iyfnzgb.com... whois on this is hidden but other results indicate mal/adware.
URL -  https://mxnet.incubator.apache.org/model_zoo/index.html
Broken Links
─ http://data.dmlc.ml/mxnet/models/imagenet/caffenet/caffenet-symbol.json (HTTP_400)
─ http://data.dmlc.ml/models/imagenet/nin/nin-symbol.json (HTTP_400)
─ http://data.dmlc.ml/models/imagenet/squeezenet/squeezenet_v1.1-symbol.json (HTTP_400)
─ http://data.dmlc.ml/models/imagenet/vgg/vgg16-symbol.json (HTTP_400)
─ http://data.dmlc.ml/models/imagenet/vgg/vgg19-symbol.json (HTTP_400)
─ http://data.dmlc.ml/models/imagenet/inception-bn/Inception-BN-symbol.json (HTTP_400)
─ http://data.dmlc.ml/models/imagenet/resnet/152-layers/resnet-152-symbol.json (HTTP_400)
─ http://data.dmlc.ml/models/imagenet/resnext/101-layers/resnext-101-64x4d-symbol.json (HTTP_400)

@mli - you might want to check this out...

@mli told me that he doesn't own the domain name. Also, the domain name probably have expired. All links to data.dmlc.ml should be replaced.

dmlc links have been removed... domain is gone...


feat: dice roller chat

Roadmap:

[X] Basic Chat Functionality
[x] List of Connected Users
[x] Set Chat Display Name
[x] Re-use session (login name) backed by local storage
[x] Roll Dice Syntax (Backend): Similar to ROLZ e.g. [D20+1], [4D6], [3xD20], parse and roll dice on the backend
[x] Format Dice Roll result (Frontend)
[x] Dice Roll Sound
[x] New Message Sound
[x] Markdown Macro for Dice Rolling: It should be possible to embed dice rolling button/links in the markdown notes
[x] Markdown Notes for Players. Players should also be able to create macros for dice rolling, adding notes during the game is an additional benefit.
[x] Basic Dice Roll Instructions. People must know how to use this feature. We can add a simple toggle next to the textarea that will open a modal/window with instructions for the dice notation syntax.
[x] Figure out why the Chat is stuck sometimes after the window was inactive
[x] Send player count with mutation
[x] Dedupe multiple sessions with the same "credentials"
[x] use fp-ts/fp-io for verifying the user model in local storage
[ ] Improve Chat renderer (only fetch most recent items; remove old items from cache)

Stretch:

[ ] Animated Dice Rolling Would be nice to have this in here but it is probably something we ship in a version after 1.8 I decided to add this post 1.8

This PR also introduces a GraphQL Endpoint and adds Relay Client as a data fetching layer for all the frontend data. The old data fetching layers ("plain" fetch/ "plain" XMLHttpRequest) can be removed in the future be migrating existing REST endpoints into the GraphQL Schema.
So far I really like this will help building more type-safe features.

I will address Improve Chat renderer (only fetch most recent items; remove old items from cache) in a follow-up pull request


POST Search in MS v0.13.0

According to this PR, MeiliSearch is going to have a POST /indexes/:uid/search route. The GET is still there of course
How should we handle it in our SDKs?
I checked and Algolia only uses the POST one in their SDKs for the search method:

Ruby
PHP
Python
...

Two options:

Do the same as Algolia. The GET method for search should only be used in specific cases so MS needs to keep it but is way slower. See this discussion. Even Algolia warns us to us it.
As the GET method is used in really specific cases and might lead to performance issues, considering not to use it until a user asks for it could be an option.

Rename the search method into search_with_get and the new search method would use POST. However, it means duplicating the code and most of all, all the tests. It could be a little bit painful for nothing...

I have a preference for option 1: it involves less work until our users ask for it 🙂
What do you think @tpayet, @eskombro, @bidoubiwa?
NB: of course, the prototype for the search method will not change because of the POST usage, and will be as described in #28.

Mmmh.
The code for the post search must be done. In either cases. Neither the tests or the implementations exists and is too different from the get search.
The existing code for the get search works and its respective tests also works.
In which case the difference between option 1 and 2.
Option 1:

Code the search with post.
Make the tests for the search with post
Remove the tests and the old get search implementations

Option 2:

Code the search with post.
Make the tests for the search with post
Rename the old search to get_search (or whatever we decide)

The main work would potentially be during maintenance I guess.
I was going to say I prefered option 1. But after thinking about the changes needed I think option 2 and option 1 are the same amount of work.

The tests are already done, we are not changing the behavior of the method. So option 1 does not need to change anything in the tests suite.

Well the post method works a little differently than the get method. For example, facetFilters is not a string but a real array in the post method.
I feel like the work to make option 2 is anecdotique.

Copy pasting the tests and changing the name
Changing the actual search to get_search (or whatever the name)
Creating the post search

Option 1 does not require the first bullet point. Which does not seem like a lot of work. Maybe I'm missing something.

Well the post method works a little differently than the get method. For example, facetFilters is not a string but a real array in the post method.

For me it's not that hard to change. We had to adapt the code to pass it as a string... we can finally remove this part.

Maybe I'm missing something.

You forgot the maintenance, it means maintaining two functions with duplicated tests... Or we can create a function tool in our tests that runs both each time (for post and get), but it means creating this function = for each SDK, understanding how the tests framework works to create this tool. For one SDK it's ok, but for 8, that's significative work...
Same, maintaining duplicated tests for one SDK is ok, for 8 it's not the same...

We will have to maintain both methods unfortunately. At first we thought we would deprecate the GET search, but it is a feature that is still needed.
The GET search is not advised only when it comes to front-end integration because of CORS and pre-flight request. IMHO, we should go for solution 2, but keep in mind that the search route are of little use in back-end sdk but must be heavily tested on the JS sdk 😬

Ok, 2 people against 1, except if @eskombro strongly wants the option 1 (in this case let's discuss it in meeting maybe?) we will go with the option 2 🙂
@eskombro?

I am sorry to ask this but... why would the SDKs need to use the get route if we migrate everything to POST? Why can't we deprecate it (not for MS but for the SDKS)

Don't be sorry 😄 I let @tpayet or @bidoubiwa answering since I'm the one wanting the option 1 😇

I do prefer option 1, since I am actually not able to see a use-case that would 'need' to use GET over POST. And maintaining both doesn't make sense unless there is actually a use-case for it

From the discuss about deprecating GET https://github.com/meilisearch/discuss/discussions/47#discussioncomment-20870

The problem is that sites with many data and many searches with very different search configurations, notably App search in SaaS/B2C or e-commerce, can't use cache at all.
On the other hand, sites that use search for their website/documentation etc. Generally, don't use any search configuration; every configuration can be done on the backend side. In this case, it would be quite possible to hide the results of queries with a cache provider.
A cache provider cannot cache a POST query.
This means it would still require two routes to search and, therefore, duplicate code.
Why not, imagine in the future, if the need arises. A search request with a GET that can only receive the query parameter and have the client use this route automatically if there are no other options passed by the user.

So if someone uses a cache system in between the SDK and the MeiliSearch instance this would be an issue? In this case I'm afraid we are going to have to maintain both options.

Final decision:
Only the JS SDK will implement both functions with this prototype:
search(query, options={}, method='post')

Finally closing this issue!


Support for Anthropic vision

With the release of 3.5 Sonnet there are now a ton of use cases where Claude's vision capabilities exceed GPT-4(o). One example is visual matching between frontend code and a screenshot of the rendered website.
The docs currently mention that vision is only supported for OpenAI, I hope you will consider adding vision support for Anthropic.
Thank you!

Hi @rawwerks  This should just be a case of registering an implementation of message_to_anthropic_message for UserImageMessage, which can actually be done externally to magentic / without needing a new version, but of course should be added to magentic.
Here is the UserImageMessage message registration for message_to_openai_message.
https://github.com/jackmpcollins/magentic/blob/f0c2fce9cebc26dcc6d22d87f8b286abdb4e10fd/src/magentic/vision.py#L38-L55
and message_to_anthropic_message is here https://github.com/jackmpcollins/magentic/blob/f0c2fce9cebc26dcc6d22d87f8b286abdb4e10fd/src/magentic/chat_model/anthropic_chat_model.py#L69
With that implemented you should be able to use images with Anthropic models as shown for OpenAI in the docs here https://magentic.dev/vision/
Let me know if you run into any issues with this. I'd happily accept a PR to add this to vision.py so it works by default.

@mentatbot - here is the answer, can you make this a PR?

would using litellm address the vision discrepancy? (because presumably they've figured out how to unify anthropic vision with openai-style api calls.)

Support for Anthropic vision release now in https://github.com/jackmpcollins/magentic/releases/tag/v0.31.0


add unread badge to receipts line items

https://snabble.atlassian.net/browse/APPS-1023
Definition of Done

[x] Anforderungen erfüllt
[x] Deployment Target
[x] Home-Button vs. Face-ID Device (SafeArea Guides)
[x] Dark / Light Mode
[x] Product Owner Review

Put data cache files in the Library/Caches/ directory. Cache data can be used for any data that needs to persist longer than temporary data, but not as long as a support file. Generally speaking, the application does not require cache data to operate properly, but it can use cache data to improve performance. Examples of cache data include (but are not limited to) database cache files and transient, downloadable content. Note that the system may delete the Caches/ directory to free up disk space, so your app must be able to re-create or download these files as needed.

https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html
Wir sollten nicht .cachesDirectory für eine Persistierung in der App verwenden, da das System alle Daten in dem Ordner löschen könnte wenn der Speicherplatz benötigt wird.
Sollte ich es richtig verstehen sollten wir den Application Support Ordner verwenden.

c3d203a6cb4da31dde08885d4752624c6cbc0fae


Broken impersonate account flow

Hi team,
I found an permission issue when using impersonate account. I found that the reason is that the code does not pass the gcp_impersonation_credential at here when we try to generate the connection config again after we init the dbt runner

Hi @YungChunLu thanks a lot for raising the issue and providing clear information on how to fix it. We've
applied the fix in https://github.com/GoogleCloudPlatform/cloud-data-quality/pull/227 and included it in release 1.0.5.