Multiple nodes connection

I have my Raspiblitz up and running fine. Peers, channels, funding. Thank you for that.
I decided to run a second lnd node on my desktop. Installed and git it running. Peers, no channels yet, funding.
Both show up fine in RTL and i'm trying to open a channel between the two.
But - when I try to lookup the other node, I always receive an error. Doesn't matter if node1 looks up node2 or vice versa.
Any thoughts?
node1: Raspiblitz v1.3 with lnd v 0.90beta; bitcoin v0.18.1
node2: lnd v0,90-beta; bitcoin v0.18.1
(2 separate bitcoin)
Peer Lookup Failed
Code: 500
Message: error:unable to find node
Message: unable to find node
Code: 2
Url: ./api/lnd/network/node/03498c2308b2bc24457af7f82605a112186bdb40835e9283548b5b9b574b1bf84c

Ok, so I´'m facing the same problem! Runing 2 nodes Raspibolt and Raspiblitz, both on TOR, at home.
In RTL on the blitz i think it only sees me.  The Network tab show Network capacity 0 Number of nodes 1
On the raspibolt, RTL does see the network but when trying to add a peer I get "tor general error"
Not sure what I missed or screwed...

@talvasconcelos it looks like something with your TOR install went wrong. Can you go into "Services" or "Settings" and switch off TOR reboot and then witch on TOR again and reboot when installed. Then check the TOR monitor in the main menu.

OK, did that still can´t connect to network...
lncli --chain=bitcoin --network=mainnet connect 02c16cca44562b590dd279c942200bdccfd4f990c3a69fad620c10ef2f8228eaff@[2a01:4f8:c0c:7b31::1]:9735

RESULT (might have to wait for timeout):
[lncli] rpc error: code = Unknown desc = dial tcp [2a01:4f8:c0c:7b31::1]:9735: connect: network is unreachable```

can you check that that ne node that the node has Internet connection - run on terminal: ping <IP_ADDRESS> -c 1 -W 2

64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=116 time=78.1 ms

--- <IP_ADDRESS> ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 78.112/78.112/78.112/0.000 ms```

Node syncs bitcoin and has internet... it's LND that is not connecting, can´t figure out why. I´ve nano'd the bitcoin.conf and lnd.conf and it doesn´t have any tor entries. I'm comparing it with raspibolt's confs...

It's some weird rpc issue, I guess

The Raspiblitz puts the LND behind TOR with parameters given on the systemd service. If you deinstall TOR does the LND connect thru clear net?

While yu are still on TOR what does the "Monitor TOR Service" saying (MAIN MENU > TOR)

The Raspiblitz puts the LND behind TOR with parameters given on the systemd service. If you deinstall TOR does the LND connect thru clear net?

No, it still sptis out an error, [lncli] rpc error: code = Unknown desc = dial tcp [2a01:4f8:c0c:7b31::1]:9735: connect: network is unreachable

While yu are still on TOR what does the "Monitor TOR Service" saying (MAIN MENU > TOR)

11:43:47 [NOTICE] Have tried resolving or connecting to address '[scrubbed]' at 3 different places. Giving up.  /home/bitcoin/.nyx/config (see https://nyx.torproject.org/nyxrc.sample for
 │   its options).
 │ 11:43:39 [NOTICE] New control connection opened.
 │ 11:43:27 [NOTICE] New control connection opened from <IP_ADDRESS>. [1 duplicate hidden]
 │ 11:41:15 [NOTICE] Your network connection speed appears to have changed. Resetting timeout to 60s after 18 timeouts and 432 buildtimes.
 │ 11:41:12 [WARN] Intro point 4 at [scrubbed]: circuit is doing handshakes [1 duplicate hidden]
 │ 11:41:12 [WARN] Intro point 3 at [scrubbed]: no circuit
 │ 11:41:12 [WARN] Intro point 2 at [scrubbed]: no circuit [1 duplicate hidden]
 │ 11:41:12 [WARN] Intro point 1 at [scrubbed]: no circuit
 │ 11:41:12 [WARN] Intro point 0 at [scrubbed]: no circuit
 │ 11:41:12 [WARN] Service configured in [EPHEMERAL]:
 │ 11:41:12 [WARN] Intro point 4 at [scrubbed]: no circuit
 │ 11:41:12 [WARN] Intro point 3 at [scrubbed]: circuit is doing handshakes [1 duplicate hidden]
 │ 11:41:12 [WARN] Intro point 1 at [scrubbed]: circuit is doing handshakes [1 duplicate hidden]
 │ 11:41:12 [WARN] Intro point 0 at [scrubbed]: circuit is doing handshakes [1 duplicate hidden]
 │ 11:41:12 [WARN] Service configured in "/mnt/hdd/tor/lndrest8080fallback/":
 │ 11:41:12 [WARN] Intro point 2 at [scrubbed]: circuit is doing handshakes
 │ 11:41:12 [WARN] Service configured in "/mnt/hdd/tor/lndrpc10009fallback/":
 │ 11:41:12 [WARN] Hidden service wcmn2fk6q3h3hbsi exceeded launch limit with 10 intro points in the last 12 seconds. Intro circuit launches are limited to 10 per 300 seconds.
 │ 11:41:12 [NOTICE] Guard whatconfig ($9EB3FD84065E5622A57EFEF14E41A01B5B99A022) is failing more circuits than usual. Most likely this means the Tor network is overloaded. Success counts are
 │   129/185. Use counts are 127/127. 129 circuits completed, 0 were unusable, 0 collapsed, and 3 timed out. For reference, your timeout cutoff is 60 seconds.
 │ 11:41:04 [NOTICE] Bootstrapped 100% (done): Done
 │ 11:41:03 [NOTICE] Bootstrapped 95% (circuit_create): Establishing a Tor circuit
 │ 11:41:03 [NOTICE] Bootstrapped 90% (ap_handshake_done): Handshake finished with a relay to build circuits
 │ 11:41:03 [NOTICE] Bootstrapped 75% (enough_dirinfo): Loaded enough directory info to build circuits
 │ 11:41:03 [NOTICE] Bootstrapped 15% (handshake_done): Handshake with a relay done
 │ 11:41:03 [NOTICE] Bootstrapped 14% (handshake): Handshaking with a relay
 │ 11:41:03 [NOTICE] Bootstrapped 10% (conn_done): Connected to a relay
 │ 11:41:03 [NOTICE] Opened Control listener on /run/tor/control
 │ 11:41:03 [NOTICE] Opening Control listener on /run/tor/control
 │ 11:41:03 [NOTICE] Bootstrapped 5% (conn): Connecting to a relay
 │ 11:41:03 [NOTICE] Signaled readiness to systemd
 │ 11:41:03 [NOTICE] Starting with guard context "default"
 │ 11:41:01 [NOTICE] Bootstrapped 0% (starting): Starting

What kind of internet connection are you using, anything special that could interfere with TOR?
@Emzy do you have an idea what is happening here?

What kind of internet connection are you using, anything special that could interfere with TOR?
@Emzy do you have an idea what is happening here?

I'm using a DSL connection! Bellow is my router firewall settings. Just to be sure, if using TOR, no ports need to be open on the router, right?
BlockAll

  |   | Use this Security Level to block all traffic from and to the Internet. Game and Application sharing is not allowed by the firewall. |

  |   | Standard

  |   | Use this Security Level to allow all outgoing connections and block all incoming traffic. Game and Application sharing is allowed by the firewall. |

  |   | Disabled

  |   | Disable the firewall. All traffic is allowed to pass through your gateway. Game and Application sharing is allowed by the firewall.

 How do I configure the Blitz to connect from wlan?

To setup WIFI connection: https://stadicus.github.io/RaspiBolt/raspibolt_20_pi.html#prepare-wifi

It seems that the ipv6 address [2a01:4f8:c0c:7b31::1] is simply not reachable via Tor!
I tested it and I only can reach it via clear-net.
I'm not sure what the ipv6 exit node status on tor is. Best could be to use ipv4 addresses if possible.

It seems that the ipv6 address [2a01:4f8:c0c:7b31::1] is simply not reachable via Tor!
I tested it and I only can reach it via clear-net.
I'm not sure what the ipv6 exit node status on tor is. Best could be to use ipv4 addresses if possible.

 Even so, lncli getnetworkinfo gets me this:
{
    "graph_diameter": 0,
    "avg_out_degree": 0,
    "max_out_degree": 0,
    "num_nodes": 1,
    "num_channels": 0,
    "total_network_capacity": "0",
    "avg_channel_size": 0,
    "min_channel_size": "0",
    "max_channel_size": "0",
    "median_channel_size_sat": "0",
    "num_zombie_chans": "0"
}

It seems that the ipv6 address [2a01:4f8:c0c:7b31::1] is simply not reachable via Tor!
I tested it and I only can reach it via clear-net.
I'm not sure what the ipv6 exit node status on tor is. Best could be to use ipv4 addresses if possible.

 Even so, lncli getnetworkinfo gets me this:

You can try mine, it's on a hosted machine.
0215bea618806194ad88b80de8bc11c6391edb2fa1beeea6174305856596faeee8@<IP_ADDRESS>:9735

Ok, on response i get {} that's the expected response i guess?
Still getnetworkinfo:
{     "graph_diameter": 0,     "avg_out_degree": 0,     "max_out_degree": 0,     "num_nodes": 1,     "num_channels": 0,     "total_network_capacity": "0",     "avg_channel_size": 0,     "min_channel_size": "0",     "max_channel_size": "0",     "median_channel_size_sat": "0",     "num_zombie_chans": "0" }
and getinfo:
{     "version": "0.10.0-beta commit=v0.10.0-beta",     "commit_hash": "1a3194d302f33bb52823297d9d7f75cd37516053",     "identity_pubkey": "029c607d02e7c32adfb53a37f0a07d1e98de670bded096d56460d56c0ba66b6e3b",     "alias": "sparkBlitz",     "color": "#68f442",     "num_pending_channels": 0,     "num_active_channels": 0,     "num_inactive_channels": 0,     "num_peers": 2,     "block_height": 640560,     "block_hash": "000000000000000000021768da14325a8730a9de078e8af2508bfa22d1d38605",     "best_header_timestamp": "1595589631",     "synced_to_chain": true,     "synced_to_graph": false,     "testnet": false,     "chains": [         {             "chain": "bitcoin",             "network": "mainnet"         }     ],     "uris": [         "029c607d02e7c32adfb53a37f0a07d1e98de670bded096d56460d56c0ba66b6e3b@mww6cvetfb24ej6ckl42sqa5imqpyvzkpxwsumioax4uxbd6i4am7zqd.onion:9735"     ],     "features": {         "0": {             "name": "data-loss-protect",             "is_required": true,             "is_known": true         },         "5": {             "name": "upfront-shutdown-script",             "is_required": false,             "is_known": true         },         "7": {             "name": "gossip-queries",             "is_required": false,             "is_known": true         },         "9": {             "name": "tlv-onion",             "is_required": false,             "is_known": true         },         "13": {             "name": "static-remote-key",             "is_required": false,             "is_known": true         },         "15": {             "name": "payment-addr",             "is_required": false,             "is_known": true         },         "17": {             "name": "multi-path-payments",             "is_required": false,             "is_known": true         }     } }

Looks good.

Still getnetworkinfo
lnd needs to sync first. After that it should show something.

Looks good.

Still getnetworkinfo
lnd needs to sync first. After that it should show something.

it's syncing now... so, it wouldn't sync without connecting to a peer first? Why wasn't it connecting on boot as bitcoin does?
weird stuff, well for now it seems to be working, thanks, to @rootzoll and @Emzy for your help!

pls close this.


Error: The requested platform 'Nest-Cam' was not registered by any plugin.

Thanks so much for your time and for all the clear instructions you've given!
I have the 'Homebridge-nest-cam' plugin loaded, I followed your instructions and was able to obtain my access_token via Nest.  However, when I update my config.file with everything and try to load Homebridge, I get this:
Error: The requested platform 'Nest-Cam' was not registered by any plugin.
I removed the Nest-Cam code from my config file, removed the Nest-Cam plugin and then reinstalled and tried again, no luck.  What am I doing wrong?  Thanks again for all your work on this, can't wait to get it running.  Nest cams in Homekit is a long sought wish, as they're only sensors right now.  Thanks

Got it!  Uninstalled and reinstalled again. works perfectly!


Support for sdag entry method with rdma parameter

Original issue: https://charm.cs.illinois.edu/redmine/issues/1553

I tried adding rdma functionality to the receiveGhosts method in examples/charm++/load_balancing/stencil3d. The closure structure and the unmarshalling code weren't getting generated correctly as it treats the rdma param as a regular pointer instead of a CkRdmaWrapper.  SDAG support is something we ignored and didn't test in the generic layer patch.  This is more of a feature than a bug.

Original date: 2017-05-23 18:47:27

I have finished implementing the SDAG code for rdma entry methods. The usecase for this is the stencil3d example where receiveGhosts is written with ghosts being an rdma parameter.  I have written this example and it works when run without a load balancer. (i.e. without migration)
I am currently working on a migration related bug that I'm seeing when I run the stencil3d example with a load balancer. The bug occurs when the callback is not called in the iteration after the load balancing iteration for the migrated chare.
I am planning to commit the SDAG support code (xi) and migration example (stencil3d) as two separate commits.

Original date: 2017-05-29 17:19:19

This may be a rather naive question, but why is the receive side code (as suggested by the mention of closure and unmarshalling code) at all affected by the send-side RDMA? Shouldn't the method ultimately receive a CkMarshallMessage* as usual?

Original date: 2017-06-01 07:36:23

The receive side code changes because we need to follow the same order in unmarshalling as we did in marshalling i.e the numrdmaops is packed first, followed by the  rdmawrappers and then all the other parameters. The unmarshalling code should also follow this.
Additionally, the closure structure changes based on CMK_ONESIDED_IMPL (and so does its marshalling/unmarshalling code). It has num_rdma_fields and CkRdmawrappers when there is support and regular pointers otherwise.
Implementation : ~~https://charm.cs.illinois.edu/gerrit/#/c/2572/~~ https://github.com/UIUC-PPL/charm/commit/364594cab57ba5793d0571bf4f706140dc2cbdb8
I have also added a 'rdma' version of stencil3d that has both SDAG and migration. That is included in the patch.


When running Slap under Docker, text highlight follows mouse cursor even if mouse is not clicked.

Software:
Docker 1.9.1
Ubuntu 14.04 Docker Image
Slap 1.59
Node 5.3.0
Attached is a screenshot of the problem. When I open Slap on a file from within the Docker image, the text are highlighted following my mouse cursor. It is as if Slap is incorrectly assuming that my mouse left button is pushed down.
I am not sure if this is a Docker problem or Slap problem, any advice would be great.

Hey @askldjd,
Thanks for reporting this. What terminal emulator are you using? If it's GNOME Terminal, this may be an upstream issue: VTE, the library GNOME Terminal uses for rendering the terminal itself, is known to have some issues regarding mouse handling.
@chjj, any thoughts?
Similar issue: #159
Relevant source: https://github.com/slap-editor/editor-widget/blob/master/lib/Editor.js#L611-L655

Yes, I am using Gnome Terminal. If I am not in the Docker instance, I do not see an issue.


Multiple column toggles

Hi, is it possible with this library to have multiple column toggles?
For instance, say column one two and three all have columns a, b and c that should be hidden on default, but need to have toggleable visibility.
It seems that from the docs only one set of columns can be toggled, and only one toggle button can be included.

Hi! Could you elaborate a little on your problem? Do you mean you have a nested column setup?
W.r.t. the single columns question: currently a column manager only accepts a single column collection. That's correct. You can, however, create multiple managers + their respective controls.


Handle Transactions with multiple operations

So far we only handle one transaction result decoded from the input. Some transactions have multiple operation results eg tx Hash 0x6816d68d89d30129bf66fe93c03839a16955c7f4042deee09a249532bb109f9d on main net
https://api.etherscan.io/api?module=account&action=txlistinternal&txhash=0x6816d68d89d30129bf66fe93c03839a16955c7f4042deee09a249532bb109f9d
Will need a suitable UI maybe with a TX tree graph.

In this case, is transaction 0x6816 one that calls contract
0xa57bd00134b2850b2a1c55860c9e9ea100fdd6cf which internally did 2 Ether transfers?

Yes, see: https://etherscan.io/tx/0x6816d68d89d30129bf66fe93c03839a16955c7f4042deee09a249532bb109f9d

We should at least summarise all the outputs if there are side-effects not apparent from the transaction analysis. I will self assign this, but leave producing a transaction graph.


Update for current versions of Office

This seems to indicate that Office 2016 and 2019 are not supported as App-V packages, though the article as not been updated since August 2016. Can we get clarification on modern supported versions for App-V deployment and coexistence?

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

ID: 5519c29a-61b3-fa01-cdd7-c27608e28bd2
Version Independent ID: 3e0c7929-fb4a-6d7a-f995-37326d802f26
Content: Planning for Using App-V with Office
Content Source: mdop/appv-v5/planning-for-using-app-v-with-office.md
Product: w10
GitHub Login: @jamiejdt
Microsoft Alias: jamiet

Hello @CCDFischer, there is another article (up-to-date) that contains the same topics: Planning for deploying App-V with Office
Dear @e0i ,
could you please have a look? I think the original article should be deleted, as it contains outdated data only, and it could be replaced by article above
Thank you

Hello @CCDFischer  ,
The issue is being closed since your question seems to be answered. Feel free to re-open this issue if you feel that it hasn't been answered or that there are further suggestions to improve the documentation itself.
Thanks.


danger-packwerk does not add an inline comment on deprecated_references.yml under some circumstances

danger-packwerk tries to drop in an inline comment on the constant in a deprecated_refrences.yml file.
That constant is often part of the visible diff if the user is adding a new violation. However, if they are adding a new reference to an existing violation and there are enough existing referencing files to push that constant out of the diff, danger-packwerk will not post the inline comment (since Github does not permit inline comments on lines that are not part of the visible diff). As a result, it does not comment silently.
Here are some other possible solutions:

We could drop it as a comment on the top-level PR. I don’t love this solution though
If there are existing references to the constant, I can drop the comment on the first new file that references the constant, rather than on the constant itself. This is probalby the simplest solution.

Fixed by https://github.com/BigRails/danger-packwerk/pull/3


Webpacking assets

This PR provides an alternative way of compiling assets. Introducing Webpack, brings a wide spectrum of not only cutting edge features but also better support and ease adoption of many other libraries that we needed to hack with the current implementation of ESBuild in Hugo.
Note that Webpack won't replace completely ESBuild, it will remain as part of Hugo asset pipeline, since it can't be removed.
The structure of the project more or less looks like this:
├── archetypes
├── assets # where Hugo assets are managed by ESBuild
├── config.toml
├── content # where content markdown files are stored
├── data # ignored by git
│ └── manifest.js # this manifest file will wire the webpack hashed built assets
├── layouts
├── public # ignored by git; the final destination of the built project
├── src # Where Webpack assets source are placed
│ └── assets
│ └── js
│ └── scss
├── static # ignored by git; here is the place where the compiled assets are placed
│ └── js
│ └── scss
...
├── themes
...

When webpack compile
This PR also provides npm scripts to aid development and build the project:
npm run start

Will execute both webpack-dev-server that will provide a development version bundle with hot reload, and hugo serve
npm run build

Will build the final assets bundle, and content with hugo
Notes:

It adds extra steps and complexity that results in a slower building process. How much time it adds? It depends on the amount of code, plugins, settings, etc... But it will definitely be slower than plain ESBuild.
On the bright side, it brings an easier platform to build and adopt third party libs. Also features like module federation will provide a great option to share code/plugins with other projects a la "frontend miniservices".

One of the main reasons to choose Hugo is because it's fast, and one of the reasons why it's fast is because of ESBuild performance compared to webpack.
Do you have idea how big is going to be the impact of webpack, how much slow the build process will be?

Closing favouring https://github.com/3scale-labs/kamrad-shortcodes/pull/5


Libtorch  error: reference to ‘DeviceType’ is ambiguous

I am trying to build this project but getting following error:
In file included from /home/usman/programs/libtorch/include/ATen/MetaFunctions.h:6,                                                                                from /home/usman/programs/libtorch/include/ATen/NativeFunctions.h:6,
                 from /home/usman/programs/libtorch/include/ATen/TensorIndexing.h:11,
                 from /home/usman/programs/libtorch/include/ATen/ATen.h:20,
                 from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/types.h:3,                                                                                from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/data/dataloader_options.h:4,
                 from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
                 from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:3,
                 from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
                 from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/data.h:3,
                 from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/all.h:8,
                 from /home/usman/programs/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
                 from /home/usman/solo-deepsort/Tracking-Solov2-Deepsort/InstanceSegment/pipeline.h:18,                                                                                from /home/usman/solo-deepsort/Tracking-Solov2-Deepsort/InstanceSegment/infer.h:18,
                 from /home/usman/solo-deepsort/Tracking-Solov2-Deepsort/tracking.cpp:14:
/home/usman/programs/libtorch/include/ATen/TensorIterator.h: At global scope:
/home/usman/programs/libtorch/include/ATen/TensorIterator.h:200:3: error: reference to ‘DeviceType’ is ambiguous                                                                                200 |   DeviceType device_type(int arg=0) const { return device(arg).type(); }
      |   ^~~~~~~~~~
In file included from /home/usman/programs/TensorRT-<IP_ADDRESS>/include/NvInfer.h:54,
                 from /home/usman/solo-deepsort/Tracking-Solov2-Deepsort/InstanceSegment/common.h:41,
                 from /home/usman/solo-deepsort/Tracking-Solov2-Deepsort/InstanceSegment/infer.h:17,

Here's my environment:
Ubuntu 18.04
Cuda 10.2
Cudnn 8.2.1
Libtorch 1.8.2
TorchVision 0.9 compiled with Libtorch
TensorRT <IP_ADDRESS> installed via Tar package
gcc 9.4.0
CMake 3.20
OpenCV 3.4
Can you confirm if my environment is good? And if so, what may be the cause of this error?

yeah, the reason is that the TensorRT has the same name ‘DeviceType’ with Libtorch. You can add the namespace to fix it, such as modify ‘DeviceType’ to ‘at::DeviceType’ or  ‘torch::DeviceType’

Thank you for your response. I am a bit unfamiliar with using Libtorch and TensroRT together. Can you please be a more specific? Where do I define this namespace? Which file should I modify in Libtorch? Or is something I need to add in this repo's code? Relevant example code will be very appreciated.

I resolved the issue by searching DeviceType and replacing with c10::DeviceType in Libtorch include directory. I am not sure whether this is the most elegant solution out there, but here goes:
find ./ -type f -exec perl -pi -e 's/(?<!::)DeviceType::/c10::DeviceType::/g'  {} \;
find ./ -type f -exec perl -pi -e 's/(?<!::)DeviceType device_type()/c10::DeviceType device_type()/g'  {} \;
find ./ -type f -exec perl -pi -e 's/\(DeviceType /c10::DeviceType /g'  {} \;

yeah, the reason is that the TensorRT has the same name ‘DeviceType’ with Libtorch. You can add the namespace to fix it, such as modify ‘DeviceType’ to ‘at::DeviceType’ or ‘torch::DeviceType’

Is it possible for you to share your libtorch files, especially if you have modified it? The code did compile with above replacements, but I am facing runtime errors now :'( Thank you.

I have the same problem

yeah, the reason is that the TensorRT has the same name ‘DeviceType’ with Libtorch. You can add the namespace to fix it, such as modify ‘DeviceType’ to ‘at::DeviceType’ or ‘torch::DeviceType’

Is it possible for you to share your libtorch files, especially if you have modified it? The code did compile with above replacements, but I am facing runtime errors now :'( Thank you.

For example, the modified file TensorIterator.h as follows:
`#pragma once
#include <c10/util/FunctionRef.h>
#include <c10/util/SmallVector.h>
#include <c10/util/TypeCast.h>
#include <ATen/core/Range.h>
#include
#include <ATen/NamedTensorUtils.h>
#include <ATen/TensorMeta.h>
// TensorIterator is a helper class for element-wise operations, such as
// arithmetic, comparisons, and trigonometric functions. It handles
// broadcasting and type conversions of operands.
//
// This is inspired by NumPy's Array Iterator API (NpyIter).
//
// The files Loops.h and Loops.cuh provide functions to build kernels that
// use TensorIterator.
//
// Example:
//
//   auto iter = TensorIteratorConfig()
//     .add_output(output)
//     .add_input(input)
//     .build()
//
// [MyKernel.cpp / MyKernel.cu]
//   cpu_kernel(iter, [](float a, float b) {
//     return a + b;
//   });
//
//   gpu_kernel(iter, []GPU_LAMBDA(float a, float b) -> float {
//     return a + b;
//   });
//
// Note [Common Dtype Computation]
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Some operations have a natural notion of a "common dtype" or
//   "computation dtype" where all inputs are cast to one dtype, the
//   operation is performed, and then the results are cast to all outputs.
//
// TensorIterator infers a common dtype if all inputs have the same dtype,
//   and it computes one using type promotion rules on its inputs if
//   promote_inputs_to_common_dtype_ is true. Attempting to query
//   a common dtype otherwise will throw an exception.
//
// Note that the outputs are not considered when computing a common dtype.
namespace at {
namespace internal {
// This parameter is heuristically chosen to determine the minimum number of
// work that warrants parallelism. For example, when summing an array, it is
// deemed inefficient to parallelise over arrays shorter than 32768. Further,
// no parallel algorithm (such as parallel_reduce) should split work into
// smaller than GRAIN_SIZE chunks.
constexpr int64_t GRAIN_SIZE = 32768;
} // namespace internal
struct DimCounter {
DimCounter(IntArrayRef shape, Range range);
void increment(const std::array<int64_t, 2>& step);
bool is_done() const;
std::array<int64_t, 2> max_2d_step() const;
IntArrayRef shape;
Range range;
DimVector values;
int64_t offset;
};
struct TORCH_API OperandInfo {
using StrideVector = SmallVector<int64_t, 6>;
OperandInfo() {}
explicit OperandInfo(Tensor t) : tensor(std::move(t)) {
if (tensor.defined()) {
device = tensor.device();
target_dtype = tensor.scalar_type();
current_dtype = target_dtype;
}
validate();
}
/// Stride after broadcasting. The stride is in bytes, not number of elements.
StrideVector stride_bytes;
/// The tensor operand. Note that the strides, data pointer, and
/// other attributes may differ due to dimension reordering and
/// coalescing.
Tensor tensor;
// Save the original tensor operand in cases when an output is modified
// (e.g. if dtype is changed)
Tensor original_tensor;
/// The desired device and type for the operand. For inputs, this specifies that
/// the input should be converted to this type if necessary. For outputs, this
/// specifies which type to allocate. target_dtype and device are initialized with the dtype and device of the tensor
/// but during type promotion target_dtype value can become different from tensor's dtype
/// also, during type promotion target_dtype and device can be set for an undefined tensor so that tensor can be properly
/// constructed later.
Device device = kCPU;
ScalarType target_dtype = ScalarType::Undefined;
// Caches dtype of the tensor, because scalar_type is an expensive operation
// If dtype of the tensor is changed (e.g. as a result of type promotion or in allocate_outputs), this
//value should be changed too.
ScalarType current_dtype = ScalarType::Undefined;
bool is_type_defined() const { return target_dtype != ScalarType::Undefined; }
TensorOptions options() const {
return TensorOptions(target_dtype).device(device);
}
/// The data pointer. This may be different from tensor.data_ptr() if the
/// iterator is split.
void* data = nullptr;
bool is_output = false;
bool will_resize = false;
bool is_read_write = false;
void validate() {
TORCH_CHECK(
!tensor.defined() || tensor.layout() == kStrided,
"unsupported tensor layout: ", tensor.layout());
}
};
struct SplitUntil32Bit;
enum class FastSetupType : uint8_t {
NONE,
CONTIGUOUS,
CHANNELS_LAST,
NON_OVERLAPPING_DENSE
};
class TensorIteratorConfig;
struct TensorIterator;
struct TORCH_API TensorIteratorBase : public impl::MetaBase {
using DimMask = std::bitset<64>;
using PtrVector = SmallVector<char*, 4>;
using StrideVector = SmallVector<int64_t, 6>;
TensorIteratorBase();
void build(TensorIteratorConfig&);
// The inner-loop function operates on the fastest moving dimension. It
// implements element-wise operations in terms of 1-d strided tensors.
//
// Arguments:
//  data: data pointers for each operand (length ntensors)
//  strides: stride for each operand (length ntensors)
//  size: size of inner loop
//
// The size often matches shape[0], but may be smaller due to
// parallelization of the inner loop.
using loop_t = c10::function_ref<void(char** data, const int64_t* strides, int64_t size)>;
using loop2d_t = c10::function_ref<void(char** data, const int64_t* strides, int64_t size0, int64_t size1)>;
using loop_subiter_t = c10::function_ref<void(TensorIteratorBase& subiter)>;
void foreach_reduced_elt(loop_subiter_t loop, bool parallelize=true);
int ndim() const { return shape_.size(); }
IntArrayRef shape() const { return shape_; }
int64_t numel() const;
int ntensors() const { return operands_.size(); }
int noutputs() const { return num_outputs_; }
int ninputs() const { return ntensors() - noutputs(); }
IntArrayRef view_offsets() const { return view_offsets_; }
/// number of elements in the output operand. this is the same as numel() for
/// operations that are not reductions.
int64_t num_output_elements() const;
/// number of reduced dimensions in a reduction operation
int num_reduce_dims() const;
/// 1-dimensional iteration and no buffering or type conversion
bool is_trivial_1d() const;
/// Reducible to 1-dimensional and all operands are contiguous
bool is_contiguous() const;
bool is_dim_reduced(int dim) const;
/// Accessors for each operand
IntArrayRef strides(int arg) const { return operands_[arg].stride_bytes; }
void* data_ptr(int arg) const;
ScalarType dtype(int arg=0) const { return operands_[arg].current_dtype; }
ScalarType common_dtype() const {
TORCH_INTERNAL_ASSERT(common_dtype_ != ScalarType::Undefined, "Queried for invalid common dtype!");
return common_dtype_;
}
ScalarType input_dtype(int arg=0) const { return operands_[num_outputs_ + arg].current_dtype; }
Device device(int arg=0) const { return operands_[arg].device; }
at::DeviceType device_type(int arg=0) const { return device(arg).type(); }
int64_t element_size(int arg) const { return elementSize(dtype(arg)); }
bool is_scalar(int arg) const;
bool is_cpu_scalar(int arg) const;
const Tensor& tensor(int arg) const { return operands_[arg].tensor; }
Tensor& tensor(int arg) { return operands_[arg].tensor; }
Tensor output(int arg=0) const {
AT_ASSERT(arg < num_outputs_);
return operands_[arg].tensor;
}
// Copies from temporary outputs back to the original outputs
// NOTE: only used on CPU
void cast_outputs();
Tensor input(int arg=0) const {
AT_ASSERT(arg >= 0 && arg < ntensors() - num_outputs_);
return operands_[num_outputs_ + arg].tensor;
}
/// Removes an operand from this iterator
void remove_operand(int arg);
/// Shrinks an iterated dimension
void narrow(int dim, int64_t start, int64_t size);
/// Narrows every dim after and including start_dim to size one.
void select_all_keeping_dim(int start_dim, IntArrayRef starts);
/// Replaces the data pointer for the operand at index arg.
/// The new pointer should have the same sizes, strides and dtype as the
/// original
void unsafe_replace_operand(int arg, void* data);
/// Splits this TensorIterator into two iterators. Together they iterate over
/// the entire operation. Used by with_32bit_indexing().
std::unique_ptr split(int dim);
/// Returns the dimension with the largest extent: (size[dim]-1) * stride[dim]
int get_dim_to_split() const;
template
T scalar_value(int arg) {
auto& op = operands_[arg];
return c10::fetch_and_cast(op.tensor.scalar_type(), op.data);
}
void for_each(loop_t loop, int64_t grain_size = at::internal::GRAIN_SIZE);
void for_each(loop2d_t loop, int64_t grain_size = at::internal::GRAIN_SIZE);
void parallel_reduce(loop2d_t loop);
void serial_for_each(loop_t loop, Range range) const;
void serial_for_each(loop2d_t loop, Range range) const;
/// Create a strides array for a Tensor with shape of this iterator. The
/// parameter element_size specifies the size of Tensor's data type in
/// bytes (e.g. 4 for float)
StrideVector compatible_stride(int element_size) const;
/// Inverts the re-ordering done by reorder_dimensions. This can only be
/// called before coalesce_dimensions() is called.
DimVector invert_perm(IntArrayRef input) const;
/// Reapply same re-ordering as it is done by reorder_dimensions. This can
/// only be called before coalesce_dimensions() is called.
DimVector apply_perm_and_mul(IntArrayRef input, int mul) const;
/// Helper functions for CPU iteration
StrideVector get_dim_strides(int dim) const;
StrideVector get_strides() const;
StrideVector get_inner_strides() const { return get_dim_strides(0); }
PtrVector get_data_ptrs(ArrayRef<char*> base, IntArrayRef counter) const;
PtrVector get_base_ptrs() const;
/// true if the stride computation can use 32-bit arithmetic. Used by GPU kernels
bool can_use_32bit_indexing() const;
/// An "iteratable" object that recursively splits this iterator into sub-iterators
/// that can use 32-bit indexing.
SplitUntil32Bit with_32bit_indexing() const;
/// If the kernel should accumulate into the output. Only relevant for CUDA
/// reductions.
bool should_accumulate() const { return accumulate_; }
/// Whether this iterator produces the actual output,
/// as opposed to something that will be accumulated further. Only relevant for
/// CUDA reductions.
bool is_final_output() const { return final_output_; }
bool has_contiguous_first_dim() const {
int num_tensors = ntensors();
for (int i = 0; i < num_tensors; i++) {
if (strides(i)[0] != element_size(i)) {
return false;
}
}
return true;
}
void set_output(int64_t output_idx, IntArrayRef sizes, IntArrayRef strides, TensorOptions options, DimnameList names) override;
void build_binary_op(const Tensor& out, const Tensor& a, const Tensor& b);
protected:
// Mutable reference as it moves tensors out of TensorIteratorConfig
void populate_operands(TensorIteratorConfig&);
void mark_outputs();
void mark_resize_outputs(const TensorIteratorConfig&);
void compute_mem_overlaps(const TensorIteratorConfig&);
void compute_shape(const TensorIteratorConfig&);
void compute_strides(const TensorIteratorConfig&);
void reorder_dimensions();
void permute_dimensions(IntArrayRef perm);
void compute_types(const TensorIteratorConfig&);
ScalarType compute_common_dtype();
void allocate_or_resize_outputs();
bool fast_set_up(const TensorIteratorConfig&);
FastSetupType compute_fast_setup_type(const TensorIteratorConfig&);
void compute_names(const TensorIteratorConfig&);
void propagate_names_to_outputs();
void coalesce_dimensions();
protected:
/// Records the "computation" shape of the output tensor.  The computation
/// shape is different from the regular shape in a few ways:
///
///   - The shape may be permuted (via permute_dimensions) so that we
///     process the dimensions in the most computationally efficient order
///     (rather than the logical order given to us by the users.)
///   - The shape may have adjacent dimensions collapsed (via
///     coalesce_dimensions) so that we minimize the number of
///     dimensions we have to explicitly iterate over.  For example,
///     a pointwise operation on a contiguous tensor "computationally"
///     consists of only a single dimension.
///
/// In other words, the computation shape is the output shape as it
/// actually matters for implementing the kernel, but not necessarily the
/// output shape that the user will see in the end.
///
/// The lifecycle of mutations to shape_ in TensorIterator:
///   - declare_static_shape() sets an initial shape explicitly
///     provided by user, otherwise
///   - compute_shape() computes the true (non-computational) shape
///     specified by the user.
///   - reorder_dimensions() reorders dimensions to improve coalescing.
///   - coalesce_dimensions() then coalesces adjacent dimensions when
///     possible.
///
/// The shape may also be further modified if we create sub-TensorIterators,
/// e.g., via narrow or select_all_keeping_dim.
DimVector shape_;
/// Temporarily records the permutation computed by reorder_dimensions.
/// This permutation maps the computation output dimension (dim) to
/// the original true output dimension (perm_[dim]).  It is used by
/// invert_perm to undo the permutation.  After coalesce_dimensions is
/// called, the permutation is no longer valid (as, in general, there
/// is no permutation that will make computation dimensions to
/// output dimensions); methods that manipulate perm_ are obligated
/// to test that !has_coalesced_dimensions
DimVector perm_;
/// Has coalesce_dimensions() (or any moral equivalent, e.g., fast_build())
/// been called?  This is SOLELY used to check validity of perm_.
bool has_coalesced_dimensions_ = false;
/// The index offsets into the original tensors for each dimension.
/// This is only non-zero when you narrow() a TensorIterator (e.g.,
/// when you make sub-TensorIterators).
DimVector view_offsets_;
/// The computed names of the output tensor.  Computed by compute_names()
NameVector names_;
/// The operands of the TensorIterator: both the inputs and outputs.  The
/// outputs MUST come first in the operands_ list.  There is always an
/// operand for each output of the TensorIterator, even if TensorIterator
/// will ultimately be responsible for allocating the output; in those
/// cases, tensor is simply undefined (and will be populated later
/// during build()).
///
/// This list is initially populated prior to build(), but build() mutates
/// OperandInfo to populate more information.
SmallVector<OperandInfo, 4> operands_;
/// Number of outputs in operands_ (the length of the outputs prefix
/// in operands_).
int num_outputs_ = 0;
/// Whether or not all operands have the same shape.  Having all the same
/// shape affects whether or not the iterator is eligible for fast setup.
bool all_ops_same_shape_ = false;
/// The "computation" dtype of TensorIterator, specifying what the dtype
/// we will do the internal computation in TensorIterator.  Typically,
/// this matches the dtype of the output tensors, but not always!
ScalarType common_dtype_ = ScalarType::Undefined;
/// Set by split(), see should_accumulate() and is_final_output()
bool accumulate_ = false;
bool final_output_ = true;
// From TensorIteratorConfig
bool is_reduction_ = false;
/// Set by populate_operands(), says if we're handling meta tensors
bool is_meta_ = false;
};
struct TORCH_API TensorIterator final : public TensorIteratorBase {
TensorIterator() : TensorIteratorBase() {}
// Slicing is OK, TensorIterator guaranteed NOT to have any fields
TensorIterator(const TensorIteratorBase& iter) : TensorIteratorBase(iter) {}
static TensorIterator binary_float_op(Tensor& out, const Tensor& a, const Tensor& b);
static TensorIterator binary_op(Tensor& out, const Tensor& a, const Tensor& b);
static TensorIterator comparison_op(Tensor& out, const Tensor& a, const Tensor& b);
static TensorIterator unary_op(Tensor& out, const Tensor& a);
static TensorIterator unary_float_op(Tensor& out, const Tensor& a);
static TensorIterator nullary_op(Tensor& out);
static TensorIterator reduce_op(Tensor& out, const Tensor& a);
static TensorIterator reduce_op(Tensor& out1, Tensor& out2, const Tensor& a);
const Tensor& maybe_get_output(int64_t output_idx) override;
void set_output(int64_t output_idx, IntArrayRef sizes, IntArrayRef strides, TensorOptions options, DimnameList names) override;
};
class TORCH_API TensorIteratorConfig final {
public:
friend struct TensorIteratorBase;
friend struct TensorIterator;
TensorIteratorConfig() {}
C10_DISABLE_COPY_AND_ASSIGN(TensorIteratorConfig);
/// Construction
TensorIteratorConfig& add_output(const Tensor& output);
TensorIteratorConfig& add_input(const Tensor& input);
// Sets the check_mem_overlap_ flag, which is true by default.
// If true, inputs are checked for partial overlap with the outputs and
// outputs are checked for internal overlap (e.g. broadcasted views). An error
// is raised if unacceptable overlap is detected.
// If you're migrating an existing operator to using TensorIterator, please
// consider if the previous implementation checked memory overlap. If it did
// not, and if the operator is idempotent (for example, Tensor.fill_(0)), then
// checking memory overlap is BC-breaking. Please don't check memory overlap
// in that case.
TensorIteratorConfig& set_check_mem_overlap(bool check_mem_overlap);
// Sets the check_all_same_dtype_ flag, which is true by default
// If true, checks that all inputs and defined outputs have the same dtype
// Setting either of promote_inputs_to_common_dtype_
//   or cast_common_dtype_to_outputs_ to true will set
//   check_all_same_dtype_ to false.
TensorIteratorConfig& check_all_same_dtype(const bool _check_all_same_dtype);
// Sets the check_all_same_device_ flag, which is true by default
// If true, all operands must be on the same device, with the possible
//   exception of CPU scalars, which can be passed to some CUDA kernels
//   as kernel arguments.
TensorIteratorConfig& check_all_same_device(const bool _check_all_same_device);
// Sets the enforce_safe_casting_to_output_ flag, which is false by default
// If true, the iterator's "common dtype" must be computable
//   (see the [Common Dtype Computation] note) and
//   canCast(common dtype, output dtype) must be true for all outputs.
TensorIteratorConfig& enforce_safe_casting_to_output(const bool _enforce_safe_casting_to_output);
// Sets the promote_inputs_to_common_dtype_ flag, which is false by default
// If true, the iterator's "common dtype" is always computed (see the
//   [Common Dtype Computation] note) and, on the CPU, temporary copies of
//   the inputs in the common dtype are passed as the actual inputs to
//   the operation.
// Setting this flag to true sets check_all_same_dtype_ to false.
TensorIteratorConfig& promote_inputs_to_common_dtype(const bool _promote_inputs_to_common_dtype);
// Sets the promote_integer_inputs_to_float_ flag, which is false by default
// NOTE: If set to true, the promote_inputs_to_common_dtype_ must also be true.
// If true, if the iterator's "common dtype" is an integral type (including bool)
//   then it is changed to the default float scalar type.
TensorIteratorConfig& promote_integer_inputs_to_float(const bool _promote_integer_inputs_to_float);
TensorIteratorConfig& is_reduction(const bool _is_reduction);
TensorIteratorConfig& allow_cpu_scalars(const bool _allow_cpu_scalars);
// Sets the cast_common_dtype_to_outputs_ flag, which is false by default
// If true, the iterator's "common dtype" must be computatable
//   (see the [Common Dtype Computation] note) and, on the CPU, temporary
//   copies of the outputs are passed as the actual output to the operation.
//   These temporaries are then copied to the original outputs after
//   the operation is performed (see cast_outputs()).
// Setting this flag to true sets check_all_same_dtype_ to false.
TensorIteratorConfig& cast_common_dtype_to_outputs(const bool _cast_common_dtype_to_outputs);
TensorIteratorConfig& resize_outputs(bool resize_outputs);
// Bypass output dtype/device computation and fix the dtype/device as specified here.
TensorIteratorConfig& declare_static_dtype_and_device(ScalarType dtype, Device device);
TensorIteratorConfig& declare_static_shape(IntArrayRef shape);
TensorIteratorConfig& declare_static_shape(IntArrayRef shape, IntArrayRef squash_dims);
// It would be better if this was && qualified, but this would be at the cost
// of a lot of boilerplate above
TensorIterator build() {
TensorIterator iter;
iter.build(*this);
return iter;
}
private:
SmallVector<Tensor, 4> tensors_;
int num_outputs_ = 0;
int num_inputs_ = 0;
c10::optional static_shape_ = c10::nullopt;
c10::optional<std::pair<ScalarType, Device>> static_dtype_and_device_ = c10::nullopt;
bool check_mem_overlap_ = true;
bool allow_cpu_scalars_ = false;
bool is_reduction_ = false;
bool resize_outputs_ = true;
bool check_all_same_dtype_ = true;
bool check_all_same_device_ = true;
bool enforce_safe_casting_to_output_ = false;
bool promote_inputs_to_common_dtype_ = false;
bool promote_integer_inputs_to_float_ = false;
bool cast_common_dtype_to_outputs_ = false;
};
/// A container-like struct that acts as if it contains splits of a
/// TensorIterator that can use 32-bit indexing. Taken together the splits cover
/// the original TensorIterator.
struct TORCH_API SplitUntil32Bit {
struct TORCH_API iterator {
iterator() {};
iterator(const TensorIteratorBase& iter);
iterator(iterator&&) = default;
// Guaranteed to be a TensorIterator proper!
TensorIterator& operator*() const;
iterator& operator++();
bool operator==(const iterator& other) const {
  // two iterators are equal if they are the same object or they're both empty
  return this == &other || (vec.empty() && other.vec.empty());
}
// needed for C++11 range-based for loop
bool operator!=(const iterator& other) const { return !(*this == other); }

/// stack of TensorIterators to be split
std::vector<std::unique_ptr<TensorIterator>> vec;

};
SplitUntil32Bit(const TensorIteratorBase& iter) : iter(iter) {}
iterator begin() const;
iterator end() const;
private:
const TensorIteratorBase& iter;
};
}  // namespace at
`


Is there any way to customize errors?

For instance, say I would like to validate an input to ensure it's 6 digits. If it doesn't match, I'd like to be able to return an error message to the client, something other than "Internal Server Error Occurred".

SPQR doesn't deal with errors at all - it only generates the schema for you and errors are an execution-time thing.
If you thow an exception from a resolver method, you'll receive it in the ExecutionResult. It's up to the ExecutionStrategy to wrap it into a GraphQLError and up to you to send it to the client or not.
Are you maybe using graphql-java-servlet? That could be why you're getting a generic error, as the servlet has its own logic for deciding what messages should be obscured.

Valid point. Thank you!

Cheers, glad to help :)


Core training Error: Device or resource busy

Rasa version:
Docker rasa_core:latest
Python version:
Docker rasa_core:latest
Operating system (windows, osx, ...):
Docker on macOS
Issue:
Training the core fails with the following error if there is already a model present:
2019-05-09 22:43:00 INFO     rasa.core.agent  - Model directory models exists and contains old model files. All files will be overwritten.
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/app/rasa/core/train.py", line 246, in <module>
    main()
  File "/app/rasa/core/train.py", line 232, in main
    additional_args))
  File "uvloop/loop.pyx", line 1451, in uvloop.loop.Loop.run_until_complete
  File "/app/rasa/core/train.py", line 168, in do_default_training
    kwargs=additional_arguments)
  File "/app/rasa/core/train.py", line 91, in train
    agent.persist(output_path, dump_stories)
  File "/app/rasa/core/agent.py", line 652, in persist
    self._clear_model_directory(model_path)
  File "/app/rasa/core/agent.py", line 638, in _clear_model_directory
    shutil.rmtree(model_path)
  File "/usr/local/lib/python3.6/shutil.py", line 490, in rmtree
    onerror(os.rmdir, path, sys.exc_info())
  File "/usr/local/lib/python3.6/shutil.py", line 488, in rmtree
    os.rmdir(path)
OSError: [Errno 16] Device or resource busy: 'models'

Afterwards the directory is empty and running the same command again gives correct output.
Content of configuration file (config.yml):
default used
Content of domain file (domain.yml) (if used & relevant):
example from the docs used

it's probably to do with how/where your models directory is mounted. In any case, I'd suggest you use a stable docker image, rather than the latest.

I’ve tried with stable versions (0.13.x and 0.14.x). That gives the same error.
I’ve mounted the volumes as indicated in the docs.

I've tried on macOS and a freshly installed Ubuntu VM. The error pattern is always the same: No error when the folder is empty, Error when there are files in the folder already.


Hello,
do you have further information about your issue? A trace log?
Are you sure that your token is correct?
Thank you.


WIP: for debug only for bond XDP issue

- What this PR does and why is it needed

- Special notes for reviewers

- How to verify it

- Description for the changelog

cc'd @tohojo

/retest

/retest

/retest

/retest

/test ingress-node-firewall-e2e-metal-ipi

/lgtm


GcodeStreamer- is a programm that can stream Gcode to some CNC machin…

Added project called GcodeStreamer. It was made with Windows Forms and can stream Gcode to some CNC machines

Commit from AlexPC#2 successfully merged!


ReaderObservable added

This is mainly a port of the ReaderTask from fp-ts.
I also added MonadObservable to provide fromObservable.

Done

Thanks @mlegenhausen, going to release v0.6.6 asap

Released

@gcanti thanks!


List of error states for trouble-shooting doc/health checks

I'd like to start compiling a list of potential error states to be used both for trouble-shooting documentation and that I can surface in the UI. So each problem should have the user-visible symptoms, some way of detecting the issue progamatically, along with a simple suggestion for how to start debugging/fixing the issue (and maybe a link to a GH issue if we think it's something we should be adding code to fix). This is obviously going to be an ever-growing list
eg of a specific problem i just ran into:
Problem: No workers scheduled for a Pipeline
Symptom(s): Job runs indefinitely
Programmatic Check: each pipeline should have an rc, service, and at least one pod
Suggested Fix: Restart kubernetes
Other problems (that I don't have specific examples of):

hardware stuff

can't schedule
can't download image
can't download data
disk full (likely could show up in a number of ways)

pachd disappears
kubernetes disappears
job failures

someone updates a pipeline and the new code is crashing or buggy. takes out a whole section of the dag
something about the data you're ingesting changes

symptom: a job that was running fine before starts failing with new data
show which initial input to the system caused the failure

pachd server getting over capacity

eg. GF is serving data directly from pachd, this can add load
pachd debug process

get logs
is the process still alive?
restarts
memory and CPU utilization (this is a case where it could be running, but not accepting connections)

This is an awesome list.
As we expect users to use more of the UI (and have less reliance on k8s), this list is how we'll make that happen.


Redis cache with private endpoint

[x] Make sure you've installed the latest version using instructions in the wiki

Output from azd version
azd version 1.11.0 (commit 5b92e0687e1fa96dfc8292f4b900c0c58610b6a5)
Description
I am trying to integrate Redis Cache into the Azure Functions Quickstart for .NET. When I run azd up without specifying dependsOn: [redisCache] for the cachePrivateEndpoint module, the deployment fails on the first run with the following error:
(✓) Done: Resource group: rg-flex-start-dev-001 (2.983s)
(✓) Done: Log Analytics workspace: log-6g76vd2xcyqug (826ms)
(✓) Done: App Service plan: plan-6g76vd2xcyqug (3.981s)
(✓) Done: Virtual Network: vnet-6g76vd2xcyqug (3.982s)
(✓) Done: Application Insights: appi-6g76vd2xcyqug (4.749s)
(✓) Done: Storage account: st6g76vd2xcyqug (23.594s)
(✓) Done: Private Endpoint: blob-private-endpoint (30.408s)
(x) Failed: Private Endpoint: cache-private-endpoint (11m12.313s)
(✓) Done: Cache for Redis: redis-6g76vd2xcyqug (15m24.942s)
(✓) Done: Function App: func-api-6g76vd2xcyqug (31.099s)
|====== | Creating/Updating resources
ERROR: error executing step command 'provision': deployment failed: error deploying infrastructure: deploying to subscription:

Deployment Error Details:
InternalServerError: An error occurred.

However, when I run azd up a second time, the deployment succeeds:
(✓) Done: Resource group: rg-flex-start-dev-001 (2.999s)
(✓) Done: Virtual Network: vnet-6g76vd2xcyqug (1.511s)
(✓) Done: Storage account: st6g76vd2xcyqug (1.793s)
(✓) Done: App Service plan: plan-6g76vd2xcyqug (2.712s)
(✓) Done: Log Analytics workspace: log-6g76vd2xcyqug (1.242s)
(✓) Done: Private Endpoint: blob-private-endpoint (1.135s)
(✓) Done: Application Insights: appi-6g76vd2xcyqug (1.68s)
(✓) Done: Cache for Redis: redis-6g76vd2xcyqug (19.132s)
(✓) Done: Function App: func-api-6g76vd2xcyqug (2.969s)
(✓) Done: Private Endpoint: cache-private-endpoint (22.76s)

And httgget endpoint can access the cache.
If I add dependsOn: [redisCache] to the cachePrivateEndpoint module, the deployment succeeds on the first run, but the cache isn't accessible.
Steps to Reproduce

Clone the repository: https://github.com/Azure-Samples/functions-quickstart-dotnet-azd
Integrate Redis Cache into the project.
See my fork https://github.com/jyrijh/functions-quickstart-dotnet-azd
Run azd up without dependsOn: [redisCache] for the cachePrivateEndpoint module.
Observe the deployment failure.
Run azd up again and observe the deployment success.
Run azd down to remove the deployment or create a new environment
Add dependsOn: [redisCache] to the cachePrivateEndpoint module.
Run azd up and observe the deployment success but cache inaccessibility.

Expected Behavior
The deployment should succeed on the first run without requiring a second run or additional dependencies, and the cache should be accessible.
Actual Behavior
The deployment fails on the first run without dependsOn: [redisCache] and succeeds on the second run. Adding dependsOn: [redisCache] results in a successful deployment on the first run, but the cache is not accessible.
Environment

Azure Developer CLI (azd) version: [Specify version]
Operating System: Windows

Additional Context
Running nslookup <hostname> finds both fine
Running psping -q <hostname>:6380 works only when dependsOn: [redisCache] isn't used
Thank you for your assistance.

@v-xuto can you triage this? seems the new additions for Redis on the bicep and its dependency ordering isn't right? cc @vhvb1989

@rajeshkamal5050 We were able to reproduce this issue and are currently investigating the cause.

@jyrijh Because the Redis Cache resource was configured with a private link, so the failure of running psping -q <hostname>:6380 locally was an expected result. With a private link, Redis Cache can only be accessed within the specified Azure virtual network, and external access is blocked by default.
After azd up twice, psping -q <hostname>:6380 succeeded because the publicNetworkAccess setting of Redis Cache has changed. When Redis Cache was deployed for the first time, a private link was set and publicNetworkAccess was set to disabled, However, when deployed for the second time, publicNetworkAccess was changed to enabled because publicNetworkAccess:'Enabled' in the resources.bicep file, this change allowed external access, which is why psping -q <hostname>:6380 succeeded the second time.

@vhvb1989 do you know how to access Redis when a private link is configured?

@Menghua1 Thanks, now I understand the psping part, but the httpget endpoint still cannot access the cache, post works fine as it doesn't use it.
I have copied most of the redis part from the eshop https://github.com/[CawaMS/eShop](https://github.com/CawaMS/eShop sample

And if i comment out the publicNetworkAccess:'Enabled then the cache isn't accessible at all from function regardless whether the dependsOn: [redisCache]  is commented out or not.
In https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-network-isolation  it is recommended to use privatelink. I created the cache from portal https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-private-link and with that httpget endpoint works. I will try to understand this and the bicep are related 🤨
{
    "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "<IP_ADDRESS>",
    "parameters": {},
    "resources": [
        {
            "name": "redis-6g76vd2xcyqug",
            "type": "Microsoft.Cache/redis",
            "apiVersion": "2024-04-01-preview",
            "location": "swedencentral",
            "dependsOn": [],
            "properties": {
                "sku": {
                    "name": "Basic",
                    "family": "C",
                    "capacity": 0
                },
                "redisConfiguration": {},
                "enableNonSslPort": false,
                "redisVersion": "6",
                "disableAccessKeyAuthentication": false,
                "publicNetworkAccess": "Disabled"
            },
            "tags": {}
        },
        {
            "apiVersion": "2017-05-10",
            "type": "Microsoft.Resources/deployments",
            "name": "cache-private-endpoi_0e9bd5a1-dd90-42ac-b31c-bb24751fc01c",
            "resources": [],
            "dependsOn": [
                "Microsoft.Cache/redis/redis-6g76vd2xcyqug"
            ],
            "properties": {
                "mode": "Incremental",
                "parameters": {},
                "template": {
                    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "<IP_ADDRESS>",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2019-04-01",
                            "name": "cache-private-endpoint",
                            "type": "Microsoft.Network/privateEndpoints",
                            "location": "swedencentral",
                            "properties": {
                                "privateLinkServiceConnections": [
                                    {
                                        "id": "/subscriptions/9d5b3116-1b42-498f-9d05-81f45679b63c/resourceGroups/rg-flex-start-dev-001/providers/Microsoft.Network/privateEndpoints/privateLinkServiceConnections/cache-private-endpoint_d9f2e983-d025-4153-bce0-6387ae3c901a",
                                        "name": "cache-private-endpoint_d9f2e983-d025-4153-bce0-6387ae3c901a",
                                        "properties": {
                                            "privateLinkServiceId": "/subscriptions/9d5b3116-1b42-498f-9d05-81f45679b63c/resourceGroups/rg-flex-start-dev-001/providers/Microsoft.Cache/Redis/redis-6g76vd2xcyqug",
                                            "groupIds": [
                                                "redisCache"
                                            ]
                                        }
                                    }
                                ],
                                "manualPrivateLinkServiceConnections": [],
                                "subnet": {
                                    "id": "/subscriptions/9d5b3116-1b42-498f-9d05-81f45679b63c/resourceGroups/rg-flex-start-dev-001/providers/Microsoft.Network/virtualNetworks/vnet-6g76vd2xcyqug/subnets/private-endpoints-subnet"
                                }
                            }
                        }
                    ],
                    "outputs": {
                        "networkInterfaceId": {
                            "value": "[reference('cache-private-endpoint').networkInterfaces[0].id]",
                            "type": "string"
                        }
                    }
                },
                "expressionEvaluationOptions": {
                    "scope": "inner"
                }
            },
            "subscriptionId": "9d5b3116-1b42-498f-9d05-81f45679b63c",
            "resourceGroup": "rg-flex-start-dev-001"
        },
        {
            "apiVersion": "2017-05-10",
            "type": "Microsoft.Resources/deployments",
            "name": "PrivateDns-0e9bd5a1dd9042acb31cbb24751fc01d",
            "resources": [],
            "dependsOn": [],
            "properties": {
                "mode": "Incremental",
                "parameters": {},
                "template": {
                    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "<IP_ADDRESS>",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "type": "Microsoft.Network/privateDnsZones",
                            "apiVersion": "2020-01-01",
                            "name": "privatelink.redis.cache.windows.net",
                            "location": "global",
                            "properties": {}
                        },
                        {
                            "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
                            "apiVersion": "2020-01-01",
                            "name": "[concat('privatelink.redis.cache.windows.net', '/', uniqueString('/subscriptions/9d5b3116-1b42-498f-9d05-81f45679b63c/resourceGroups/rg-flex-start-dev-001/providers/Microsoft.Network/virtualNetworks/vnet-6g76vd2xcyqug'))]",
                            "location": "global",
                            "dependsOn": [
                                "Microsoft.Network/privateDnsZones/privatelink.redis.cache.windows.net"
                            ],
                            "properties": {
                                "virtualNetwork": {
                                    "id": "/subscriptions/9d5b3116-1b42-498f-9d05-81f45679b63c/resourceGroups/rg-flex-start-dev-001/providers/Microsoft.Network/virtualNetworks/vnet-6g76vd2xcyqug"
                                },
                                "registrationEnabled": false
                            }
                        }
                    ],
                    "outputs": {}
                },
                "expressionEvaluationOptions": {
                    "scope": "inner"
                }
            },
            "subscriptionId": "9d5b3116-1b42-498f-9d05-81f45679b63c",
            "resourceGroup": "rg-flex-start-dev-001"
        },
        {
            "apiVersion": "2017-05-10",
            "type": "Microsoft.Resources/deployments",
            "name": "PrivateDNSZoneGroup_0e9bd5a1-dd90-42ac-b31c-bb24751fc01e",
            "resources": [],
            "dependsOn": [
                "PrivateDns-0e9bd5a1dd9042acb31cbb24751fc01d",
                "cache-private-endpoi_0e9bd5a1-dd90-42ac-b31c-bb24751fc01c"
            ],
            "properties": {
                "mode": "Incremental",
                "parameters": {},
                "template": {
                    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "<IP_ADDRESS>",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2020-03-01",
                            "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
                            "name": "[concat('cache-private-endpoint', '/', 'default')]",
                            "location": "swedencentral",
                            "properties": {
                                "privateDnsZoneConfigs": [
                                    {
                                        "name": "privatelink-redis-cache-windows-net",
                                        "properties": {
                                            "privateDnsZoneId": "/subscriptions/9d5b3116-1b42-498f-9d05-81f45679b63c/resourceGroups/rg-flex-start-dev-001/providers/Microsoft.Network/privateDnsZones/privatelink.redis.cache.windows.net"
                                        }
                                    }
                                ]
                            }
                        }
                    ],
                    "outputs": {}
                },
                "expressionEvaluationOptions": {
                    "scope": "inner"
                }
            },
            "subscriptionId": "9d5b3116-1b42-498f-9d05-81f45679b63c",
            "resourceGroup": "rg-flex-start-dev-001"
        }
    ]
}

That did work. I changed the order of resources and dependsOn to match the template. Now i just have to figure out how can I get the privateEndpoint creation working when it is in separate bicep file from cache resource.
Thank you


Match multiple methods in HTTPRouteMatch

What would you like to be added:
https://github.com/kubernetes-sigs/gateway-api/blob/f8442221c60b186c23560232ffa65803a5d09278/apis/v1beta1/httproute_types.go#L546
It will be better DX to support multiple method matches in HTTPRouteMatch
Method []HTTPMethod json:"method,omitempty"``
Why this is needed:
While this can be done using multiple match rules, it is better DX to support []HTTPMethod. Also, the other matches (header, query params) support array. So, it will be also more consistent.
Similar issue also exists in GRPC api.

I think this is a reasonable request, but unfortunately, it's a breaking API change, so we'll probably need to add a plural field (i.e. Methods instead of Method, with semantics for cross-populating Method into Methods etc). This sucks to some extent but we don't want to make a breaking API change for HTTPRoute at this point, sadly.

The upstream reference on the right way to make a singular field plural is https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#making-a-singular-field-plural

The upstream reference on the right way to make a singular field plural is https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#making-a-singular-field-plural

So it would seem this is doable, albeit it's not going to be simple or quick. Marking this as accepted and giving it a priority for now and we'll allow some time to see if anyone wants to take it on:
/remove-triage
/priority backlog
/help


Incomplete Connection Instructions on page /integrations/snowflake.html

I'm looking at instructions for other databases (Redshift, MySQL) and comparatively it seems as though the Snowflake instructions are incomplete. The instructions seem to load the Penguins CSV into memory, and doesn't actually show any interaction with Snowflake? I'm struggling to get Snowflake working with JupyterLab and JupySQL, but this configuration page seems to be missing crucial data.
Any help is appreciated!

hey @edglazer do you have any suggestions on what information we should add?

Yes! I was able to get things working, with help from this section of the Snowflake docs:
https://docs.snowflake.com/en/developer-guide/python-connector/sqlalchemy#connection-parameters
Specifically, the more detailed URL string description:
'snowflake://<user_login_name>:@<account_identifier>/<database_name>/<schema_name>?warehouse=<warehouse_name>&role=<role_name>'
I followed your excellent instructions on adding password to keyring, then used this code to connect:
from sqlalchemy import create_engine
import keyring

%load_ext sql
password = keyring.get_password("MYDB_NAME", "myusername")
db_url = f"snowflake://myusername:{password}@xxyyyy.region-name/MYDB_NAME/MYSCHEMA?warehouse=MYWAREHOUSE_NAME?role=MYROLE"
engine = create_engine(db_url)
%sql engine

Then super simple test:
%sql select current_time
Also, this might be out of scope, but:  For me this was enough to connect correctly, but wouldn't let me actually query. My DBA needed to also GRANT USAGE ON WAREHOUSE warehouse_name TO ROLE myrole_name; to overcome errors that blocked the query from completing. I found the answer in the Snowflake community forums and on this Stack Overflow answer https://stackoverflow.com/a/63218159 (even though the question pertains to R).

I also periodically get an error about needing to select the warehouse with USE WAREHOUSE command, so I periodically have to re-run:
%sql USE WAREHOUSE mywarehouse_name
Again, maybe out of scope for your instructions, but if it's helpful to get others querying successfully I figure it's worth sharing.
Thanks!!

If I think of anything else, I'll share it here! Glad to help, I think the work you're doing on JupySQL is great!


Crash when attempting to break pipe/wire

Placed a pipe connecting a chest, placed a redstone wire (normal/unsupported/undyed) beneath the pipe.
Attempting to break the pipe causes this crash. Latest versions of both Charset and MCMP. Reproduced in creative.
http://paste.ee/p/JUKdG

Bug in MCMultiPart, will be fixed in 1.0.5 (or compile from GitHub!)
2016-01-18 2:55 GMT+01:00 Ayrrow<EMAIL_ADDRESS>
Placed a pipe connecting a chest, placed a redstone wire
(normal/unsupported/undyed) beneath the pipe
Attempting to break the pipe causes this crash Latest versions of both
Charset and MCMP Reproduced in creative
http://pasteee/p/JUKdG
—
Reply to this email directly or view it on GitHub
https://github.com/asiekierka/CharsetMC/issues/35.


Missing localization for the "Status" on the "Wallet" page

Describe the bug
The strings for the Status on the Wallet page are missing. At least the one for the "Synced" status.
I don't know about the other ones because all the wallets I have are properly synced.
Additional context & screenshots

Thanks!  Fixed:

This fix is now available in the Machinaris v0.7.2 release today. Thanks!


Update validate module to protoc-gen-validate 0.6.1

TL;DR
The current version of validate/validate_pb2.py was generated from validate.proto in protoc-gen-validate as of version 0.4.1. This PR updates the generated code to match protoc-gen-validate v0.6.1, the latest release. This will prevent collisions with other libraries that are using protoc-gen-validate v0.6.1.
Type

[x] Bug Fix
[ ] Feature
[ ] Plugin

cc: @kumare3 @EngHabu

We generate by running make generate I expect there should be a version change in some file where we take depedency on that tool... I only see the generated code in the PR...

+1

@hanzo how did you generate the code?

Possibly just copied the generated code from https://github.com/envoyproxy/protoc-gen-validate ?

Correct me if I'm wrong, but it seems to me that the current version of validate_pb2.py was copied from the Lyft-internal repo idlcode. To generate this PR I simply copied the latest version of validate_pb2.py from idlcode.

Possibly just copied the generated code from https://github.com/envoyproxy/protoc-gen-validate ?

That would be preferable, but as far as I can tell that repo doesn't contain the generated python code, only golang: https://github.com/envoyproxy/protoc-gen-validate/tree/main/validate
I'm not sure of anywhere else that the generated python exists, open to suggestions.

@hanzo you're right I meant the internal idlcode repo

can you run make generate and see what changes it makes?
I've been trying this but keep getting errors from mockery:

...
./generate_mocks.sh
+ mockery -dir=gen/pb-go/flyteidl/service/ -all -output=clients/go/admin/mocks
Error: unknown shorthand flag: 'i' in -ir=gen/pb-go/flyteidl/service/
Usage:
  mockery [flags]
...

Any idea what's going on there? Full command line history attached:
flyteidl error.txt

@EngHabu Seems like there's a step missing from this documentation? https://github.com/flyteorg/flyteidl#generate-code-from-protobuf  Do I need to enter a docker container before running these make commands?

yes, mind running make download_tooling first?

essentially step 3 should be step1

yes, mind running make download_tooling first?

I did, the output is in the file I attached above.

I haven't figured out how to get make generate to succeed - it seems that a more recent version of mockery is being used which expects --dir instead of -dir. I'm not sure if these make commands are being run inside of the docker image as intended.
Fortunately, the files in my latest commit seem to get generated before make generate fails. Can a maintainer approve the workflow again so we can see if tests pass?

@EngHabu does this look good ?

I see the tests passed. @hanzo can you sign the commit?

Can you take care of DCO? then we can merge it

Ok, I ran git rebase HEAD~3 --signoff and then git push --force-with-lease.
I was unable to get make generate to succeed so I asked my colleague @jcapote-lyft to run it on his machine. It succeeded for him but produced some seemingly unrelated changes, is that expected? https://github.com/flyteorg/flyteidl/pull/165/commits/c10b5d6befa50ee6e91e8c0166f6d573f64c9aa8

The CI system reruns the code generation. If it produced something different, it'll fail...

Makes sense. Looks like all checks are passing now, good to merge?


Failure to use remote info in repo cloned from GitHub Enterprise.

Running Jekyll on a GitHub Pages compatible site (e.g. documentation-theme-jekyll) fails with this error message ** even when there is an origin remote defined **.
             Error: No repo name found. Specify using PAGES_REPO_NWO environment variables, 'repository' in your configuration, or set up an 'origin' git remote pointing to your github.com repository.

$ git remote -v
origin	git@<elided>.com:<elided>/computing-portal.git (fetch)
origin	git@<elided>.com:<elided>/computing-portal.git (push)

This happens because around line 103 of metadata_drop.rb this snippet of code tries to match the "url" (it's not a URL, but that's another issue...) against a pattern that's hardwired for the public github.
matches = git_remote_url.chomp(".git").match %r!github.com(:|/)([\w-]+)/([\w\.-]+)!

One fix would be to use a library like git-remote-parser and combine it's owner and repo attributes.
If there's an objection pulling in the entire gem, one could either borrow bits (in a way that honor'ed its MIT license) or reimplement them.
Can someone comment on the following?

Is there any effort to make this gem more useful GitHub Enterprise customers (in which case this issue could tag along on that effort)?

Would a PR with a fix that used git-remote-parser be acceptable?

Failing the above, what constraints are there on coding up a fix?

Thanks!

It seems that much of the info needed to make #48 could be driven by values parsed out of the origin using git-remote-parser, assuming that library is acceptable.

I'm seeing a similar error, even though I'm using a public GitHub Pages site, with JEKYLL_ENV=production:
             ERROR: YOUR SITE COULD NOT BE BUILT:
                    ------------------------------------
                    No repo name found. Specify using PAGES_REPO_NWO environment variables, 'repository' in your configuration, or set up an 'origin' git remote pointing to your github.com repository.

$ git remote -v
origin	https://github.com/information-safety/information-safety.github.io.git (fetch)
origin	https://github.com/information-safety/information-safety.github.io.git (push)


fix: fix the topological sort

What's changed and what's your intention?
PLEASE DO NOT LEAVE THIS EMPTY !!!
Please explain IN DETAIL what the changes are in this PR and why they are needed:

Use dependency order instead of original order to fix the topological sort. The fake transitive should be avoided by escaping with $$

Checklist

[x] I have written the necessary docs and comments
[x] I have added necessary unit tests and integration tests

Refer to a related PR or issue link (optional)
fix #401

Do you mean the problem is that the MINIO_USERNAME and MINIO_PASSWORD is not replaced as the true value in RW_STATE_STORE because of the sorting algorithm bug?
I try the apply the Yaml file again in your latest commit. I find the problem seems still exists. I still try to understand your sort algorithm and find the bug
(base) ➜  risingwave-operator git:(fix/env-sort) git pull
Already up to date.
(base) ➜  risingwave-operator git:(fix/env-sort) kubectl exec -it risingwave-etcd-minio-meta-0 -- env | grep STATE

RW_STATE_STORE=hummock+minio://$(MINIO_USERNAME):$(MINIO_PASSWORD)@risingwave-minio:9301/hummock001

My bad, forget to delete the old source. Currently, the result is correct.


TypeError: mockStore is not a function

Hey there ! I'm getting an issue with the library (i'm using Jest). Here is the code :
import * as actions from '../actions'
import configureMockStore from 'redux-mock-store'
import thunk from 'redux-thunk'

const middlewares = [thunk]
const mockStore = configureMockStore(middlewares)

describe('Dataset actions', () => {
	it('compareMutuallyExclusiveKeys - default parameters', () => {
		const expectedActions = [{
			type: actions.COMPARE_MUTUALLY_EXCLUSIVE_KEYS,
			payload: {
				mutually_exclusive_keys: [],
				meta: {}
			}
		}]
		const store = mockStore({})
		return store.dispatch(actions.compareMutuallyExclusiveKeys())
	    	.then(() => {
	    		expect(store.getActions()).toEqual(expectedActions)
	    	})
	})
})

And the error :
TypeError: mockStore is not a function

Tried to upgrade redux-thunk (2.0.1) and redux-mock-store (1.1.4), but still getting the error...
Thanks for your help !

I'm seeing this too

@Antho2407 Looks like the solution for me was to jest.unmock things.
This is working for me
jest.unmock('./index.js')
jest.unmock('redux-mock-store')
jest.unmock('redux-thunk')

import configureStore from 'redux-mock-store'
import thunk from 'redux-thunk'
import t from './actionTypes'

const middlewares = [thunk]
const mockStore = configureStore(middlewares)

it('should dispatch action', () => {
  const initialState = {
    notes: ''
  }

  const addNote = { type: t.SET_CHECKOUT_NOTES, notes: 'JACK!' }

  const store = mockStore(initialState)
  store.dispatch(addNote)

  const actions = store.getActions()

  expect(actions).toEqual([addNote])
})

@hanford Also had to unmock my actions.js file, then your solution worked perfectly, thanks for the help !

You need to unmock all real dependencies:

In order to write an effective unit test, you want to be able to isolate a unit of code and test only that unit – nothing else. It is fairly common and good practice to consider a module such a unit, and this is where Jest excels. Jest makes isolating a module from its dependencies extremely easy by automatically generating mocks for each of the module's dependencies and providing those mocks (rather than the real dependency modules) by default.

https://facebook.github.io/jest/docs/automatic-mocking.html


Operator images missing in GCR for 1.15.1

Describe the bug
1.15.1 was released 3 hours ago and it looks like the images for it have not been published.
Expected behavior
The images should be available at release.
To Reproduce
docker pull gcr.io/knative-releases/knative.dev/operator/cmd/operator:v1.15.1
Error response from daemon: manifest for gcr.io/knative-releases/knative.dev/operator/cmd/operator:v1.15.1 not found: manifest unknown: Failed to fetch "v1.15.1" from request "/v2/knative-releases/knative.dev/operator/cmd/operator/manifests/v1.15.1".

Knative release version
1.15.1

Just to be clear, the published helm chart still relies on these images being available.

This is still true for the 1.15.2 release that was released a few hours ago as well.

You now can try docker pull gcr.io/knative-releases/knative.dev/operator/cmd/operator:v1.15.3. This tag was added.


single upsert and bulk Upsert accept divergent document types

Package Name:  @azure/cosmos
Package Version:  3.16.1
Operating system: Windows ARM
[x] nodejs

version: 16.15.1

[ ] browser

name/version:

[x] typescript

version: 4.7.4

Is the bug related to documentation in

[ ] README.md
[ ] source code documentation
[ ] SDK API docs on https://docs.microsoft.com

Describe the bug
The Upsert bulk operation accepts fewer input types than the upsert non-bulk method. The bulk approach requires a JSONObject, while the single upsert approach accepts unknown. This seems to prevent submitting documents that are instances of custom classes in bulk. Is this intentional?
To Reproduce

Create a JavaScript object from a custom class
Attempt to write it to Cosmos using Upsert operation via bulk method

Expected behavior
Object is written as document, just like as if upsert were called directly.
Additional context
Code sample:
  // Case 1: Plain object
  const document1 = { id: "1" };
  // TypeScript is fine with this and the operation succeeds
  await container.items.upsert(document1);

  // Case 2: Class
  class Document {
    constructor(public id: string) {}
  }
  const document2 = new Document("2");
  // TypeScript complains:
  //   Type 'Document' is not assignable to type 'JSONObject'.
  //     Index signature for type 'string' is missing in type 'Document'.ts(2322)
  await container.items.batch([
    {
      operationType: "Upsert",
      resourceBody: document2,
    },
  ]);

  // Case 3: Class with type casting
  const document3 = new Document("3");
  // Operation succeeds
  await container.items.bulk([
    {
      operationType: "Upsert",
      resourceBody: document3 as unknown as JSONObject,
    },
  ]);

Hi @xirzec - I see you've been somewhat active on this issue, so I'm just reaching out to see if you know any further details on this? I see it has been added to the "2022-08 milestone" - does this mean the issue has been acknowledged and planned to be fixed for then?
I'm seeing this exact issue when trying to save an object which has a Date type on it. Date does not seem to satisfy the JSONValue type.
Any help / comments on this would be appreciated to help us know whether we're going about this in the right way. Should we be manually converting the object to satisfy the JSONValue constraint by explicitly stringifying dates?

Should we be manually converting the object to satisfy the JSONValue constraint by explicitly stringifying dates?

Hey @cjshelton, I'm far from a Cosmos expert but my understanding is that in your case, yes, you'll want to convert your Date object to a string first. The JavaScript Date object has a bunch of methods on it (e.g. getMonth, getDay) and those can't be represented in JSON. In particular I'd encourage you to try .toISOString() on your date before storing.

Yep that's what I've been thinking. Thanks for taking the time to respond @agorischek

I'm also not a cosmos expert, but if it works with type casting it seems we might just need to fix our typings here?
I'll let @sajeetharan and @jay-most comment as to when this work will be able to be completed


Docs  image and tabs extended paredown

Related Ticket(s)
#1125
Description
Updates to Images page and nav title, animated gif, and "Resources" header on each component page. Includes missed updates to links to Carbon design system URLs.
Changelog
New

Updated Image with caption animation

Changed

Image page -> Images page.
Image nav -> Images nav.
Component pages with only one component have Resources as an H2.
Updated Overview language on Images.

Removed

old version of animation gif.
H2/3 in Ari's ResourceLinks file

Just 1 small fix:
In Tabs extended > Overview

The tab labels may wrap up to two lines when truncated.

How about "The tab labels may wrap up to two lines before it gets truncated. Truncated labels are displayed in tooltips on hover and focus."
Otherwise this looks great!


Refactor/test runner

Thanks for the great feedback @jrainville
I've updated the PR so that web3 is only imported in web3Utils, and moved web3 dependent functions into web3Utils as well.
I'd like to put the embark-utils/SomethingUtils APIs in a separate PR as this most likely requires us to touch a lot of files in the system again.

CI is failing due to typecheck errors unrelated to my changes


[v5] Actions refactor

(work in progress)
Resolved action objects will now look like this:
{
  type: 'someType',
  params: {
    one: { ... },
    two: { ... }
  }
}

Typing action and especially action meta was a problem in txstate, haven't checked but I think this is going to make it much much much easier, so super cool change :P

Also I assume guards will also have params?

Typing action and especially action meta was a problem in txstate, haven't checked but I think this is going to make it much much much easier, so super cool change :P

Yes, action objects were previously a mess; this is going to make it much better.

Also I assume guards will also have params?

Yes, guards have params 👍

That's great!

Wait a min looked at the code, it's not exactly what I expected xD
I was expecting ActionObject to not allow arbitrary keys on it, only on params. So I was expecting a diff like this...
 type ActionObject = {
   exec: ...
-  [k: string]: unknown
+  params: Record<string, unknown>
 }

The fact that out of all keys only exec has a constraint is a major pain point, it seems the current change wouldn't help unfortunately haha.
Can we have my change? I know this would be breaking but I guess yours too is breaking? So if we're breaking things let's get them right.
And the index signature on action object is problem not just for txstate but for xstate types too

Can we have my change? I know this would be breaking but I guess yours too is somewhat breaking? So if we're breaking things let's get them right.

Which change is this?

Yep exactly

@Andarist I'm going to base all future v5 updates off of this branch until it is merged in, since this branch needs to be the next one to go into next.


FloatingFocusManager cannot use a VirtualElement

Describe the bug
FloatingFocusManager seems expects the reference element given to useFloating to be a real DOM element, and throws an exception when it isn't. However, it's my understanding from the type signature of useFloating and from the documentation that it should be possible to pass a virtual element to position the item at a particular point on-screen (eg. relative to a click). The VirtualElement type, however, does not include the getAttribute method that FloatingFocusManager expects.
To Reproduce

Go to https://codesandbox.io/s/floatingfocusmanager-virtualmanager-bug-38m6vr?file=/src/App.tsx
Click "Click me"
Observe the error

Expected behavior
No errors to be thrown.
Context:

OS: macOS
Browser: Chrome
Version: 114.0.5735.198 (Official Build) (arm64)

In react (not react-dom), refs.setPositionReference should be used:
  const { refs, floatingStyles, context } = useFloating({
    whileElementsMounted: autoUpdate,
    placement: "bottom-start"
  });

  useLayoutEffect(() => {
    refs.setPositionReference({
      getBoundingClientRect: () => ({
        width: 0,
        height: 0,
        x: 100,
        y: 100,
        top: 100,
        right: 100,
        bottom: 100,
        left: 100
      })
    })
  }, [refs]);

Since TS doesn't error though, it would be a type bug. Maybe an elements.positionReference option can be added as an alternative

Hey @atomiks I know this issues has been fixed and closed like a year ago, but I was wondering if you would consider any PR fixing the FloatingFocusManager instead of the useFloating react implementation ? Or maybe hide the refs.setPositionReference call inside  useFloating if we detect that this is a VirtualElement ?
I don't know floating-ui very much so maybe this would be a nonsense or very hard to do but I find it confusing that the react-dom implementation accept a VirtualElement as reference, but not the react one, especially if it is actually possible to make it work via another setter.
Also the documentation for useFloating specify that the type of reference is ReferenceElement and when we search it in the type definition we find export type ReferenceElement = Element | VirtualElement;. So it's even more confusing to find that actually the react implementation differs from the react-dom on this point.
I'm currently trying to create an abstraction based on floating-ui, to create context menu available anywhere on right-click anf when clicking on a specific menu, I think I can "hide" the refs.setPositionReference inside my component it feels a bit too much like a workaround.
Also, thanks for this library  🙏 👍


update copyright, skip unused ipynb, fix versions

Avoid hard-coding the version in the docs, update copyright, and skip notebooks that are not part of the built docs.

Does conf.py need an import ioos_qc?


test

should be greeted

could we use this bot account for linting and stuff? cc @leahcimto

@FunctionalMetatable Yeah. Tell me if you have any prefered github apps to use.


Update to 4.3

updated the screenshots
update onlogin & onlogout script
added back the source code files

please review


fix(snowflake): remove extra lineage edges in reports, change badly named config variable

These reduce noise in logging and help in debugging issues. The config variable recently added was confusing so changing it.
Checklist

[x] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[x] Docs related to the changes have been added/updated (if applicable). If a new feature has been added a Usage Guide has been added for the same.

@anshbansal, please update the tests as well.


Re-organise firefox

Firefox, at present, comes in five different packages:

firefox
firefox-wrapper
firefox-bin
firefox-esr
firefox-esr-wrapper

The issue is that that firefox package is inevitably not what the user wants, causing issues when they try to enable plugins or configure pulseaudio.
I suggest reorganising Firefox into the following package names:

firefox (current firefox-wrapper, with name "firefox")
firefox-unwrapped (current firefox, with name "firefox-no-plugins")
firefox-esr (current firefox-esr-wrapper, with name "firefox-esr")
firefox-esr-unwrapped (current firefox-esr, with name "firefox-esr-no-plugins")
firefox-bin

This would match better with what users expect, both through nix-env -i and config.systemPackages, but would also break backwards compatibility for people who currently have the wrapperless Firefox installed. What do people think?

:+1:

:+1:

That would have prevented confusion earlier. Thanks for the help by the way.

That would have prevented confusion earlier. Thanks for the help by the way.

Do we even need to expose the unwrapped versions as top-level attributes? Maybe firefox.unwrapped passthrough instead?

Do we even need to expose the unwrapped versions as top-level attributes? Maybe firefox.unwrapped passthrough instead?

@vcunat I was considering that, but went with top-level attributes just in case there's something I'm missing. If nobody can think of a reason to keep them as top-level attributes, I'd be happy with firefox.unwrapped.

@vcunat I was considering that, but went with top-level attributes just in case there's something I'm missing. If nobody can think of a reason to keep them as top-level attributes, I'd be happy with firefox.unwrapped.

+1 from me. When I started using NixOS this was very confusing.

:+1:

Another argument for this:
$ command-not-found firefox
The program ‘firefox’ is currently not installed. It is provided by
several packages. You can install it by typing one of the following:
  nix-env -iA nixos.firefox
  nix-env -iA nixos.firefox-esr

(i.e. the hook only mentions the attributes with unwrapped FF)

See an implementation: #12299.


the /login page installation does not work

Expected Behavior
redirect to the application installation page in shopify
Current Behavior
after entering a domain and clicking on the "install" button, you will be returned to the /login page.
Failure Information
__invoke methon in AuthenticateShop always returns "false".
and only if I quickly add dump after clicking on "install" will I get "completed" back.
Steps to Reproduce
Please provide detailed steps for reproducing the issue.

create new laravel project
install shopify package
install from /login page

If this is the first installation then redirect will take place, but after clicking on "Install unlisted app" redirect to /login will also take place
Context
Package Version: v12.1
Laravel Version: v6.18.38
PHP Version: 7.2.2

The login page is being killed off.
What you seem to be experiencing is the cookie issue that others are experiencing, not exactly anything to do with the package, just new browser mechanics we have to work around.


libtiff: get rid of aarch64-darwin.nix

Description of changes
I've tried to build libtiff on aarch64-darwin using default.nix and it seems that it builds fine on my mac. Continue of this pr: https://github.com/NixOS/nixpkgs/pull/181446.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

@ajs124 are you happy with this PR? Can we merge it?

Well, I have one and I checked that it builds. Maybe we will also ask someone to check build on aarch-darwin?
I know only @risicle, he checked this pr: https://github.com/NixOS/nixpkgs/pull/182367#issuecomment-1192020011, maybe he will agree to check also this pr.

libtiff.tests reveals no new failures for me on macos 12.4 aarch64, but this will probably need to be rebased to staging (using the technique outlined in https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#rebasing-between-branches-ie-from-master-to-staging). The automatic rebuild counter labels don't seem to assess darwin aarch64, but if they did you'd see this causing >500 rebuilds.

@kalbasit @Mic92 @zowoq @ttuegel @matthewbauer @stigtsp @zakame @FRidh @jonringer @fricklerhandwerk @Ericson2314, sorry, I've messed with rebasing, can you remove yourselves as reviewer?


Search option in select

Is there any option to add search field for select form control?

I think it is not present even in original materialize-css project :(

Thanks @Kravs for this input.
@akshath4u , I suggest opening this issue in the https://github.com/Dogfalo/materialize repository.
I'll close this one for now, until it's implemented in the materialize-css project.


FEAT(SideNav): Side nav focus state

Closes IBM/carbon-components-react#2148
Add focus class name to component in order to open menu when one of its children holds focus.
Changelog
Changed

SideNav.js
SideNav-test.js
SideNav-test.js.snap

Additional notes
This PR contains work not yet merged from this other PR which I will pull in once it is merged. Changes from this PR to Carbon styles  are required to satisfy the issue stated above.

Hi @davidicus do you want to split out the code for #2146? Thanks!

Hi @asudoh, I have removed the code form PR #2146 as requested

Thanks @vpicone and @asudoh for the quick review and suggestions


Instead of returning CHIP_ERRORs that are assumed to encode to Failure, please encode IM-space errors everywhere.

          Instead of returning CHIP_ERRORs that are assumed to encode to Failure, please encode IM-space errors everywhere.

Originally posted by @tcarmelveilleux in https://github.com/project-chip/connectedhomeip/pull/33872#discussion_r1679393409

@wqx6 PTAL


When processing real-time images, many windows open.

face_recognition version: last version
Python version: 3.6.5
Operating System:Windows7

Description
When processing real-time video images,
many windows open.
https://user-images.githubusercontent.com/39681665/40700195-33788efa-63e1-11e8-831b-5d0b5bdb7f81.jpg
What I Did
![hata](https://user-images.githubusercontent.com/39681665/40700195-33788efa-63e1-11e8-831b-5d0b5bdb7f81.jpg)

We can't help unless you show us the code that didn't work.

the codes are working. There is an error in the screen display.
I use google translate. If you do not understand, ask again.


Update notes about unavailability of Microsoft-hosted 1803 hosts

Now that Microsoft-hosted 1803 hosts are available  , please add a section for Windows Server 1803 (win1803)  under Build environment and remove the following notes

We don't yet have a pool of Microsoft-hosted agents running Windows Server 1803. Until this is available, you can build Windows Server 1803 images by using self-hosted agents

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

ID: e825c07d-2168-c0aa-782a-ef6f9c7ba95e
Version Independent ID: 5cb6926b-215a-bf89-8e63-b2e1129e41df
Content: Build, test, and push Docker container apps - Azure Pipelines
Content Source: docs/pipelines/languages/docker.md
Product: devops
GitHub Login: @andyjlewis
Microsoft Alias: alewis

Fixed through the above PR.