Can't connect to Cloud SQL Postgres using socket

Bug description
According to some other issues, (#1508) and (#8638) there was some issue when trying to connect with sockets and it was changed at least for MySQL.
In our case we use CloudSQL Postgres and configuring Cloud Run to connect to this instance using Cloud Proxy where it creates a socket usually in /cloudsql folder by creating a new folder inside with the resource link in the format of <project>:<region>:<instance> and then a file inside .s.PGSQL.5432.
We set the DATABASE_URL following all rules, something in the lines of:
postgresql://<USER>:<PASSWORD>@localhost/<DATABASE>?host=/cloudsql/<CLOUDSQL_INSTANCE_RESOURCE_NAME>&schema=public

We tried several combinations but without any success and the error we found was:
Can't reach database server at `/cloudsql/<CLOUDSQL_INSTANCE_RESOURCE_NAME>`:`5432`

Looking at the code it seems to be forcing a TLS connection instead of allowing socket like it does for MySQL.
For now the workaround we are working with is (For anyone facing this issue):

Enabling Private IP in our CloudSQL instances
Created a Serverless VPC Connector (with extra charges =/ )
Attaching our Cloud Run service to this VPC connector and using the private IP

How to reproduce

Configure any socket connection for Postgres and try to connect using this socket.
Expected behavior
Be able to connect to a Postgres instance through UNIX socket connection.
Prisma information

prisma:client clientVersion: 2.29.1
Environment & setup

Database: Postgres
Node.js version: 14.17.5

Prisma Version
2.29.1

having the same issue, but in our production env it is working.
Prisma version 3.6.0

I was able to get it to work with the following DATABASE_URL format:
postgresql://<DB_USER>:<DB_PASS>@localhost/<DB_NAME>?host=/cloudsql/<CLOUD_SQL_CONNECTION_NAME>
Ensure that CLOUD_SQL_CONNECTION_NAME is of the format project_id:region:instance_name and not just the instance name.
Also ensure that in the Cloud Run Connections settings for the revision that you've enabled the appropriate Cloud SQL Connection which will create the cloud sql proxy connection for you as per the instructions here.
Credit to this video for pointing me in the right direction.

Hi @yoshitamagoshi, we did try this setting, the only difference to our approach is that we need to set the schema as well. And we did URI encode as requested as well.
This is the URL I'm using (with the proper changes) and we are still receiving the same error:
postgresql://<USER>:<PASSWORD>@localhost/<DATABASE>?host=/cloudsql/<CONNECTION_INSTANCE_NAME>&schema=public
\nInvalid `prisma.customer.findMany()` invocation:\n\n\n  Can't reach database server at `/cloudsql/<CLOUD_INSTANCE_NAME>`:`5432`\n\nPlease make sure your database server is running at `/cloudsql/<CLOUD_INSTANCE_NAME>`:`5432`.

@Verhaeg Does the service account you're using for that Cloud Run revision have the Cloud SQL Client permission?

@yoshitamagoshi Yes.. that was missing.. Due to the error message I didn't think about permissions =/
Thanks for pointing it out!

I think this is something we saw a few times in the past already. Is this something we could surface better in Prisma?

for my case I am using Nest.js + Prisma, I am not sure it is caused by Prisma or Cloud Run, it only affects some modules.
So when I try to call my API that uses Prisma, it throws the Invalid invocation  but it works on other APIs.
So I can say that the error thrown is not really valid because Prisma actually can connect to the DB for a different tables.

i got same issue here. i already test with different project to just install next js and prisma, the result is no issue. and then after i try to adding and update some library, i got this issue.
{   "name": "test-project",   "version": "0.1.0",   "private": true,   "scripts": {     "dev": "next dev",     "build": "next build",     "start": "next start",     "lint": "next lint"   },   "dependencies": {     "@fortawesome/fontawesome-svg-core": "^1.2.35",     "@fortawesome/free-brands-svg-icons": "^5.15.3",     "@fortawesome/free-solid-svg-icons": "^5.15.3",     "@fortawesome/react-fontawesome": "^0.1.14",     "@next-auth/prisma-adapter": "^0.5.4",     "@next-tools/dynamic": "^0.0.11",     "prisma": "^3.9.0",     "@types/react": "^17.0.25",     "babel-plugin-superjson-next": "^0.4.1",     "eslint": "7.31.0",     "eslint-config-next": "11.0.1",     "fs": "^0.0.1-security",     "image-size": "^1.0.1",     "multiparty": "^4.2.2",     "next": "^11.1.2",     "next-auth": "^3.29.0",     "next-connect": "^0.10.2",     "pptxgenjs": "^3.9.0",     "react": "17.0.2",     "react-bootstrap-sweetalert": "^5.2.0",     "react-data-table-component": "^7.4.4",     "react-dom": "17.0.2",     "react-hook-form": "^7.22.5",     "react-sortablejs": "^6.0.0",     "sortablejs": "^1.14.0",     "styled-components": "^5.3.3",     "superjson": "^1.7.5",     "sweetalert2": "^11.1.7",     "typescript": "^4.4.3"   },   "devDependencies": {     "@types/bcrypt": "^5.0.0",     "@types/bcrypt-nodejs": "^0.0.31",     "@types/formidable": "^2.0.4",     "@types/fs-extra": "^9.0.13",     "@types/styled-components": "^5.1.21",     "bcrypt": "^5.0.1",     "bcrypt-nodejs": "^0.0.3",     "formidable": "^1.2.2",     "fs-extra": "^10.0.0"   } }

Please open a new issue @irwan-iprospect and provide all the information the bug issue template is asking for. Thanks.

For anybody who encounters the same issue with Cloud Run and verified the SQL Connection and IAM permissions, make sure that you don't have background jobs and "CPU is only allocated during request processing" setting. It was my case, the service didn't have enough CPU resources so connections were dropped.
I converted to do all logic within the request scope, and it worked fine

@Kukunin THANK YOU! I spent hours troubleshooting why Google Cloud Run + Cloud SQL could not fetch a connection from the connection pool.
PrismaClientInitializationError:

Invalid `prisma.checkPoint.findFirst()` invocation:

Timed out fetching a new connection from the connection pool. More info: http://pris.ly/d/connection-pool (Current connection pool timeout: 10, connection limit: 3)

Container called exit(1).

The "CPU is only allocated during request processing" setting you mentioned was the solution. I think this is easy to miss if you don't spend too much time in their UI (which I don't, using terraform).
My application was not a traditional request/response API and thus needed CPU available all the time to use Prisma and the database.


Assertion with gzip plugin enabled together with escalation

Tested with #1993, but got a different crash (assertion) now :-/
(gdb) bt full
#0  0x00002ad91874486d in waitpid () from /lib64/libc.so.6
No symbol table info available.
#1  0x0000555858f5e244 in crash_logger_invoke (signo=6, info=0x2ad920a11430, ctx=0x2ad920a11300) at Crash.cc:164
        status = 0
#2  <signal handler called>
No symbol table info available.
#3  0x00002ad9186ca495 in raise () from /lib64/libc.so.6
No symbol table info available.
#4  0x00002ad9186cbc75 in abort () from /lib64/libc.so.6
No symbol table info available.
#5  0x00002ad916236054 in ink_abort (message_format=<optimized out>) at ink_error.cc:99
        ap = {{
            gp_offset = 32,
            fp_offset = 48,
            overflow_arg_area = 0x2ad920a11ab0,
            reg_save_area = 0x2ad920a119d0
          }}
#6  0x00002ad916234085 in _ink_assert (expression=0x2ad9186ca495 <raise+53> "H=", file=0x3ef6 <error: Cannot access memory at address 0x3ef6>, line=6) at ink_assert.cc:37
No locals.
#7  0x000055585903dc25 in HttpSM::state_http_server_open (this=0x2ad950121240, event=2301, data=<optimized out>) at HttpSM.cc:1826
No locals.
#8  0x00005558590324a1 in HttpSM::main_handler (this=0x2ad950121240, event=2301, data=0x2ad9501225a0) at HttpSM.cc:2696
        jump_point = <optimized out>
#9  0x00005558590806a6 in Continuation::handleEvent (this=<optimized out>, event=2301, data=<optimized out>) at /home/lhedstrom/gitlab/trafficserver/iocore/eventsystem/I_Continuation.h:153
No locals.
#10 HttpTunnel::main_handler (this=0x2ad9501225a0, event=<optimized out>, data=<optimized out>) at HttpTunnel.cc:1665
        p = <optimized out>
        c = <optimized out>
#11 0x00002adde150e6b3 in compress_transform_do (contp=<optimized out>) at gzip/gzip.cc:591
        upstream_vio = <optimized out>
        upstream_todo = <optimized out>
        upstream_avail = <optimized out>
#12 0x00002adde150def6 in compress_transform (contp=0x2ad974068ad0, event=TS_EVENT_IMMEDIATE) at gzip/gzip.cc:620
No locals.
#13 0x0000555858f718a0 in INKContInternal::handle_event (this=0x2ad974068ad0, event=1, edata=0x2adde403c9a0) at InkAPI.cc:1050
        retval = <optimized out>
#14 0x00005558591cf240 in Continuation::handleEvent (this=<optimized out>, event=1, data=<optimized out>) at ./I_Continuation.h:153
No locals.
#15 EThread::process_event (this=0x2ad91b020010, e=0x2adde403c9a0, calling_code=1) at UnixEThread.cc:140
        c_temp = <optimized out>
#16 0x00005558591cf7f0 in EThread::execute_regular (this=<optimized out>) at UnixEThread.cc:221
        done_one = true
        sleep_time = <optimized out>
        next_time = 0
#17 0x00005558591ce9c7 in spawn_thread_internal (a=0x55585a9b91f0) at Thread.cc:84
No locals.
#18 0x00002ad918a33aa1 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#19 0x00002ad918780bcd in clone () from /lib64/libc.so.6
No symbol table info available.

This is in
int
HttpSM::state_http_server_open(int event, void *data)
{
.
.
.

  default:
    Error("[HttpSM::state_http_server_open] Unknown event: %d", event);
    ink_release_assert(0);
    return 0;

The history shows:
(gdb) print this->history
(gdb) print history
$4 = {{
    fileline = 0x5558591ef905 "HttpSM.cc:2008",
    event = 102,
    reentrancy = 1
  }, {
    fileline = 0x5558591ef905 "HttpSM.cc:2008",
    event = 103,
    reentrancy = 1
  }, {
    fileline = 0x5558591f0470 "HttpSM.cc:3838",
    event = 103,
    reentrancy = 0
  }, {
    fileline = 0x5558591ef7a5 "HttpSM.cc:1742",
    event = 2301,
    reentrancy = 1
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 4
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 5
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 5
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 6
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 6
  }, {
    fileline = 0x5558591f1cee "HttpSM.cc:7421",
    event = 65535,
    reentrancy = 6
  }, {
    fileline = 0x5558591ea841 "HttpCacheSM.cc:118",
    event = 1103,
    reentrancy = -1
  }, {
    fileline = 0x5558591efd86 "HttpSM.cc:2607",
    event = 1103,
    reentrancy = 7
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 8
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 8
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 9
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 9
  }, {
    fileline = 0x5558591f1cd0 "HttpSM.cc:7381",
    event = 65535,
    reentrancy = 9
  }, {
    fileline = 0x5558591f1d1b "HttpSM.cc:7536",
    event = 65535,
    reentrancy = 9
  }, {
    fileline = 0x5558591ea8f7 "HttpCacheSM.cc:177",
    event = 1108,
    reentrancy = -1
  }, {
    fileline = 0x5558591efcd9 "HttpSM.cc:2488",
    event = 1108,
    reentrancy = 10
  }, {
    fileline = 0x5558591f1d0c "HttpSM.cc:7434",
    event = 65535,
    reentrancy = 10
  }, {
    fileline = 0x5558591ef7a5 "HttpSM.cc:1742",
    event = 200,
    reentrancy = 11
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 12
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 12
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 13
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 13
  }, {
    fileline = 0x5558591f0a95 "HttpSM.cc:4587",
    event = 0,
    reentrancy = 6
  }, {
    fileline = 0x5558591ef905 "HttpSM.cc:2008",
    event = 102,
    reentrancy = 1
  }, {
    fileline = 0x5558591ef905 "HttpSM.cc:2008",
    event = 103,
    reentrancy = 1
  }, {
    fileline = 0x5558591ef882 "HttpSM.cc:1836",
    event = 100,
    reentrancy = 1
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 2
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 2
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 3
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 3
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 4
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 4
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 5
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 5
  }, {
    fileline = 0x5558591f13df "HttpSM.cc:6481",
    event = 65535,
    reentrancy = 5
  }, {
    fileline = 0x5558591f0049 "HttpSM.cc:3000",
    event = 102,
    reentrancy = 0
  }, {
    fileline = 0x5558591f0260 "HttpSM.cc:3462",
    event = 103,
    reentrancy = 0
  }, {
    fileline = 0x5558591ef584 "HttpSM.cc:1243",
    event = 2000,
    reentrancy = 1
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 2
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 2
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 3
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 3
  }, {
    fileline = 0x5558591f1cee "HttpSM.cc:7421",
    event = 65535,
    reentrancy = 3
  }, {
    fileline = 0x5558591ea841 "HttpCacheSM.cc:118",
    event = 1103,
    reentrancy = -1
  }, {
    fileline = 0x5558591efd86 "HttpSM.cc:2607",
    event = 1103,
    reentrancy = 4
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 5
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 5
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 6
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 6
  }, {
    fileline = 0x5558591f1cd0 "HttpSM.cc:7381",
    event = 65535,
    reentrancy = 6
  }, {
    fileline = 0x5558591f1d1b "HttpSM.cc:7536",
    event = 65535,
    reentrancy = 6
  }, {
    fileline = 0x5558591efcd9 "HttpSM.cc:2488",
    event = 1109,
    reentrancy = 7
  }, {
    fileline = 0x5558591f0a95 "HttpSM.cc:4587",
    event = 40768,
    reentrancy = 3
  }, {
    fileline = 0x5558591efcd9 "HttpSM.cc:2488",
    event = 1109,
    reentrancy = 1
  }, {
    fileline = 0x5558591f1d0c "HttpSM.cc:7434",
    event = 65535,
    reentrancy = 1
  }, {
    fileline = 0x5558591ef7a5 "HttpSM.cc:1742",
    event = 200,
    reentrancy = 2
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 3
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 3
  }, {
    fileline = 0x5558591ef61d "HttpSM.cc:1355",
    event = 60000,
    reentrancy = 4
  }, {
    fileline = 0x5558591ef648 "HttpSM.cc:1395",
    event = 60000,
    reentrancy = 4
  }

What is event 2301? :-)

Some more details:

Apparently, on master, escalation does not work at all :-/. I will file an Issue on this, and try to track that down.

I setup a test case, and with an empty cache and an escalation event (404 from the first origin) (and the configuration below), I get a loop in the gzip plugin:

[Dec 12 13:40:40.777] Server {0x7fa1aa9f4700} DIAG: (gzip) WARNING: deflate() call failed: -2
[Dec 12 13:40:40.777] Server {0x7fa1aa9f4700} DIAG: (gzip) [../../../trafficserver.git/plugins/gzip/gzip.cc:332] [gzip_transform_one] ERROR: gzip-transform: ERROR: avail_in is (12): should be 0
[Dec 12 13:40:40.777] Server {0x7fa1aa9f4700} DIAG: (gzip) WARNING: deflate() call failed: -2
[Dec 12 13:40:40.777] Server {0x7fa1aa9f4700} DIAG: (gzip) [../../../trafficserver.git/plugins/gzip/gzip.cc:332] [gzip_transform_one] ERROR: gzip-transform: ERROR: avail_in is (12): should be 0
[Dec 12 13:40:40.777] Server {0x7fa1aa9f4700} DIAG: (gzip) WARNING: deflate() call failed: -2
[Dec 12 13:40:40.777] Server {0x7fa1aa9f4700} DIAG: (gzip) [../../../trafficserver.git/plugins/gzip/gzip.cc:332] [gzip_transform_one] ERROR: gzip-transform: ERROR: avail_in is (12): should be 0

My remap.config is:
map http://fedora.ogre.com/httpbin http://httpbin.org @plugin=gzip.so @pparam=/tmp/gzip.config \
    @plugin=escalate.so @pparam=401,403,404,407,410,500,501,502,503,504,505:cosmo.ogre.com

The request is:
curl -D - -o /dev/null -s  --compress http://fedora.ogre.com/httpbin/tests/foo.txt

The gzip.config is:
enabled true
cache false
flush true
remove-accept-encoding true

compressible-content-type text/*
compressible-content-type *xml
compressible-content-type *font*
compressible-content-type *ml;*
compressible-content-type *javascript
compressible-content-type *json
compressible-content-type *mpegURL
compressible-content-type *mpegurl
compressible-content-type application/pkix-crl
compressible-content-type *type
compressible-content-type *otf
compressible-content-type *ttf
compressible-content-type application/eot
compressible-content-type application/x-httpd-cgi
compressible-content-type application/x-perl
compressible-content-type image/vnd.microsoft.icon
compressible-content-type image/x-icon

Fwiw, the gzip.so plugin alone, without escalation works fine, this loop is only triggered when escalation happens.

reformat the history with line number (assert on line 66)
  1 $2 = {
  2 ...
  3 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 4},
  4 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 5},
  5 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 5},
  6 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 6},
  7 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 6},
  8 {fileline = 0x5558591f1cee "HttpSM.cc:7421", event = 65535, reentrancy = 6},
  9 {fileline = 0x5558591ea841 "HttpCacheSM.cc:118", event = 1103, reentrancy = -1},
 10 {fileline = 0x5558591efd86 "HttpSM.cc:2607", event = 1103, reentrancy = 7},
 11 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 8},
 12 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 8},
 13 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 9},
 14 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 9},
 15 {fileline = 0x5558591f1cd0 "HttpSM.cc:7381", event = 65535, reentrancy = 9},
 16 {fileline = 0x5558591f1d1b "HttpSM.cc:7536", event = 65535, reentrancy = 9},
 17 {fileline = 0x5558591ea8f7 "HttpCacheSM.cc:177", event = 1108, reentrancy = -1},
 18 {fileline = 0x5558591efcd9 "HttpSM.cc:2488", event = 1108, reentrancy = 10},
 19 {fileline = 0x5558591f1d0c "HttpSM.cc:7434", event = 65535, reentrancy = 10},
 20 {fileline = 0x5558591ef7a5 "HttpSM.cc:1742", event = 200, reentrancy = 11},     // ----> NET_EVENT_OPEN
 21 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 12},
 22 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 12},
 23 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 13},
 24 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 13},
 25 {fileline = 0x5558591f0a95 "HttpSM.cc:4587", event = 0, reentrancy = 6},
 26 {fileline = 0x5558591ef905 "HttpSM.cc:2008", event = 102, reentrancy = 1},
 27 {fileline = 0x5558591ef905 "HttpSM.cc:2008", event = 103, reentrancy = 1},
 28 {fileline = 0x5558591ef882 "HttpSM.cc:1836", event = 100, reentrancy = 1},
 29 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 2},
 30 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 2},
 31 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 3},
 32 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 3},
 33 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 4},
 34 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 4},
 35 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 5},
 36 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 5},
 37 {fileline = 0x5558591f13df "HttpSM.cc:6481", event = 65535, reentrancy = 5},
 38 {fileline = 0x5558591f0049 "HttpSM.cc:3000", event = 102, reentrancy = 0},
 39 {fileline = 0x5558591f0260 "HttpSM.cc:3462", event = 103, reentrancy = 0},
 40 {fileline = 0x5558591ef584 "HttpSM.cc:1243", event = 2000, reentrancy = 1},
 41 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 2},
 42 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 2},
 43 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 3},
 44 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 3},
 45 {fileline = 0x5558591f1cee "HttpSM.cc:7421", event = 65535, reentrancy = 3},
 46 {fileline = 0x5558591ea841 "HttpCacheSM.cc:118", event = 1103, reentrancy = -1},
 47 {fileline = 0x5558591efd86 "HttpSM.cc:2607", event = 1103, reentrancy = 4},
 48 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 5},
 49 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 5},
 50 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 6},
 51 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 6},
 52 {fileline = 0x5558591f1cd0 "HttpSM.cc:7381", event = 65535, reentrancy = 6},
 53 {fileline = 0x5558591f1d1b "HttpSM.cc:7536", event = 65535, reentrancy = 6},
 54 {fileline = 0x5558591efcd9 "HttpSM.cc:2488", event = 1109, reentrancy = 7},
 55 {fileline = 0x5558591f0a95 "HttpSM.cc:4587", event = 40768, reentrancy = 3},
 56 {fileline = 0x5558591efcd9 "HttpSM.cc:2488", event = 1109, reentrancy = 1},
 57 {fileline = 0x5558591f1d0c "HttpSM.cc:7434", event = 65535, reentrancy = 1},
 58 {fileline = 0x5558591ef7a5 "HttpSM.cc:1742", event = 200, reentrancy = 2},     // ----> NET_EVENT_OPEN
 59 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 3},
 60 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 3},
 61 {fileline = 0x5558591ef61d "HttpSM.cc:1355", event = 60000, reentrancy = 4},
 62 {fileline = 0x5558591ef648 "HttpSM.cc:1395", event = 60000, reentrancy = 4}}
 63 {fileline = 0x5558591ef905 "HttpSM.cc:2008", event = 102, reentrancy = 1},
 64 {fileline = 0x5558591ef905 "HttpSM.cc:2008", event = 103, reentrancy = 1},
 65 {fileline = 0x5558591f0470 "HttpSM.cc:3838", event = 103, reentrancy = 0},
 66 {fileline = 0x5558591ef7a5 "HttpSM.cc:1742", event = 2301, reentrancy = 1},

The 2nd NET_EVENT_OPEN is a retry request but I can not find the EOS/ERROR event for 1st NET_EVENT_OPEN.

If the Escalate Plugin and Transform Plugin are both enabled:

It seems got a HTTP 4xx or 5xx response from origin server.
The Content-Length of the response is great than 0
The payload of the response is processed by Transform Plugin.
The Escalate Plugin make a new retry request to alternative origin server. The default handler of HttpSM is set to HttpSM::state_http_server_open().
TransformVC does not closed and call back to HttpSM
Asserted

@zwoop please post your escalate plugin's config.
source: gzip.cc
 628 static int
 629 transformable(TSHttpTxn txnp, bool server, HostConfiguration *host_configuration, int *compress_type, int *algorithms)
 630 {
...
 665   // conservatively pick some statusses to compress
 666   if (!(resp_status == 200 || resp_status == 404 || resp_status == 500)) {
 667     info("http response status [%d] is not compressible", resp_status);
 668     TSHandleMLocRelease(bufp, TS_NULL_MLOC, hdr_loc);
 669     return 0;
 670   }

@zwoop please modify the line 666 and try to compress the HTTP 200 response only.

Yeh, interesting, why would it need to compress a 404 or a 500??  The config is
@plugin=escalate.so @pparam=401,403,404,407,410,500,501,502,503,504,505:new-origin.a.com

Let me try to see if changing gzip plugin helps. If not, maybe we just have to document the escalate (and follow redirect API) that it might not work together with a transform.


Implementing event emitters

Hey @mateonunez , wanted to share with you something I had in my mind for quite some time.
What about bringing some event emission inside the expirable data structures? That would provide a wider usage of those.
What do you think? Any idea about the implementation?

Hi, @Cadienvan. I'm not convinced to implement EventEmited at all. The idea sounds great, but what about implementing a hook system like async-cache-dedupe or Fastify?
It could be useful when you need to exec statements before/after that ds expires.
Something like:
dataStructure.addHook('onExpired', (...) => {})

or
datastructure.addHook('berofeExpire', (...) => {})

That determines the action before the ds expired

Or passing them as properties
const set = ExpirableSet(..., {
  onExpired: (item, ...args) => {},
  beforeExpire: (item, ...args) => {}
}

Yeah, sure, sounds good, that's what I was thinking about.

What types of hooks did you want to implement?

They will surely depend on the data structure , yet onExpired and beforeExpire will be library wide

I'll try to bring in a PR during the week

Glad to test it or review it. 🤗


Lua support

https://github.com/ThePhD/sol2

Going to re-open this one, as it's not too crazy an idea... https://github.com/ThePhD/sol2

Duplicate of https://github.com/libretro/libretro-chailove/issues/340


fix: support empty error

Should not return Error directly when new Error('').
ref: https://github.com/ant-design/ant-design/issues/31803

Coverage remained the same at 88.129% when pulling 3082e347b9c2ba497a9e117530424c4074edebca on fix-error into 33fd7ec9b6ad8df6eaff510b8e52b5fcd03b76c3 on master.


[visir] Add new information extractor

Before submitting a pull request make sure you have:

[x] At least skimmed through adding new extractor tutorial and youtube-dl coding conventions sections
[x] Searched the bugtracker for similar pull requests

In order to be accepted and merged into youtube-dl each piece of code must be in public domain or released under Unlicense. Check one of the following options:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[ ] Bug fix
[ ] Improvement
[x] New extractor
[ ] New feature

Description
I have implemented a new information extractor for visir.is. There was a site support request for this here: #11834.

I have rewritten the visir information extractor.
It first tries to extract the playlist.m3u8-url from the json, which can be retrieved by knowing the category id, subcategory id and media type. If this fails, the playlist.m3u8-url gets manually assembled like it is done in the JavaScript of visir.is.
On article pages, it tries to find the main video/audio of the article and searches all other visir video embeds on the page. These results are returned as a playlist.

One thing I've noticed. The extractor always extracts the two formats 'rtmp' and 'rtsp':
python -m youtube_dl "http://www.visir.is/section/MEDIA99&fileid=SRC755241E3-FE79-488D-A9BA-65B4AB13C374" -F
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading webpage
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading JSON metadata
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading m3u8 information
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading f4m manifest
[info] Available formats for SRC755241E3-FE79-488D-A9BA-65B4AB13C374:
format code  extension  resolution note
hls-meta     mp4        multiple   Quality selection URL
rtsp         mp4        unknown
rtmp         mp4        unknown
3            mp4        unknown
hds-1296     flv        640x360    1296k
hls-4837     mp4        640x360    4837k , avc1.100.30, mp4a.40.2 (best)

But downloading these formats does not work:
python -m youtube_dl "http://www.visir.is/section/MEDIA99&fileid=SRC755241E3-FE79-488D-A9BA-65B4AB13C374" -f rtsp -v
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['http://www.visir.is/section/MEDIA99&fileid=SRC755241E3-FE79-488D-A9BA-65B4AB13C374', '-f', 'rtsp', '-v']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2017.01.25
[debug] Git HEAD: 90c7aa1a5
[debug] Python version 3.6.0 - Linux-4.9.6-1-ARCH-x86_64-with-arch
[debug] exe versions: ffmpeg 3.2.2, ffprobe 3.2.2, rtmpdump 2.4
[debug] Proxy map: {}
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading webpage
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading JSON metadata
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading m3u8 information
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading f4m manifest
[debug] Invoking downloader on 'rtsp://visirvod.365cdn.is/hls-vod/_definst_/mp4:SRC/VEFTVMP4/sources/vedurfrettir/2017_01/vedurfrettir_2017_01_30.mp4'
[download] Destination: Veðurfréttir-SRC755241E3-FE79-488D-A9BA-65B4AB13C374.mp4
[debug] mpv command line: mpv -really-quiet --vo=null '--stream-dump=Veðurfréttir-SRC755241E3-FE79-488D-A9BA-65B4AB13C374.mp4.part' rtsp://visirvod.365cdn.is/hls-vod/_definst_/mp4:SRC/VEFTVMP4/sources/vedurfrettir/2017_01/vedurfrettir_2017_01_30.mp4
[mpv] 0 bytes
[download] 100% of 0.00B

The 'downloaded' mp4 file is empty.
When I try downloading the 'rtmp' format, I get the following error:
python -m youtube_dl "http://www.visir.is/section/MEDIA99&fileid=SRC755241E3-FE79-488D-A9BA-65B4AB13C374" -f rtmp -v
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['http://www.visir.is/section/MEDIA99&fileid=SRC755241E3-FE79-488D-A9BA-65B4AB13C374', '-f', 'rtmp', '-v']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2017.01.25
[debug] Git HEAD: 90c7aa1a5
[debug] Python version 3.6.0 - Linux-4.9.6-1-ARCH-x86_64-with-arch
[debug] exe versions: ffmpeg 3.2.2, ffprobe 3.2.2, rtmpdump 2.4
[debug] Proxy map: {}
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading webpage
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading JSON metadata
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading m3u8 information
[VisirMedia] SRC755241E3-FE79-488D-A9BA-65B4AB13C374: Downloading f4m manifest
[debug] Invoking downloader on 'rtmp://visirvod.365cdn.is/hls-vod/_definst_/mp4:SRC/VEFTVMP4/sources/vedurfrettir/2017_01/vedurfrettir_2017_01_30.mp4'
[download] Destination: Veðurfréttir-SRC755241E3-FE79-488D-A9BA-65B4AB13C374.mp4
[debug] rtmpdump command line: rtmpdump --verbose -r rtmp://visirvod.365cdn.is/hls-vod/_definst_/mp4:SRC/VEFTVMP4/sources/vedurfrettir/2017_01/vedurfrettir_2017_01_30.mp4 -o 'Veðurfréttir-SRC755241E3-FE79-488D-A9BA-65B4AB13C374.mp4.part' --resume --skip 1
[rtmpdump] RTMPDump v2.4
[rtmpdump] (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
[rtmpdump] DEBUG: Parsing...
[rtmpdump] DEBUG: Parsed protocol: 0
[rtmpdump] DEBUG: Parsed host    : visirvod.365cdn.is
[rtmpdump] DEBUG: Parsed app     : hls-vod/_definst_/mp4:SRC
[rtmpdump] DEBUG: Number of skipped key frames for resume: 1
[rtmpdump] DEBUG: Protocol : RTMP
[rtmpdump] DEBUG: Hostname : visirvod.365cdn.is
[rtmpdump] DEBUG: Port     : 1935
[rtmpdump] DEBUG: Playpath : mp4:VEFTVMP4/sources/vedurfrettir/2017_01/vedurfrettir_2017_01_30
[rtmpdump] DEBUG: tcUrl    : rtmp://visirvod.365cdn.is:1935/hls-vod/_definst_/mp4:SRC
[rtmpdump] DEBUG: app      : hls-vod/_definst_/mp4:SRC
[rtmpdump] DEBUG: live     : no
[rtmpdump] DEBUG: timeout  : 30 sec
[rtmpdump] DEBUG: Setting buffer time to: 36000000ms
[rtmpdump] Connecting ...
[rtmpdump] ERROR: RTMP_Connect0, failed to connect socket. 111 (Connection refused)
[rtmpdump] DEBUG: Closing connection.
ERROR: [rtmpdump] Could not connect to RTMP server.
  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/__main__.py", line 19, in <module>
    youtube_dl.main()
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/__init__.py", line 444, in main
    _real_main(argv)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/__init__.py", line 434, in _real_main
    retcode = ydl.download(all_urls)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 1791, in download
    url, force_generic_extractor=self.params.get('force_generic_extractor', False))
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 705, in extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 751, in process_ie_result
    return self.process_video_result(ie_result, download=download)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 1435, in process_video_result
    self.process_info(new_info)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 1699, in process_info
    success = dl(filename, info_dict)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 1641, in dl
    return fd.download(name, info)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/downloader/common.py", line 353, in download
    return self.real_download(filename, info_dict)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/downloader/rtmp.py", line 169, in real_download
    self.report_error('[rtmpdump] Could not connect to RTMP server.')
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/downloader/common.py", line 162, in report_error
    self.ydl.report_error(*args, **kargs)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 568, in report_error
    self.trouble(error_message, tb)
  File "/home/alex/Projects/github/youtube-dl/youtube_dl/YoutubeDL.py", line 530, in trouble
    tb_data = traceback.format_list(traceback.extract_stack())

I don't really have knowledge about these two formats, so I don't know how to fix this problem. Does anybody know more about this and can help me?

_extract_wowza_formats tries to extract all possible formats but some servers does not provide some of them, you can add the rtmp and rtsp to skip_protocols list.
btw it seems that dash formats can also be downloaded, is there a reason for skiping them.
youtube-dl http://visirvod.365cdn.is/hls-vod/_definst_/mp4:SRC/VEFTVMP4/sources/vedurfrettir/2017_01/vedurfrettir_2017_01_30.mp4/manifest.mpd
[generic] manifest: Requesting header
WARNING: Falling back on generic information extractor.
[generic] manifest: Downloading webpage
[generic] manifest: Extracting information
[dashsegments] Total fragments: 7
[download] Destination: manifest-manifest.fmanifest-p0va0r1220591.mp4
[download] 100% of 9.27MiB in 00:32
[dashsegments] Total fragments: 7
[download] Destination: manifest-manifest.fmanifest-p0aa0r107330.m4a
[download] 100% of 853.59KiB in 00:07
[ffmpeg] Merging formats into "manifest-manifest.mp4"
Deleting original file manifest-manifest.fmanifest-p0va0r1220591.mp4 (pass -k to keep)
Deleting original file manifest-manifest.fmanifest-p0aa0r107330.m4a (pass -k to keep)

@remitamine If I try to extract the 'dash' format, I always get the following warning:
WARNING: Failed to download MPD manifest: HTTP Error 404: Not Found

I will add 'rtmp' and 'rtsp' to the skip_protocols.

Any news on having this accepted? It looks quite complete.


B 20529 MAIN add save retrieve and filter capability for assigned column sc

B-20529
Summary
Adds in Assigned User Column on Service Counselors Queue with the ability to filter, sort, and assign moves to a Service Counselor.
How to test as SC

Log in as a Service Counselor
Click on the dropdown of any move under Assigned, and select a user from the dropdown
Repeat step 2 for another user
Refresh the page
Enter the name of the user that was assigned for either of the moves in the Assigned User column header
There should be a pill off to the left of the top of the table with the name of the user filtered and an 'X', only moves that are assigned to the user entered into Assigned User as a filter should display.
Click the 'X' button for the filter to remove this filter. After doing so, all moves should show regardless of assigned
Click on the Assigned Column to sort in Ascending order, moves should show based on the name of who's assigned
Click again to show assigned users in Descending order, moves should show like before but in descending order
Click once more to show assigned moves in unordered mode.

Test coverage on client failed.
Last run: Fri 18 Oct 2024 02:22:50 PM UTC
Refer to this report to see coverage details for the client app.
Documentation for test coverage can be found at this link.

There is a delta between move_factory in this PR vs main. the change is present in the file but does not show as a change (space between defaultLocator and move).


Computer assisted neomandible shape creation

Currently we support user's eyeballing guided virtual reconstruction
As far as I now there are 2 approaches that may improve user experience:

Healthy contra-lateral side mirroring of mandible to guide the virtual reconstruction
Automatic planning by mandibular curve linearization using bone segments

Related https://github.com/SlicerIGT/SlicerBoneReconstructionPlanner/issues/54


FF <19 actually support the initial value

According to MDN, initial in FF1-18 require -moz- prefix for initial value while -moz-prefixed version removed in FF24. V2 to V3 will be maked as partial because it lacks supports on quotes property as what this article says.

Thanks!


Nitro on the member list

Is your feature request related to a problem? Please describe.
Nitro boosters need more clout for spending their hard earned money on this server
Describe the solution you'd like
Add a nitro booster section to the member list above veteran 2020 but below comm dev.
Describe alternatives you've considered
Put nitro booster above root.

no

no

no
http://gph.is/29cUyGT

no

no


Portals not forming even with worlds connected.

I'm having two issues, Chat from our world "Desert" isn't showing up for people in "world_nether". Also even with the multiverse nether portals plugin and the worlds linked players are being spawned above lava, in netherrock, etc and portals aren't forming so they can't return to the "Desert" world.

I've scoured the github and all of google, I saw this was a big issue in the past but that it was fixed with a jenkins build.
I have deleted the nether portals config, re assigned/connected worlds and no change. I've also got easysyncchat set to true in the multiverse core config. It happens in all the worlds but ops can speak and see the chats it seems.
Back to the nether issue, I have the core config set to look for 128 and default search true. Still having issues.

Not sure how to fix this. I see no permissions or any clear why on how to fix this.
I'm using spigot 1.11.2, MVC 2.5 and MCP 2.5.0 and MVNP 2.4 (maybe this is it?)

@dumptruckman


Updated gtest to latest main on 2024-11-27

Updated gtest to latest main on 2024-11-27

Probably needs #1824 to be merged first


Class request: vehicle license plate, license plate number, and-or related entities

There is a wide range of use cases where vehicles are described with respect to their vehicle plate (and the number), and this assists with entity resolution. This seems useful for manufacturing, commerce, government, university, and other contexts. I think this makes a good case for it being included in the common core rather than a lower-level ontology.
Just as with VIN (see the other issue https://github.com/CommonCoreOntology/CommonCoreOntologies/issues/204 ) we need to be clear on what design pattern we are following here. Is this correct?
VehicleLicensePlate subClassOf cco:OneDimensionalBarcode
VehicleLicensePlateNumber subcClassOf cco:CodeIdentifier

For example:
VehicleLicensePlate _carries_ VehicleLicensePlateNumber
VehicleLicensePlate _has_text_value_ "ABC 1234"
VehicleLicensePlateNumber _designates_ VehicleLicense

My hesitation is that a vehicle plate number does not designate a vehicle, but rather a vehicle license. But people use it to designate a vehicle, indirectly. Is this correct?

Good suggestion, it seems that just about all countries require a license plate to travel on public roads, so it warrants consideration in the CCO.
My first intuition of a definition for Vehicle License Plate is A One Dimensional Barcode which is designed to carry some information about the registration or legal status of the vehicle to which it is attached or part of. I'm being verbose so we can trim, but these seem like the salient parts.
In America, you carry your license plate from car to car; in (parts of) Europe, the license plate stays with the car. This presents an interesting issue, but both have to do with the legal status of some vehicle to which the plate is attached, whether it stays with that car or may be moved from car to car.

I was mistaken about dimensionality for a plate
Though bar codes for licence plate numbers are on registration documents.
On Mon, Nov 27, 2023, 2:03 PM Cameron More @.***> wrote:

That's a good point about license plates being stamped 3d objects, I was
thinking about that too as I typed out my response. I'm fine with making it
3d, but the distinction between 2d and 3d doesn't feel right in general
here in this part of the hierarchy.
—
Reply to this email directly, view it on GitHub
https://github.com/CommonCoreOntology/CommonCoreOntologies/issues/205#issuecomment-1828445853,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIW242GAUU365KAHRNEKGTTYGTPZ3AVCNFSM6AAAAAA74KCDPWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMRYGQ2DKOBVGM
.
You are receiving this because you authored the thread.Message ID:
@.***>

Moving to discussion for coordination with ICE/IBE strategy.


Method to clear FFT buffers

Unless I'm mistaken, the current implementation of the FftResampler has no way to clear the filter buffers. This is needed to be able to properly re-use the resampler for new sample sources.

This is assuming of course that the current implementation of the FftResampler even stores any state about the previous samples. If it does not, then disregard this issue.

You are not mistaken, none of the resampler types have a way of clearing their internal buffers.
I simply haven't thought of this and nobody has asked for it until now. I'll add it in the next version!

Implemented in https://github.com/HEnquist/rubato/pull/45


[BUG] extension code was published in wrong extension

Summary / Description
cs_seo version 6.6.0 was now released as go_maps_ext
In detail:
https://extensions.typo3.org/extension/go_maps_ext has now a release 6.6.0 of cs_seo https://extensions.typo3.org/extension/cs_seo
Version
Version in which the bug occurs.
Steps to reproduce
I have to two extenions in my local project. I changed the .env variables from one extension to another. Than I wanted to publish the extension via tailor ter:publish cs_seo. It happend that my extension was published as the other extension, which was set in the .env before.
Expected behaviour
How can I prevent this in the future?

The version of tailor was 1.4.1

Hi, I fear I don't fully understand what happened here in detail.

I changed the .env variables from one extension to another

So which keys have been changed? Which key was present wenn publishing the go_maps_ext?

Than I wanted to publish the extension via tailor ter:publish cs_seo.

Providing an extension key as cli argument always takes precedence over an extension key, defined as env var. This means if you provided cs_seo as extension key, the new version is published for this extension, no matter the env var.

I'm closing this for the time being, since no additional information had been provided. I'm also not able to see how this issue is related to the functionality of tailor. Please feel free to add more information anytime.


Feature: Allow signup/signin using solely 3rd party Auth

Currently, a user can only be created using the signup statement, which forces the usage/creation of a password after setting up DEFINE SCOPE some_name SESSION some_time SIGNIN (...) SIGNUP (...). I have been unable (and, looking through the discord, no one else is able to) use solely authenticate to create a new user and sign that user in (allowing passwordless signup/signin). This could either be an extension/option of the authenticate function, but I suspect this may require additions to the surrealdb source code as well to allow for this?
If this is already possible, please let me know!

Heya! So if I understand this correctly, you expect here to be able to provide a token from your own authentication service, and to then be able to authenticate with that token without that account existing first? That would indeed require changes to the surrealdb source code itself and stands loose from the JS driver! Interesting scenario @tobiemh! Wondering if you have any thoughts on this!


Linearize binary expressions to reduce proto tree complexity

Which issue does this PR close?

Closes #4066.
Rationale for this change

This PR tries to represent chained binary expressions (like a AND b AND C or a + b + c) in a linearized manner (so instead of ((a, AND, b), AND, c), they are represented as ([a, b, c], AND)) which reduces the complexity of protobuf trees and help serialize some of the complex expressions that weren't possible to serialize before.
What changes are included in this PR?

New representation of the binary expressions in serialized logical plans.
Are there any user-facing changes?
This PR changes the structure in the logical plan, so not sure if this qualifies as an API change. If it might be better to actually do it without removing the existing fields from the protobuf declaration of BinaryExpr, we can also add a new field to the current form and represent all the extra operands there (but I think this one is much more straightforward).

Thanks @yahoNanJing for the report! Would you mind sharing the logs (or linking them) (I don't see a new issue relevant to this and the CI on main is passing so not sure when it fails 🤔)

Hi @isidentical, the issue may not relate to this PR. I made a mistake in our testing environment. Really sorry for bringing the confusing info.

Ah, no problem at all. Let me know if it resurfaces @yahoNanJing!


Retries to 429 never succeed under certain configurations

Describe the bug
Under specific configuration, the Cosmos V3 client will fail to succeed on any number of retries to a 429 response.
To Reproduce
All of the following configurations must be true to reproduce:

Use V3 Cosmos Client
Use ConnectionMode of Direct / TCP (this is the default)
Configure Cosmos account to use multiple regions
Configure Cosmos account for strong consistency
Configure a very generous amount of retries, with either Polly via a custom RequestHandler, or the built in retry configuration:
cosmosClientBuilder.WithThrottlingRetryOptions(new TimeSpan(0, 5, 0), 400);

Next, produce enough load via UpsertItemAsync or ExecuteStoredProcedureAsync to receive 429 responses from Cosmos.
Expected behavior

Expect that some requests will receive a 429 and attempt some number of retries before succeeding.
Using the RequestHandler, adding metrics to the retries would show that fewer requests took 2 retries vs 1, and fewer took 3 vs 2, etc.

This expected behavior is observed if any of the above configurations are changed.
Actual behavior

Any request that receives a 429 will never succeed on subsequent retry attempts, even over the course of many minutes and many retries.
All requests that receive a 429 will iterate through all retry attempts, continually failing, until it is out of retry attempts and then the overall request ends with an exception.

Environment summary
Microsoft.Azure.Cosmos  Version: 3.3.2
.NET Core SDK (reflecting any global.json):
Version:   2.1.504
Commit:    91e160c7f0
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.15063
Additional context

I only reproduced this with either Upserts or calling Stored Procs.  I did not get enough load with reads to trigger 429s.
This works correctly in the v2 client, even when set to Direct / TCP.
If I use retries or polly outside of the Cosmos client, then it has no problem.  That is, I can wrap UpsertItemAsync with a retry, and those retries will behave fine.  Its only a problem for retries within the client (via the built in policy or via RequestHandler).

What setting are you using for the v2 client?

Can you also provide the full exception you are getting back? I did a quick test and I did not get any exceptions with a 429 status code, but I did get several 408 request timeouts.

What setting are you using for the v2 client?

For V2 client, I am using:
            var client = new DocumentClient(new Uri($"https://{accountName}.documents.azure.com:443/"), accountKey, new ConnectionPolicy
            {
                RetryOptions = new RetryOptions
                {
                    MaxRetryAttemptsOnThrottledRequests = 400,
                    MaxRetryWaitTimeInSeconds = 300
                },
                ConnectionMode = ConnectionMode.Direct,
                ConnectionProtocol =  Protocol.Tcp
            });```

Can you also provide the full exception you are getting back? I did a quick test and I did not get any exceptions with a 429 status code, but I did get several 408 request timeouts.

Here is the exception:

Unhandled Exception: System.AggregateException: One or more errors occurred. (Response status code does not indicate success: 429 Substatus: 3200 Reason: ({
"Errors": [
"Request rate is large"
]
}).) ---> Microsoft.Azure.Cosmos.CosmosException: Response status code does not indicate success: 429 Substatus: 3200 Reason: ({
"Errors": [
"Request rate is large"
]
}).
at Microsoft.Azure.Cosmos.ResponseMessage.EnsureSuccessStatusCode()
at Microsoft.Azure.Cosmos.CosmosResponseFactory.ToObjectInternal[T](ResponseMessage cosmosResponseMessage, CosmosSerializer jsonSerializer)
at Microsoft.Azure.Cosmos.CosmosResponseFactory.b__12_0[T](ResponseMessage cosmosResponseMessage)
at Microsoft.Azure.Cosmos.CosmosResponseFactory.ProcessMessageAsync[T](Task1 cosmosResponseTask, Func2 createResponse)
at CosmosV3ClientThrottleTest.Program.UpsertProfileWithSproc(Container container, Profile profile) in C:\Users\Jonathanbe\source\repos\CosmosV3ClientThrottleTest\CosmosV3ClientThrottleTest\Program.cs:line 292

How many request are you doing? Is it the same request rate for both v2 and v3? V3 has a lot of optimizations and should be able to handle a higher request rate than the v2.
I did 4000 upserts of new documents and did not get any 429s on a 400 RU container. Please take a look at my test and let me know if you have any suggestions.

@j82w  Is this test connecting to an emulator or a real cosmos instance?
If a real one, is it configured with multiple regions and strong consistency?  If not, then I wouldn't expect this to throw the exception because it would successfully complete within the generous retries your allowing it to handle internally (up to 5 minutes, up to 400 retries for each upsert request).

@j82w
I've tweaked the code in your example and was able to reproduce it when I use a Cosmos instance that is multi-region, strong consistency.
https://gist.github.com/Blackbaud-JonathanBell/e54b184d7d7c9cccfd3cfe98f9696561

I tested against a real Cosmos DB instance. I verified the test did hit 429, and all succeeded on the retries.  I did not try strong consistency or multiple regions.

I also do not reproduce this unless I have enabled both strong consistency and multiple regions.  I think the issue only surfaces under those conditions.

Having a strong consistency and multiple regions it might be exceeding the 5 minute timeout at that point. Each write is going to take significantly longer because it has to verify that it was replicated to all the other regions.

Having a strong consistency and multiple regions it might be exceeding the 5 minute timeout at that point. Each write is going to take significantly longer because it has to verify that it was replicated to all the other regions.

I'm not sure what to say.  I don't think the potential delays in a multi-region write means that there isn't a clear bug here:

Multi-region, strong works if you use Gateway mode instead of Direct.
Multi-region, strong works if you use Direct and the 2.0 client instead of 3.0 client.
Multi-region, strong works with the 3.0 client --- the only problem is if you have a 429 response, then an unlimited number of retries within that client request will always file.   If you turn off all of the load, and then issue a new request during the minutes while the original request continues to retry and fail, the new request will go through fine.

The issue is the nature of the retries internal to the client are always given the same original 429 outcome (in direct mode) even when there is no RU load in Cosmos, and new requests (retries wrapping the client vs internal to the client) will work fine b/c its an intrinsically new request rather than a tainted internal retry.

To illustrate this further, I've updated my gist with a different test.  It uses Polly to retry 429 errors every 10 seconds, for up to 20 minutes.
The test attempts 50 requests to Cosmos, and logs successes or failures for each retry -- including the retry count that it was one.
I ran the test and included the output in the gist as well (link below).  Almost immediately, 47 requests completed successfully.  3 of them hit a 429 and had to retry.
The rest then slowly ran, retrying 3 requests every ~10 seconds over the course of 20 minutes, continually failing each time, and then completed without success for any of these 3 failed requests.
https://gist.github.com/Blackbaud-JonathanBell/e54b184d7d7c9cccfd3cfe98f9696561#file-output-txt

Thanks for the repo, and clarification. I'm able to repo it using the code you provided, but I'm having issues getting it repo against the current master. It seems to be throwing 408 exception instead now. I'm still investigating.

Hi there, is there any update about this issue? I'm facing with the same bug. Thanks in advance.

We seem to be experiencing this same problem as well. We use Polly as a resilience provider, and we noticed that when when we retry to move the iterator on the IAsyncEnumerable on 429 failures as part of a call to CosmosContainer.GetItemQueryIterator() (we use v4), the SDK gets stuck and seems to continually rethrow the 429 exception. No subsequent requests to Cosmos are ever actually attempted to be made by the SDK.
I created some unit tests to mock responses from the SDK and confirmed that the resilience chain is working correctly. In other words, I created an IAsyncEnumerable which sometimes throws an exception and had the mock SDK return that. The resilience chain correctly retried on those exceptions, and was able to keep the iterator moving forward on retries. So based on this, it appears that the issue is within the Cosmos SDK itself.

Please try upgrading the latest SDK. If the issue still repos capture the CosmosDiagnostics.ToString().


Add .gitignore to default project

When starting a new project with the App a .gitignore would be nice.
If you like the suggestion I'm happy to create a PR.

This might do:
# OSX
#
.DS_Store

# node.js
#
node_modules/
npm-debug.log

Good idea. If you add a .gitignore file under the template directory it should get copied into new projects automatically.


Output didn't received

Hi
While running  the python application in Command Prompt , I am receiving like this...........

And also I am receiving like this in Grafana server also...

Can anyone is available  to assist me for this .

I'm stuck at the same point. @Praveen-24-mvp  were you able to solve this ?

Details

Target OS:
Ubuntu* 22.04 LTS

Ubuntu* 20.04 LTS

Ubuntu* 18.04 LTS

Windows* 10

Windows* 11

Programming Language:
Python* 3.7~3.9

Time to Complete:
10-12min

@Praveen-24-mvp @architlfc  enjoy;)
@
https://gist.github.com/bharath5673/ec6065adfafef3e0173f31198f98c14a

@Praveen-24-mvp @architlfc


revertFunc is not provided for eventDrop and eventResize

FullCalendar provides a revertFunc which can be used to undo a user input but I can't find any reference to that function in the event.detail object. This would be used for example if the user tried to drag an event to an invalid day and you want to force the event back to where it came from.

Hi!
revertFunc not supported, I have no idea how to do it, maybe in the future I will add a new @Input [(revertFunc)]

You can make it working by doing this in the updateEvent:
model = {       event: {         id: model.event.id,         id_res: model.event.id_res,         start: model.event.start,         end: model.event.end,         title: model.event.title,         className: model.event.className,         editable: model.event.editable,         // other params       },       duration: model.duration     }; this.events[model.event.id].start = moment(model.event.start).subtract(model.duration, 'seconds'); this.events[model.event.id].end = moment(model.event.end).subtract(model.duration, 'seconds');
Of course you need to import:
import * as jquery from 'jquery'; import * as moment from 'moment';

I also figured a workaround which is reset all events:
@ViewChild(Calendar)
ucCalendar: Calendar;
revert() {
this.ucCalendar.fullCalendar("removeEvents");
this.ucCalendar.fullCalendar("renderEvents", this.events);
}

I close this issue, becouse @sean-liang seems to have found a solution

IMO not really a solution, because Sean-liang's code snippet reverts ALL the events, not just the currently dragged/resized-one! It would be nice to have a revertFunc, just like in the original FullCalendar's resize/drag callback event payload to support some runtime validation features.

If you change:
this.options.eventDrop = (event, duration) => {
let /** @type {?} */ detail = { event: event, duration: duration };
to:
this.options.eventDrop = (event, duration, revertFunc) => {
let /** @type {?} */ detail = { event: event, duration: duration, revertFunc: revertFunc };
You will get the revert function along with the event.


[Feature Request] Allow setting icon manually when using shortcut/link files (or whenever, I suppose)

Hey there,
I went to try and set Discord as one of the items in my group, but it looks like if you try to use a shortcut link, it shows up as seen below. I used a shortcut as that was what the typical taskbar button ends up being due to the arguments being passed.
C:\Users\mosthated\AppData\Local\DiscordCanary\Update.exe --processStart DiscordCanary.exe

It would be super useful to be able to specify an icon manually in this case.
Thanks,
-MH

a workaround that I am not sure if it works, but seems logical, make a shortcut with a link to Update.exe, and then you can set a custom icon for that shortcut. After that, just add the shortcut to your taskbar group.

Well, that is what I was using. The shortcut was to Update.exe and it has an icon set already. It was the link I usually had on my taskbar, but when I add it to a group it shows up as it does in that image above.

aw damn then I misinterpreted it

a workaround that I am not sure if it works, but seems logical, make a shortcut with a link to Update.exe, and then you can set a custom icon for that shortcut. After that, just add the shortcut to your taskbar group.

This is what the application automatically does, since it seems quite hard to change icons of .exe before they are run.
As of now the program is not optimized for adding .lnk-files, even though it sometimes seems to work. I will work broaded the file types accepted in future releases.
Is this issue solved for now?

It seems that if you edit the ObjectData.xml file to point to the  .LNK file then you can keep the shortcut icon.
Like this:

C:\Users\myusername\Documents\tools\shortcuts\Program - Shortcut.lnk

It also seems to work for .URL files.. so far, at least.
BTW, thanks for producing such a nice app. It's simple yet powerful. I like organizing my taskbar this way.

I have some shortcuts with parameters (all of them launch explorer.exe but with parameters).
And all of them have the Explorer icon, I would like to change the icon.

I have some shortcuts with parameters (all of them launch explorer.exe but with parameters).
And all of them have the Explorer icon, I would like to change the icon.

This looks like a good link for how to change Windows shortcut icons. I think that taskbar groups will take the icon defined on the windows lnk file shortcut. It seems to work for me.
https://www.computerhope.com/issues/ch001820.htm

This looks like a good link for how to change Windows shortcut icons. I think that taskbar groups will take the icon defined on the windows lnk file shortcut. It seems to work for me.
https://www.computerhope.com/issues/ch001820.htm

@OhMyDawg Thank you for the link, I know already how to create LNK files and how to add a custom icon for these LNKs.
But I always have the "common" user in mind, that does not know this and that would be glad to have a way to change the icon.

@OhMyDawg Thank you for the link, I know already how to create LNK files and how to add a custom icon for these LNKs.
But I always have the "common" user in mind, that does not know this and that would be glad to have a way to change the icon.


[cowarrayopt] Instead of always recomputing the loop we are analyzing s exiting blocks when checking for dominance, use a cache.

 Specifically, when
compiling the iOS 32 bit stdlib + sil-verify-all, this shaves off ~20% of the
compile time.

@swift-ci smoke test and merge


Add support for C Lambda functions

C Lambda functions need to be supported. The plan is to require the directory that contains the function to only contain the function.conf and a ZIP file of the pre-built Lambda function.
Questions to answer:

Is there a simple C Lambda function that I can use to test?

Working on this now.  Resources:

https://docs.aws.amazon.com/greengrass/latest/developerguide/lambda-functions.html
https://github.com/aws/aws-greengrass-core-sdk-c

Creating Docker containers to build the native C functions for X86-64 and ARM32 for the example functions repo

Support added in #163


There are bugs installing the latest pixie.

ref. https://github.com/pixie-io/pixie/issues/671
Describe the bug
I encountered a problem while following install document - production readiness. And I share the solution that I solved.
To Reproduce
1<EMAIL_ADDRESS>/ admin login was failed.

I think latest version has bug.<PHONE_NUMBER>,<PHONE_NUMBER> also have bug)
I checkout to<PHONE_NUMBER>. then this issue was solved.
But there is no ingress files in<PHONE_NUMBER> version.

k8s/cloud/overlays/exposed_services_nginx/cloud_ingress_grpcs.yaml
k8s/cloud/overlays/exposed_services_nginx/cloud_ingress_https.yaml

I only got ingress files from the main branch and installed it.
2. px auth login was failed.
I could login as admin. but I couldn't login to pixie using (px auth login)
There seems to be an issue related to grpc.

I modifed k8s/cloud/overlays/exposed_services_nginx/cloud_ingress_grpcs.yaml like below.
Except for /px.api.vizierpb.VizierService/ path, I change cloud-proxy-service to api-service with port 51200
kind: Ingress
metadata:
  creationTimestamp: "2023-02-03T14:10:26Z"
  generation: 4
  name: cloud-ingress-grpcs
  namespace: plc
  resourceVersion: "132233302"
  uid: ca632899-a616-4739-86b3-e6d375681749
spec:
  ingressClassName: nginx
  rules:
  - host: jrpark.pixie.example.com
    http:
      paths:
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /pl.cloudapi.ArtifactTracker/
        pathType: Prefix
      - backend:
          service:
            name: vzconn-service
            port:
              number: 51600
        path: /px.services.VZConnService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.ArtifactTracker/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.APIKeyManager/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.AuthService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.ConfigService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.OrganizationService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.PluginService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.UserService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.VizierClusterInfo/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.VizierDeploymentKeyManager/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.VizierImageAuthorization/
        pathType: Prefix
      - backend:
          service:
            name: cloud-proxy-service
            port:
              number: 4444
        path: /px.api.vizierpb.VizierService/
        pathType: Prefix
  - host: work.jrpark.pixie.example.com
    http:
      paths:
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /pl.cloudapi.ArtifactTracker/
        pathType: Prefix
      - backend:
          service:
            name: vzconn-service
            port:
              number: 51600
        path: /px.services.VZConnService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.ArtifactTracker/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.APIKeyManager/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.AuthService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.ConfigService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.OrganizationService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.PluginService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.UserService/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.VizierClusterInfo/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.VizierDeploymentKeyManager/
        pathType: Prefix
      - backend:
          service:
            name: api-service
            port:
              number: 51200
        path: /px.cloudapi.VizierImageAuthorization/
        pathType: Prefix
      - backend:
          service:
            name: cloud-proxy-service
            port:
              number: 4444
        path: /px.api.vizierpb.VizierService/
        pathType: Prefix
  tls:
  - hosts:
    - jrpark.pixie.example.com
    - work.jrpark.pixie.example.com
    secretName: cloud-proxy-tls-certs
status:
  loadBalancer:
    ingress:
    - ip: <IP_ADDRESS>

And it worked.

Expected behavior
Install self hosted pixie well.
Screenshots
If applicable, add screenshots to help explain your problem. Please make sure the screenshot does not contain any sensitive information such as API keys or access tokens.
Logs
Please attach the logs by running the following command:
./px collect-logs

App information (please complete the following information):

Pixie version:<PHONE_NUMBER>
K8s cluster version: 1.23.4
Node Kernel version
Browser version: chrome

Additional context
Add any other context about the problem here.

Currently, Failed to execute several scripts.
Except for the script below, the execution seems to be going well. Probably.
amqp_data
Compiler error on line 30, column 12: Column 'channel' not found in parent dataframe.

cql_data
Compiler error on line 33, column 19: 'px' object has no attribute 'cql_opcode_name'.

cql_stats
Failed to execute script
Compiler error on line 128, column 19: 'px' object has no attribute 'cql_opcode_name'.

Same behaviour here.

Same behavior here as well


add prestop hook to prevent pods from dying immediately

Issue link: WILL BE INSERTED BY boring-cyborg
Make sure to mark the boxes below before creating PR: [x]

[ ] Description above provides context of the change
[ ] Commit message/PR title starts with [AIRFLOW-NNNN]. AIRFLOW-NNNN = JIRA ID*
[ ] Unit tests coverage for changes (not needed for documentation changes)
[ ] Commits follow "How to write a good git commit message"
[ ] Relevant documentation is updated including usage instructions.
[ ] I will engage committers as explained in Contribution Workflow Example.

* For document-only changes commit message can start with [AIRFLOW-XXXX].

In case of fundamental code change, Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in UPDATING.md.
Read the Pull Request Guidelines for more information.

@dimberman should this be an option? Would folks who don't have this problem want this?

@schnie I'm fine with it being a setting, just wanted to start with a working fix

@ashb no dice. There's no prestop hook in the Pod object

Note: We'll need to put a default "0" into our configuration. for sleep time, but assuming no sleep time there will be no prestop hook.

@schnie @ashb is there any further testing we should do? It worked on my cluster but want to make sure we check before promising a fix to customers.

Let's create a PR for Airflow Master branch too otherwise this feature would stop working when Airflow 2.0 release

@kaxil we won't need this feature in airflow 2.0 because we'll be able to define workers as yaml files

Also @schnie @sjmiller609 can I please have travis turned on for my PRs?

@kaxil we won't need this feature in airflow 2.0 because we'll be able to define workers as yaml files

I feel like we could add that config in https://github.com/apache/airflow/blob/029c84e5527b6db6bdbdbe026f455da325bedef3/airflow/kubernetes/pod_generator.py#L69

Codecov Report

Merging #424 into v1-10-9 will decrease coverage by 16.55%.
The diff coverage is 33.11%.

@@             Coverage Diff              @@
##           v1-10-9     #424       +/-   ##
============================================
- Coverage    81.16%   64.61%   -16.56%
============================================
  Files          530      919      +389
  Lines        36509    44423     +7914
============================================
- Hits         29632    28703      -929
- Misses        6877    15720     +8843

Impacted Files
Coverage Δ

airflow/api/auth/backend/deny_all.py
0.00% <0.00%> (ø)

airflow/api/client/json_client.py
0.00% <0.00%> (ø)

airflow/cli/commands/kerberos_command.py
0.00% <0.00%> (ø)

airflow/cli/commands/rotate_fernet_key_command.py
0.00% <0.00%> (ø)

airflow/cli/commands/scheduler_command.py
0.00% <0.00%> (ø)

...rflow/config_templates/default_webserver_config.py
0.00% <0.00%> (ø)

airflow/configuration.py
60.00% <ø> (-25.10%)
:arrow_down:

...ow/contrib/auth/backends/github_enterprise_auth.py
0.00% <ø> (ø)

airflow/contrib/auth/backends/google_auth.py
0.00% <ø> (ø)

airflow/contrib/auth/backends/kerberos_auth.py
0.00% <ø> (ø)

... and 1092 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 05e7fd4...46a6a1d. Read the comment docs.

We're not doing to be releasing 1.10.9 on AC, so this needs to go elsewhere.


Empty result if all columns of primary key are part of the WHERE conditions

CrateDB version: 1.1.2 and 1.1.5
JVM version: Java 8
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

OS version / environment description:
Ubuntu 14.04.5 LTS - amd64
Problem description:
If I try to run a SELECT or DELETE statement, where all columns of the primary key are part of the WHERE condition, Crate always return an empty result or don't delete the record.
Steps to reproduce:
Create schema and import testing data
create table statusengine_host_scheduleddowntimes_test (
    hostname string,
    entry_time timestamp,
    author_name string,
    comment_data string,
    internal_downtime_id int,
    triggered_by_id int,
    is_fixed boolean,
    duration int,
    scheduled_start_time timestamp,
    scheduled_end_time timestamp,
    was_started boolean,
    actual_start_time timestamp,
    node_name string,
    PRIMARY KEY ("hostname", "node_name", "scheduled_start_time", "internal_downtime_id")
) CLUSTERED INTO 4 shards with (number_of_replicas = '1-all');

INSERT INTO statusengine_host_scheduleddowntimes_test (hostname, entry_time, author_name, comment_data, internal_downtime_id, triggered_by_id, is_fixed, duration, scheduled_start_time, scheduled_end_time, was_started, actual_start_time, node_name)VALUES
('hplj2605dn',<PHONE_NUMBER>, 'Anonymous', '60sekunden111', 12, 0, true, 60,<PHONE_NUMBER>,<PHONE_NUMBER>, true,<PHONE_NUMBER>, 'Crowbar'),
('hplj2605dn',<PHONE_NUMBER>, 'Anonymous', '300sekunden111', 7, 0, true, 300,<PHONE_NUMBER>,<PHONE_NUMBER>, true,<PHONE_NUMBER>, 'Crowbar'),
('hplj2605dn',<PHONE_NUMBER>, 'Anonymous', '60sekunden222', 14, 0, true, 300,<PHONE_NUMBER>,<PHONE_NUMBER>, true,<PHONE_NUMBER>, 'Crowbar');

Query i like the execute, which always return nothing
select * from statusengine_host_scheduleddowntimes_test where hostname='hplj2605dn' and node_name='Crowbar' AND scheduled_start_time=1497981638 and internal_downtime_id=12;

As you can see, i use all primary key columns in the WHERE condition...
I also noticed, that a SELECT count(*) will return 1.
select Count(*) from statusengine_host_scheduleddowntimes_test where hostname='hplj2605dn' and node_name='Crowbar' AND scheduled_start_time=1497981638 and internal_downtime_id=12 limit 100;

As workaround i need to add a random column from the table as well
select * from statusengine_host_scheduleddowntimes_test where hostname='hplj2605dn' and node_name='Crowbar' AND scheduled_start_time=1497981638 and internal_downtime_id=12 and duration=60 limit 100;

Did i just miss something?
//Update
Same results on a 3 node CrateDB cluster on Version 1.1.2 as on my single node dev system at 1.1.5

hi @nook24 thanks for reporting. we will have a look at it!

hi @nook24
It seems to me that the problem is the comparison of the timestamp value. Try casting the column to a timestamp. This worked for me in the given example.
SELECT *
FROM statusengine_host_scheduleddowntimes_test
WHERE
  hostname = 'hplj2605dn'
  AND node_name = 'Crowbar'
  AND cast(scheduled_start_time as timestamp) =<PHONE_NUMBER>
  AND internal_downtime_id = 12;

@nook24 we can reproduce this bug and coming up with a fix soon.

@nook24 this issue is related to the order of the primary key columns inside the where clause.
a workaround is to define the columns in the same order like the primary key definition, in your case:
... where hostname = ... and node_name = ... and scheduled_start_time = ... and internal_downtime_id ...

@seut, I'm not sure if i got you right. Did you mean that I need to define the columns in the same order in my crate table statement:
create table statusengine_host_scheduleddowntimes_test (
    hostname string,
    node_name string,
    scheduled_start_time timestamp,
    internal_downtime_id, int
    <rest of columns/>
PRIMARY KEY ("hostname", "node_name", "scheduled_start_time", "internal_downtime_id")

Or did you mean, that I need to pass the columns in the WHERE condition in the same order, as they are defined in the PK?
Because in my example query, they are already in the same order as in the PK definition...

PRIMARY KEY ("hostname", "node_name", "scheduled_start_time", "internal_downtime_id")

select * from
statusengine_host_scheduleddowntimes_test where hostname='hplj2605dn'
and node_name='Crowbar' AND scheduled_start_time=1497981638
and internal_downtime_id=12;

and this is returning an empty result set.
@grestocla
Nice idea.
Based on this i found an other workaround. I just need to cast the internal_downtime_id from integer to integer, this works as well
select * from
statusengine_host_scheduleddowntimes_test
where hostname='hplj2605dn' and node_name='Crowbar'
AND scheduled_start_time=1497981638 and cast(internal_downtime_id as integer)=12

@nook24 @grestocla this isssue has been fixed by https://github.com/crate/crate/commit/919fec3c4e47f61336d8db9970b42a9bb7b408ed and will be released with the next hotfix releases.


Add conf_total_sessions_gauge (Sessions count)

Can you add new metric conf_total_sessions_gauge as it in jira exporter jira_total_sessions_gauge

Hello,
I tried fixing this but I have difficulties with it. Jira's JiraUserSessionTracker easily provides this information. But so far, I couldn't find a similar way of doing so in Confluence. Maybe the developers of this plugin have an idea?

May be SQL query will help you ?

Only way I found to iterate on users and check session each. No other way.

@diverser Is it OK to have stats about count of users which has login in the 1h, 30h etc

Yes, let's try

Thanks @AndreyVMarkelov , I was afraid that there was no "easy fix". I also asked a similar question on Stackoverflow.
It seems to me that there is currently no elegant way of doing that in Confluence.

@PatrickSchuster The best way here is use the same as https://github.com/AndreyVMarkelov/prom-confluence-exporter/blob/master/src/main/java/ru/andreymarkelov/atlas/plugins/promconfluenceexporter/manager/ScheduledMetricEvaluatorImpl.java
So, iterate by users and get loginInfo from loginManager and fll 2 metrics: logged before 3 hours and 24 hours

HELP confluence_one_hour_active_users_gauge Users Login One Hour Ago Gauge
TYPE confluence_one_hour_active_users_gauge gauge
confluence_one_hour_active_users_gauge 1.0
HELP confluence_today_active_users_gauge Users Login Today Gauge
TYPE confluence_today_active_users_gauge gauge
confluence_today_active_users_gauge 1.0


QA - [Components / Status]: The green in “check icon” is too light

@jeanservaas @shixiedesign

This page is getting redesigned, there won't be check marks anymore.


provide a script to automate deployment of kubernetes and also to deploy application components

This will let users deploy kubernetes cluster using kubespray internally

Duplicate issue- https://github.com/ODIM-Project/ODIM/issues/381


Add X-Powered-By header.

See:
sh-3.2$ curl -v http://localhost:3000
* Rebuilt URL to: http://localhost:3000/
*   Trying ::1...
* Connected to localhost (::1) port 3000 (#0)
> GET / HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.49.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Content-Length: 3172
-------------------------------
< X-Powered-By: Next.js 1.2.3
-------------------------------
< Date: Sat, 17 Dec 2016 11:38:52 GMT
< Connection: keep-alive

Coverage increased (+0.01%) to 57.143% when pulling 948c348abe1b2f1280e3891a9edb29210b663694 on arunoda:x-powered-by into b62a0e8f5510b0636162cb1ef7a3f3ac9e282f46 on zeit:master.

This feels like a bad idea - in general you don't want to leak information about the server in any production app - the framework name is bad enough, the exact version is worse because it makes it that much easier to target exploits.

Yeah, +1 for obfuscating the version. Tho if the page downloads next.js/<version>/next.min.js it's pretty obvious which version and framework is being used...

Securing apps via obfuscating is a good start but it doesn't allow hold any good hacker to do his/her thing. (If there's an issue).
This is something Express does all the times.
What they have a way to turn it off. I'll think about something like that.

All major web servers do this.
It allows us to in the future actually responsibly disclose security problems!
That said, @arunoda it'd be helpful to introduce a config flag poweredByHeader: false to turn it off

@rauchg That's a good suggestion.
I'll hold this PR and do it once we've land #222

@rauchg check now.
We could disable setting the header.
Additionally, we could access the config via app.config if the user uses #310

Coverage decreased (-0.06%) to 57.422% when pulling ce5605c6edf3275415363cfdf40ceeaef0c71df9 on arunoda:x-powered-by into 5ab7463b93a83685dfb59f4c0fc0369e3339d0fb on zeit:master.

And a test would be nice to add as well!

@rauchg added some test cases.

Coverage increased (+3.2%) to 60.635% when pulling e2cb912414488324b13ebe5f3c97305a1bf91fca on arunoda:x-powered-by into 5ab7463b93a83685dfb59f4c0fc0369e3339d0fb on zeit:master.


Require sign in for new users

See https://github.com/getappmap/vscode-appland/pull/627

:tada: This PR is included in version 0.67.0 :tada:
The release is available on:

v0.67.0
GitHub release

Your semantic-release bot :package::rocket:


[WIP] DustAPI() uses DUST_FRONT_API || url

Description
DustAPI() now uses process.env.DUST_FRONT_API by defaults, and accepts a url parameter to override it.
DUST_FRONT_API is set to https://dust.tt if null (in types/[...]/dust_api.ts only)

As per slack thread to be revisited


Provide helpers for common cancellation patterns

I did get the chance to try out the beta version, and happy to say that it works great. Helped me clean up my code quite a bit. Feel free to close this issue!
One observation I will mention is that in most cases, I would like a newly started subsystem to select! on the parent's on_shutdown_requested so that it shuts down immediately on error, and this was causing quite a bit of boilerplate. I was able to address it with the following macro though
/// Start a nested subsystem that `select!`s on `subsys.on_shutdown_requested()` to stop automatically.
/// `subsystem_to_start` must have type `Future<Output=anyhow::Result<()>>`.
#[macro_export]
macro_rules! start {
    ($subsys:expr, $name:expr, $subsystem_to_start:expr) => {
        let subsys_clone = $subsys.clone();
        $subsys.start($name, move |_h: SubsystemHandle| async move {
            tokio::select! {
                r = $subsystem_to_start => r,
                _ = subsys_clone.on_shutdown_requested() => Ok::<(), anyhow::Error>(())
            }
        });
    };
}

Will leave it up to you on whether such a feature makes sense to be in the lib or not (in which case it can probably be another function on SubsystemHandle, rather than a macro).
Originally posted by @viveksjain in https://github.com/Finomnis/tokio-graceful-shutdown/issues/37#issuecomment-1147069424

I thought about things like that.
I think I'd prefer to write:
let async_action_result = some_async_action.cancel_on_shutdown(subsys).await?;

Opposed to the current
let async_action_result = select!{
    res = some_async_action => res,
    _ = subsys.on_shutdown_requested() => return Ok(())
};

I've thought about adding an trait for all Future objects for a while now, just didn't get to implement it.
I think that's cleaner than providing a macro.

Hmm I guess if you can use ? then it can help reduce boilerplate, but in that specific example it doesn't seem that much less code than select! - with the latter arguably being more "idiomatic"/well-known for async code. At least what I was thinking was something more like
Toplevel::new()
  .start_auto_shutdown("countdown", myhandler)

which of course provides less flexibility (the only SubsystemHandle that it will wait on is the one for myhandler), but reduces boilerplate. Perhaps it could take a third argument on what to return in case shutdown is requested, so that at least the handler return type can be generic. My 2¢ :)

"less idiomatic/well-known" - I was hoping it was a known pattern, it's similar to tokio::timeout.
OK I get your use case.
Three things I struggle with:

I don't want to encourage people to cancel on a higher level, if rather haben them cancel inside of the subsystem.
I'd like to be a library to be as generic as possible, I don't want to become a library that overwhelms its user by providing a special function for every corner case.
I'm not sure how I would name such a function.

I think the most idiomatic I could think of would be neither a new function nor a macro, but instead a wrapper struct:
.start(AutoCancel(my_subsys))

where AutoCancel's constructor can take a FnOnce() -> Result, and itself is a subsystem.
Although I think it would be easy enough to implement, so I would almost leave that to the user if he desires such a functionality.
I value your 2¢ ;)

Ah I see, I just wasn't familiar with tokio::timeout. I think select is a more common use case so it's mentioned in the guide but not sure timeout is. I think your points make a lot of sense, and I really like the AutoCancel idea. Will look into switching from my macro to something like AutoCancel.

Now that I think about it, it would probably have to be a function instead of a struct. Or you would have to write .start(AutoCancel::new(my_subsys).into_subsystem())

Turns out this is not as easy as thought. Maybe your macro solution has something to it after all :D

you could always write |subsys_handle| my_subsystem().cancel_on_shutdown(&subsys_handle), as soon as the new PR is merged. but that would raise an error on cancellation.

Then let's close this for now, I think I'd leave such a macro out. Maybe I'll ad it later if more people demand it, but right now it feels like too much of a corner case.
If you want further discussion about things, feel free to contact me on https://discord.com/invite/tokio.


EMP should not damage enemies

Created by: MaxwellJung

mentioned in merge request ow1_emulator_backup!346

Created by: Wadetata
i mean, cant you just use a set damage or damage modifier and remove it after the ult is done?

moved from ow1_emulator_backup#671

Created by: MaxwellJung
That's what I'm thinking, but I think it's slightly complicated by the fact the emp has travel time from source to victim.


Rate-limiting errors out

https://github.com/jasondilworth56/iracingdataapi/blob/df3a52923be508db1f0684bd4f6aaa0f0d632017/src/iracingdataapi/client.py#L75
In my repeated rapid abuse of the api, I came upon this:
File "C:\Users\matth\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\iracingdataapi\client.py", line 90, in _get_resource
resource_obj, is_link = self._get_resource_or_link(request_url, payload=payload)
File "C:\Users\matth\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\iracingdataapi\client.py", line 75, in _get_resource_or_link
reset_datetime = datetime.fromtimestamp(r.header["x-ratelimit-reset"])
AttributeError: 'Response' object has no attribute 'header'. Did you mean: 'headers'?
Looks like we just need to update r.header -> r.headers?

Oh dear, that's a bit of an oversight, sorry!
Do you fancy sorting out and testing the fix and I'll get it into the next update?

I made the change and am working to test it. I'm struggling to actually reproduce the issue ever since I opened this issue.

I managed to get my code to run fast enough to rate limit again. I ran into some strange edgecase here where the x-ratelimit-reset header managed to be before datetime.now, which throws an error when trying to sleep:
Rate limited, waiting
reset_datetime: 2023-01-23 17:46:33
datetime now  : 2023-01-23 17:46:33.029397
delta         : -1 day, 23:59:59.970603
and
Rate limited, waiting
reset_datetime: 2023-01-23 17:49:33
datetime now  : 2023-01-23 17:49:15.869170
delta         : 17.13083
Rate limited, waiting
reset_datetime: 2023-01-23 17:49:33
datetime now  : 2023-01-23 17:49:33.070389
delta         : -0.070389
I propose adding 1 (or more) to the delta.

Here is my excellent debugging with 1 second added to the delta:
Rate limited, waiting
reset_datetime: 2023-01-23 17:52:21
datetime now  : 2023-01-23 17:52:15.348002
delta         : 5.651998
delta + 1     : 6.651998
Rate limited, waiting
reset_datetime: 2023-01-23 17:52:21
datetime now  : 2023-01-23 17:52:21.026266
delta         : -0.026266
delta + 1     : 0.973734

I think it may be broken due to the retry, but I can't work out exactly why. It's the same scenario where it gets ratelimited 2x but the second time breaks it.
reset_datetime: 2023-01-23 17:54:09
datetime now  : 2023-01-23 17:53:47.773792
delta         : 21.226208
delta + 1     : 22.226208
Rate limited, waiting
reset_datetime: 2023-01-23 17:54:09
datetime now  : 2023-01-23 17:54:10.022771
delta         : -1.022771
delta + 1     : -0.022771000000000097
This was after I added 1 to the sleep function thinking sleeping later would save it.

Fixed by #13


Mention trusted mods setting

This doesn't work unless you add the mod formspec_edit to your trusted mods (secure.trusted_mods setting).
Please add this info into the readme, thanks!

Fixed by #2

Yep, #2 merged.


feat(translator): implement connection limit

What this PR does / why we need it:

Implements connection limits in CTP based on API defined in #2709.
Simple e2e test that demonstrates connection limiting by opening connections beyond the configured limit and expecting following requests to fail
Docs

Which issue(s) this PR fixes:
Fixes #2685

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/retest

renamed the container to "connectionLimit" based on discussion here: https://github.com/envoyproxy/gateway/pull/2805#discussion_r1533437654

/retest


Scroll to end of document when adding items

Allows adding of entities, attributes, and relationships without having
to manually scroll to the bottom of the list once the list is taller
than the view.

Merged
Thanks for your contribution @dcramps


Include JSONFormatter in bundle

Converted build to use webpack
Upgraded babel version
Included JSONFormatter in build by default
Removed bower deps in favor of npm

very nice! I'll merge it tonight

@mohsen1 and updates on merging this and publishing a new version to npm?

Hey @mhamann this is great but we need to make sure it works end-to-end
I couldn't make a build and confirm this is working and don't have enough time to dig into it.
I would like to move away from bower and gulp and instead build it with webpack and test it with Jest
Can you look into it?
Thanks!

@mohsen1 yeah, i can try to find some time to work on that. (cc: @chrisdudley - maybe someone from your team could collab w/ me on this)
I see the PR was reverted. Did something break?
I did run some manual tests to ensure this worked and solved the issue--and it did. But certainly could break people if they were depending on the bower side of things.
This probably deserves a 2.0.0 version bump.

The bower dependencies were still in the demo app. What I wish I could do is to have webpack dev server for demo and webpack for building the js/css assets

Gotcha. Webpack dev server shouldn't be a problem.

I tried the version at this commit (1f87948570c31e4fce0f0086da69099157a6516d) and I can use it in my code with npm + browserify with:
import JSONSchemaView from 'json-schema-view-js';

On the current master branch (with commit reverted) I cannot because it does not find ./helpers.js during browserify  bundling.
One thing I had to add was json-formatter-js dependency, which was not automatically installed.


clearer documentation

I thought that the intro could do with a little bit of editing to make it more obvious what this script does, what it doesn't do, and get straight to the installation. Plus more links out to cabal documentation and features.
I also removed some redundancy (including the TODO section, which is already out of date with the issue tracker)

@hasufell I pushed some fixes thanks to your feedback

I thought that the intro could do with a little bit of editing to make it more obvious what this script does, what it doesn't do, and get straight to the installation. Plus more links out to cabal documentation and features.
I also removed some redundancy (including the TODO section, which is already out of date with the issue tracker)

Yes, links to cabal documentation sounds very useful, since this will probably mainly be used in conjunction with cabal new-build.

@hasufell some more updates, I hope all your comments are addressed now

thanks!


S6 [User Story] State Base Class and State Helper functions

[User Story]
State Base Class and State Helper functions

Epic Title
#32

User Story Title
State Base Class and State Helper functions

T-shirt size: S(mall), M(edium), L(arge)
M

Story Points - Fibonacci (1,2,3,5,8,13)
1

User Story
Base class for state objects with state helper functions

Description
Things like get, exists, store helper functions for state objects

Business Need (the why):
Transaction processor refactor

Details

Additional User Story
#210 #379

Dependencies

Assumptions

Questions/Clarifications

Waiting on PR backlog, as is dependent upon unmerged PRs.


Hotspot Name
Energetic Goldenrod Coyote
Hotspot b58 Address
112eEUJY6CVYJAEEZsQXYkH7VRbKgcGpRsCSkzUbmNTKSUwmnMdS
Discord Handle
No response
Hotspot Manufacturer
panther.global
Removal Reason
Corrected real hotspot layout
Modifications
No
Extra forwarders
No
Extra antennas
No
Additional Information
No response

Hotspot Name
Energetic Goldenrod Coyote
Hotspot b58 Address
112eEUJY6CVYJAEEZsQXYkH7VRbKgcGpRsCSkzUbmNTKSUwmnMdS
Discord Handle
No response
Hotspot Manufacturer
panther.global
Removal Reason
Corrected real hotspot layout
Modifications
No
Extra forwarders
No
Extra antennas
No
Additional Information
No response

Hotspot Name
Energetic Goldenrod Coyote
Hotspot b58 Address
112eEUJY6CVYJAEEZsQXYkH7VRbKgcGpRsCSkzUbmNTKSUwmnMdS
Discord Handle
No response
Hotspot Manufacturer
panther.global
Removal Reason
Corrected real hotspot layout
Modifications
No
Extra forwarders
No
Extra antennas
No
Additional Information
No response

Hotspot Name
Energetic Goldenrod Coyote
Hotspot b58 Address
112eEUJY6CVYJAEEZsQXYkH7VRbKgcGpRsCSkzUbmNTKSUwmnMdS
Discord Handle
No response
Hotspot Manufacturer
panther.global
Removal Reason
Corrected real hotspot layout
Modifications
No
Extra forwarders
No
Extra antennas
No
Additional Information
No response

We have taken into account this removal request in the next iteration of the denylist. It may take some time before it's processed. This is an automated comment due to the volume of addition and removal requests. A future tool is in the works to provide more insight into the analysis approach made by the Helium team and community members that maintain this list.


divide gulp tasks

This pr is something to consider for scalability. While it may be overkill in the current state of this seed project, it would be helpful when developers use this seed and start to add their own workflow.

Hey @jerryorta-dev. Looks great to me! Would you change the indentation to 2 spaces in order to be consistent?
//cc @ludohenin what are your thoughts?

yeah, looks great!


feat: update electron sample

upgrades to v4.1.0
shows correct use of the Electron Context Bridge Provider
updates electron to v28.0.2

By submitting this pull request, you agree to the contribution guidelines

If you aren't familiar with how to contribute to open-source repositories using GitHub, or if you find the instructions on this page confusing, sign up for one of our Sharing is Caring events. It's completely free, and we'll guide you through the process.

Q
A

Bug fix?
no

New feature?
yes

New sample?
no

Related issues?
fixes #X, partially #Y, mentioned in #Z

What's in this Pull Request?
Updates electron sample to use a modern version of electron and the new content bridge based provider

@trulysinclair if you have some time to checkout this sample that I made I'd appreciate the feedback.

@gavinbarron I apologize for my lack of response, work had taken over. It gives Error occured in handler for 'login' which also happened for me when I first got the contextBridge implemented. The fix was the add the authority:"https://login.microsoftonline.com/---" in the config and it cleared right up. Even if authority is an empty string, auth still works. The only problem I noticed with doing that is of course profile images and such don't load.
Other than that, I would upgrade Electron to latest for security given that contextIsolation now defaults to true. I could take care of that if you'd like, again I apologize for ghosting you.