Cannot use Fastly CDN on v2ray-http

提交 Issue 之前请先阅读 Issue 指引，然后回答下面的问题，谢谢。
除非特殊情况，请完整填写所有问题。不按模板发的 issue 将直接被关闭。
如果你遇到的问题不是 V2Ray 的 bug，比如你不清楚要如何配置，请使用Discussion进行讨论。

你正在使用哪个版本的 V2Ray？（如果服务器和客户端使用了不同版本，请注明）
V2Ray 4.25.1 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.14.4 linux/amd64)

你的使用场景是什么？比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。
proxychains4

你看到的不正常的现象是什么？（请描述具体现象，比如访问超时，TLS 证书错误等）
没有数据传回来

你期待看到的正确表现是怎样的？
➜  ~ proxychains4 curl g.co

301 Moved
301 Moved
The document has moved
here.

请附上你的配置（提交 Issue 前请隐藏服务器端IP地址）。

服务器端配置:
{
  "log": {
    "loglevel": "debug"
  },
  "reverse":{
    "portals":[
      {
        "tag":"portal",
        "domain":"reverse1.examplenet"
      }
    ]
  },
  "inbounds": [
    {
        "tag":"external",
        "port":1001,
        "protocol":"dokodemo-door",
          "settings":{
            "address":"<IP_ADDRESS>",
            "port":22,
            "network":"tcp,udp",
            "timeout": 0
          }
    },
    {
      "tag": "tunnel",
      "port": 80,
      "protocol": "vmess",
      "settings": {
        "clients": [
          {
            "id": "uuid",
            "alterId": 64
          }
        ]
      },
      "streamSettings": {
        "network": "tcp"
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ],
  "routing":{
    "rules":[
      {
        "type":"field",
        "inboundTag":[
          "external"
        ],
        "outboundTag":"portal"
      },
      {
        "type":"field",
        "inboundTag":[
          "tunnel"
        ],
        "domain":[
          "full:reverse1.examplenet"
        ],
        "outboundTag":"portal"
      }
    ]
  }
}

客户端配置:
{
    "log": {
        "loglevel": "debug"
    },
    "inbounds": [
    	{
            "listen": "<IP_ADDRESS>",
            "port": 4882,
            "protocol": "http",
            "settings": {
                "userLevel": 0
            },
            "tag": "http-inbound"
        },
        {
            "listen": "<IP_ADDRESS>",
            "port": 4082,
            "protocol": "socks",
            "settings": {
                "auth": "noauth",
                "ip": "<IP_ADDRESS>",
                "udp": true,
                "userLevel": 0
            },
            "sniffing": {
                "destOverride": [
                    "http",
                    "tls"
                ],
                "enabled": true
            },
            "tag": "socks-inbound"
        }
    ],

    "outbounds": [

        {
            "proxySettings": {
              "tag": "HTTP"
            },
        	"sendThrough": "<IP_ADDRESS>",
        	"mux": {
        		"enabled": true,
        		"concurrency": 1024
        	},
            "protocol": "vmess",
            "settings": {
                "vnext": [
                    {
                        "address": "xxxxxx.global.prod.fastly.net",
                        "port": 80,
                        "users": [
                            {
                                "alterId": 64,
                                "id": "xxxxx-xxxx-xxxx-xxxx-xxxxx",
                                "level": 0,
                                "security": "auto"
                            }
                        ]
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "none",
                "tcpSettings": {
                    "type": "none"
                }
            }
        },
        {
          "protocol": "http",
          "settings": {
            "servers": [
              {
                "address": "<IP_ADDRESS>",//服务器IP
                "port": 8887,
                "users": [
                  {

                  }
                ]
              }
            ]
          },
          "tag": "HTTP"
        }
    ],
    "routing": {
        "domainStrategy": "AsIs"
    }
}

请附上出错时软件输出的错误日志。在 Linux 中，日志通常在 /var/log/v2ray/error.log 文件中。

服务器端错误日志:
V2Ray 4.25.1 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.14.4 linux/amd64)
A unified platform for anti-censorship.
2020/07/22 15:42:13 [Debug] v2ray.com/core/app/log: Logger started
2020/07/22 15:42:13 [Debug] v2ray.com/core/app/proxyman/inbound: creating stream worker on <IP_ADDRESS>:1001
2020/07/22 15:42:13 [Info] v2ray.com/core/common/platform/ctlcmd: <v2ctl message>
v2ctl> Read config:  /etc/v2ray/config.json
2020/07/22 15:42:13 [Debug] v2ray.com/core/app/proxyman/inbound: creating stream worker on <IP_ADDRESS>:80
2020/07/22 15:42:13 [Info] v2ray.com/core/transport/internet/tcp: listening TCP on <IP_ADDRESS>:1001
2020/07/22 15:42:13 [Info] v2ray.com/core/transport/internet/udp: listening UDP on <IP_ADDRESS>:1001
2020/07/22 15:42:13 [Info] v2ray.com/core/transport/internet/tcp: listening TCP on <IP_ADDRESS>:80
2020/07/22 15:42:13 [Warning] v2ray.com/core: V2Ray 4.25.1 started
2020/07/22 15:42:19 [Info] [1109428379] v2ray.com/core/proxy/vmess/inbound: received request for tcp:v1.mux.cool:0
2020/07/22 15:42:19 [Info] [1109428379] v2ray.com/core/common/mux: received request for tcp:g.co:80
2020/07/22 15:42:19 [Info] [1109428379] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 15:42:19 [Info] [1109428379] v2ray.com/core/proxy/freedom: opening connection to tcp:g.co:80
2020/07/22 15:42:19 [Info] [1109428379] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:g.co:80
2020/07/22 15:42:19 tcp:<IP_ADDRESS>:61153 accepted tcp:g.co:80
2020/07/22 15:42:20 [Info] [1109428379] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
2020/07/22 15:42:20 [Info] [1109428379] v2ray.com/core/common/mux: session 1 ends. > io: read/write on closed pipe
2020/07/22 15:42:21 [WARNING] Sending telemetry (attempt 2): Post https://telemetry.caddyserver.com/v1/update/ecd1c92e-b8c1-4d45-a508-2907baacf561: dial tcp: lookup telemetry.caddyserver.com on <IP_ADDRESS>:53: no such host - backing off and retrying
2020/07/22 15:42:35 [Info] [1109428379] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: connection ends > context canceled
2020/07/22 15:42:48 [WARNING] Sending telemetry (attempt 3): Post https://telemetry.caddyserver.com/v1/update/ecd1c92e-b8c1-4d45-a508-2907baacf561: dial tcp: lookup telemetry.caddyserver.com on <IP_ADDRESS>:53: no such host - backing off and retrying
2020/07/22 15:43:02 [Info] [2023545287] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: invalid request from <IP_ADDRESS>:34260 > v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 4 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 15:43:02 <IP_ADDRESS>:34260 rejected  v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 4 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 15:43:18 [Info] [2859556279] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: invalid request from <IP_ADDRESS>:50946 > v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 0 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 15:43:18 <IP_ADDRESS>:50946 rejected  v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 0 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 15:43:52 [ERROR] Sending telemetry: Post https://telemetry.caddyserver.com/v1/update/ecd1c92e-b8c1-4d45-a508-2907baacf561: dial tcp: lookup telemetry.caddyserver.com on <IP_ADDRESS>:53: no such host
2020/07/22 15:51:28 [Info] [1844939533] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: invalid request from <IP_ADDRESS>:50113 > v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 2 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 15:51:28 <IP_ADDRESS>:50113 rejected  v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 2 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 15:56:18 [Info] [2789936720] v2ray.com/core/proxy/vmess/inbound: received request for tcp:v1.mux.cool:0
2020/07/22 15:56:18 [Info] [2789936720] v2ray.com/core/common/mux: received request for tcp:g.co:80
2020/07/22 15:56:18 [Info] [2789936720] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 15:56:18 [Info] [2789936720] v2ray.com/core/proxy/freedom: opening connection to tcp:g.co:80
2020/07/22 15:56:18 [Info] [2789936720] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:g.co:80
2020/07/22 15:56:18 tcp:<IP_ADDRESS>:61715 accepted tcp:g.co:80
2020/07/22 15:56:19 [Info] [2789936720] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
2020/07/22 15:56:19 [Info] [2789936720] v2ray.com/core/common/mux: session 1 ends. > io: read/write on closed pipe
2020/07/22 15:56:34 [Info] [2789936720] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: connection ends > context canceled
2020/07/22 16:03:20 [Info] [3718066473] v2ray.com/core/proxy/vmess/inbound: received request for tcp:v1.mux.cool:0
2020/07/22 16:03:20 [Info] [3718066473] v2ray.com/core/common/mux: received request for tcp:g.co:80
2020/07/22 16:03:20 [Info] [3718066473] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 16:03:20 [Info] [3718066473] v2ray.com/core/proxy/freedom: opening connection to tcp:g.co:80
2020/07/22 16:03:20 [Info] [3718066473] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:g.co:80
2020/07/22 16:03:20 tcp:<IP_ADDRESS>:63867 accepted tcp:g.co:80
2020/07/22 16:03:21 [Info] [3718066473] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
2020/07/22 16:03:21 [Info] [3718066473] v2ray.com/core/common/mux: session 1 ends. > io: read/write on closed pipe
2020/07/22 16:03:29 [Info] [3718066473] v2ray.com/core/common/mux: received request for tcp:g.co:80
2020/07/22 16:03:29 [Info] [3718066473] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 16:03:29 [Info] [3718066473] v2ray.com/core/proxy/freedom: opening connection to tcp:g.co:80
2020/07/22 16:03:29 [Info] [3718066473] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:g.co:80
2020/07/22 16:03:29 tcp:<IP_ADDRESS>:63867 accepted tcp:g.co:80
2020/07/22 16:03:31 [Info] [3718066473] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
2020/07/22 16:03:31 [Info] [3718066473] v2ray.com/core/common/mux: session 2 ends. > io: read/write on closed pipe
2020/07/22 16:03:37 [Info] [3718066473] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: connection ends > context canceled
2020/07/22 16:03:52 [Info] [1623038033] v2ray.com/core/proxy/vmess/inbound: received request for tcp:v1.mux.cool:0
2020/07/22 16:03:52 [Info] [1623038033] v2ray.com/core/common/mux: received request for tcp:g.co:80
2020/07/22 16:03:52 [Info] [1623038033] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 16:03:52 [Info] [1623038033] v2ray.com/core/proxy/freedom: opening connection to tcp:g.co:80
2020/07/22 16:03:52 [Info] [1623038033] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:g.co:80
2020/07/22 16:03:52 tcp:<IP_ADDRESS>:63621 accepted tcp:g.co:80
2020/07/22 16:03:54 [Info] [1623038033] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
2020/07/22 16:03:54 [Info] [1623038033] v2ray.com/core/common/mux: session 1 ends. > io: read/write on closed pipe
2020/07/22 16:03:56 [Info] [1623038033] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: connection ends > context canceled
2020/07/22 16:09:53 [Info] [2429168742] v2ray.com/core/proxy/vmess/inbound: received request for tcp:v1.mux.cool:0
2020/07/22 16:09:53 [Info] [2429168742] v2ray.com/core/common/mux: received request for tcp:g.co:80
2020/07/22 16:09:53 [Info] [2429168742] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 16:09:53 [Info] [2429168742] v2ray.com/core/proxy/freedom: opening connection to tcp:g.co:80
2020/07/22 16:09:53 [Info] [2429168742] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:g.co:80
2020/07/22 16:09:53 tcp:<IP_ADDRESS>:65160 accepted tcp:g.co:80
2020/07/22 16:09:55 [Info] [2429168742] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
2020/07/22 16:09:55 [Info] [2429168742] v2ray.com/core/common/mux: session 1 ends. > io: read/write on closed pipe
2020/07/22 16:10:10 [Info] [2429168742] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: connection ends > context canceled
2020/07/22 16:10:16 [Info] [1784593508] v2ray.com/core/proxy/vmess/inbound: received request for tcp:v1.mux.cool:0
2020/07/22 16:10:16 [Info] [1784593508] v2ray.com/core/common/mux: received request for tcp:g.co:80
2020/07/22 16:10:16 [Info] [1784593508] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 16:10:16 [Info] [1784593508] v2ray.com/core/proxy/freedom: opening connection to tcp:g.co:80
2020/07/22 16:10:16 [Info] [1784593508] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:g.co:80
2020/07/22 16:10:16 tcp:<IP_ADDRESS>:62563 accepted tcp:g.co:80
2020/07/22 16:10:17 [Info] [1784593508] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/freedom: connection ends > context canceled
2020/07/22 16:10:17 [Info] [1784593508] v2ray.com/core/common/mux: session 1 ends. > io: read/write on closed pipe
2020/07/22 16:10:32 [Info] [1784593508] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: connection ends > context canceled
2020/07/22 16:21:03 [Info] [2819314949] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: invalid request from <IP_ADDRESS>:4974 > v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 15 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 16:21:03 <IP_ADDRESS>:4974 rejected  v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 15 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 16:21:08 [Info] [53950348] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: invalid request from <IP_ADDRESS>:18830 > v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 19 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 16:21:08 <IP_ADDRESS>:18830 rejected  v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 19 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 16:21:21 [Info] [4229283284] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: invalid request from <IP_ADDRESS>:62122 > v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 10 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 16:21:21 <IP_ADDRESS>:62122 rejected  v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 10 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 16:21:24 [Info] [3807722917] v2ray.com/core/app/proxyman/inbound: connection ends > v2ray.com/core/proxy/vmess/inbound: invalid request from <IP_ADDRESS>:18216 > v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 11 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found
2020/07/22 16:21:24 <IP_ADDRESS>:18216 rejected  v2ray.com/core/proxy/vmess/encoding: failed to drain connection DrainSize = 2251 24 11 > v2ray.com/core/proxy/vmess/encoding: invalid user > v2ray.com/core/proxy/vmess: Not Found

客户端错误日志:
V2Ray 4.26.0 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.14.4 linux/amd64)
A unified platform for anti-censorship.
2020/07/22 16:21:29 [Info] v2ray.com/core/common/platform/ctlcmd: <v2ctl message>
v2ctl> Read config:  /etc/v2ray-fastly-relay/config.json
2020/07/22 16:21:29 [Debug] v2ray.com/core/app/log: Logger started
2020/07/22 16:21:29 [Debug] v2ray.com/core/app/proxyman/inbound: creating stream worker on <IP_ADDRESS>:4882
2020/07/22 16:21:29 [Debug] v2ray.com/core/app/proxyman/inbound: creating stream worker on <IP_ADDRESS>:4082
2020/07/22 16:21:29 [Info] v2ray.com/core/transport/internet/tcp: listening TCP on <IP_ADDRESS>:4882
2020/07/22 16:21:29 [Info] v2ray.com/core/transport/internet/tcp: listening TCP on <IP_ADDRESS>:4082
2020/07/22 16:21:29 [Info] v2ray.com/core/transport/internet/udp: listening UDP on <IP_ADDRESS>:4082
2020/07/22 16:21:29 [Warning] v2ray.com/core: V2Ray 4.26.0 started
2020/07/22 16:21:32 [Info] [2117782709] v2ray.com/core/proxy/socks: TCP Connect request to tcp:<IP_ADDRESS>:80
2020/07/22 16:21:32 [Info] [2117782709] v2ray.com/core/app/dispatcher: sniffed domain: g.co
2020/07/22 16:21:32 [Info] [2117782709] v2ray.com/core/app/dispatcher: default route for tcp:g.co:80
2020/07/22 16:21:32 tcp:<IP_ADDRESS>:60138 accepted tcp:<IP_ADDRESS>:80
2020/07/22 16:21:32 [Info] [2117782709] v2ray.com/core/common/mux: dispatching request to tcp:g.co:80
2020/07/22 16:21:32 [Debug] v2ray.com/core/app/proxyman/outbound: proxying to HTTP for dest tcp:somedomain.global.prod.fastly.net:80
2020/07/22 16:21:32 [Info] v2ray.com/core/proxy/vmess/outbound: tunneling request to tcp:v1.mux.cool:9527 via tcp:somedomain.global.prod.fastly.net:80
2020/07/22 16:21:32 [Info] v2ray.com/core/transport/internet/tcp: dialing TCP to tcp:<IP_ADDRESS>:8887
2020/07/22 16:23:08 [Info] v2ray.com/core/common/mux: failed to read metadata > io: read/write on closed pipe
2020/07/22 16:23:09 [Info] failed to handler mux client connection > v2ray.com/core/proxy/vmess/outbound: connection ends > context canceled
2020/07/22 16:23:09 [Info] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/http: connection ends > context canceled

请附上访问日志。在 Linux 中，日志通常在 /var/log/v2ray/access.log 文件中。

    // 在这里附上服务器端日志

其它相关的配置文件（如 Nginx）和相关日志。

Fastly VCL 配置
pragma optional_param geoip_opt_in true;
pragma optional_param fetchless_purge_all 1;
pragma optional_param default_ssl_check_cert 1;
pragma optional_param max_backends 5;
pragma optional_param customer_id "36G3CU5q7qys2HudDNJzyg";
C!
W!
# Backends
backend F_Host_1 {
    .between_bytes_timeout = 10s;
    .connect_timeout = 1s;
    .first_byte_timeout = 15s;
    .host = "xx.xx.xx.xx";
    .max_connections = 200;
    .port = "80";
    .share_key = "114mKgaI6kGUOMaU3kUdmK";
}
sub vcl_recv {
#--FASTLY RECV BEGIN
  if (req.restarts == 0) {
    if (!req.http.X-Timer) {
      set req.http.X-Timer = "S" time.start.sec "." time.start.usec_frac;
    }
    set req.http.X-Timer = req.http.X-Timer ",VS0";
  }
  declare local var.fastly_req_do_shield BOOL;
  set var.fastly_req_do_shield = (req.restarts == 0);
  # default conditions
  set req.backend = F_Host_1;
    if (req.http.X-Forwarded-For) { set req.http.Fastly-Temp-XFF = req.http.X-Forwarded-For ", " client.ip; } else { set req.http.Fastly-Temp-XFF = client.ip; }
      return(pass);
# Header rewrite Host-request : 10
      set req.http.Host = "xx.xx.xx.xx:80";
# Header rewrite User-Agent-request : 10
      set req.http.User-Agent = "Go-http-client/1.1";
    # end default conditions
#--FASTLY RECV END
    if (req.request != "HEAD" && req.request != "GET" && req.request != "FASTLYPURGE") {
      return(pass);
    }
    return(lookup);
}
sub vcl_fetch {
#--FASTLY FETCH BEGIN
# record which cache ran vcl_fetch for this object and when
  set beresp.http.Fastly-Debug-Path = "(F " server.identity " " now.sec ") " if(beresp.http.Fastly-Debug-Path, beresp.http.Fastly-Debug-Path, "");
# generic mechanism to vary on something
  if (req.http.Fastly-Vary-String) {
    if (beresp.http.Vary) {
      set beresp.http.Vary = "Fastly-Vary-String, "  beresp.http.Vary;
    } else {
      set beresp.http.Vary = "Fastly-Vary-String, ";
    }
  }
#--FASTLY FETCH END
  if ((beresp.status == 500 || beresp.status == 503) && req.restarts < 1 && (req.request == "GET" || req.request == "HEAD")) {
    restart;
  }
  if(req.restarts > 0 ) {
    set beresp.http.Fastly-Restarts = req.restarts;
  }
  if (beresp.http.Set-Cookie) {
    set req.http.Fastly-Cachetype = "SETCOOKIE";
    return (pass);
  }
  if (beresp.http.Cache-Control ~ "private") {
    set req.http.Fastly-Cachetype = "PRIVATE";
    return (pass);
  }
  if (beresp.status == 500 || beresp.status == 503) {
    set req.http.Fastly-Cachetype = "ERROR";
    set beresp.ttl = 1s;
    set beresp.grace = 5s;
    return (deliver);
  }
  if (beresp.http.Expires || beresp.http.Surrogate-Control ~ "max-age" || beresp.http.Cache-Control ~"(s-maxage|max-age)") {
    # keep the ttl here
  } else {
        # apply the default ttl
    set beresp.ttl = 3600s;
  }
  return(deliver);
}
sub vcl_hit {
#--FASTLY HIT BEGIN
# we cannot reach obj.ttl and obj.grace in deliver, save them when we can in vcl_hit
  set req.http.Fastly-Tmp-Obj-TTL = obj.ttl;
  set req.http.Fastly-Tmp-Obj-Grace = obj.grace;
  {
    set req.http.Fastly-Cachetype = "HIT";
  }
#--FASTLY HIT END
  if (!obj.cacheable) {
    return(pass);
  }
  return(deliver);
}
sub vcl_miss {
#--FASTLY MISS BEGIN
# this is not a hit after all, clean up these set in vcl_hit
  unset req.http.Fastly-Tmp-Obj-TTL;
  unset req.http.Fastly-Tmp-Obj-Grace;
  {
    if (req.http.Fastly-Check-SHA1) {
       error 550 "Doesnt exist";
    }
#--FASTLY BEREQ BEGIN
    {
      {
        if (req.http.Fastly-FF) {
          set bereq.http.Fastly-Client = "1";
        }
      }
      {
        # do not send this to the backend
        unset bereq.http.Fastly-Original-Cookie;
        unset bereq.http.Fastly-Original-URL;
        unset bereq.http.Fastly-Vary-String;
        unset bereq.http.X-Varnish-Client;
      }
      if (req.http.Fastly-Temp-XFF) {
         if (req.http.Fastly-Temp-XFF == "") {
           unset bereq.http.X-Forwarded-For;
         } else {
           set bereq.http.X-Forwarded-For = req.http.Fastly-Temp-XFF;
         }
         # unset bereq.http.Fastly-Temp-XFF;
      }
    }
#--FASTLY BEREQ END
 #;
    set req.http.Fastly-Cachetype = "MISS";
  }
#--FASTLY MISS END
  return(fetch);
}
sub vcl_deliver {
#--FASTLY DELIVER BEGIN
# record the journey of the object, expose it only if req.http.Fastly-Debug.
  if (req.http.Fastly-Debug || req.http.Fastly-FF) {
    set resp.http.Fastly-Debug-Path = "(D " server.identity " " now.sec ") "
       if(resp.http.Fastly-Debug-Path, resp.http.Fastly-Debug-Path, "");
    set resp.http.Fastly-Debug-TTL = if(obj.hits > 0, "(H ", "(M ")
       server.identity
       if(req.http.Fastly-Tmp-Obj-TTL && req.http.Fastly-Tmp-Obj-Grace, " " req.http.Fastly-Tmp-Obj-TTL " " req.http.Fastly-Tmp-Obj-Grace " ", " - - ")
       if(resp.http.Age, resp.http.Age, "-")
       ") "
       if(resp.http.Fastly-Debug-TTL, resp.http.Fastly-Debug-TTL, "");
    set resp.http.Fastly-Debug-Digest = digest.hash_sha256(req.digest);
  } else {
    unset resp.http.Fastly-Debug-Path;
    unset resp.http.Fastly-Debug-TTL;
    unset resp.http.Fastly-Debug-Digest;
  }
  # add or append X-Served-By/X-Cache(-Hits)
  {
    if(!resp.http.X-Served-By) {
      set resp.http.X-Served-By  = server.identity;
    } else {
      set resp.http.X-Served-By = resp.http.X-Served-By ", " server.identity;
    }
    set resp.http.X-Cache = if(resp.http.X-Cache, resp.http.X-Cache ", ","") if(fastly_info.state ~ "HIT($|-)", "HIT", "MISS");
    if(!resp.http.X-Cache-Hits) {
      set resp.http.X-Cache-Hits = obj.hits;
    } else {
      set resp.http.X-Cache-Hits = resp.http.X-Cache-Hits ", " obj.hits;
    }
  }
  if (req.http.X-Timer) {
    set resp.http.X-Timer = req.http.X-Timer ",VE" time.elapsed.msec;
  }
  # VARY FIXUP
  {
    # remove before sending to client
    set resp.http.Vary = regsub(resp.http.Vary, "Fastly-Vary-String, ", "");
    if (resp.http.Vary ~ "^\s*$") {
      unset resp.http.Vary;
    }
  }
  unset resp.http.X-Varnish;
  # Pop the surrogate headers into the request object so we can reference them later
  set req.http.Surrogate-Key = resp.http.Surrogate-Key;
  set req.http.Surrogate-Control = resp.http.Surrogate-Control;
  # If we are not forwarding or debugging unset the surrogate headers so they are not present in the response
  if (!req.http.Fastly-FF && !req.http.Fastly-Debug) {
    unset resp.http.Surrogate-Key;
    unset resp.http.Surrogate-Control;
  }
  if(resp.status == 550) {
    return(deliver);
  }
  #default response conditions
#--FASTLY DELIVER END
  return(deliver);
}
sub vcl_error {
#--FASTLY ERROR BEGIN
  if (obj.status == 801) {
     set obj.status = 301;
     set obj.response = "Moved Permanently";
     set obj.http.Location = "https://" req.http.host req.url;
     synthetic {""};
     return (deliver);
  }
  if (req.http.Fastly-Restart-On-Error) {
    if (obj.status == 503 && req.restarts == 0) {
      restart;
    }
  }
  {
    if (obj.status == 550) {
      return(deliver);
    }
  }
#--FASTLY ERROR END
}
sub vcl_pipe {
#--FASTLY PIPE BEGIN
  {
#--FASTLY BEREQ BEGIN
    {
      {
        if (req.http.Fastly-FF) {
          set bereq.http.Fastly-Client = "1";
        }
      }
      {
        # do not send this to the backend
        unset bereq.http.Fastly-Original-Cookie;
        unset bereq.http.Fastly-Original-URL;
        unset bereq.http.Fastly-Vary-String;
        unset bereq.http.X-Varnish-Client;
      }
      if (req.http.Fastly-Temp-XFF) {
         if (req.http.Fastly-Temp-XFF == "") {
           unset bereq.http.X-Forwarded-For;
         } else {
           set bereq.http.X-Forwarded-For = req.http.Fastly-Temp-XFF;
         }
         # unset bereq.http.Fastly-Temp-XFF;
      }
    }
#--FASTLY BEREQ END
    #;
    set req.http.Fastly-Cachetype = "PIPE";
    set bereq.http.connection = "close";
  }
#--FASTLY PIPE END
}
sub vcl_pass {
#--FASTLY PASS BEGIN
  {
#--FASTLY BEREQ BEGIN
    {
      {
        if (req.http.Fastly-FF) {
          set bereq.http.Fastly-Client = "1";
        }
      }
      {
        # do not send this to the backend
        unset bereq.http.Fastly-Original-Cookie;
        unset bereq.http.Fastly-Original-URL;
        unset bereq.http.Fastly-Vary-String;
        unset bereq.http.X-Varnish-Client;
      }
      if (req.http.Fastly-Temp-XFF) {
         if (req.http.Fastly-Temp-XFF == "") {
           unset bereq.http.X-Forwarded-For;
         } else {
           set bereq.http.X-Forwarded-For = req.http.Fastly-Temp-XFF;
         }
         # unset bereq.http.Fastly-Temp-XFF;
      }
    }
#--FASTLY BEREQ END
 #;
    set req.http.Fastly-Cachetype = "PASS";
  }
#--FASTLY PASS END
}
sub vcl_log {
#--FASTLY LOG BEGIN
  # default response conditions
#--FASTLY LOG END
}
sub vcl_hash {
#--FASTLY HASH BEGIN
  #if unspecified fall back to normal
  {
    set req.hash += req.url;
    set req.hash += req.http.host;
    set req.hash += req.vcl.generation;
    return (hash);
  }
#--FASTLY HASH END
}

如果 V2Ray 无法启动，请附上 --test 输出。

通常的命令为 /usr/bin/v2ray/v2ray --test --config /etc/v2ray/config.json。请按实际情况修改。

如果 V2Ray 服务运行不正常，请附上 journal 日志。

通常的命令为 journalctl -u v2ray。
请预览一下你填的内容再提交。

v2ray启动之后根本没数据传输，百分不解

dear can we use now "Fastly CDN on v2ray-http" any method?

Has anyone been able to configure v2ray with cdn fastly?


DCOS-29245 Reservation discipline: limit simultaneous reservations

Adds support for reservation disciplines, which limits the number of services that may be reserving resources at the same time. This reduces the risk of a deadlock when multiple services are simulatenously consuming available resources. For example, imagine two services which each wanted 51% of the cluster's CPU. By default, this setting is disabled (no limit on services reserving in parallel), but operators may enable it in accordance with any quota configuration they may have.
At the moment, services return RESERVING for their entire deploy plan, so this isn't very efficient when  enabled, but again it's disabled by default for now. A separate PR will update the per-service deployment logic into footprint+launch stages, where RESERVING would only be advertised during the relatively fast footprint stage, and the launch of tasks into that footprint would instead be advertised as RUNNING.

(remaining failure in hello-world was due to the known mesos crash bug)


Update to OSBA 2.14

Open Service Broker API was recently updated from version 2.13 to 2.14. Hence this checker needs to be updated to reflect the changes.
Another thing that I can suggest is to use tags so that it will be easier for developers to switch between broker API versions.

The test framework has been refactored for easily extended by #71

Hi @lordinel, currently we are trying to refactor the osb-checker framework with go language (please refer to #77 ), and now it's working. So if you want to test the spec with 2.14, please take a look at dev branch.

@lordinel @mattmcneeney I think this issue is already fixed, please have a check with it.

Ah great, that's good to hear. You probably want to submit a PR to README.md in the main repo to show that the latest supported version is v2.14


[PLACEHOLDER] - KMS lPs missing

What happened? Provide a clear and concise description of the bug, including deployment details.
The KMS server IPs are using only the secondary IP listed in our docs.
"name": "WindowsActivationKMS",
"properties": {
"priority": 140,
"access": "Allow",
"description": "Session host traffic to Windows license activation services",
"destinationAddressPrefix": "<IP_ADDRESS>",
"direction": "Outbound",
"sourcePortRange": "*",
"destinationPortRange": "1688",
"protocol": "Tcp",
"sourceAddressPrefix": "VirtualNetwork"
The first DNS name of the KMS server for the Azure Global cloud is azkms.core.windows.net with two IP addresses: <IP_ADDRESS> and <IP_ADDRESS>. The second DNS name of the KMS server for the Azure Global cloud is kms.core.windows.net with an IP address of <IP_ADDRESS>.
See here:
https://learn.microsoft.com/en-us/troubleshoot/azure/virtual-machines/windows/custom-routes-enable-kms-activation#solution
Please provide the correlation id associated with your error or bug.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
What was the expected outcome?
IPs should be reflected of latest IP addresses provided in our docs.
Relevant log output
No response

@jcoyne-msft thank you for your feedback we are reviewing it.


take_while operator

Still a really useful take_while operator is not implemented.

yes! 👍
contributions are welcome

This is great! We need to redress the balance and add `skip_while()' soon :)


Normalize Space dimensions to (0, 1) in Optimizer

It seems like we do not normalize the dimensions of the space in the ask-and-tell API. Noted by @cranmer in https://github.com/scikit-optimize/scikit-optimize/issues/399#issuecomment-307887516

If the estimator is a GP then we need to always normalise to (0, 1)? Asking because using Optimizer directly probably means you are more of an expert who wants to do exactly what they want with as little interference from the library. At least we should allow such a way of working. How do we make both easy switching from *_minimize to Optimizer possible and let experts do expert things?

Just pitching in my 2 cents.
Maybe using something like a pipeline as a surrogate could be a solution, for example:
from skopt.learning import GaussianProcessRegressor
from skopt.space import Real
from skopt import Optimizer

import numpy as np

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler

# modified Pipeline class to handle `return_std` etc argument for predict
class SurrogatePipeline(Pipeline):
    def predict(self, X, *args, **kwargs):
        Xt = X
        for name, transform in self.steps[:-1]:
            if transform is not None:
                Xt = transform.transform(Xt)
        return self.steps[-1][-1].predict(Xt, *args, **kwargs)

# optimizer that uses pipeline as a surrogate
opt = Optimizer(
    dimensions=[Real(-2.0, 2.0) for i in range(10)],
    base_estimator=SurrogatePipeline([
        ('Scaler', MinMaxScaler()),
        ('Surrogate', GaussianProcessRegressor()),
    ])
)

# example optimization
obj = lambda x: np.sum(x)

for i in range(32):
    p = opt.ask()
    opt.tell(p, obj(p))
    print(min(opt.yi))

Instead of MinMaxScaler, a dedicated scaler can be used that normalizes based on dimensions of a problem.  This should make it possible for experts to modify the pipeline if necessary to remove normalization. Maybe also nice in general in someone wants to have a complex surrogate pipeline.

How do we make both easy switching from *_minimize to Optimizer possible and let experts do expert things?

Good point. For starters, we can maybe support base_estimator to be strings and for those cases we can handle things similar to what we do in our minimize functions.

I like the idea by @iaroslav-ai of moving the idea of transformations from the Dimension instance to the base_estimator. What are the cons?

In my veiw such approach might result in a bit of a boilerplate code, and one would need to define an instance of array of dimensions, and then feed it to both Optimizer and surrogate pipeline (at least how I imagine it). So if someone new tries to use Optimizer, they might not figure out to use pipelines (but examples might be helpful for that).
Maybe somewhat a boilerplate is a price for larger flexibility with Optimizer.
On somewhat related note: with pipeline approach one can also try different normalization techniques, such as StandardScaler for example, maybe it turns out that it performs better than just normalizaiton to [0, 1]. Maybe benchmarking different scalers could reveal something interesting.

Maybe something like skopt.recipes could reduce the boilerplate with pipeline approach, where you have a function that instantiates a pipeline with certain surrogate and normalizaiton.
Again somewhat related idea: black box optimization can be applied to black box optimization in order to maximize for example average score on benchmarks by selecting type of normalization and surrogate (and maybe something else). This might result in some high performing "best" recipe. Seems like it might be something useful, fun and meta :)

I think the question is: is normalising a property of the search space or a property of the optimiser? Right now skopt thinks it is a property of the space. If you are using a GP based minimizer then you probably want to normalise all dimensions (except categorical) but you don't need that for a tree based one. So this would suggest really it is a property of the optimiser you are using?

I would suggest to keep things simple for now, i.e scale to (0, 1) irrespective of the minimizer and the advanced user do whatever he wants to do (by providing a Space instance)

If we can't think of a reason not to scale by default, should we change the default value of https://github.com/scikit-optimize/scikit-optimize/blob/master/skopt/space/space.py#L166 to take care of this (also for other Dimension classes)?

That is a good idea.
However for a long-term solution, I would suggest to decouple the idea of transformations from Dimension instances. A Dimension should just have a range and should be allowed to sample from that range.
We should have a pipeline that has a Scaler that does the necessary transformations before supplying it to the base_estimator. Not sure how easy it is to accomplish that.


openstack: add --wait to block until the suite finishes

Signed-off-by: Loic Dachary<EMAIL_ADDRESS>

Is the wait feature fully implemented?

@zmc it is implemented in teuthology-suite. Adding the option here in teuthology-openstack means it will be transparently passed to teuthology-suite. That's why it looks so magical ;-)

Ah of course! Thanks for jogging my memory.


Adding multi tenant support

closes #53
Description:
This pull request introduces a new attribute, TenantIdsAttribute, allowing developers to specify a string[] of tenant identifiers for each worker. Additionally, it adds a tenantIds option to the worker options, enabling more flexible and customizable multi-tenant configurations.
Key Changes:

Added TenantIdsAttribute to support tenant-specific worker configuration.
Enhanced worker options by introducing an optional tenantIds property.

These updates improve the library's support for multi-tenancy, making it easier to isolate tasks and workflows based on tenant identifiers.

@rabazit Thanks a lot - this is an important improvement. Will have a look at it soon.


Make the non-gui executable build on FreeBSD

Here is a minimal patch to make the non-gui executable compile on FreeBSD.
I created a "dummy.c" file for libusbp with sufficient entrypoints for compilation to succeed but all of them failing.

Merged --- thanks!


Move assert_emails_sent to test assertion x

Move the methods assert_emails_sent, assert_email_not_set and assert_no_email_sent from Swoosh.TestAssertions to Swoosh.X.TestAssertions. I also moved the private methods used by the ones I moved, I was wondering if we should remove all those assert_equals and do the assertions inside the assert_emails_sent. Finally I added the tests to ensure those methods are working as they should.
closes #909

Thanks! Give me some time to think about whether/how I can incorporate https://github.com/swoosh/swoosh/issues/854 into this PR, or as a follow up.

@jakub-gonet care to take a look to see if there is anything to add?


feat: support approving vaults to spend a token

got this basic working locally, let me know if it works for you

lgtm but probably worth @nymmrx taking a look as well

@nymmrx @jstashh I just pushed the code to approve zapIn and zapOut too. Let me know if it looks ok. I copied the style of your latest zap commit so should look familiar. Only thing is that if the token is already approved by zapper I return Promise instead of Promise. Let me know if there's a better way.


[MTSRE-278] Enforce python3.9 and bump sretoolbox.

Also added some cleanup.
This is required as sretoolbox is now Python >= 3.8 and we will need it to utilize the Mtcli integration.
Also migrating logger code to sretoolbox.
TODO (after merge)

[x] Bump sretoolbox to include Mtcli: https://github.com/app-sre/sretoolbox/pull/62
[ ] Bump VERSION of managed-tenants-cli + new release
[ ] Merge this: https:///managed-tenants/-/merge_requests/1456

Do we have python 3.9 available in our CI?

Using docker-in-docker for now: https://gitlab/managed-tenants/-/merge_requests/1456

/lgtm

Don't we have to merge gitlab/service/managed-tenants/-/merge_requests/1456 before we release this new version?
Looks good otherwise

Don't we have to merge gitlab/service/managed-tenants/-/merge_requests/1456 before we release this new version?

I don't think so. Please correct me if I am wrong but isn't it true that currently, the HEAD of managed-tenants isn't even making use of mtcli?
And the MR - https://gitlab.cee.redhat.com/service/managed-tenants/-/merge_requests/1456 - is the first-time intro of mtcli's usage in the managed-tenants. Hence, wouldn't merging this pull request #35 first make more sense (because it would bring mtcli to the latest suitable state) and then, merging https://gitlab.cee.redhat.com/service/managed-tenants/-/merge_requests/1456 so that that MR is forced and ensured to be compliant with the latest state of mtcli?
cc: @sugarraysam

@ashishmax31 We need to first release a new version of managed-tenants-cli that includes sretoolbox 1.2.0. This is for two reasons:

Want to use Mtcli binary abstraction from sretoolbox: https://github.com/app-sre/sretoolbox/blob/master/sretoolbox/binaries/mtcli.py
The managed-tenants repository inherits it's verion of sretoolbox from importing the managed-tenants-cli package. It's a not-so-nice side effect if you ask me: managed-tenants/-/blob/main/requirements-dev.txt

So we need to merge this first, and then we will be able to write a custom task using sretoolbox.binaries.mtcli.Mtcli. Does this make sense?


Update plugins-configuration-settings.rst

Summary
When setting defaultenabled to false it sets Test Mode to true in the UI.

@streamer45 - Is this intentional product functionality?

@cwarnermm Yes, defaultenabled was effectively relabeled as "test mode" but it's the same setting underneath as we didn't want to cause a breaking change.

@streamer45 - as it stands now the docs are incorrect in guidance for setting this. Setting to true does not mean only sys admins can start calls like the docs say.

Okay, that makes sense, but the setting is called "Test Mode" here, which clearly refers to the admin UI so it's confusing. I wish we deprecated it more formally now. I am okay with merging the changes here but maybe we should change the name back to what it really is and add a note instead.

@streamer45 i'd second more docs clarification. It took a few looks to make sure I submitted this right 😂 on being false tripped me along with naming.


Updates NPM dependencies to fix security vulnerabilities

Summary of Changes

Updates NPM modules (via npm update)
Fixes NPM package vulnerabilities (via npm audit fix)
Updates some Redux typings to adjust to new packages

Why?

We want to address the project's security vulnerabilities, providing trust to potential adopters and keeping our platform secure.
Updating packages regularly is one of the best ways of doing this, ensuring that our project doesn't get out of date while improving performance and security.

Tests
Ran all tests
Tested manually
CheckList
Make sure you have checked all steps below to ensure a timely review.

[x] PR title addresses the issue accurately and concisely. Example: "Updates the version of Flask to v1.0.2"

In case you are adding a dependency, check if the license complies with the ASF 3rd Party License Policy.

[x] PR includes a summary of changes, including screenshots of any UI changes.
[x] PR adds unit tests, updates existing unit tests, OR documents why no test additions or modifications are needed.
[ ] In case of new functionality, my PR adds documentation that describes how to use it.

All the public python functions and the classes in the PR contain docstrings that explain what it does

[ ] PR passes all tests documented in the developer guide

Codecov Report

Merging #444 into master will increase coverage by 0.01%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##           master     #444      +/-   ##
==========================================
+ Coverage   79.56%   79.58%   +0.01%
==========================================
  Files         212      212
  Lines        5369     5373       +4
  Branches      706      706
==========================================
+ Hits         4272     4276       +4
  Misses       1039     1039
  Partials       58       58

Impacted Files
Coverage Δ

...components/TableDetail/DataPreviewButton/index.tsx
0.00% <0.00%> (ø)

...eSearchResults/SearchItemList/SearchItem/index.tsx
100.00% <100.00%> (ø)

amundsen_application/static/js/interfaces/index.ts
100.00% <0.00%> (ø)

Continue to review full report at Codecov.

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

Meow @ttannis @danwom


Console warning: …public runtime config value (sanity) directly from the top level…

Version
module: 1.7.1
nuxt: 3.4.3
Nuxt configuration
export default defineNuxtConfig({
  modules: [
    '@nuxtjs/sanity',
  ],
  sanity: {
    projectId: process.env.SANITY_PROJECT_ID,
    apiVersion: '2023-03-27'
  },

Reproduction
I get the following warning in the browser console.

[nuxt] [runtimeConfig] You are trying to access a public runtime config value (sanity) directly from the top level. This currently works (for backward compatibility with Nuxt 2) but this compatibility layer will be removed in v3.5. Instead, you can update config['sanity'] to config.public['sanity'].

You can safely ignore this; it is not an issue with this module.


Scan QR code gone ?

Describe The Problem
In your earlier version there was an option to scan the QR config so wireguard was configured  in Wireguard app on IOS?
Don't seem to find that option anymore?
**CLOSE It - LOCATED IT :) **

Hi, yes I hide it under the context menu of each peer to keep the UI clean :) Please let me know if you have any other questions :)

Actually … have 1 😃😃😃.
Homepage you have - with the terminal login…. I love it.
Is that something you have made public? 😃


Setting center of rotation

It would be useful to provide a center of rotation.
This can be especially useful for creating gauges etc. The center of rotation should be remembered (eg. saved with object).
Is this functionality planned, or is it implemented and did I miss it?

This requires a bit more design thought to figure out how this relates to the Select Tool's transform cage and how it relates to the layer transform and the future transform node. It will have to be left out for the moment, unless we want it to be built as a stopgap feature, for the moment but I'll file this under an upcoming sprint. It could be a good feature for a new contributor as a stopgap (pre-node graph). It's a relatively important feature but won't make it in time for the alpha release this week.


Added changelog for remrem generate

Coverage remained the same at 60.0% when pulling 0847b49d0e19a3690b9029a1c8da44aceedf83b3 on SantoshNC68:changelog into ff5653c87f70135764f81256bf999c61d1d7550e on Ericsson:master.


Remove duplicate node matcher macro definition from Node

Previously, Node re-implemented a near-identical version of NodePattern::Macros#def_node_matcher, and in doing so directly referenced the compiler, which is intended to be private.
This change allows #def_node_matcher to be called from within a node and have the node instance passed as the default argument.
It also definitively makes the compiler private through #private_constant.

Before submitting the PR make sure the following are checked:

[X] Wrote good commit messages.
[ ] Commit message starts with [Fix #issue-number] (if the related issue exists).
[X] Used the same coding conventions as the rest of the project.
[X] Feature branch is up-to-date with master (if not - rebase it).
[X] Squashed related commits together.
[ ] Added tests.
[ ] Added an entry to the Changelog if the new code introduces user-observable changes. See changelog entry format.
[X] All tests(rake spec) are passing.
[X] The new code doesn't generate RuboCop offenses that are checked by rake internal_investigation.
[X] The PR relates to only one subject with a clear title
and description in grammatically correct, complete sentences.
[ ] Updated cop documentation with rake generate_cops_documentation (required only when you've added a new cop or changed the configuration/documentation of an existing cop).

You'll have to rebase this on top of the current master.

@bbatsov: Rebased. 🙂


[E2E] Key sharing

Last big missing feature.
The functionality is pretty basic for now, in order to prevent a careless user to mess up and share every keys they can. As is, a user will only be prompted for key sharing if the request comes from another of their device.
Consequently, the requests are also sent only to the user's own devices, even though we could have been more broad since we have nothing to lose asking more devices (namely the sender's, and maybe all the others in the room).
This should be easy to change at a later time, especially when all this is better spec'd and more of the E2E code is reviewed.
There are two main user interactions: deciding to share keys or not when a request arrive, and being notified when a requested key arrives, in order to try to decrypt messages again. Hence, the user has to keep track of undecryptable messages to make the most of this. Maybe something more convenient could be implemented, but I don't have a satisfying idea for now.
Lastly, note that the performance of key sharing is bad, as there is no way to aggregate requests and forwards. If there is a spec change to allow this, implementing it would be very useful.
Signed-off-by: Valentin Deniaud<EMAIL_ADDRESS>

we have nothing to lose asking more devices (namely the sender's, and maybe all the others in the room).

N.B. that if you ask the others in the room, their clients would have to track the membership of the room as of an arbitrary event (or megolm session) to try to decide whether the requester is even allowed to see that history from their perspective.  I don't know of any client which does this yet.  So it's probably best to just query your other devices rather than the other members.

Sure, the point of what I wrote was that I had kept my hands off this, and that this better be spec'd before anyone attempts to implement it :)


RED REINDEER

Interesting project idea! You have used some documentation though more would be a nice thing to have.
Your functions do not follow the naming convention of function_name, most are like functionName.
You recommend running the project by directly executing project/__main__.py though you should accomplish the same thing using the recommended python -m project.
Also, I can't really get my head around why there is a rather large postscript document in your project, was this left in intentionally? Is it used somewhere?


Add MQuaresma to pqcp org

If you want to be able to assign bugs to someone, they only need Read access.
Please include:

GitHub ID to add: MQuaresma
Project to be added to: libjade

Part of https://github.com/pq-code-package/tsc/issues/24

Team to be added to: pqcp-contributors, pqcp-libjade

invite sent!


Add interceptors in flutter_graphql to use refresh token to get new access token.

Add interceptors in flutter_graphql to use refresh token to get new access token. There is no official solution for using a refresh token in flutter with graphql. Please add this feature in the next version.

I don't think this is a good idea to implement this as part of the client. You can implement this as a separate link. Furthermore, I'm not totally convinced such a link should be part of this package. It'll increase the amount of code we'll have to maintain and the general usability is questionable.

I'm not totally convinced such a link should be part of this package. It'll increase the amount of code we'll have to maintain and the general usability is questionable.

I agree with this idea! We use an external package to manage the link! However, a new package like graphql_links can be welcome to see around


Fix genie in julia-api

closes https://app.clickup.com/t/1250339/DATA-1005

Running in https://github.com/saturncloud/release-images/runs/7654945518?check_suite_focus=true

The integration test passed, so this is ready to merge!


Fix Cracked! game

-Stubbed out Ordinal 82
-Stubbed out Ordinal 549
-Fixed secure echo bug in signup
-Fixed secure echo bug in bad password
-Added output messaging/logging for a denial of access related to a key

Fixes #510


Add .htaccess file with download.

Does not have an Apache config for /servername for multi server.
After lots of messing around with no exmaple in the wiki I found this to work;
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d

FallbackResource /index.html

Alternativly could just be added to:
https://github.com/JLyne/LiveAtlas/wiki/Configuring-Multiple-Servers
The reason ive not edited it into the wiki myself, is im not sure im doing this the correct way? I may not even need the RewriteCond.

Added to the wiki


Doctor Class feat too weak

Essentially we are doing the same thing with a med pack, too weak in my opinion,

I agree. I'll write up a change then submit to Trowl. (not tagging yet, 'cause I've already been pretty noisy).

Maybe we should remove them entirely and the Doctor class can rely on its procedures, similar to the Warlock / Sorcerer classes?

That seems almost too easy. Maybe a bit lazy. It should be good for something.


nxppy.SelectError: FieldReset command failed: 20b

Hi svvitale,
Thanks for your great work. I have been using your wrapper since last year.
It worked great so far but last week. I tried to start up a new project.
I tried to go through a simple test, to get myself familiar with it but I gave me an error.
This is my testing script, test.py, as follow:
import nxppy
mifare = nxppy.Mifare()
uid=mifare.select()
print uid
it shows this error:
Traceback (most recent call last):
File "test.py", line 4, in
uid = mifare.select()
nxppy.SelectError: FieldReset command failed: 20b
Could you mind get me some idea how to fix it?

Hi - I'm new to raspberry pi and the NFC board - so I certainly could be doing something wrong - but I'm having the exact same issue (same script too). Note I am using the new Raspberry Pi 2 B.

Hi @Korzonco, @jwellnitz,
Note that the interface changed to be more pythonic in version 1.1 (including raising exceptions on error).  I just added an example to the README that shows how to do a simple polling loop.  Please let me know if that doesn't work for you.
https://github.com/svvitale/nxppy

I tried following the README but same error appear even I use another mirco SD with a new image on it. Tried with both presenting a card or no card as well.

Hi @Korzonco,
Is this the same EXPLORE-NFC that you've been using all along?  Can you verify that SPI is enabled?

Yes I did enable it. By sudo raspi-config.
On Feb 20, 2015 4:51 PM, "Scott Vitale"<EMAIL_ADDRESS>wrote:

Hi @Korzonco,
Is this the same EXPLORE-NFC that you've been using all along? Can you
verify that SPI is enabled?
—
Reply to this email directly or view it on GitHub.

I tried the new example too and it would never print the uid. I thought that was because I don't have anything written to the NFC tag. So I tried the same example, replacing mifare.select with mifare.write_block(10, b'abcd') and got the error WriteError: Write failed: 20b.

Well, I have good news and bad news.  The good news is that I reproduced this issue with Raspian 01-31-2015.  The bad news is that I don't have a fix yet.  For now, you can revert back to Raspian 12-24-2014 and things will start to work again.  The older version is available here: http://downloads.raspberrypi.org/raspbian/images/raspbian-2014-12-25/
I'll let you guys know as soon as I have a fix for newer versions.

Hi svvitale,
Thanks for your support!!
I was thinking is it about the GPIO connection with rpi2. I had this issues in my other projects when rpi2 was released. And there is another possibility that NXP just releases a new source files. Hope to hear your good news. :)

I tried Scott's recommendation over the weekend (to go back to the older Raspian) and here are my results. Shorter version: it worked.

Downloaded older Raspian image
Raspberry Pi 2 B wouldn't boot with it, I had a Raspberry Pi 1 A+ that would
My USB hub that worked with the Pi 2 B wouldn't work with the PI 1 A+
Went to store for new USB hub, it worked with the A+
Tried to install python as recommended in the Readme, it failed (turns out I had to run apt-get update first, but I was afraid that would make the older Raspian image not work with nxppy again - see a few steps down)
Installed cmake
Tried to install nxppy - had to install pip first (found guidance online, something like: simple_update pythontools), not sure this would have been necessary if Python installed the first time)
ran apt-get update, despite my fears, it didn't break anything
tried again to install python, it worked
tried again to install nxppy, it worked

I'm now a few steps farther along in my project. Thanks Scott.
It does seem like a raspian image update caused NXP to do some rearchitecting of their sw too, see:
http://www.element14.com/community/thread/41060/l/card-polling-problem

Thanks for verifying, @jwellnitz. I'm working with NXP directly on some of this, so after we get over this hump, I expect smooth sailing ahead.  I'll update this issue as I make progress.

Hi
I'm loving nxppy (I'm using it with the older image 14.12.25 ). Soon I'm getting a raspberry pi 2 though. Ive found out that iw dosent woek with the older images, including 14.12.25. for a school project were making a water dispensing machine using a raspberry pi and NFC tags. Using the raspberry pi 2 for this would be great. Im wondering how long it might take for nxppy to be updated for use with newer images. if it could be working soon we will stick with the raspberry pi 2 for our project but if not we will have to use the raspberry pi B (we need the extra GPIO pins). Any insight into how close you are to making this work would be great. Thank you very much.

Hi @toby314,
The updates are complete on my test machine, but there are still some
changes needed in the build process.  I expect to release something this
week that will work with the Pi2.
-Scott
On Sun, Mar 1, 2015 at 11:58 AM toby314<EMAIL_ADDRESS>wrote:

Hi
I'm loving nxppy (I'm using it with the older image 14.12.25 ). Soon I'm
getting a raspberry pi 2 though. Ive found out that iw dosent woek with the
older images, including 14.12.25. for a school project were making a water
dispensing machine using a raspberry pi and NFC tags. Using the raspberry
pi 2 for this would be great. Im wondering how long it might take for nxppy
to be updated for use with newer images. if it could be working soon we
will stick with the raspberry pi 2 for our project but if not we will have
to use the raspberry pi B (we need the extra GPIO pins). Any insight into
how close you are to making this work would be great. Thank you very much.
—
Reply to this email directly or view it on GitHub
https://github.com/svvitale/nxppy/issues/6#issuecomment-76624085.

Hi, its me again.
I've noticed that you can only write 4 bytes to blocks 10 and 14, i was hoping that i would be able to use more than that. Is this a problem with my pi or nxppy generally? I've also found that block 6 seems to work, is there a problem with doing I'm? i'm using this for a micro-payment application, can you shed any light on using nxppy for decreaing credit on the nyfare MIFARE card?
Thanks.

Hi Toby,
I would suggest you to get a datasheet of your NFC tag. It should give you the information you need.
Cheers

Having same problem on Raspberry PI 2, hope for fast fix.

This issue is now resolved in the 1.3.0 release.  Please refer to the README for some updated installation instructions, and let me know if you run into any issues.  Unfortunately I don't have a Pi2 to test on, but I have confirmed that nxppy is working again in the latest Raspian release (2015-02-16) on a Pi1 model B.

Compiled from sources on Rpi2, it works. Thank you.

Hi svvitale,
Thanks for your help.
My little rpi B+ with nxp & nxppy is back on live now.
Cheers :)


Remove golangci integration

Description of your changes

See https://github.com/crossplane/crossplane/issues/1283 for context
Checklist

I have:

[ ] Run make reviewable to ensure this PR is ready for review.
[ ] Ensured this PR contains a neat, self documenting set of commits.
[ ] Updated any relevant documentation, examples, or release notes.
[ ] Updated the dependencies in app.yaml to include any new role permissions.

Uh nevermind - looks like we never had golangci-lint setup here and I got the unit tests by mistake.


[firebase_messaging] Configuring onBackgroundMessage on iOS causes error

When onBackgroundMessage is set in the configure method in FirebaseMessaging, an error is thrown in iOS and so firebase messaging can't be configured.
Unhandled Exception: MissingPluginException(No implementation found for method FcmDartService#start on channel plugins.flutter.io/firebase_messaging)
It may be worth noting that I'm using flutter_local_notifications, but this seems unrelated to the other issues reported when working with both libraries at the same time.

Hi @Eddydpyl
I see there's an open issue addressing the case you described.
Please follow up on that issue,
I'm closing the current one as duplicate.
If you disagree please write in the comments
and I will reopen it.
Thank you


Adding custom labels to a log will permanently merge them for the logger instance

Environment details

OS: Ubuntu
Node.js version: 8.9.4
npm version: 5.6.0
@google-cloud/logging-winston version: 0.9.0

Steps to reproduce

Create new logger instance

...
  const loggingWinston = new LoggingWinston({
    labels: {
      label1: 'label1',
    },
  });
....
  const logger = new Logger({
    prefix: 'web-server',
    level: 'info', // log at 'info' and above
    transports: [loggingWinston],
  });
...

Log with custom labels

logger.info('hello', { message: { prop1: 'test' }, labels: { label2: 'label2' } });

Subsequent log without custom labels

logger.info('hello', { message: { prop1: 'test' } });

Actual result/issue

The 2nd log (step 3) is recorded with both label 1 and label 2

Expected result

The 1st log (step 2) is recorded in my google cloud logs with the labels: label1 & label2
The 2nd log (step 3) is recorded in my google cloud logs with the only label1

thank you for your solution


Bugfix - eliminates potential shift of data by 4 bytes.

Hi!
It took me about a day to find, but I ran into the issue that the way the linker script provided the symbols for the start/end of the data segment may cause corruption. I found that depending on the size of the text segment, the variable __crt0_copy_data_src_begin was off by 4 bytes. (4 bytes less than __crt0_copy_data_dst_begin in my case where the load address and run address were the same). In my case, this caused malloc to hang. The suggested change does not show this behavior.
Tested by inserting a variable number of 'nop' instructions to modify the size of the text segment.
Also, a small addition to crt0.s; this copy does not need to take place when src and dst are the same.
Thanks for the NeoRV32!!
Best regards,
Gideon

Thank you very much for the fix! I will have a closer look at your modifications.
The support for dynamic memory allocation is still in an early stage. Right now, the maximum heap size is defined in a static way (in the linker script), which does not reflect the actual application's requirements.
Furthermore, this default heap size unnecessarily increases the size of the .bss segment - even if no dynamic memory is used at all.
Do you have any idea how to make this more "portable" and "user friendly"?

I have tested your modifications with some simple newlib/malloc setup. I cannot see any differences in the symbol tables and dynamic memory allocation seems to run without problems even when using the original crt0 and linker script.
The modification you made in crt0 seems to fix a rare corner case, where there is no initialization data. This is indeed a bug that should be fixed! :+1:
The modifications in the linker script do not seems to alter any functionality, but using ADDR and LOADADDR seems to be more "cleaner" way than adding some variables. :+1:
I saw that you are using a rather old version of the processor and it's framework (v<IP_ADDRESS>). This was the very first version that supported newlib's dynamic memory allocation. Maybe the problems you were encountering were fixed in a later version. Could you update your processor version to the latest version and/or could you provide some minimal example that fails memory allocation?

Thank you so much for considering my pull request. I will certainly bump my
version of NeoRV32 to see if it makes any difference. (And let's hope that
it didn't get any bigger in terms of LUTs.. ;)
The modification in crt0 that I proposed is not really that much of a
corner case. Any application where the data segment is loaded directly
(without the 'AT' construction in the linker script) will have equal
LOADADDR and ADDR pointers. This is valid when using a bootloader. In that
case there is no need to keep a copy of the unmodified data segment, as the
entire application including the data segment will be reloaded upon reset.
The failing memory allocation was a result of a shift in the data
segment address (off by 4). The pre-initialized data structure that malloc
uses was therefore incorrect, which causes it to end up in an endless loop.
It is just one of the many things that could have gone wrong; it
just showed up in malloc by chance. I'll try to reproduce this with a
smaller application, as you requested. In my case it happened with a binary
of roughly 700 kB. If I had looked better in the disassembly, I would have
noticed that x11 and x12 got loaded with nearly the same address (just
before __crt0_copy_data_loop), but not exactly the same address.
PS.. your crt0.s jumps directly to main, and skips crt0_begin / premain.
This causes the static constructors of C++ objects not to be executed. ;-)

Message ID: @.***>

Thank you so much for considering my pull request. I will certainly bump my version of NeoRV32 to see if it makes any difference. (And let's hope that it didn't get any bigger in terms of LUTs.. ;)

Btw, it would be really great if you could rebase your branch! ;)
The opposite should be the case! There were a lot of logic optimizations since v<IP_ADDRESS> (especially in the CPU core) - plus some performance optimizations. And most important there were some (severe) bug fixes... See CHANGELOG.md.

The modification in crt0 that I proposed is not really that much of a corner case. Any application where the data segment is loaded directly [...]

Good point! I was talking about the default setup using the default toolchain (with the default linker script). It is also possible to use different, non-NEORV32-specific start-up files and linker scripts. This has been tested using a Segger Studio based setup and also using Zephyr OS.

The failing memory allocation was a result of a shift in the data segment address (off by 4).

However, I still cannot identify the cause of this offset (yet)... Anyway, your modifications of the linker script seem just fine!

PS.. your crt0.s jumps directly to main, and skips crt0_begin / premain. This causes the static constructors of C++ objects not to be executed. ;-)

I am no expert when it comes to low-level boot mechanisms and all the C runtime related. I had to learn all the basics and I am quite happy the core is able to boot. :wink: And I am absolutely no expert when it comes to C++ and all it's constructors and stuff like that. There was just a comment on our gitter channel today targeting that issue.
It would be really great to support C++ applications - at least a bare minimum level, but as I said, I am not really familiar with that.

I am no expert when it comes to low-level boot mechanisms and all the C runtime related. I had to learn all the basics and I am quite happy the core is able to boot. wink And I am absolutely no expert when it comes to C++ and all it's constructors and stuff like that. There was just a comment on our gitter channel today targeting that issue.

I'm no expert either, but is it usual for RISC-V targets to replace the C libraries _start function? neorv32's crt0.S does not seem to have much overlap with the newlib version: https://github.com/bminor/newlib/blob/master/libgloss/riscv/crt0.S
It seems to me that neorv's _start should just be called something else and should then call _start instead of main. (Not sure what crt0_begin is though, grep doesn't find anything in the riscv toolchain sources or the neorv sources).

I'm no expert either, but is it usual for RISC-V targets to replace the C libraries _start function?

I am not sure, but I think this is highly platform-dependent. In terms of the NEORV32, the start-up code does some than "just" setting up stack, bss and data segments: besides doing a "software reset" of all IO devices, we also configure certain CSRs to setup a very simple "early trap handler".
The newlib crt0 you have linked says

Entry point for RISC-V user programs

Maybe this is intended just for user-mode programs (where we cannot access all those CSRs)? I don't know.

It seems to me that neorv's _start should just be called something else and should then call _start instead of main.

So you mean calling newlib's crt0 from NEORV32's crt0? This might work, but I am not sure right now if the makefiles actually include those start-up files. I think we are using a "free standing" setup here.
However, adding calls __libc_init_array and __libc_fini_array should be no problem, but I am not sure if the default linker script actually handles these functions.

Not sure what crt0_begin is though, grep doesn't find anything in the riscv toolchain sources or the neorv sources.

Where did you find ´crt0_begin´ ?

So you mean calling newlib's crt0 from NEORV32's crt0? This might work, but I am not sure right now if the makefiles actually include those start-up files. I think we are using a "free standing" setup here.

I see, although I'm not really sure what they mean to say with "user mode". newlib is for embedded / standalone targets only, as far as I know? OTOH this code is part of libgloss, so I really don't know...

However, adding calls __libc_init_array and __libc_fini_array should be no problem, but I am not sure if the default linker script actually handles these functions.

Maybe that's a better solution. These functions are in the libc, so they should be available. (I'm not sure if atexit is available in the embedded toolchain. In C++, people often use the GCC flag -fno-use-cxa-atexit  which seems somehow related.)
If we want to register __libc_fini_array using atexit like the newlib crt0 does, we probably also have to call exit after main for this to have any effect.
__libc_init_array and __libc_fini_array  are defined in newlib/newlib/libc/misc/init.c and fini.c. It needs the following symbols defined: __preinit_array_start, __preinit_array_end, __init_array_start, __init_array_end, __fini_array_start, __fini_array_end
Here's an example linker script from stackoverflow for STM32:
.preinit_array     :
{
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array*))
    PROVIDE_HIDDEN (__preinit_array_end = .);
} >FLASH
.init_array :
{
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT(.init_array.*)))
    KEEP (*(.init_array*))
    PROVIDE_HIDDEN (__init_array_end = .);
} >FLASH
.fini_array :
{
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT(.fini_array.*)))
    KEEP (*(.fini_array*))
    PROVIDE_HIDDEN (__fini_array_end = .);
} >FLASH

I guess it should be similar for our usecase. The main aspects are that the linker scripts provides symbols bracketing the sections so the startup code can iterate through the constructors. Furthermore the symbols need to be SORTed (as it's possible to assign priorities to constructors / destructors) and they need to be KEEP (they may appear unreferenced to the linker, but should not be removed).

Hi Johannes, Stephan,
Interesting conversation; allow me to join in. It is indeed true that the
current crt0.s does not reference the __init_array and __fini_array areas
and therefore the static C++ constructors are not called (nor the
destructors upon exit, if that would ever happen). I am currently calling
them in my main function before anything else, but this is a silly
temporary workaround. It works tho.
You mention that these startup code functions are defined in libgloss. Yes,
I think so, too. Libgloss is automatically linked when you link your .elf
file using gcc. I don't exactly know from the top of my head how the
makefiles from NeoRV32 handle this, but when I tried to link with gcc, and
libgloss was automatically linked to, I ran into issues with sbrk and other
low level stuff. The emitted code used "ecall" to invoke "kernel" routines,
so I ran into traps in the very first malloc.
So now I am linking with LD instead, and specify --nostartfiles, and simply
link the assembled @stnolting 's crt0.s (crt0.o) into the .elf.  This
works. Maybe the system calls in libgloss are defined with
attribute(weak), so they may get overridden by linking syscalls.c. I am
not sure, because I did many things to get my application to run on RiscV,
so I might not have tried all combinations.
I am still running into random crashes with FreeRTOS, but that's for
another thread.
Gideon

I think it should not be too difficult to add the init and fini arrays to the linker script and to call the according function from crt0. Thanks for the input @GideonZ, btw :wink: However, we should open another issue for adding support of constructors and destructors.

I have fixed the typo and updated this branch from main. I am ok with merging this. What do you think @GideonZ?


Pipeline Caches never find cached results in 1.3.268.0

This has already been fixed as of #2047 when CompilerMSL::Options::replace_recursive_inputs was added to the pipeline cache, but it took me a couple hours of debugging to figure that out.
Considering any application where mvkOSVersionIsAtLeast(14.0, 17.0, 1.0) holds true at runtime will never succeed in looking up cached results in pipeline caches in SDK 1.3.268.0, it seems prudent to either release a patch or document somewhere that pipeline caches are broken in this particular SDK.
As an example, a simple vertex+fragment graphics pipeline took 1.1ms longer to compile (nearly 100% increase) on my M1 MacBook Pro, so you can imagine how much worse compile/load times are for applications with large numbers of pipelines.

I've gone ahead and posted here.


Update INSTALL.md for compiling manually

Here comes the modification for #4588

thanks for the PR! :)


[WIP] Support for tape mode

Description of the Change:
Attempt to support tape mode for PennyLane-SF
Benefits:
Possible Drawbacks:
Related GitHub Issues:

Closing this in favour of #60. The changes here are moved to that PR instead.

Closing this in favour of #60. The changes here are moved to that PR instead.


Vilros retro gaming ps2 controller issue

Godot version
Godot Engine v3.4.2.stable
System information
Windows 10
Issue description
Vilros retro gaming gamepad registers the dpad as joystick axis input, it doesn't work unless I plug the joystick axis into inputs and then both dpad and joystick input works correctly, but only if joystick axis input is added at the same time as the dpad input
Steps to reproduce
use vilros retro gaming gamepad and assign a movement input to a kinematic body, assign an input get in the project settings>input map, add D-pad. Doesn't work, works when Joystick axis input is also present
Minimal reproduction project
No response

@Titanium-Rat Did you mean to close this issue?
This could be an issue with incorrect controller mappings (which are maintained in another repository). I don't see Vilros within the game controller database used by Godot or the upstream one.


Show custom rule docs instead of class

Right now if you add a custom validation rule to a request it shows the path to the class in the request docs.

I would like to propose to show the phpdoc from the class itself so that I won't have to explain to all my front end devs what a certain rule does (even though I think my class names are self explanatory)

feel free to submit a pull req


Company Communicator Initial Deployment Failed

Have tried now to setup the company communicator (fresh, no upgrade) to a customer but it failed via Powershell and also via manual deployment
Powershell:

Manual Deployment:

have deleted the web app + changed the web GUIDs and then it worked. still it would be good to know why the posershell version isn´t working with the latest azure cli version

Hi @Khiron91 ,
Thanks for raising the query. The present code is compatible with  Azure CLI 2.30.0.  After 2.30.0 of CLI i.e., >2.30.0 version the parameter(--available-to-other-tenants) has been changed. This is the reason for updated version of CLI it shows as unrecognized arguments. If the parameter has been updated with latest one then the previous version of CLI will start breaking.
So the workaround is to go for uninstalling the latest version of CLI and install 2.30.0 CLI version then go for PowerShell deployment. We will be updating the PowerShell script  and it will be part of upcoming release soon.
Hope I conveyed.


Set up issue

Ran into an issue running step 3 of "Set up your machine".
git clone https://aka.ms/aml-real-time-ai
Cloning into 'aml-real-time-ai'...
fatal: unable to update url base from redirection:
asked for: https://aka.ms/aml-real-time-ai/info/refs?service=git-upload-pack
redirect: https://www.microsoft.com/en-us/

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

ID: 25565324-f64d-a8db-bc1c-e50956e6e878
Version Independent ID: a6c9ffa3-c085-b4fc-7153-06adb8a50ce4
Content: How to deploy a model as a web service on an FPGA with Azure Machine Learning
Content Source: articles/machine-learning/service/how-to-deploy-fpga-web-service.md
Service: machine-learning
GitHub Login: @tedway
Microsoft Alias: tedway

@YutongTie-MSFT Had used that. It worked. Thanks.

@nuiwos We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.
@tedway Please check this issue also, and update it as necessary. Thanks a lot!


fixed minor bug

Short Description:
Traceback (most recent call last):
File "pokecli.py", line 466, in
main()
File "pokecli.py", line 68, in main
bot.tick()
File "/home/jackfu/pgo/730/PokemonGo-Bot/pokemongo_bot/init.py", line 85, in tick
if worker.work() == WorkerResult.RUNNING:
File "/home/jackfu/pgo/730/PokemonGo-Bot/pokemongo_bot/cell_workers/catch_visible_pokemon_worker.py", line 29, in work
return self.catch_pokemon(self.bot.cell['catchable_pokemons'][0])
File "/home/jackfu/pgo/730/PokemonGo-Bot/pokemongo_bot/cell_workers/catch_visible_pokemon_worker.py", line 41, in catch_pokemon
return_value = worker.work()
File "/home/jackfu/pgo/730/PokemonGo-Bot/pokemongo_bot/cell_workers/pokemon_catch_worker.py", line 198, in work
if catch_rate[pokeball-1]<0.30 and item_stock[3]>0:
NameError: global name 'item_stock' is not defined
Fixes:

Looks like this has been fixed on dev now.


DataStore batch insert

Hi,
I want to incorporate the cloudant/sync-android library in my Android application to store sensor data.
I am using the following procedure:

Collect the data in a temp file (JSON or sqlite db) after each collection interval,
Transfer the lines to the Cloudant DataStore for encrypted storage.
Upload the DataStore to a remote Cloudant DB, at certain intervals.

The problem I've encountered is that insertion times of records into the local DataStore are very long. Using the createDocumentFromRevision insertion method with the Byte array parameter, it takes about 3-4 minutes to insert 2-3K records one by one...
Is there a way to 'batch-insert' a large amount of records? Or is there a way to 'merge-insert' a whole Sqlite db file?

@Aralizer can you tell us what version of sync-android you are using? We have looked in the past at increasing performance and this may be an area where we can improve.
So we can understand your workload better, can you describe what your documents typically look like? We would like to know the typical document size in bytes, whether you have any attachments, and how regularly you intend to log data from the sensor (once per second, once per minute?)
Also you mention encryption, are you using the on-device encryption offered by our library? This will definitely impact on performance vs non-encrypted usage.
We currently don't intend to support any batch or merge APIs, as these are quite low-level and not in keeping with the current focus of the library. With that being said, it may be that other libraries or strategies might be more appropriate for an embedded situation like yours, especially if you don't intend to use the full two-way replication abilities of our library. For instance, if your application only ever sends sensor readings and does not ever receive data from a remote CouchDB/Cloudant instance, then I can suggest some alternative strategies.

@tomblench I'm experimenting with the 'version:'latest.release'' version I get with the gradle import, as mentioned at the library's Readme section.
My documents are JSON records with the following structure:
{sensor-name: gyro, timestamp: 1234567, value: {att1: 0, att2: 1, ....}} with no attachments.
My tests were made with 3 sensors, probing duration of 1 second with an interval of 30 seconds.
Each reading is inserted as the JSON mentioned above, directly to a temp file, as text.
This kind of sensor logging results in around 1-1.5K of distinct records for each probing interval, and takes around 1MB of storage (as string data).
Every 60 seconds I run a service that reads this file as a list of strings, converts each of them to Byte array and inserts them to the DataStore with the createDocumentFromRevision  method. The net insert rate (without reading the file and the byte array conversion) is about 10 records per seconds, without encryption (I didn't get to try the encryption yet).
You are correct, currently I intend to use the library only for one-way replication. Which alternatives are available?

Hi @Aralizer - see https://gist.github.com/tomblench/da3709236282c52b18fb for an example of using the _bulk_docs REST endpoint using only the Android built-in classes. In testing I could achieve over 1000 records/second on my account. This may suit your performance demands better than using the sync library.

Hi @tomblench ,
I need to do the same thing but store the data locally.
And I can't find a bulk_insert API? is it possible to do it somehow?

@firasalmanna sorry but there currently aren't any APIs to do bulk insert/update of local documents. Depending on demand for this feature and other priorities, we may consider implementing it in the future.

@tomblench I did it by looping and inserting one at a time, but it is very slow. It took around 10sec to insert 50 objects 6KB each.
How do you handle bulk inserting in pull replication?

@firasalmanna the short answer is that a list of revisions is inserted into the database by calling the underlying SQLite database with a set of SQL commands grouped into one transaction for the entire batch.
You can see the start of that process here and if you follow the code through all of the Callables you can see all the gory logic for deciding whether to insert into a new or existing rev tree, dealing with attachments, etc.
Theoretically the logic would be a little bit simpler for a batch insert/update on the local database (because we don't have to deal with conflicts - which we do have to consider when pull replicating), but it wouldn't be trivial to write.


[📑 Docs]: Update usage doc with info about new docker image

What Dev Docs changes are you proposing?
We need update docker section in https://github.com/asyncapi/generator/blob/master/docs/usage.md#cli-usage-with-docker
It is using old asyncapi/generator image and should use new asynapi/cli image.
It is pretty simple change, just compare existing instructions with these -> https://github.com/asyncapi/cli/blob/master/docs/installation.md#docker
Code of Conduct

[X] I agree to follow this project's Code of Conduct

/gfi docs


Alt-text algorithm breaks those plots where layout() is used

Only the upper of the two plots is shown.
For example the age comp fits plot (Fig 19) and the traceplots for the MCMCs in the MCMC appendix. This looks like its not too hard to fix, my task for Wed Feb 15.
There are two includegraphics[width=\maxwidth]{path/to/file} calls in a row in the input tex file in these cases. The alt-text algorithm just ignores the second on while injecting tagging structure.
Need to check for two or more.
We will never use layout again once converted totally to ggplot, so maybe only worry about two for now.

This is a lot more work than first seems. The age fit plots cannot be placed into a cowplot grid, so they have to be rewritten so they do otherwise the alt text algorithm will fail. This will take longer than today

should these be changes earmarked for 2024 given the time it will take?

No I'm almost done. It has to be done to make the alt-text tagging work.


Implemented docstring Attribute of StepModel

Describe changes
I implemeneted the logic that allows us to track docstrings that users have defined for their steps. This is useful, e.g., in post execution where you can now call step.docstring (which previously always returned None).
In order to implement this, I also added a docstring attribute into the StepConfiguration class.
Pre-requisites
Please ensure you have done the following:

[x] I have read the CONTRIBUTING.md document.
[ ] If my change requires a change to docs, I have updated the documentation accordingly.
[ ] If I have added an integration, I have updated the integrations table and the corresponding website section.
[ ] I have added tests to cover my changes.

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Other (add details above)

@htahir1 good idea, I'll add that.


adding fix to return the correct datetimestamp for rails generator

This would unfoobar the app's migration timestamp thing :+1: ... Closing due to staleness/relevancy  ¯_(ツ)_/¯


[WIP] Remove Structures definitions in favor of binary-parser module

This yields a sizable performance increase (10x) for a jar that is 969 KB in size and had ~180-190 classes parsing it in 0.55s on average.

@TSedlar what do you think of this? Thoughts?

src/bytecode/parsers/BinaryParser.js
src/bytecode/Loader.js

I should also mention this has been tested on Java 6 and Java 8.

Looks incredibly sweet. I just suggest making both === 5 and === 6 constants.


Error when i start front end

  code: 'EADDRINUSE',
  errno: -4091,
  syscall: 'listen',
  address: '::',
  port: 8999
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>start: `npm run build && node backend-build/app.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\KT STREAM\AppData\Roaming\npm-cache\_logs\2020-05-29T02_55_03_499Z-debug.log

oh sorry :| i was installed . Tks U


Merge changes after release 4.0.2

Codecov Report

Merging #103 (84814aa) into master (1b7470d) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master      #103   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           77        77
  Lines         1190      1190
  Branches        50        50
=========================================
  Hits          1190      1190

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


changelog: v80-beta

date: 28-Aug-2020
foreword: These are all the changes since the last changelog (v79-beta).

FF80 release notes
FF80 for developers
FF80 compatibility
FF80 security advisories

changelog: [all changes]

all user.js updates for Firefox v79 are detailed in the ToDo: diffs FF79-FF80 issue

includes links to the commits made for each pref, links to bugzilla tickets, our discussions etc.

for all the rest see the full list of pref changes below

all pref changes:

changed in 80beta, see #992

user_pref("browser.newtabpage.activity-stream.asrouter.providers.snippets", "{}"); // was ""

new in 80beta but commented out by default

   // user_pref("dom.security.https_only_mode_pbm", true);

moved to 9999: DEPRECATED / REMOVED

see #979
the code was removed in FF76 (but they forgot to remove the dead prefs which they have now done in FF82)
so note: they are under the deprecated FF76 section

user_pref("dom.disable_window_open_feature.close", true);
user_pref("dom.disable_window_open_feature.location", true);
user_pref("dom.disable_window_open_feature.menubar", true);
user_pref("dom.disable_window_open_feature.minimizable", true);
user_pref("dom.disable_window_open_feature.personalbar", true);
user_pref("dom.disable_window_open_feature.resizable", true);
user_pref("dom.disable_window_open_feature.status", true);
user_pref("dom.disable_window_open_feature.titlebar", true);
user_pref("dom.disable_window_open_feature.toolbar", true);

Any and all help, suggestions, recommendations, links, tips and tricks, questions, thank you's or what have you are welcome - signup/login and start typing - thanks

For everyone who wonders which causes this ugly hourglass and tabs which needs endless to load. It is ui.prefersReducedMotion.
All RPF users can safely add this to their overrides.
/* xxxx: enable chrome animations ***/
user_pref("ui.prefersReducedMotion", 0); // 4520 or 4614

@Thorin-Oakenpants I changed this pref on about:config and it applied (megabar, hourgalss/circle, ...). The restart tag can be removed (or changed [RESTART FF79-])

IIRC, the restart is required to be fully implemented - I think @earthlng said something somewhere when we talked about adding the pref a second time (in 4500s)

Thanks @rusty-snake
yup, the [RESTART] was for the UI, and honestly, I find it very hard to test: both the loading animation (re moving dot vs hourglass vs nothing), and the urlbar expansion. Because the urlbar not expanding relies on no suggestions (I think). I honestly can't find a difference between 79 and 80 in this regard, so why did we add it? I do not use the urlbar for anything: it's completely static for me and has been for years, no suggestions, no color changes, no movement, no expansion, nada, zip, zilch, zero - so I don;t know what I'm supposed to be testing
Vanilla 79, removed all the top sites and disabled suggestions. Clicking in the urlbar it expands even though it has no suggestions, not even search icons.  Loading a web page the loading anim is a dot moving side to side. Flip the pref, no restart, and the expansion stops. But as soon as other tabs are open, or you have some history, the urlbar expansion happens regardless (and I disabled all suggestions in options before restarting for the test).  I cannot confirm it. I'll add a PR for you and earthlng to nut out (or not)

note: it's not that we don't trust or believe you, it's that we always want second opinions/verification

After https://github.com/ghacksuserjs/ghacks-user.js/commit/38d772e4c8721f59a361370572cdb25d777ea04a i checked it, but "HTTPS-Only Mode" is unusable when privacy.firstparty.isolate = true https://bugzilla.mozilla.org/show_bug.cgi?id=1647829

[SETTING] to add site exceptions: Page Info>Permissions>Use insecure HTTP (FF80+)

It doesn’t work. Can't set for http, all permissions for https.
Bad solution:

about:config -> Disable "HTTPS-Only Mode"
Open http://domain.tld
about:config -> Enable "HTTPS-Only Mode"
Page Info>Permissions>Use insecure HTTP
🤦

that's why I linked https://bugzilla.mozilla.org/1613063 - 19 open bugs

IMO we should add back the line about it being experimental and an additional note/warning that it's currently not possible to add exceptions when FPI is enabled (with a reference to 1647829)

Can't set for http, all permissions for https.

yes that could be part of the problem but I don't think it actually is, because they probably have tests for this and the code probably ignores the scheme when it checks the permission. If that wasn't the case it also wouldn't work without FPI.
The reason why it doesn't work with FPI is because it adds the permission with the firstpartydomain key set to the about: errorpage

this is pretty bad too and maybe it'd be best to just remove 1244 again until that feature is a bit more polished, IDK.

see https://github.com/ghacksuserjs/ghacks-user.js/pull/1010


⚠ Bofrost.com has degraded performance

In e8a25d0, Bofrost.com (https://www.bofrost.com) experienced degraded performance:

HTTP code: 200
Response time: 537 ms

Resolved: Bofrost.com performance has improved in 19ae331 after 6 minutes.


Add regression test for scalar contract bug

This adds a test for the scalar contraction bug fixed in: https://github.com/ITensor/NDTensors.jl/pull/58

Codecov Report

Merging #547 (d2b7fc0) into master (8653523) will increase coverage by 0.97%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #547      +/-   ##
==========================================
+ Coverage   80.50%   81.47%   +0.97%
==========================================
  Files          41       42       +1
  Lines        4314     4076     -238
==========================================
- Hits         3473     3321     -152
+ Misses        841      755      -86

Impacted Files
Coverage Δ

src/ITensors.jl
25.00% <ø> (ø)

src/itensor.jl
78.50% <ø> (+0.75%)
:arrow_up:

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

src/decomp.jl
91.17% <100.00%> (+1.79%)
:arrow_up:

src/indexset.jl
71.77% <100.00%> (-2.37%)
:arrow_down:

src/mps/dmrg.jl
90.00% <100.00%> (+8.75%)
:arrow_up:

src/broadcast.jl
57.36% <0.00%> (-10.45%)
:arrow_down:

src/smallstring.jl
60.34% <0.00%> (-1.33%)
:arrow_down:

... and 30 more

Continue to review full report at Codecov.

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


fix encoding of the idle timeout for the TLS transport parameters

This bug was found during interop testing with quant.

Codecov Report

Merging #945 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master     #945   +/-   ##
=======================================
  Coverage   90.76%   90.76%
=======================================
  Files          98       98
  Lines        6524     6524
=======================================
  Hits         5921     5921
  Misses        388      388
  Partials      215      215

Impacted Files
Coverage Δ

internal/handshake/transport_parameters.go
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


[HUDI-2543]: Added guides section

Tips

Thank you very much for contributing to Apache Hudi.
Please review https://hudi.apache.org/contribute/how-to-contribute before opening a pull request.

What is the purpose of the pull request
Move tuning-guide and troubleshooting-guide from cwiki to website.
Brief change log
Added tuning-guide.md and troubleshooting-guide.md under guides section.
Verify this pull request
(Please pick either of the following options)
This pull request is a trivial rework / code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end.
Added HoodieClientWriteTest to verify the change.
Manually verified the change by running a job locally.

Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

@pratyakshsharma any update on the nit?

We have a "Guides" side nav now. We can move this there. cc @kywe665 as FYI

will sync up with @vingov on this and close this.

@nsivabalan Please take a pass.

looks like there was some issue with the build.

@nsivabalan @vinothchandar I see these changes are not reflecting on the website. Is it related to this build failure?