Transaction intializing twice per request

Transaction intializing twice
For the mod security rules that I have wrote, one single request initializes the transaction twice and runs associated lua scripts twice.
Logs and dumps
Output of:

DebugLogs (level 9)

[166566179497.857181] [] [4] Initializing transaction
[166566179497.857181] [] [4] Transaction context created.
[166566179497.857181] [] [4] Starting phase CONNECTION. (SecRules 0)
[166566179497.857181] [] [9] This phase consists of 0 rule(s).
[166566179497.857181] [] [4] Starting phase URI. (SecRules 0 + 1/2)
[166566179497.857181] [/] [4] Starting phase REQUEST_HEADERS.  (SecRules 1)
[166566179497.857181] [/] [9] This phase consists of 11 rule(s).
[166566179497.857181] [/] [4] (Rule: 200000) Executing operator "Rx" with param "^(?:application(?:/soap\+|/)|text/)xml" against REQUEST_HEADERS:Content-Type.
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 200001) Executing operator "Rx" with param "^application/json" against REQUEST_HEADERS:Content-Type.
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 100001) Executing operator "Eq" with param "0" against USER:EOYVxTvk_twst.
[166566179497.857181] [/] [9] Target value: "0" (Variable: USER:EOYVxTvk_twst)
[166566179497.857181] [/] [9] Matched vars updated.
[166566179497.857181] [/] [4] Running [independent] (non-disruptive) action: setvar
[166566179497.857181] [/] [8] Saving variable: USER:EOYVxTvk_twst with value:<PHONE_NUMBER>
[166566179497.857181] [/] [4] Rule returned 1.
[166566179497.857181] [/] [4] Running (disruptive)     action: pass.
[166566179497.857181] [/] [8] Running action pass
[166566179497.857181] [/] [4] (Rule: 100002) Executing operator "Rx" with param "\Qfirefox\E" against REQUEST_HEADERS:User-Agent.
[166566179497.857181] [/] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166566179497.857181] [/] [9] Matched vars updated.
[166566179497.857181] [/] [4] Running [independent] (non-disruptive) action: setvar
[166566179497.857181] [/] [8] Saving variable: USER:dynamic_var with value: user.EOYVxTvk
[166566179497.857181] [/] [4] Rule returned 1.
[166566179497.857181] [/] [9] Running action: log
[166566179497.857181] [/] [9] Saving transaction to logs
[166566179497.857181] [/] [9] Running action: auditlog
[166566179497.857181] [/] [9] Saving transaction to logs
[166566179497.857181] [/] [9] Running action: setuid
[166566179497.857181] [/] [8] User collection initiated with value: ''.
[166566179497.857181] [/] [9] Running action: exec
[166566179497.857181] [/] [8] Running script... /usr/local/openresty/nginx/lua/epoch_time_update.lua
[166566179497.857181] [/] [1]
[166566179497.857181] [/] [1] twst_var_name user.EOYVxTvk_twst
[166566179497.857181] [/] [1] req_rate_var user.EOYVxTvk
[166566179497.857181] [/] [1] throttle_window_start<PHONE_NUMBER>
[166566179497.857181] [/] [1] throttle_window_end<PHONE_NUMBER>
[166566179497.857181] [/] [1] cant find req_rate_var  user.EOYVxTvk
[166566179497.857181] [/] [1] current_req_rate 0
[166566179497.857181] [/] [1] setting current_req_rate to 1
[166566179497.857181] [/] [9] Returning from lua script:
[166566179497.857181] [/] [4] (Rule: 100004) Executing operator "Gt" with param "30" against USER:EOYVxTvk.
[166566179497.857181] [/] [9] Target value: "1" (Variable: USER:::::EOYVxTvk)
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 100005) Executing operator "Eq" with param "0" against USER:DCrgmTrP_twst.
[166566179497.857181] [/] [9] Target value: "0" (Variable: USER:DCrgmTrP_twst)
[166566179497.857181] [/] [9] Matched vars updated.
[166566179497.857181] [/] [4] Running [independent] (non-disruptive) action: setvar
[166566179497.857181] [/] [8] Saving variable: USER:DCrgmTrP_twst with value:<PHONE_NUMBER>
[166566179497.857181] [/] [4] Rule returned 1.
[166566179497.857181] [/] [4] Running (disruptive)     action: pass.
[166566179497.857181] [/] [8] Running action pass
[166566179497.857181] [/] [4] (Rule: 100006) Executing operator "Rx" with param "\Qchrome browser\E" against REQUEST_HEADERS:User-Agent.
[166566179497.857181] [/] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 100008) Executing operator "Gt" with param "45" against USER:DCrgmTrP.
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 100009) Executing operator "Eq" with param "0" against USER:DCrgmRrP_twst.
[166566179497.857181] [/] [9] Target value: "0" (Variable: USER:DCrgmRrP_twst)
[166566179497.857181] [/] [9] Matched vars updated.
[166566179497.857181] [/] [4] Running [independent] (non-disruptive) action: setvar
[166566179497.857181] [/] [8] Saving variable: USER:DCrgmRrP_twst with value:<PHONE_NUMBER>
[166566179497.857181] [/] [4] Rule returned 1.
[166566179497.857181] [/] [4] Running (disruptive)     action: pass.
[166566179497.857181] [/] [8] Running action pass
[166566179497.857181] [/] [4] (Rule: 100010) Executing operator "Rx" with param "\Qchrome\E" against REQUEST_HEADERS:User-Agent.
[166566179497.857181] [/] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 100011) Executing operator "Gt" with param "45" against USER:DCrgmRrP.
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] Starting phase REQUEST_BODY. (SecRules 2)
[166566179497.857181] [/] [9] This phase consists of 5 rule(s).
[166566179497.857181] [/] [4] (Rule: 200007) Executing operator "Ge" with param "1000" against ARGS.
[166566179497.857181] [/] [9] Target value: "0" (Variable: ARGS)
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 200002) Executing operator "Eq" with param "0" against REQBODY_ERROR.
[166566179497.857181] [/] [9] Target value: "0" (Variable: REQBODY_ERROR)
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 200003) Executing operator "Eq" with param "0" against MULTIPART_STRICT_ERROR.
[166566179497.857181] [/] [9] Target value: "" (Variable: MULTIPART_STRICT_ERROR)
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 200004) Executing operator "Eq" with param "1" against MULTIPART_UNMATCHED_BOUNDARY.
[166566179497.857181] [/] [9] Target value: "" (Variable: MULTIPART_UNMATCHED_BOUNDARY)
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179497.857181] [/] [4] (Rule: 200005) Executing operator "StrEq" with param "0" against TX:regex(^MSC_).
[166566179497.857181] [/] [4] Rule returned 0.
[166566179497.857181] [/] [9] Matched vars cleaned.
[166566179474.132787] [] [4] Initializing transaction
[166566179474.132787] [] [4] Transaction context created.
[166566179474.132787] [] [4] Starting phase CONNECTION. (SecRules 0)
[166566179474.132787] [] [9] This phase consists of 0 rule(s).
[166566179474.132787] [] [4] Starting phase URI. (SecRules 0 + 1/2)
[166566179474.132787] [/] [4] Starting phase REQUEST_HEADERS.  (SecRules 1)
[166566179474.132787] [/] [9] This phase consists of 11 rule(s).
[166566179474.132787] [/] [4] (Rule: 200000) Executing operator "Rx" with param "^(?:application(?:/soap\+|/)|text/)xml" against REQUEST_HEADERS:Content-Type.
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 200001) Executing operator "Rx" with param "^application/json" against REQUEST_HEADERS:Content-Type.
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100001) Executing operator "Eq" with param "0" against USER:EOYVxTvk_twst.
[166566179474.132787] [/] [9] Target value: "1" (Variable: USER:EOYVxTvk_twst)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100002) Executing operator "Rx" with param "\Qfirefox\E" against REQUEST_HEADERS:User-Agent.
[166566179474.132787] [/] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166566179474.132787] [/] [9] Matched vars updated.
[166566179474.132787] [/] [4] Running [independent] (non-disruptive) action: setvar
[166566179474.132787] [/] [8] Saving variable: USER:dynamic_var with value: user.EOYVxTvk
[166566179474.132787] [/] [4] Rule returned 1.
[166566179474.132787] [/] [9] Running action: log
[166566179474.132787] [/] [9] Saving transaction to logs
[166566179474.132787] [/] [9] Running action: auditlog
[166566179474.132787] [/] [9] Saving transaction to logs
[166566179474.132787] [/] [9] Running action: setuid
[166566179474.132787] [/] [8] User collection initiated with value: ''.
[166566179474.132787] [/] [9] Running action: exec
[166566179474.132787] [/] [8] Running script... /usr/local/openresty/nginx/lua/epoch_time_update.lua
[166566179474.132787] [/] [1]
[166566179474.132787] [/] [1] twst_var_name user.EOYVxTvk_twst
[166566179474.132787] [/] [1] req_rate_var user.EOYVxTvk
[166566179474.132787] [/] [1] throttle_window_start<PHONE_NUMBER>
[166566179474.132787] [/] [1] throttle_window_end<PHONE_NUMBER>
[166566179474.132787] [/] [1] current_req_rate 1
[166566179474.132787] [/] [1] setting current_req_rate to 2
[166566179474.132787] [/] [9] Returning from lua script:
[166566179474.132787] [/] [4] (Rule: 100004) Executing operator "Gt" with param "30" against USER:EOYVxTvk.
[166566179474.132787] [/] [9] Target value: "2" (Variable: USER:::::EOYVxTvk)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100005) Executing operator "Eq" with param "0" against USER:DCrgmTrP_twst.
[166566179474.132787] [/] [9] Target value: "1" (Variable: USER:DCrgmTrP_twst)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100006) Executing operator "Rx" with param "\Qchrome browser\E" against REQUEST_HEADERS:User-Agent.
[166566179474.132787] [/] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100008) Executing operator "Gt" with param "45" against USER:DCrgmTrP.
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100009) Executing operator "Eq" with param "0" against USER:DCrgmRrP_twst.
[166566179474.132787] [/] [9] Target value: "1" (Variable: USER:DCrgmRrP_twst)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100010) Executing operator "Rx" with param "\Qchrome\E" against REQUEST_HEADERS:User-Agent.
[166566179474.132787] [/] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 100011) Executing operator "Gt" with param "45" against USER:DCrgmRrP.
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] Starting phase REQUEST_BODY. (SecRules 2)
[166566179474.132787] [/] [9] This phase consists of 5 rule(s).
[166566179474.132787] [/] [4] (Rule: 200007) Executing operator "Ge" with param "1000" against ARGS.
[166566179474.132787] [/] [9] Target value: "0" (Variable: ARGS)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 200002) Executing operator "Eq" with param "0" against REQBODY_ERROR.
[166566179474.132787] [/] [9] Target value: "0" (Variable: REQBODY_ERROR)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 200003) Executing operator "Eq" with param "0" against MULTIPART_STRICT_ERROR.
[166566179474.132787] [/] [9] Target value: "" (Variable: MULTIPART_STRICT_ERROR)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 200004) Executing operator "Eq" with param "1" against MULTIPART_UNMATCHED_BOUNDARY.
[166566179474.132787] [/] [9] Target value: "" (Variable: MULTIPART_UNMATCHED_BOUNDARY)
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] (Rule: 200005) Executing operator "StrEq" with param "0" against TX:regex(^MSC_).
[166566179474.132787] [/] [4] Rule returned 0.
[166566179474.132787] [/] [9] Matched vars cleaned.
[166566179474.132787] [/] [4] Starting phase RESPONSE_HEADERS. (SecRules 3)
[166566179474.132787] [/] [9] This phase consists of 0 rule(s).
[166566179474.132787] [/] [9] Appending response body: 1097 bytes. Limit set to:<PHONE_NUMBER>00
[166566179474.132787] [/] [4] Starting phase RESPONSE_BODY. (SecRules 4)
[166566179474.132787] [/] [9] This phase consists of 0 rule(s).
[166566179474.132787] [/] [4] Starting phase LOGGING. (SecRules 5)
[166566179474.132787] [/] [9] This phase consists of 0 rule(s).
[166566179474.132787] [/] [8] Checking if this request is suitable to be saved as an audit log.
[166566179474.132787] [/] [8] Checking if this request is relevant to be part of the audit logs.
[166566179474.132787] [/] [5] Saving this request as part of the audit logs.
[166566179474.132787] [/] [8] Request was relevant to be saved. Parts: 6006

AuditLogs

---iPaDVcGe---A--
[13/Oct/2022:11:54:38 +0000]<PHONE_NUMBER>13.609448 <IP_ADDRESS> 63810 <IP_ADDRESS> 80
---iPaDVcGe---B--
GET / HTTP/1.1
User-Agent: firefox
Postman-Token: f58faddd-5d97-44fc-8fb6-c96242dcc887
Accept: */*
Host: <IP_ADDRESS>
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

---iPaDVcGe---D--

---iPaDVcGe---E--
<!DOCTYPE html>\x0a\x0a\x0a<meta content="text/html;charset=utf-8" http-equiv="Content-Type">\x0a<meta content="utf-8" http-equiv="encoding">\x0a<title>Welcome to OpenResty!</title>\x0a\x0a\x0a\x0a
Welcome to OpenResty!
\x0a
If you see this page, the OpenResty web platform is successfully installed and\x0aworking. Further configuration is required.
\x0a\x0a
For online documentation and support please refer to our\x0aopenresty.org site
\x0aCommercial support is available at\x0aopenresty.com.
\x0a
We have articles on troubleshooting issues like high CPU usage and\x0alarge memory usage on our official blog site.\x0a
Thank you for flying OpenResty.
\x0a\x0a\x0a

---iPaDVcGe---F--
HTTP/1.1 200
Server: openresty/<IP_ADDRESS>
Date: Thu, 13 Oct 2022 11:54:38 GMT
Content-Length: 1097
Content-Type: text/html
Last-Modified: Thu, 06 Oct 2022 09:29:18 GMT
Connection: keep-alive
ETag: "633e9fee-449"

---iPaDVcGe---H--
ModSecurity: Warning. Matched "Operator `Rx' with parameter `\Qfirefox\E' against variable `REQUEST_HEADERS:User-Agent' (Value: `firefox' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "9"] [id "100002"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/"] [unique_id "166566207813.609448"] [ref "o0,7v27,7"]

---iPaDVcGe---I--

---iPaDVcGe---J--

---iPaDVcGe---Z--

Notice: Be carefully to not leak any confidential information.
To Reproduce
Steps to reproduce the behavior:
Add the following modsecurity configuration;
SecRule &user.EOYVxTvk_twst "@eq 0" "phase:1,id:100001,pass,setvar:user.EOYVxTvk_twst=%{TIME_EPOCH}"

SecRule REQUEST_HEADERS:User-Agent "\Qfirefox\E" "id:100002,phase:1,log,auditlog,setuid:%{tx.ua_hash},setvar:user.dynamic_var=user.EOYVxTvk,exec:/usr/local/openresty/nginx/lua/epoch_time_update.lua"

SecRule user:EOYVxTvk "@gt 30" "chain,id:100004,phase:1,auditlog,deny,status:429,setenv:RATELIMITED,log,msg:'RATELIMITED User-Agent'"
            SecRule REQUEST_HEADERS:User-Agent "\Qfirefox\E"

SecRule &user.DCrgmTrP_twst "@eq 0" "phase:1,id:100005,pass,setvar:user.DCrgmTrP_twst=%{TIME_EPOCH}"

SecRule REQUEST_HEADERS:User-Agent "\Qchrome browser\E" "id:100006,phase:1,log,auditlog,setuid:%{tx.ua_hash},setvar:user.dynamic_var=user.DCrgmTrP,exec:/usr/local/openresty/nginx/lua/epoch_time_update.lua"

SecRule user:DCrgmTrP "@gt 45" "chain,id:100008,phase:1,auditlog,deny,status:429,setenv:RATELIMITED,log,msg:'RATELIMITED User-Agent'"
            SecRule REQUEST_HEADERS:User-Agent "\Qchrome browser\E"

Curl command to make the request.
curl --location --request GET 'http://<IP_ADDRESS>/' --header 'User-Agent: firefox'

Expected behavior
Expectation was Rule: 100002 would run only once per request, but its running twice.
Server (please complete the following information):

ModSecurity v3.0.1 with nginx-connector v1.0.3
WebServer: nginx version: openresty/<IP_ADDRESS>
OS (and distro): Ubuntu 22.04.1 LTS

Rule Set (please complete the following information):

Running any public or commercial rule set? No
What is the version number? [e.g. 2018-08-11] NA

Hello @nagri ,
As far as ModSecurity is concerned it is seeing two transactions.
It is possible for a single HTTP request arriving at an nginx+ModSecurity instance to be processed twice -- depending on how you have set up your nginx configuration. For example error page redirection can result in ModSecurity seeing a request twice (possibly with the request method changed -- https://github.com/SpiderLabs/ModSecurity-nginx/issues/152#issuecomment-583037424 )
Even if that particular example does not seem to match, my guess is that you are experiencing something comparable.
You could try analyzing and experimenting with which location (etc.) blocks in your nginx configuration that you have modsecurity enabled.

Thanks for replying @martinhsv
As far as I can tell, nginx is receiving only one request, I can see that in the logs.
here is mu nginx.conf
load_module /usr/local/openresty/nginx/modules/ngx_http_modsecurity_module.so;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    lua_package_path "/usr/local/lib/lua/?.lua;;";

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        modsecurity on;
	modsecurity_rules_file /usr/local/openresty/nginx/modsec/main.conf;

        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

Its a simple out of the box nginx installation.

Hey @martinhsv, Thank you for replying.
I saw the link you mentioned and indeed I had some error redirection.
I removed those and now my nginx.conf looks like this;
load_module /usr/local/openresty/nginx/modules/ngx_http_modsecurity_module.so;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    lua_package_path "/usr/local/lib/lua/?.lua;;";

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        modsecurity on;
        modsecurity_rules_file /usr/local/openresty/nginx/modsec/main.conf;

        location / {
            root   html;
            index  index.html index.htm;
        }

    }

}

Very basic nginx conf, but the issue still persists.
I checked in nginx access.log, it receives one request only.
What else can I do to debug this further?

One thing I'll draw your attention to is that in your posted debug log output, the two transactions (from ModSecurity's point of view) are<PHONE_NUMBER>62.029228 and<PHONE_NUMBER>14.410830. The first of those two ends with the phase REQUEST_BODY ("Starting phase REQUEST_BODY.") I.e. there is no execution of either the phase "RESPONSE_HEADERS" or "LOGGING".
This suggests that processing of the original "transaction" is being interrupted at a level above ModSecurity.
Indeed the first .conf file that you posted ( https://github.com/SpiderLabs/ModSecurity/issues/2816#issuecomment-1277697362 ) could be consistent with this possibility -- given the error-redirect specification that is present.
However, unless something not shown is doing something, I would agree that your second .conf file ( https://github.com/SpiderLabs/ModSecurity/issues/2816#issuecomment-1277714384 ) does not suggest this -- especially if the ModSecurity debug log looks the same after the change to the second .conf file.
I would suggest increasing the log level of your nginx error.log file. E.g.:
error_log  /var/log/nginx/error.log debug;

Also, what is/was the content of the client's response? With the original .conf was it /50x.html? How about with the second .conf?

Also, what is/was the content of the response received by the client? With the original .conf was it /50x.html? How about with the second .conf?

Response is always OK with HTTP status code 200. Error Never occurred.
One weid thing happening is that if the URI is anything but "/" the flow is proper and modsecurity is processing only one transaction.
here for http://<IP_ADDRESS>/index.html
debug.log
[166573028025.877167] [] [4] Initializing transaction
[166573028025.877167] [] [4] Transaction context created.
[166573028025.877167] [] [4] Starting phase CONNECTION. (SecRules 0)
[166573028025.877167] [] [9] This phase consists of 0 rule(s).
[166573028025.877167] [] [4] Starting phase URI. (SecRules 0 + 1/2)
[166573028025.877167] [/index.html] [4] Starting phase REQUEST_HEADERS.  (SecRules 1)
[166573028025.877167] [/index.html] [9] This phase consists of 8 rule(s).
[166573028025.877167] [/index.html] [4] (Rule: 200000) Executing operator "Rx" with param "^(?:application(?:/soap\+|/)|text/)xml" against REQUEST_HEADERS:Content-Type.
[166573028025.877167] [/index.html] [4] Rule returned 0.
[166573028025.877167] [/index.html] [9] Matched vars cleaned.
[166573028025.877167] [/index.html] [4] (Rule: 200001) Executing operator "Rx" with param "^application/json" against REQUEST_HEADERS:Content-Type.
[166573028025.877167] [/index.html] [4] Rule returned 0.
[166573028025.877167] [/index.html] [9] Matched vars cleaned.
[166573028025.877167] [/index.html] [4] (Rule: 100001) Executing operator "Eq" with param "0" against USER:EOYVxTvk_twst.
[166573028025.877167] [/index.html] [9] Target value: "0" (Variable: USER:EOYVxTvk_twst)
[166573028025.877167] [/index.html] [9] Matched vars updated.
[166573028025.877167] [/index.html] [4] Running [independent] (non-disruptive) action: setvar
[166573028025.877167] [/index.html] [8] Saving variable: USER:EOYVxTvk_twst with value:<PHONE_NUMBER>
[166573028025.877167] [/index.html] [4] Rule returned 1.
[166573028025.877167] [/index.html] [4] Running (disruptive)     action: pass.
[166573028025.877167] [/index.html] [8] Running action pass
[166573028025.877167] [/index.html] [4] (Rule: 100002) Executing operator "Rx" with param "\Qfirefox\E" against REQUEST_HEADERS:User-Agent.
[166573028025.877167] [/index.html] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166573028025.877167] [/index.html] [9] Matched vars updated.
[166573028025.877167] [/index.html] [4] Running [independent] (non-disruptive) action: setvar
[166573028025.877167] [/index.html] [8] Saving variable: USER:dynamic_var with value: user.EOYVxTvk
[166573028025.877167] [/index.html] [4] Rule returned 1.
[166573028025.877167] [/index.html] [9] Running action: log
[166573028025.877167] [/index.html] [9] Saving transaction to logs
[166573028025.877167] [/index.html] [9] Running action: auditlog
[166573028025.877167] [/index.html] [9] Saving transaction to logs
[166573028025.877167] [/index.html] [9] Running action: setuid
[166573028025.877167] [/index.html] [8] User collection initiated with value: ''.
[166573028025.877167] [/index.html] [9] Running action: exec
[166573028025.877167] [/index.html] [8] Running script... /usr/local/openresty/nginx/lua/epoch_time_update.lua
[166573028025.877167] [/index.html] [1]
[166573028025.877167] [/index.html] [1] twst_var_name user.EOYVxTvk_twst
[166573028025.877167] [/index.html] [1] req_rate_var user.EOYVxTvk
[166573028025.877167] [/index.html] [1] throttle_window_start<PHONE_NUMBER>
[166573028025.877167] [/index.html] [1] throttle_window_end<PHONE_NUMBER>
[166573028025.877167] [/index.html] [1] cant find req_rate_var  user.EOYVxTvk
[166573028025.877167] [/index.html] [1] current_req_rate 0
[166573028025.877167] [/index.html] [1] setting current_req_rate to 1
[166573028025.877167] [/index.html] [9] Returning from lua script:
[166573028025.877167] [/index.html] [4] (Rule: 100004) Executing operator "Gt" with param "30" against USER:EOYVxTvk.
[166573028025.877167] [/index.html] [9] Target value: "1" (Variable: USER:::::EOYVxTvk)
[166573028025.877167] [/index.html] [4] Rule returned 0.
[166573028025.877167] [/index.html] [9] Matched vars cleaned.
[166573028025.877167] [/index.html] [4] (Rule: 100005) Executing operator "Eq" with param "0" against USER:DCrgmTrP_twst.
[166573028025.877167] [/index.html] [9] Target value: "0" (Variable: USER:DCrgmTrP_twst)
[166573028025.877167] [/index.html] [9] Matched vars updated.
[166573028025.877167] [/index.html] [4] Running [independent] (non-disruptive) action: setvar
[166573028025.877167] [/index.html] [8] Saving variable: USER:DCrgmTrP_twst with value:<PHONE_NUMBER>
[166573028025.877167] [/index.html] [4] Rule returned 1.
[166573028025.877167] [/index.html] [4] Running (disruptive)     action: pass.
[166573028025.877167] [/index.html] [8] Running action pass
[166573028025.877167] [/index.html] [4] (Rule: 100006) Executing operator "Rx" with param "\Qchrome browser\E" against REQUEST_HEADERS:User-Agent.
[166573028025.877167] [/index.html] [9] Target value: "firefox" (Variable: REQUEST_HEADERS:User-Agent)
[166573028025.877167] [/index.html] [4] Rule returned 0.
[166573028025.877167] [/index.html] [9] Matched vars cleaned.
[166573028025.877167] [/index.html] [4] (Rule: 100008) Executing operator "Gt" with param "45" against USER:DCrgmTrP.
[166573028025.877167] [/index.html] [4] Rule returned 0.
[166573028025.877167] [/index.html] [9] Matched vars cleaned.
[166573028025.877167] [/index.html] [4] Starting phase REQUEST_BODY. (SecRules 2)
[166573028025.877167] [/index.html] [4] Request body processing is disabled
[166573028025.877167] [/index.html] [4] Starting phase RESPONSE_HEADERS. (SecRules 3)
[166573028025.877167] [/index.html] [9] This phase consists of 0 rule(s).
[166573028025.877167] [/index.html] [9] Appending response body: 1097 bytes. Limit set to:<PHONE_NUMBER>00
[166573028025.877167] [/index.html] [4] Starting phase RESPONSE_BODY. (SecRules 4)
[166573028025.877167] [/index.html] [4] Response body is disabled, returning... 1
[166573028025.877167] [/index.html] [4] Starting phase LOGGING. (SecRules 5)
[166573028025.877167] [/index.html] [9] This phase consists of 0 rule(s).
[166573028025.877167] [/index.html] [8] Checking if this request is suitable to be saved as an audit log.
[166573028025.877167] [/index.html] [8] Checking if this request is relevant to be part of the audit logs.
[166573028025.877167] [/index.html] [5] Saving this request as part of the audit logs.
[166573028025.877167] [/index.html] [8] Request was relevant to be saved. Parts: 6006

audit.log
---GGi7oqGW---A--
[14/Oct/2022:06:51:20 +0000]<PHONE_NUMBER>25.877167 <IP_ADDRESS> 49458 <IP_ADDRESS> 80
---GGi7oqGW---B--
GET /index.html HTTP/1.1
User-Agent: firefox
Postman-Token: e85715b5-efef-494e-9ac9-b88e05bc7501
Accept: */*
Host: <IP_ADDRESS>
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

---GGi7oqGW---D--

---GGi7oqGW---E--
<!DOCTYPE html>\x0a\x0a\x0a<meta content="text/html;charset=utf-8" http-equiv="Content-Type">\x0a<meta content="utf-8" http-equiv="encoding">\x0a<title>Welcome to OpenResty!</title>\x0a\x0a\x0a\x0a
Welcome to OpenResty!
\x0a
If you see this page, the OpenResty web platform is successfully installed and\x0aworking. Further configuration is required.
\x0a\x0a
For online documentation and support please refer to our\x0aopenresty.org site
\x0aCommercial support is available at\x0aopenresty.com.
\x0a
We have articles on troubleshooting issues like high CPU usage and\x0alarge memory usage on our official blog site.\x0a
Thank you for flying OpenResty.
\x0a\x0a\x0a

---GGi7oqGW---F--
HTTP/1.1 200
Server: openresty/<IP_ADDRESS>
Date: Fri, 14 Oct 2022 06:51:20 GMT
Content-Length: 1097
Content-Type: text/html
Last-Modified: Thu, 06 Oct 2022 09:29:18 GMT
Connection: keep-alive
ETag: "633e9fee-449"

---GGi7oqGW---H--
ModSecurity: Warning. Matched "Operator `Eq' with parameter `0' against variable `USER:EOYVxTvk_twst' (Value: `0' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "6"] [id "100001"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/index.html"] [unique_id "166573028025.877167"] [ref ""]
ModSecurity: Warning. Matched "Operator `Rx' with parameter `\Qfirefox\E' against variable `REQUEST_HEADERS:User-Agent' (Value: `firefox' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "8"] [id "100002"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/index.html"] [unique_id "166573028025.877167"] [ref "o0,7v37,7"]
ModSecurity: Warning. Matched "Operator `Eq' with parameter `0' against variable `USER:DCrgmTrP_twst' (Value: `0' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "13"] [id "100005"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/index.html"] [unique_id "166573028025.877167"] [ref ""]

---GGi7oqGW---I--

---GGi7oqGW---J--

---GGi7oqGW---Z--

whats so special about "/"?
I also change the nginx error log to debug as you asked for.
Here is what I got for URI /index.html
2022/10/14 06:56:09 [info] 92059#0: *1 ModSecurity: Warning. Matched "Operator `Eq' with parameter `0' against variable `USER:EOYVxTvk_twst' (Value: `0' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "6"] [id "100001"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/index.html"] [unique_id "166573056949.050735"] [ref ""], client: <IP_ADDRESS>, server: localhost, request: "GET /index.html HTTP/1.1", host: "<IP_ADDRESS>"
2022/10/14 06:56:09 [info] 92059#0: *1 ModSecurity: Warning. Matched "Operator `Rx' with parameter `\Qfirefox\E' against variable `REQUEST_HEADERS:User-Agent' (Value: `firefox' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "8"] [id "100002"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/index.html"] [unique_id "166573056949.050735"] [ref "o0,7v37,7"], client: <IP_ADDRESS>, server: localhost, request: "GET /index.html HTTP/1.1", host: "<IP_ADDRESS>"
2022/10/14 06:56:09 [info] 92059#0: *1 ModSecurity: Warning. Matched "Operator `Eq' with parameter `0' against variable `USER:DCrgmTrP_twst' (Value: `0' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "13"] [id "100005"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/index.html"] [unique_id "166573056949.050735"] [ref ""], client: <IP_ADDRESS>, server: localhost, request: "GET /index.html HTTP/1.1", host: "<IP_ADDRESS>"

Here is what I got for URI / ;
2022/10/14 06:56:30 [info] 92059#0: *1 ModSecurity: Warning. Matched "Operator `Rx' with parameter `\Qfirefox\E' against variable `REQUEST_HEADERS:User-Agent' (Value: `firefox' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "8"] [id "100002"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/"] [unique_id "166573059065.860011"] [ref "o0,7v27,7"], client: <IP_ADDRESS>, server: localhost, request: "GET / HTTP/1.1", host: "<IP_ADDRESS>"
2022/10/14 06:56:30 [info] 92059#0: *1 ModSecurity: Warning. Matched "Operator `Rx' with parameter `\Qfirefox\E' against variable `REQUEST_HEADERS:User-Agent' (Value: `firefox' ) [file "/usr/local/openresty/nginx/modsec/main.conf"] [line "8"] [id "100002"] [rev ""] [msg ""] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "<IP_ADDRESS>"] [uri "/"] [unique_id "166573059065.659690"] [ref "o0,7v27,7"], client: <IP_ADDRESS>, server: localhost, request: "GET / HTTP/1.1", host: "<IP_ADDRESS>"

Hi @nagri ,
Your discovery that the anomaly only occurs with the URI '/' is a good finding. That narrows down the issue considerably.
It looks like I am able to reproduce that behaviour, so it's not just you.
My speculation is that this use case is at least loosely similar to the error-redirect issue discussed earlier in that:

an initial URI ('/') is being received by nginx, which is transformed (at least internally) by the nginx configuration into another URI .

It's possible that this is long-time expected behaviour in nginx or it could also be a bug in nginx.
If this is causing a nuisance for you in a production environment, one option that you could consider: if '/' is merely serving safe static content, you could turn off modsecurity in that location block (or only turn it on in other location blocks, rather than in the surrounding server block). Other possibilities include include only turning off (in the '/' location block) those rules that cause misleading results.

If this is causing a nuisance for you in a production environment, one option that you could consider: if '/' is merely serving safe static content, you could turn off modsecurity in that location block (or only turn it on in other location blocks, rather than in the surrounding server block). Other possibilities include include only turning off (in the '/' location block) those rules that cause misleading results.

30% of the traffic comes via '/' and all the rules are needed there as well. I am afraid cant use the workaround you suggested.
What would be the next plan of action? Would you guys try to fix this from your end or would we have to live with this?

When I gave that suggestion as a possible mitigation, what I meant was that you should assess what your needs are with respect to your rules.
For example, let's assume you are using blocking mode, and malicious content (such as SQLi) triggers a rule that is intended to result in deny. In that case, I would expect you would not see the request being received by ModSecurity twice. I.e. for these types of rules you probably don't need to do anything special with respect to your URI="/" issue.
For some other rules (e.g. transaction counts used for any anti-DoS purposes), knowing when there is a false doubling of the transaction count should be relatively simple to handle.
It's, of course, up to you what to do. Those are just some things to consider.
In terms of an actual fix, the issue would need more investigation to come to any firm conclusion.

@martinhsv I dont know if this would be the right place to ask this question, but here it goes.
If I create a vaiable say
SecAction "phase:1,id:100001,nolog,pass,setvar:user.ugmJRkZkjvEz=%{TIME_EPOCH}"
This creates a variable user.ugmJRkZkjvEz
would this user.ugmJRkZkjvEz variable be unique to all the worker processes of nginx?
What I am observing is each worker process of nginx has a different copy of user.ugmJRkZkjvEz, or so it seems.
Is there a collection that can be used where values can be consistent across all the nginix workers?


Continuous Unavailable Favoriting from withing VSCode

Describe the bug
A clear and concise description of what the bug is.
Whenever I try to click the hear icon, I recieve "Our service is temporarily unavailable. Please try again later.
**ISSUE TYPE**
- Bug Report

**Steps to reproduce**
<!--- Describe exactly how to reproduce the problem -->

On launch of VSCode for windows, and navigating to the Headphones icon, upon clicking the "reconnect" button, and reauthorizing spotify, the extension works as intended. The only missing part is the "favoriting" or heart button from within VSCode. Clicking on this button, leads to a service unavailable message.

**Expected behavior**
A clear and concise description of what you expected to happen.

Favoriting of a song.

ACTUAL RESULTS

The aforementioned error message.

**Desktop (please complete the following information):**
 - OS: W10 Ring 0, with connection to WSL2 Ubuntu Machine
 - Plugin version: 2.0.1

Hi @AnishGRao, we just pushed an update to make Music Time better and more secure, but will require you to reconnect your Spotify account. Can you try restarting VS Code and reconnecting?

Yes, it told me to reconnect my spotify account, and I did so. It still does this though. Does the extension just check for favoriting when making the "AI playlist"? Would it be able to tell from me just favoriting it in the actual spotify app?

Hey @AnishGRao - sorry for the late reply. The AI playlist is based on your listening history while coding using our plugin, and before you have enough data, your liked songs.
I think you will see this message if there is no running track. I will make a fix.


feat(app): feat add copy labware api name feedback

Overview
This will close RAUT-65 and RAUT-72

Changelog

add prop(width) to tooltip to align with the design
add a tooltip to copy the api-name button
modify copy icon position
add Pseudo-classes to the copy icon
remove css from react.fragment

Review requests

[ ] when clicking the copy icon, copy the API name and show the tooltip
[ ] the tooltip will disappear in 2 sec
[ ] when clicking a labware card, the dev tools console doesn't show a warning that mentions to React.Fragment

Risk assessment
low

[ ] add test cases for this

@vabruzzo
Thank you for pointing out the tests. I noticed that LabwareDetails is missing all tests. (I listed above).
The changes are over 200 lines already so I will open another PR for the rest of the tests. (RAUT-86)


Update MarkupEditor.js

No need for using useCallback here, since it's memoized by default
https://kentcdodds.com/blog/usememo-and-usecallback

The problem here is that the two function are passed as params to Editor component.
Doing in this way on every render of the MarkupEditor also Editor will be rendered again. Is it?

At other places in this code base, you can see that I don't wrap handlers in a useCallback by default.
These specific cases that you've mentioned, are required. Without them, this component will get stuck in a render loop.


DB migration fails on users.id foreign key

In Laravel 5.8, When running the migration files that come with the package it throws an error when running the 2018_06_14_000000_create_acquaintances_interactions_table migration:
Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `interactions` add constraint `interactions_user_id_foreign` foreign key (`user_id`) references `users` (`id`) on delete cascade on update cascade)

This is because the users.id field is no longer a unsignedInteger, it has been changed to an unsignedBigInteger.
Changing the migration file line 19, from this:
$table->unsignedInteger('user_id')->index();

To this:
$table->unsignedBigInteger('user_id')->index();

Fixes the problem.
I'm not sure if you'd want to add this change to your package, as I think it would then break on older versions of Laravel, that still use the unsignedInteger ID field type.

Thanks a lot for your feedback and the explanation, I shall add this change and issue a new version/tag for this library.
You are much appreciated!

I've created a pull request for this (#7) as I was already in the code to look at #5.


Status of 404 when attempting to create a connection

I am attempting to migrate a small test folder from a 5.6.1 instance to a 6.2 instance.  The grabbit bundle (7.0.2) is active on the 6.2 instance.   The grabbit bundle (3.0.5) is active on the 5.6.1. instance.
The contents of my configuration file:
{
"serverUsername" : "admin",
"serverPassword" : "xxxxxxx",
"serverHost" : "cq5authdev",
"serverPort" : "4502",
"batchsize" : 150,
"deltaContent" : true,
"pathConfigurations" :  [
{
"path" : "/content/newsletter",
"batchSize" : 50
}
]
}
I initiated grabbit.sh on the 5.6.1 machine and entered the client host:port, username and password.  I then gave the absolute path to the configuration file.  Logging on both sides has been set to TRACE for the client and server classes through configMgr.  No batch log is available on the server side.
Here is the relative output in the batch log on the client side.
10.11.2016 15:55:47.510 DEBUG [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.steps.validation.ValidJobDecider com.twcable.grabbit.client.batch.stes.validation.ValidJobDecider Job determined to be valid for job path /content/newsletter
10.11.2016 15:55:47.540 INFO [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.steps.workflows.WorkflowOffTasklet WorkflowConfig :
10.11.2016 15:55:47.540 INFO [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.steps.workflows.WorkflowOffTasklet Nothing to process...
10.11.2016 15:55:47.557 INFO [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.steps.workspace.DeleteBeforeWriteDecider Will retain nodes under job pth for<PHONE_NUMBER>083677799...
10.11.2016 15:55:48.426 WARN [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.steps.http.CreateHttpConnectionTasklet Received a status of 404 when atempting to create a connection to cq5authdev. Bailing out. See debug log for more details.
10.11.2016 15:55:48.426 DEBUG [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.steps.http.CreateHttpConnectionTasklet Request to start a connection ith cq5authdev resulted in: org.apache.http.conn.BasicManagedEntity@1ae12d8e.
10.11.2016 15:55:48.464 INFO [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.ClientBatchJobExecutionListener Cleanup : JobExecution: id=332773759003677799, version=1, startTime=Thu Nov 10 15:55:47 CST 2016, endTime=Thu Nov 10 15:55:48 CST 2016, lastUpdated=Thu Nov 10 15:55:47 CST 2016, status=FAILED, exitStatus=extCode=FAILED;exitDescription=, job=[JobInstance: id=8, version=0, Job=[clientJob]], jobParameters=[{serverPassword=xxxxxx, deleteBeforeWrite=false, scheme=http, por=4502, transactionID=3268690561561351109, clientUsername=admin, excludePaths=, workflowConfigIds=, batchSize=50, timestamp=1478814947465, serverUsername=admin, host=cq5uthdev, pathDeltaContent=true, path=/content/newsletter}] . Job Complete. Releasing session, and input stream
10.11.2016 15:55:48.464 INFO [clientJobLauncherTaskExecutor-5] com.twcable.grabbit.client.batch.ClientBatchJobExecutionListener Grab from cq5authdev for Current Path content/newsletter took : 979 milliseconds
Any suggestions on what I have done wrong?  There is no network related reason that the two machines would not be able to establish a connection.

I forgot to mention that when I query the status of the provided jobId the response is python: module json.tool not found.

Hello @abogit, Grabbit 3 and Grabbit 7 are not compatible, which is why you are encountering this error. Syncing instances across major Grabbit versions is not supported. Although not officially supported/vetted, you may be able to install 3.0.5 on both of your instances, as is being done in https://github.com/TWCable/grabbit/issues/156

Sorry, I missed the 2nd comment. Make sure you have at least Python 2.6 installed.

Hey @abogit I am going to close this one out. Please reopen if you have further questions down the road.

Sounds good  - thanks
From: Jeff Bornemann<EMAIL_ADDRESS>Sent: Wednesday, January 18, 2017 3:24 AM
To: TWCable/grabbit<EMAIL_ADDRESS>Cc: O'Toole, Joseph<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [TWCable/grabbit] Status of 404 when attempting to create a connection (#160)
Hey @abogithttps://github.com/abogit I am going to close this one out. Please reopen if you have further questions down the road.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/TWCable/grabbit/issues/160#issuecomment-273424733, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ATe2qKQ3Hlr_qQii4jQo2FpftEIdjqMmks5rTdpGgaJpZM4KvNxm.


feat(extension): add Token Information section in token details

Checklist

[x] JIRA - LW-4865
[x] Screenshots added.

Proposed solution

Add new "Token Information" section in the token details drawer to display and copy the token's fingerprint and policy ID.
Add separators between the different sections of the token details
Remove the "See all your transactions" button from the "Recent Transactions" section in the popup view and replace it with a "View All" link next to the section title, aligning with the browser view.
Limit the amount of recent transactions shown for a token in the browser view to 3 from 10.
Add new prop to InlineInfoList items to be able to display a copy icon on hover

Screenshots

Allure report
allure-report-publisher generated test report!

smokeTests: ✅ test report for d5ac263c

passed
failed
skipped
flaky
total
result

Total
35
0
0
0
35
✅

Hi @lgobbi-atix ,
As discussed on Slack, this requirement has not been satisfied yet:
When clicking it, redirect the user to Cexplorer for both Fingerprint and PolicyID
Open a new tab in the same window to display Cexplorer

Added here https://github.com/input-output-hk/lace/pull/414/commits/e715ba658a5b813041a4b53d497f38a257c8d73f

Hi @lgobbi-atix ,
Thank you for the new update. However, when I clicked on both links, both Fingerprint and Policy ID pointed to the same Fingerprint URL, for example : https://preprod.cexplorer.io/asset/asset12756zyxkah5rmhzcxjvn0e7avzd3xwhskv422v
Actually, Policy ID has URL too, eg: https://preprod.cexplorer.io/policy/e16c2dc8ae937e8d3790c7fd7168d7b994621ba14ca11415f39fed72
Perhaps the link needs to point to the right URL for Policy ID?

The ticket is not really clear about it but it makes sense to me. Pushed a fix e986a8302abcd90e16b86965ba3c992535a38336


FreshRSS: Error handling should not allow any subsequent network requests to be issued

This looks the same as it is done for Feedbin.  I think this is good.


Solar Evaporation tower odd bug

Not a huge issue, but I started building one of the towers and it formed without being finished. It had a hole in the side and no solars on top - It's not a massive issue as it still doesn't work, but it's really strange and therefore decided to report it

And once the hole in the side is filled, it de-forms again.
As I said, it doesn't really effect anything, but it's weird and may cause issues in the future
Thanks :)

Alice

EDIT: Just remembered that the controller is supposed to go at the top - but the tower still should not act like this.

Solar Evaporation Plant doesn't necessarily need the controller to go on top, and it doesn't need solars either for the multiblock to form.  The hole thing is strange, though.

i've had something simelar, the tower forms when unfinished but when i finish the tower it deforms. i can place all blocks expept for 1.

if i place the remaning block it deforms, any tips?

I got it working, had to place it 1 block under the upper ring.

Seems some kind of bug with the controller and the evaporation blocks 1 above the controller to the right.
i moved the controller 1 level at a time and each time the location of the bugging block moved to, till the location it is now because there is no evaporation block to its upper right.
(Hope it clear to you, my englisch might not be the best.)

Fixed!


update crim and terradue icons + add terradue to readme

Description
Add Terradue to the contributors given the paper participation and the interactions to develop and employ MLM.
Related Issue
n/a
Type of Change

[x] :books: Examples, docs, tutorials or dependencies update;
[ ] :wrench: Bug fix (non-breaking change which fixes an issue);
[ ] :clinking_glasses: Improvement (non-breaking change which improves an existing feature);
[ ] :rocket: New feature (non-breaking change which adds functionality);
[ ] :boom: Breaking change (fix or feature that would cause existing functionality to change);
[ ] :closed_lock_with_key: Security fix.

Checklist

[ ] I've read the CONTRIBUTING.md guide;
[ ] I've updated the code style using make check;
[ ] I've written tests for all new methods and classes that I created;
[ ] I've written the docstring in Google format for all the methods and classes that I used.

@simonevaccari Please review :)

@fmigneault the Terradue icon saved here looks good


Not willing to update to the new version?

Hello, @superguigui.
Your portfolio seems to be great.
I cloned it, but it isn't working properly.
Not willing to update to the new version?

Hi, this repo is not related to my current website, it's an older version that I made years before.
The sources for my current website are not publicly available.


Ignoring my Content-Type header

I have to set a very specific Content-Type header for sending multipart/related messages and nodemailer seems to be ignoring that I have specified the Content-Type header and is using "text/plain; format=flowed" instead.
Can you give me some way to tell nodemailer not to append its own Content-Type header if I need to use my very specific one?

I thought using an Alternative would work but it does not.

Similarly, I expected the body content to be encoded as UTF-8 by default.  Instead, it is as you suggest "text/plain; format=flowed".  Google thinks that the messages I send to a text Gmail-based recipient are Italian.  Example body:
MIME-Version: 1.0
------sinikael-?=_1-14260152040620.13629642967134714
Content-Type: text/html; format=flowed
Content-Transfer-Encoding: 7bit
TitleHeader/h2>class="line">Name: ValueHostname: fqdn.com
------sinikael-?=_1-14260152040620.13629642967134714
Content-Type: application/zip
Content-Disposition: attachment; filename=20150310T142000-0500.zip
Content-Transfer-Encoding: base64
UEsDBBQACAgIAIByakYAAAAAAAAAAAAAAA ... snip ... gAAABsAAAAAAAAAAAAAAAAAAAAAAGZtYy1lbmJhc2Vt
b2JpbGUtZXJyb3JzLmxvZ1BLBQYAAAAAAQABAEkAAACrAAAAAAA=
------sinikael-?=_1-14260152040620.13629642967134714--

@KaptainKrayola could you specify your use case? Currently Nodemailer is a opinionated module which means that for text context it detects the used format and then sets appropriate encoding itself.
@jamesmayes I have no idea what you mean by the messages being in Italian, could you specify what you are doing and what is the outcome. Probably create another issue for it.

Wouldn't it still make sense to allow a user to override no matter how opinionated the module may be?  My use case is pretty specific and I can't say too much about it but suffice it to say, I need to be able to specify that header.  I have commented out your code to override it in my implementation but I do think giving someone a way to override the module's opinion would be a simple and user-friendly thing to do.

Could you still describe what you would like to do? Do you use some custom arguments for the content-type value or what? Format=flowed is nothing more than a transport encoding mechanism, it doesn't alter the value – once the message is delivered and decoded you should get the same value that was initially sent out.

Yeah, I need to override ""text/plain; format=flowed"" completely.  In my case I have to use "Content-Type": 'multipart/related; [ ... a bunch of other custom data ... ]
What's happening is that I pass in my own content header and while it is included in the header,  the "text/plain; format=flowed" is written first and then it's the one that's processed.
What i'd like to see if if the content-type header is include specifically it overrides the "text/plain; format=flowed" one completely.  Otherwise they compete for which one gets accepted.

@andris9 I recently migrated from 0.7 to the 1.3.2 (with all necessary transport changes) and all of a sudden Gmail presents me with a choice to translate the multi-part message from Italian!  Very strange.
Sure, I'll create another issue.

Multipart tree makes up the backbone of Nodemailer messages. Nodemailer is a high level mailer module which means that you can define the needed values like text and html body and attachments and not care about the actual rfc822 structure. Injecting arbitrary mime nodes to the structure does not seem something that is required from such a module. If you really need to mess around with the structure of the message I'd suggest you to use lower level buildmail module.


:sparkles: add yt embed api; seek to timestamps

What type of Pull Request is this?
Delete all options except for the one that applies

Bug fix
Feature
Code style update (formatting, renaming)
Refactoring (no functional changes, no API changes)
Build related changes
Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Other information

lgtm


Single-end read support for Kallisto

Ivan -- what kind of problems are you hitting with single-end reads? Could you describe what's happening so we can try to help.

Hi Ivan,
We have single-end support in kallisto but it is turned off at the moment. We've been avoiding clicking it on for kallisto because we don't have a great way of handling the fragment length parameter without requiring users input it. https://groups.google.com/forum/#!topic/kallisto-sleuth-users/h5LeAlWS33w has a little bit of discussion about it. It might be better to use Salmon instead which should give similar results.

I was just running this on an RNA expression library and wanted to see what kind of results I would get with Kallisto. Since I'm just playing around with different settings for the expression calling maybe it's best if I don't use Kallisto for this library what with varying fragment lengths and whatnot.

Sorry to reopen the threads.
How conceptually wrong is it to use mean and sd of reads instead of mean and sd of fragments?
Thanks for answering!
Stefano

Stefano;
From the discussion Rory links above, you do need to have some kind of general estimate of fragment (not read) length for single end. This could be from the library preparation or other information. If you don't have it, I believe using Salmon might be the better option. Hope this helps.


Redesign the Footer

The footer section of the website needs a redesign for improved functionality and design.
The following changes are necessary:

Clickable Links: Ensure the "Terms of Use" and "Privacy & Policy" links navigate to the appropriate pages.
Social Media Icons: Add icons for relevant social media platforms (e.g., Facebook, Twitter, Instagram, LinkedIn) with links directing users to the organization's respective social media pages.
Improved Formatting: Check the alignment and spacing of the text, links, and newly added icons to ensure a more polished and visually appealing design.
Dynamic Copyright Year: Ensure the copyright text updates automatically to reflect the current year.

@anuragverma108 Please assign this issue under hacktoberfest label.
Thank you

Thanks for creating the issue in WildGuard! The issue has been assigned to you.
Before you start working on your PR, please make sure to:

⭐ Star the repository if you haven't already.
Pull the latest changes to avoid any merge conflicts.
Attach before & after screenshots in your PR for clarity.
Include the issue number in your PR description for better tracking.

I'm excited to see your contribution as part of Hacktoberfest 2024! 🎉
Don't forget to follow me on GitHub for more updates.
Happy open-source contributing! 🚀


Add commands for CentOS installation

Changes related to https://github.com/docker/docker.github.io/issues/1850

Proposed changes

Unreleased project version (optional)

Related issues (optional)

@prashant171992 On step 6 in the Netlify preview (https://deploy-preview-2830--docker-docs.netlify.com/engine/installation/linux/centos/#install-using-the-repository) the bash markdown element to denote the code block type is showing.
I think you might be able to fix this simply by adding a return after the preceding step or sentence. For numbered steps you will have to indent the code block to align with the start of the preceding sentence.

As mentioned in #1850, this is not the approach we are going to go with, as adding the docker group is an optional post-installation step common to all Linux distributions. See https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user


haskellPackages.hoogleLocal: build database locally

Description of changes
This gets the hoogle database to being built locally, which speeds up remote builder situation for hoogle databases.

Things done

Built on platform(s)

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

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

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

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

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

[ ] Fits CONTRIBUTING.md.

Okay, I understand the preferLocalBuild.
But what’s the benefit from disabling substitutes? I mean if we have a hash match we have a hash match, right? Or is simply downloading the db slower than building it locally?

But what’s the benefit from disabling substitutes? I mean if we have a hash match we have a hash match, right? Or is simply downloading the db slower than building it locally?

yes

Also in this specific case, because there is no db generation caching, every combination of packages requires a new hoogle database to be generated, which means no substituter will have your exact configuration, which means asking the substituter is a waste of time usually.

Looks good. Thank you!

This gets the hoogle database to being built locally, which speeds up remote builder situation for hoogle databases.

Is this really true?  In my experience building a hoogle database can take an annoyingly long time.
It is generally the type of thing I like to do in CI and then just download.

It is generally the type of thing I like to do in CI and then just download.

A compromise would be to enable allowSubstitutes again, this way it won‘t get built remotely if not available, but you can just download it from CI, when you have configured that as substituter?

@maralorn Yeah, that sounds like a nice compromise.

importing builtin packages
importing other packages
building hoogle database
Starting generate
[14/256] appar... 0.02s
[26/256] base-compat-batteries... 0.03s
[55/256] containers... 0.31s
[88/256] ghc... 2.25s
[118/256] insert-ordered-containers... 0.01s
[140/256] mtl... 0.03s
[172/256] resourcet... 0.01s
[223/256] tls... 0.05s
[257/256] zlib... 0.03s

Found 486 warnings when processing items
Reordering items... 0.04s
Writing tags... 0.23s
Writing names... 0.08s
Writing types... 1.18s
Took 12.85s

> du -hs /nix/store/a46n0k3b32n8vzb49a0dakzmbgijxx9h-hoogle-with-packages
51M	/nix/store/a46n0k3b32n8vzb49a0dakzmbgijxx9h-hoogle-with-packages

The real solution here would be to build a hoogle database incrementally for each package and then just combine them, instead of doing all the work at the leaf. Current situation is highly unsatisfactory either way.

tbh on my internet connection downloading 51M is a lot faster than 12s …

@maralorn tell that to somebody sitting in a third world country but ok. :)


[tool_crash] YamlException

%23%23 Command
flutter gen-l10n

%23%23 Steps to Reproduce

...
...
...

%23%23 Logs
YamlException
%230      Loader._loadMapping (package:yaml/src/loader.dart:168:9)
%231      Loader._loadNode (package:yaml/src/loader.dart:89:16)
%232      Loader._loadDocument (package:yaml/src/loader.dart:65:20)
%233      Loader.load (package:yaml/src/loader.dart:57:20)
%234      loadYamlDocument (package:yaml/yaml.dart:69:25)
%235      loadYamlNode (package:yaml/yaml.dart:54:5)
%236      parseLocalizationsOptions (package:flutter_tools/src/localizations/localizations_utils.dart:387:29)
%237      GenerateLocalizationsCommand.runCommand (package:flutter_tools/src/commands/generate_localizations.dart:203:43)
%238      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1290:12)
<asynchronous suspension>
%239      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1140:27)
<asynchronous suspension>
%2310     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
%2311     CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
%2312     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:288:9)
<asynchronous suspension>
%2313     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
%2314     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:236:5)
<asynchronous suspension>
%2315     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
<asynchronous suspension>
%2316     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)

[✓] Flutter (Channel stable, 2.8.1, on macOS 11.4 20F71 darwin-x64, locale en)
    • Flutter version 2.8.1 at /Users/zer01one/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 77d935af4d (3 months ago), 2021-12-16 08:37:33 -0800
    • Engine revision 890a5fca2e
    • Dart version 2.15.1

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/zer01one/Library/Android/sdk
    • Platform android-31, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8 10-b944.6916264)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 12.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.0.0.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✗] Chrome - develop for the web (Cannot find Chrome executable at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8 10-b944.6916264)

[✓] VS Code (version 1.65.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.36.0

[✓] Connected device (1 available)
    • Redmi Note 8 (mobile) • 16210446 • android-arm64 • Android 11 (API 30)

! Doctor found issues in 2 categories.

%23%23 Flutter Application Metadata
Type: app
Version: 1.0.0 1
Material: true
Android X: false
Module: false
Plugin: false
Android package: null
iOS bundle identifier: null
Creation channel: stable
Creation framework version: 77d935af4db863f6abd0b9c31c7e6df2a13de57b
%23%23%23 Plugins
flutter_secure_storage-5.0.2
flutter_secure_storage_linux-1.1.0
flutter_secure_storage_macos-1.1.0
flutter_secure_storage_web-1.0.2
flutter_secure_storage_windows-1.1.2
path_provider_linux-2.1.5
path_provider_windows-2.0.5
shared_preferences-2.0.13
shared_preferences_android-2.0.10
shared_preferences_ios-2.0.9
shared_preferences_linux-2.0.4
shared_preferences_macos-2.0.2
shared_preferences_web-2.0.3
shared_preferences_windows-2.0.4
video_player-2.2.11
video_player_web-2.0.6

Hi @wepashka, please provide your pubspec.yaml as well as your l10n.yaml file.
Thank you


May I know the Android 4.34 supports codeless app event?

I now using the 4.34 for Android, but seems doesn't working.
I added this to AndroidManifest.xml, but couldn't found fb_codeless_debug in event debug.
<meta-data android:name="com.facebook.sdk.CodelessDebugLogEnabled" android:value="true" />

Can't Connect?
Check this list then close and reopen your app and try again.
Your app has Facebook SDK v.4.34 or higher.
You're using the latest version of your app.
You're shaking your phone firmly enough.
If your WiFi is unreliable, connect to high-speed Internet.

The iOS 4.35 is working perfectly for fb_codeless_debug.
Thank you very much.

Oh, I found the Android Integration said Note: Only works for Facebook SDK v4.35 and above.
https://developers.facebook.com/docs/app-events/codeless-app-events
Could you please update to v4.35 or above and make it supports codeless app event

@siuhleung7  an update 4.36 is being worked on currently and should be out in the near future.


source map not building in --batch

> cleancss -O1 --format breakWith=lf --source-map --source-map-inline-sources --with-rebase --batch --batch-suffix .min  "dist/css/*.css" "!dist/css/*.min.css"

ERROR: Source maps will not be built because you have not specified an output file.

but with --output --batch
--with-rebase not working
💯 that's the conflict

Thanks for reporting @danny007in - I'll have a closer look tomorrow.

Sorry it's not been addressed yet - I want to include the fix in 5.3 later this week so stay tuned.


MM-47090: Migrate "components/integrations/abstract_command.jsx" to typescript

Summary
MM-47091:Migrate "components/integrations/abstract_outgoing_webhook.jsx" to Typescript
Ticket Link
Fixes https://github.com/mattermost/mattermost-server/issues/21079
Fixes https://mattermost.atlassian.net/browse/MM-47090
Related Pull Requests
None
Screenshots
None
Release Note
NONE

Hello @BediNimret,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.

E2E tests not automatically triggered, because PR has no approval yet. Please ask a developer to review and then try again to attach the QA label.

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!

@BediNimret let us know if you need help in resolving ci error or on the review comments 😄

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!

Heads up that as part of our efforts to move to a monorepo, we're closing out a number of older pull requests like this one to help streamline the effort.
If you'd like to preserve these changes -- even if you're not the original author! -- feel free to resubmit the pull request against the monorepo once it's ready. You can subscribe to mattermost-server-issue-22420 for status updates on this effort.


FieldNamesChecker issues

If using
<check level="warning" class="org.scalastyle.scalariform.FieldNamesChecker" enabled="true">
 <parameters>
  <parameter name="regex">^[a-z][A-Za-z0-9]*$</parameter>
  <parameter name="objectFieldRegex">^[A-Z][A-Za-z0-9]*$</parameter>
 </parameters>
</check>

FieldNamesChecker does not like tuple pattern matching with types, like:
val (foo: Foo, bar: Bar) = baz

It complains with:
Field name does not match the regular expression '^[a-z][A-Za-z0-9]*$'

at the position where the "Foo" and "Bar" strings start.
Also, the Scala Style Guide suggests we use upper camel case for constants, which would account just for vals in objects, but not vars. And objectFieldRegex is being applied in both cases, so not offering enough granularity for checking just for constant names.

Which version is this using? There was some work done on destructuring in 0.9.0. If you're not using that version, can you try with it please?

Forgot to mention, I'm using
addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.9.0")

Ok. Thanks. I'm not around for the next 2 weeks, I'll look at it after that.


No JDK detection

I installed the latest JDK and launched Recaf. After decompiling a file it said "Recompile disabled. Please run Recaf with a JDK". How to solve it?

Ensure the JDK is in your path and you are truly running it with the JDK

I ensured that JDK is in my path and restarted the computer, but nothing changed. May I be doing something wrong? I launch Recaf through "java -jar "Recaf.jar""

Can you post the output of java -version?

Yes, of course. It says:
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

java is pointing to a java 8 jre from 2015, not a jdk
Fix your path enviorment variable

My path currently looks like this, added all what I could think of
https://ibb.co/vJHmFNg

Variable JAVA_HOME is correctly set aswell; Path defines, correlating with Java, are even duplicated, but nothing seems to change

Remove C:\ProgramData\Oracle\Java\javapath, and every other java entry that is not C:\Program Files\Java\jdk1.8.0_333\bin from your path
Oracle java has a tenency to add that path back on each install, you may want to look into better OpenJDK based vendors

I've done all what you've said... and it worked! Thank you very much for your help! Good luck!


BGA pinout

I'm little bit pissed of because I have been reversing this board since summer and now I've discovered this repo. :D But never mind, here's a doc I've been able to produce:
https://docs.google.com/spreadsheets/d/1L9uFN9jnsFd8CrgWXQyUStC2SsfoM5j2a6bWrxqi1Ko/edit#gid=0
Just this week I started to grind off and document PCB layers of this board. I have first layer off, slowly reaching the second one. Are there any more layers which need to be discovered or can I throw the board to trash?

Nope, there are only four layers, from top to bottom: Signal, GND, Signal, Power.
So it is only interesting to sand off the bottom copper plane and this has already been done.

Okay, thanks, at least I've found out soon enough :)


[feature request] Timelines spacing proportional to the dates

Hi there
Is there a way to be able to have kind of spacing between paragraphs wich is proportional to the sate spacing, ie, if I have:Jan, Feb, Dec that Jan & Feb are close to each other and Dec is further down.
Of course this should be optional and there would be the need to use date formats and a date format qualifier but just managing this via empty lines should be doable.
What do you think ??
Rui

Hi there

Hi there!
I never thought of it. For me, your idea is great for a horizontal timeline, giving you the time perspective regarding the distance between events

Hey
For sure I would prefer to have it in a very visual horizontal line but I haven't been able to find any plugin that does it or a js library that enables it ...
Your plugin is the next best thing hence my request.
Maybe some scrolling would be require but maybe limiting the bigger gaps to:

...

(Empty lines with "..." in between) It could maybe help reduce the scrolling.
What do you think ?

I'll keep this idea in mind after I release this new version and post the design here :)

+1
Proportional horizontal timeline would be killer! Not just for dates but also clock time etc.
This feature is really something that is missing in Obsidian (and the other timeline plugin is too complicated in my opinion).

Yes, Proportional horizontal timeline would be killer!

Hey @George-debug , does this mean the feature will be available in an upcoming release ?
If so, how does one use this ?
Thanks


add highlights / callouts

Is your feature request related to a problem? Please describe.
sometimes there are important statements we want to call out inline in our docs (ie. some aspect of our API is under heavy development or something is a recent addition to the API)
Describe the solution you'd like
a highlighted blockquote is always a good idea.  it doesn't seem like Docusaurus supports this natively like MkDocs does with admonitions but we should be able to replicate this functionality with some custom markdown parsing if a simpler solution isn't found
Additional context
see this MkDocs explainer for more context about the desired feature

thoughts? @AnaisUrlichs and @potatodepaulo

based on my reading of Docusaurus, we should be able to create custom React component that parses some special markdown (MkDocs looks for !!! warning or !!! note on a line by itself, for example) and adds a new class admonition-warning, for example, to a regular blockquote rendered from markdown.
so, some custom work would be involved if we keep Docusaurus

since docusaurus markdown allows HTML, this was accomplished with some plain old CSS on blockquote elements with CSS classes.


Added Civo Cloud Deployment option.

What kind of change does this PR introduce?
This PR adds a new deployment guide for Civo Compute Cloud.
Why was this change needed?
This change was needed as it fixes #632
Other information
The new article has been published on Dev.to and is live for all audience.

@dartpain Please review and merge. Thanks.

Thank you! @holopin-bot @Rutam21


Tool tip does not work when using items

Instead of combineitem, and item-that's-being-combined. It says "combine_id"/"id"
say I use a icecream cone on bob. instead of it saying "use icecream bob" It says use.combine_id
The issue is in game.gd
lines 31, 38 and 49.

The issue is that a translation file is provided (translations/general.csv), but it's not imported into the project by default.
From the top left menu in Godot, select Import -> Translation, enter the path to translations/general.csv in the "Source CSV" field, select a "Target Path" and press "Import".
You should now see the proper text strings in-game as provided by general.csv.
I agree that this isn't particularly intuitive, and it's probably a good candidate for the list of improvements in #22.

Following in #22


can split and ensure_started use in_place_stop_source instead of stop_source?

The non-structured nature of those senders gave me pause so I spec'ed them conservatively, but perhaps they can use an in-place stop sender after all. @lewissbaker ?

According to @lewissbaker, the answer is yes.


Avoid sending large messages

Summary

Related issue : #144

Temporary fix for some sites reaching message size limit in AMS. Confirmed with AppDB that the messages filtered like this are still ok.

LGTM, thanks. Not sure if it would be applicable, but maybe we could try to gzip (or else) the data after/before the base64? As it's pure text and having many repetitions it may save quite some weight.

nice idea!
I will check with AppDB about the feasibility of this.


Support io_uring

Here is draft PR to adopt netty-incubator-transport-native-io_uring to Armeria. I know, transport-native-io_uring is still incubator status but I want to check io_uring's performance thorugh Armeria/Netty first.

To test this, we're gonna have to find a build runner with the latest kernel installed. Meanwhile, we can test locally of course 😄

Do you think it's better deprecating useEpoll and introducing a new flag transportType=<nio|epoll|io_uring> instead?

sgtm, fixed

Could we merge TransportType.isSupported(EventLoop) into isSupported(EventLoopGroup)

like https://github.com/line/armeria/pull/3182/commits/259603ec3a46b316af5d3ad8af8b1cd146c31819 ?


Add existence check for dash source

Safari complains about removing a non-existent child.
REDMINE-17646

Coverage remained the same at 99.208% when pulling 136edb97384ba9702d0058ffa048616321f6229f on DanielKuhn:fix-filter-sources-in-safari into 37857d28307407a0254529866a93945ddc84da4e on codevise:master.


Update blogs.json

I had to close the previous pull request I made because I accidentally put my website in the wrong section. Now it is in the correct section.

Thanks!


EventListener method's are not called

We created an EventListener implementation to collect metrics data for insights.
We collect the data and thru a helper class we push it fire-and-forget to a dedicated api on our back-end.
On dev environments (debug run) and unit tests (mocked apps) we are able to successfully collect insights data (all EventListener methods get called).
On staging and prod environments, we have cases where:
a- callStart(), dnsStart(), dnsEnd(), connectStart() were called, but secureConnectStart() nor secureConnectEnd() nor connectEnd() nor connectFailed() nor connectionAcquired() were called
b- callStart() to responseHeadersEnd() were called, but responseBodyStart() nor responseBodyEnd() nor connectionReleased() nor callEnd() were called
For all the cases:

okHttp v3.11.0 on dev, staging & prod
okHttp v3.12.x was also tested (dev and staging) with the same behavior
we call secured endpoints (https with valid TLS certificates)
the app has no weird functioning (no missed responses from backend nor missing payload from responses)
presence of HttpLoggingInterceptor in the interceptor chain (enabled or not) makes no difference (at least not worse)

Here you can take a look at the two classes that handle the collect and push the metrics:
https://gist.github.com/rkuzner/1b2e2224c4586fc7d0eb390f5f59632f

Can you make this into an executable test case? I suspect it’s more likely to be an issue with your environments (prod vs. staging vs. test) than with OkHttp.

Hi!
We're working on making this into an reproducible test case, keeping the minimum needed for it to work and also checking if there is no other component that might interfere.
In the meantime, there is some additional info/clarifications:

what I named as staging are experimental versions that we run internally with live accounts
on a few debug runs (on emulators) had also missing calls to Listener methods, sadly i'm not able to reproduce the case. I suspect this has something to do with cleaning the build and/or rebuilding the project.
i need to confirm if our implementation of connectionAcquired() has some null reference issues with connection.socket()

I'll keep you updated!


chore: use sdk v0.54.0 to enable forc-client deployments to beta5

Description
closes #5432
Bumps used forc-wallet version to 0.4.1 and used sdk versions to 0.54.0 so that we can actually start deploying to beta-5. As we need to be using forc-client 0.22 which requires us to go to 0.54.0 of sdk. To do so we need the wallet to use it as well.

blocked until #5435


fix 'seeInvisiblePlayers' friendly flag

https://wiki.vg/Protocol#Teams
"Bit mask. 0x01: Allow friendly fire, 0x02: can see invisible players on same team."

😍


”CĂLAN” is listed in the drop-down menu

Description:
"CĂLAN" is listed in the drop-down menu alongside its corresponding county and commune, according to the law.
Precondition:
The website is up an running.

Step 1
Type "CĂLAN" in the search bar.

Expected results
The location is listed in the drop-down menu as "Oraș CĂLAN, HUNEDOARA".


should render has a lazy update

Vue version
3.5.8
Link to minimal reproduction
no link
Steps to reproduce
The template data analysis update is too frequent. Can you add a lazy rendering to reduce the frequency of updates

What is expected?
From the position of the scroll bar, you can see that this function has been executed many times, which is the function inside the template, indicating that the template has been rendered many times. The rendering is too frequent. The granularity is too large. Every update updates the entire component
What is actually happening?
Excessive loss performance
System Info
No response
Any additional comments?
No response

Rendering updates are already batched using a microtask, so making multiple changes to the data should only trigger a single re-render. Without a reproduction it isn't really possible to tell what you're doing or what kind of lazy rendering you would need to fix it.

please follow the issues requirement provide a minimal reproduction.


ninja: error: unknown target 'install'

When I tried using ninja to build protobuf as the external dependencies on Windows
the  cmake build . --target installl --config XXX always throw the exception of
ninja: error: unknown target 'install'
But it worked when I changed the cmake command to
cmake build . --config ReleaseWithDebInfo and cmake --install .
And if the generator is Visual Studio, cmake build . --target installl works too.
Does the ninja not work with cmake build . --target install?

Ninja can only work with what it's been given by the generator.
-> CMake issue

Hi. I'm facing a similar issue while trying to build setuptools-rust.
2023-02-13 20:50:46 gobuilds.Compile : 20:50:46.188 ninja      INFO         ninja: error: unknown target 'install'
Could you provide some links/docs where I can understand what the "install" command does and could it be replaced with something else?


fix async file logger and more complex filters

[ ] I added an entry to CHANGELOG.md if knowledge of this change could be valuable to users.

Here is a brief summary of what I did:

The file logging layer dropped the drop guard on creation. This causes the async file writer to drop also and results in empty log files.

Additionaly, the log spec now uses EnvFilter which allows to use more complex filter e.g. per crate.

 Logger nutzt einen async Writer und EnvFilter

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 27 (0.0%)  changed or added relevant lines in 1 file are covered.
6 unchanged lines in 4 files lost coverage.
Overall coverage decreased (-0.005%) to 89.594%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

services/src/bin/main.rs
0
27
0.0%

Files with Coverage Reduction
New Missed Lines
%

services/src/pro/contexts/mod.rs
1
63.57%

services/src/pro/contexts/postgres.rs
1
97.33%

services/src/bin/main.rs
2
0%

services/src/pro/users/postgres_userdb.rs
2
98.83%

Totals

Change from base Build<PHONE_NUMBER>:
-0.005%

Covered Lines:
103891

Relevant Lines:
115957

💛  - Coveralls


SDK for 2021-11-01 version for Event Hubs with tests for SchemaRegistry

All SDK Contribution checklist:
Swagger spec link : https://github.com/Azure/azure-rest-api-specs/pull/16363
This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] Please open PR in Draft mode if it is:

Work in progress or not intended to be merged.
Encountering multiple pipeline failures and working on fixes.

[X] If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
[X] I have read the contribution guidelines.
[X] The pull request does not introduce breaking changes.

General Guidelines and Best Practices

[X] Title of the pull request is clear and informative.
[X] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[X] Pull request includes test coverage for the included changes.

SDK Generation Guidelines

[X] The generate.cmd file for the SDK has been updated with the version of AutoRest, as well as the commitid of your swagger spec or link to the swagger spec, used to generate the code. (Track 2 only)
[ ] The *.csproj and AssemblyInfo.cs files have been updated with the new version of the SDK. Please double check nuget.org current release version.

Additional management plane SDK specific contribution checklist:
Note: Only applies to Microsoft.Azure.Management.[RP] or Azure.ResourceManager.[RP]

[X] Include updated management metadata.
[ ] Update AzureRP.props to add/remove version info to maintain up to date API versions.

Management plane SDK Troubleshooting

If this is very first SDK for a services and you are adding new service folders directly under /SDK, please add new service label and/or contact assigned reviewer.

If the check fails at the Verify Code Generation step, please ensure:

Do not modify any code in generated folders.
Do not selectively include/remove generated files in the PR.
Do use generate.ps1/cmd to generate this PR instead of calling autorest directly.
Please pay attention to the @microsoft.csharp version output after running generate.ps1. If it is lower than current released version (2.3.82), please run it again as it should pull down the latest version.

Note: We have recently updated the PSH module called by generate.ps1 to emit additional data. This would help reduce/eliminate the Code Verification check error. Please run following command:
  `dotnet msbuild eng/mgmt.proj /t:Util /p:UtilityName=InstallPsModules`

Old outstanding PR cleanup
Please note:
If PRs (including draft) has been out for more than 60 days and there are no responses from our query or followups, they will be closed to maintain a concise list for our reviewers.

Hi @damodaravadhani, There are some breaking changes in this PR. If they are expected, you need to bump the major version and then I will merge it.


Issue while with trait objects and dptree.

Hi, I'm trying to pass a trait object as a dependency of the Dispatcher::builder and I can't figure out what I'm doing wrong with it because I get a runtime panick asking for the same type that I seem to be providing:
alloc::sync::Arc<alloc::boxed::Box<dyn finance_api::Market + core::marker::Send + core::marker::Sync>> was requested, but not provided. Available types:
    shortbot::State
    shortbot::CommandEng
    teloxide_core::types::me::Me
    teloxide_core::types::message::Message
    teloxide_core::types::update::Update
    teloxide::dispatching::dialogue::Dialogue<shortbot::State, teloxide::dispatching::dialogue::storage::in_mem_storage::InMemStorage<shortbot::State>>
    alloc::sync::Arc<alloc::boxed::Box<dyn finance_api::Market + core::marker::Send + core::marker::Sync>> <== THIS ONE!!
    alloc::sync::Arc<teloxide::dispatching::dialogue::storage::in_mem_storage::InMemStorage<shortbot::State>>
    teloxide_core::bot::Bot

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Seems strange. I think, for a fast workaround you should use just plain Arc, without inner Box
When I use trait objects in my bots, I wrap it into Arc, so just try to get rid of Box:
Arc<dyn finance_api::Market + Send + Sync>

Hm, my only idea so far is that you have multiple versions of finance_api in the tree. Try running cargo tree | grep finance_api or checking Cargo.lock file, to see if you are only using a single version of the crate.
Otherwise, could you provide an MRE (minimal reproducible example)?
Also as a note, you don't have to have Arc<Box<dyn ...>> you can have Arc<dyn ...> directly.

Seems strange. I think, for a fast workaround you should use just plain Arc, without inner Box
When I use trait objects in my bots, I wrap it into Arc, so just try to get rid of the inner Box:
Arc<dyn finance_api::Market + Send + Sync>

I made the change, but I get an alike error message:
thread 'tokio-runtime-worker' panicked at /home/felipe/.cargo/registry/src/index.crates.io-6f17d22bba15001f/dptree-0.3.0/src/di.rs:164:17:
alloc::sync::Arc<dyn finance_api::Market + core::marker::Send + core::marker::Sync> was requested, but not provided. Available types:
    alloc::sync::Arc<teloxide::dispatching::dialogue::storage::in_mem_storage::InMemStorage<shortbot::State>>
    teloxide_core::bot::Bot
    teloxide_core::types::message::Message
    teloxide_core::types::me::Me
    shortbot::CommandEng
    alloc::sync::Arc<dyn finance_api::Market + core::marker::Send + core::marker::Sync>
    teloxide_core::types::update::Update
    teloxide::dispatching::dialogue::Dialogue<shortbot::State, teloxide::dispatching::dialogue::storage::in_mem_storage::InMemStorage<shortbot::State>>
    shortbot::State

note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Hm, my only idea so far is that you have multiple versions of finance_api in the tree. Try running cargo tree | grep finance_api or checking Cargo.lock file, to see if you are only using a single version of the crate.
Otherwise, could you provide an MRE (minimal reproducible example)?
Also as a note, you don't have to have Arc<Box<dyn ...>> you can have Arc<dyn ...> directly.

I think that I run the same version:
├── finance_api v0.1.0 (/home/felipe/Workspace/Rust/finance_api)
│   ├── finance_api v0.1.0

The implementation of the Market trait is in another library, and I checked that I only use a single version. I guess there's something odd with that implementation because I wrote a simpler example of the same idea and it works. I'll push the changes in case you can take a look. Anyway, thanks for the help!

Hi, I tried to rewrite a little bit of the code and I still get the same issue. I'm going to get rid of the trait stuff, and directly include the implementation that I need from my other library into the telegram bot. I need to move forward, and I'll get back to this later to properly use my external lib. Thanks for the help, whenever I have any update and all the code is pushed, I'll update this issue.

@felipet can you provide a link to your code that would allow us to debug the issue?...

Sure @WaffleLapkin . Sorry for the delay, I wanted to tidy up the code so it would be easier to read. You can download the code for the bot from here: shortbot. In brief, the code it diverges from works. The main change I made respect to my previous code is that I copied the code from the lib finance_ibex and reimplemented locally the objects Ibex35Market and IbexCompany so I don't need to implement the traits Market and Company.  The branch trait_error undoes such, so you can reproduce the error.
Then, you'll need a dirty step, which is to clone locally one dep: finance_ibex, and apply the attached patch to modify the code and make it async-compatible. I'm reluctant to push it because I made those changes quickly to see if it would work or not. As it didn't, I postpone doing it properly until I have more time.
To replicate the issue, just export a token for a telegram API using this variable:
export SHORTBOT__APPLICATION__API_TOKEN=<your token>
Then run the app. If you run the bot's command /choosestock the issue should come up.
async_changes.zip

@felipet are you sure the code in the branch still produces the same error?..
The handler has stock_market: Arc<dyn Market + Sync + Send> while you add what looks like Arc<Box<dyn Market>> (load_ibex35_companies returns Box<dyn Market> and then you wrap it in an Arc).

Also re: reproduce steps ... that is a bit much. Generally it is expected that the big reporter creates a MRE/minimization so that it's easy for other people to reproduce. Cloning another dep and patching it with a zip is more effort than I'm ready to do....
Btw your repo also does not contain a Cargo.lock, so it's not very reproducible.

@WaffleLapkin yeah sorry for the code, it's not actually generating exactly the same error right now. About the way to reproduce the error and so, as I said, I'll push the code once it's ready. I asked initially just to know if there was any limitation that you'd know about the use of traits in this particular scenario. Since you asked for the code even when I said that I'll post it once it's ready, I tried to push something for you.
I was not expecting you to fix anything, I was just asking in case there was any limitation about using trait objects along dependencies of the dispatcher. Given that you didn't mention it exists, please give me some time to rework that code once I have more time for it. Using a trait object is not my priority right now, so I took a particular implementation of the trait to continue with the other features that have a higher level of priority.
About the Cargo.lock, I prefer not to include it when I only use dependences from Crates.io as you can fully specify versions and features.
Thanks once again.

@felipet no worries. your original error looked like a bug in teloxide (since it fossils that the type is not there and then mentions the same type), so I wanted to see if it really is a bug in teloxide.
And that wouldn't require you to change code, since you did get the error already, so you could literally take the code as-is and it would reproduce the error (and then maybe remove some things to minimize the example).
But either way, if you are not interested, then don't sweat :)

About the Cargo.lock, I prefer not to include it when I only use dependences from Crates.io as you can fully specify versions and features

That doesn't really work?...
In the sense that if a dependency is updated to a semver compatible version, cargo will use the new version, potentially changing things. Even if you use "=x.y.x" forcing cargo to use a specific version, your dependencies won't do the same, so the transitive dependencies will still be able to update. The only way to get anywhere near reproducible builds while using things from crates.io is to have a lock file.

Thanks @WaffleLapkin for the explanation regarding Cargo.lock. You're absolutely right, I've got biased by my previous job in which once a version was released, what you mentioned was more than prohibited. I was no longer considering it, but it's true that it can happen, so I'll push the lock always from now.
Regarding the old code, I was stuck with that issue for a few weeks, and when I got feed up with it, I simply wiped it and reimplemented the code without traits. The v0.1 doesn't support async code, and that's why those changes that provoked the issue are gone. The idea behind the trait is to allow more stock markets in the future, which is really very unlikely to happen. So I ended kicking out the trait and using straight a particular implementation. It's a nice to have thing, so as soon as I have time to prepare the code and properly describe the issue I'll do it.

Hi again @WaffleLapkin , I wrote a simple code example that reproduces the issue. Please, check the code out of here. The steps to reproduce the issue are listed in the README file.
I simplified the code example: I defined a struct which holds an u16 so Sync + Send are there for free. The struct implements a simple trait, and that's all. The handler expects a trait object that implements such trait + Send + Sync. That's it. Let me know if this code example fulfils your needs to easily reproduce the issue.

Hey. I've just tried your example out.

So, the problem is solved by:
    let data = Arc::new(SomeData::new()) as Arc<dyn DataTrait + Send + Sync>;

So, dynamic dispatching and types are tricky, because previously your data had type Arc

Thanks @syrtcevvi for the solution. I didn't consider the casting because the compiler accepted the code.


Disable GEP instrumentation by default

@kyakdan What do you think about giving this a try on OSS-Fuzz this way?

@fmeum I'll be in favor of disabling GEP instrumentation by default and giving it a try on OSS-Fuzz. Have you verified the effect with existing examples?


Implement an IPlugin for Job History Expiration

#10 Is a prerequisite.

Add an API endpoint for expiring Job History. Use global settings for the expiration parameters.
Create an IPlugin that calls the API endpoint.

Verified.


md-hint doesn't support css hidden attribute anymore

Bug:
Observed that in input.scss, for CSS class md-hint, the following css attribute had been added:

display: block

What is the expected behavior?
Current I am using md-hint to show validation error message. I use the hidden attribute to control whether the hint should display base on the control status. Sample code shown below:
<md-input class="mek-input mek-full-width" required placeholder="Location" formControlName="location" i18n-placeholder="Expense form|Location placeholder">
    <md-hint class="mek-error-msg" [hidden]="location.untouched || location.valid" i18n="Expense form|Location error message">
                  Location is required and between 2 to 60 characters
    </md-hint>
</md-input>

What is the current behavior?
Now the hidden behaviour no longer works as the display: block was added
What are the steps to reproduce?
The above description is sufficient.
What is the use-case or motivation for changing an existing behavior?

Is it the recommended way to use md-hint for validation error reporting?
Should I use *ngIf instead of [hidden] to control the display of md-hint?

Which versions of Angular, Material, OS, browsers are affected?
Angular: 2.1.2
Material2: 2.0.0-alpha.10
Is there anything else we should know?

We consider using the hidden property an anti-pattern because of the way that browsers implement it. The "hidden" state is only applying a style like
[hidden] {
  display: none;
}

This is less specific than any user-space rules and can be very easily overridden. We recommend using a css class to hide stuff.

I just had same behaviour with using [hidden] with md-hint. Adding the style [hidden] { display: none !important; } works  but I just changed [hidden]=(..) to *ngIf=!(..)so this way it is works without adding[hidden] { display: none !important; }`.