text:
segfault with apache on debian stretch, v1.6.0 works

I am using v1.6.0 on debian.  it works with google for openid-connect.
when i try to upgrade to v1.8.10.1 i get segmentation fault (11), all other things being the same.
i get a segmentation fault with v2.1.2 and v2.1.3 as well.

Which version of Debian are you on, which version of Apache are you running there and where do you get the new binaries/packages from?

I am running debian stretch (testing) with apache version 2.4.25.
I used apt packages from stable (1.6.0), testing (1.8.10.1), and unstable (2.1.2).
I also tried 2.1.3 deb package from the github release tab.
only 1.6.0 works.  all the rest generate segfault with no other change to setup.

It may be due to the packaging. Could you try the Stretch release from:
https://github.com/pingidentity/mod_auth_openidc/releases/download/v2.1.2/libapache2-mod-auth-openidc_2.1.2-1.stretch.1_amd64.deb

ah, I see you've tried 2.1.3 which also segfaults
then I think it is due to an interference with other modules/packages; can you paste the output of apachectl -M
on a clean Stretch distro, the following Docker command sequence works:
FROM debian:stretch
MAINTAINER hzandbelt@pingidentity.com

RUN apt-get clean && apt-get --fix-missing update
RUN apt-get update && apt-get install -y apt-utils curl

ENV CJOSE_VERSION 0.4.1
ENV CJOSE_PKG libcjose_${CJOSE_VERSION}-1~stretch+1_amd64.deb
RUN apt-get update && apt-get install -y libjansson4
RUN curl -s -L -o ~/${CJOSE_PKG} https://mod-auth-openidc.org/download/${CJOSE_PKG}
RUN dpkg -i ~/${CJOSE_PKG}
RUN apt-get update && apt-get install -y -f

RUN apt-get update && apt-get install -y libhiredis0.13 libcurl3
ENV MOD_AUTH_OPENIDC_VERSION 2.1.3
ENV MOD_AUTH_OPENIDC_PKG libapache2-mod-auth-openidc_${MOD_AUTH_OPENIDC_VERSION}-1~stretch+1_amd64.deb
RUN apt-get update && apt-get install -y apache2
RUN curl -s -L -o ~/${MOD_AUTH_OPENIDC_PKG} https://mod-auth-openidc.org/download/${MOD_AUTH_OPENIDC_PKG}
RUN dpkg -i ~/${MOD_AUTH_OPENIDC_PKG}
RUN apt-get update && apt-get install -y -f

ADD 000-default.conf /etc/apache2/sites-available/
RUN a2enmod auth_openidc
RUN service apache2 start

tried.  still get the segfault.

Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
auth_digest_module (shared)
auth_openidc_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
dav_module (shared)
dav_fs_module (shared)
dav_lock_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
filter_module (shared)
headers_module (shared)
http2_module (shared)
include_module (shared)
mime_module (shared)
mpm_event_module (shared)
negotiation_module (shared)
passenger_module (shared)
proxy_module (shared)
proxy_connect_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_wstunnel_module (shared)
rewrite_module (shared)
setenvif_module (shared)
socache_shmcb_module (shared)
ssl_module (shared)
status_module (shared)

The default Apache version on Stretch is 2.4.23; can you try with that?

default is now 2.4.25 (https://packages.debian.org/stretch/apache2)
libhiredis0.13 is installed
log attached.
t.txt

You're right about the Stretch Apache version; I just re-ran the Docker sequence and it completed equally successfully with 2.4.25 and mod_auth_openidc 2.1.3. Hence it must be something local to your system.

Ok, looking at the log I see the crash is not at startup (which I assumed) but during a login sequence. Then it makes sense to take a look at the config. Can you paste that?

on the debian system, the attached file is installed in /etc/apache2/sites-enabled/.  it includes a file with openid clientid and secret which is not attached.
a.txt

downgrading libcurl3 (debian) from v7.51.0 (testing) to v7.38.0 (stable) solved the problem

I am able to run your config just fine on a clean Stretch install with libcurl3:amd64 7.51.0-1

closing because the issue seems to be with libcurl3. thanks for the support.

Do you have any clue as to why the stock Stretch libcurl3 package would crash Apache on your system but doesn't do it on a fresh system? Is there more than one libcurl3 package on your system? Does any of the other Apache modules use libcurl3?

No clue but libcurl3 provides libcurl.so.4 (which I do not understand).  Also new version of libcurl 7.52 is out with a lot of bug fixes but not packaged yet in Debian. I will retry with the new version when it is packaged.

i tried with shared modules disabled but it still happens. i will update this ticket if i learn more about the issue,

ok, thanks!

I was running into this for a while and downgrading curl did not help the problem appears to be setting verbose loglevel.  httpd segfault when the module logs oidc_debug()
Here's a gdb bt
(gdb) bt
#0  0x00007f4d29917cf5 in do_errorlog_default ()
#1  0x00007f4d29919190 in log_error_core ()
#2  0x00007f4d2991966a in ap_log_rerror_ ()
#3  0x00007f4d1fa125bf in oidc_util_http_call (r=0x7f4d2a54fc00, url=0x7f4d2a3c5f68 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", data=0x0, content_type=0x0, basic_auth=0x0, bearer_token=0x0, ssl_validate_server=1, response=0x7f4d1e5d4640, timeout=5, outgoing_proxy=0x0, pass_cookies=0x0,
    ssl_cert=0x0, ssl_key=0x0) at src/util.c:511
#4  0x00007f4d1fa13a20 in oidc_util_http_get (r=0x7f4d2a54fc00, url=0x7f4d2a3c5f68 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", params=0x0, basic_auth=0x0, bearer_token=0x0, ssl_validate_server=1, response=0x7f4d1e5d4640, timeout=5, outgoing_proxy=0x0, pass_cookies=0x0, ssl_cert=0x0,
    ssl_key=0x0) at src/util.c:680
#5  0x00007f4d1fa0b686 in oidc_metadata_provider_retrieve (r=0x7f4d2a54fc00, cfg=0x7f4d2a38c008, issuer=0x0, url=0x7f4d2a3c5f68 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", j_metadata=0x7f4d1e5d4638, response=0x7f4d1e5d4640) at src/metadata.c:657
#6  0x00007f4d1fa3b1d4 in oidc_provider_static_config (r=0x7f4d2a54fc00, c=0x7f4d2a38c008, provider=0x7f4d1e5d46a8) at src/mod_auth_openidc.c:267
#7  0x00007f4d1fa45ae0 in oidc_authenticate_user (r=0x7f4d2a54fc00, c=0x7f4d2a38c008, provider=0x0, original_url=0x7f4d2a554998 "http://eifweb-nf834u98h.cisco.com:32778/", login_hint=0x0, id_token_hint=0x0, prompt=0x0, auth_request_params=0x0) at src/mod_auth_openidc.c:2017
#8  0x00007f4d1fa4a296 in oidc_check_userid_openidc (r=0x7f4d2a54fc00, c=0x7f4d2a38c008) at src/mod_auth_openidc.c:2968
#9  0x00007f4d1fa4a5c6 in oidc_check_user_id (r=0x7f4d2a54fc00) at src/mod_auth_openidc.c:2991
#10 0x00007f4d29901e98 in ap_run_check_user_id ()
#11 0x00007f4d299034da in ap_process_request_internal ()
#12 0x00007f4d2993131b in ap_process_async_request ()
#13 0x00007f4d2992c80a in ap_process_http_async_connection ()
#14 0x00007f4d2992ca47 in ap_process_http_connection ()
#15 0x00007f4d2991fc38 in ap_run_process_connection ()
#16 0x00007f4d2993cbf8 in process_socket ()
#17 0x00007f4d2993f6e6 in worker_thread ()
#18 0x00007f4d2966e9b4 in ?? () from /lib/ld-musl-x86_64.so.1
#19 0x0000000000000000 in ?? ()
(gdb) q
A debugging session is active.

        Inferior 1 [process 3812] will be detached.

Quit anyway? (y or n) y
Detaching from program: /usr/local/apache2/bin/httpd, process 3812

I believe you're running in to a situation where a regular error triggers a bug; would you be able to try a source-code patch for me to get the right debug info out, or would that require a custom package/build?

Yes sure I can test a patch. Thank you!

awesome; see attachment that should prevent a crash from happening and provide regular error logging
util-log.patch.txt

Here's the log after I patched mod_auth_openidc and when ran with LogLevel trace8
[Wed Jan 11 20:02:14.648598 2017] [core:trace5] [pid 4686:tid 140597659695792] protocol.c(645): [client 10.24.98.194:54226] Request received from client: GET / HTTP/1.1
[Wed Jan 11 20:02:14.818861 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(420): [client 10.24.98.194:54226] Headers received from client:
[Wed Jan 11 20:02:14.818882 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   Host: some.url.com:32782
[Wed Jan 11 20:02:14.818886 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Firefox/52.0
[Wed Jan 11 20:02:14.818889 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[Wed Jan 11 20:02:14.818892 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   Accept-Language: en-US,en;q=0.5
[Wed Jan 11 20:02:14.818895 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   Accept-Encoding: gzip, deflate
[Wed Jan 11 20:02:14.818902 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   Cookie: CP_GUTC=XXXXXX; AMCV_B8D07FF4520E94C10A490D4C%40AdobeOrg=XXX ObSSOCookie=XXX wasOnLoginPage=XXX loginPageReferrer=XXX hbx_lid=XXX AMCVS_B8D07FF4520E94C10A490D4C%40AdobeOrg=XXX s_ptc=XXX s_cc=XXX s_ppvl=XXX s_ppv=XXX s_sq=XXX authorization=XXX cdcSsoTimer=XXX CISCO-Loc=XXX __CG=XXX __unam=XXX OPTOUTMULTI=XXX _ga=XXX mbox=XXX
[Wed Jan 11 20:02:14.818927 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   Connection: keep-alive
[Wed Jan 11 20:02:14.818930 2017] [http:trace4] [pid 4686:tid 140597659695792] http_request.c(424): [client 10.24.98.194:54226]   Upgrade-Insecure-Requests: 1
[Wed Jan 11 20:02:14.818989 2017] [rewrite:trace2] [pid 4686:tid 140597659695792] mod_rewrite.c(477): [client 10.24.98.194:54226] 10.24.98.194 - - [some.url.com/sid#7fdf7dfca3b8][rid#7fdf7e1dac00/initial] init rewrite engine with requested uri /
[Wed Jan 11 20:02:14.819000 2017] [rewrite:trace3] [pid 4686:tid 140597659695792] mod_rewrite.c(477): [client 10.24.98.194:54226] 10.24.98.194 - - [some.url.com/sid#7fdf7dfca3b8][rid#7fdf7e1dac00/initial] applying pattern '^/favicon\\.ico$' to uri '/'
[Wed Jan 11 20:02:14.819013 2017] [rewrite:trace1] [pid 4686:tid 140597659695792] mod_rewrite.c(477): [client 10.24.98.194:54226] 10.24.98.194 - - [some.url.com/sid#7fdf7dfca3b8][rid#7fdf7e1dac00/initial] pass through /
[Wed Jan 11 20:02:14.819118 2017] [authz_core:debug] [pid 4686:tid 140597659695792] mod_authz_core.c(809): [client 10.24.98.194:54226] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
[Wed Jan 11 20:02:14.819127 2017] [authz_core:debug] [pid 4686:tid 140597659695792] mod_authz_core.c(809): [client 10.24.98.194:54226] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
[Wed Jan 11 20:02:14.819134 2017] [auth_openidc:debug] [pid 4686:tid 140597659695792] src/mod_auth_openidc.c(2982): [client 10.24.98.194:54226] oidc_check_user_id: incoming request: "/?(null)", ap_is_initial_req(r)=1
[Wed Jan 11 20:02:14.819164 2017] [auth_openidc:debug] [pid 4686:tid 140597659695792] src/util.c(856): [client 10.24.98.194:54226] oidc_util_get_cookie: returning "mod_auth_openidc_session" = <null>
[Wed Jan 11 20:02:14.819219 2017] [auth_openidc:debug] [pid 4686:tid 140597659695792] src/util.c(959): [client 10.24.98.194:54226] oidc_util_request_matches_url: comparing "/"=="/redirect"
[Wed Jan 11 20:02:14.819238 2017] [auth_openidc:debug] [pid 4686:tid 140597659695792] src/util.c(447): [client 10.24.98.194:54226] oidc_get_current_url: current URL 'http://some.url.com:32782/'
[Wed Jan 11 20:02:14.819243 2017] [auth_openidc:debug] [pid 4686:tid 140597659695792] src/mod_auth_openidc.c(2008): [client 10.24.98.194:54226] oidc_authenticate_user: enter
[Wed Jan 11 20:02:14.819357 2017] [auth_openidc:debug] [pid 4686:tid 140597659695792] src/cache/shm.c(158): [client 10.24.98.194:54226] oidc_cache_shm_get: enter, section="provider", key="https%3A%2F%2Fcloudsso-test.cisco.com%2F.well-known%2Fopenid-configuration"
[Wed Jan 11 20:02:15.011299 2017] [core:notice] [pid 4635:tid 140597856480072] AH00052: child pid 4686 exit signal Segmentation fault (11)
[Wed Jan 11 20:02:15.011365 2017] [core:trace4] [pid 4635:tid 140597856480072] mpm_common.c(533): mpm child 4686 (gen 0/slot 0) exited

Can you do the same gdb backtrace?

(gdb) b ap_process_request
Breakpoint 1 at 0x7f443378c3cd
(gdb) s
Single stepping until exit from function __clone,
which has no line number information.

Thread 82 "httpd" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 761]
0x00007f4433772cf5 in do_errorlog_default ()
(gdb) bt
#0  0x00007f4433772cf5 in do_errorlog_default ()
#1  0x00007f4433774190 in log_error_core ()
#2  0x00007f443377466a in ap_log_rerror_ ()
#3  0x00007f442986d5bf in oidc_util_http_call (r=0x7f443449fc20, url=0x7f4434317f68 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", data=0x0, content_type=0x0, basic_auth=0x0, bearer_token=0x0, ssl_validate_server=1, response=0x7f4427b6e640, timeout=5, outgoing_proxy=0x0, pass_cookies=0x0,
    ssl_cert=0x0, ssl_key=0x0) at src/util.c:511
#4  0x00007f442986ea56 in oidc_util_http_get (r=0x7f443449fc20, url=0x7f4434317f68 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", params=0x0, basic_auth=0x0, bearer_token=0x0, ssl_validate_server=1, response=0x7f4427b6e640, timeout=5, outgoing_proxy=0x0, pass_cookies=0x0, ssl_cert=0x0,
    ssl_key=0x0) at src/util.c:683
#5  0x00007f4429866686 in oidc_metadata_provider_retrieve (r=0x7f443449fc20, cfg=0x7f44342dc008, issuer=0x0, url=0x7f4434317f68 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", j_metadata=0x7f4427b6e638, response=0x7f4427b6e640) at src/metadata.c:657
#6  0x00007f442989620a in oidc_provider_static_config (r=0x7f443449fc20, c=0x7f44342dc008, provider=0x7f4427b6e6a8) at src/mod_auth_openidc.c:267
#7  0x00007f44298a0b16 in oidc_authenticate_user (r=0x7f443449fc20, c=0x7f44342dc008, provider=0x0, original_url=0x7f44344a68c8 "http://some.url.com:32784/", login_hint=0x0, id_token_hint=0x0, prompt=0x0, auth_request_params=0x0) at src/mod_auth_openidc.c:2017
#8  0x00007f44298a52cc in oidc_check_userid_openidc (r=0x7f443449fc20, c=0x7f44342dc008) at src/mod_auth_openidc.c:2968
#9  0x00007f44298a55fc in oidc_check_user_id (r=0x7f443449fc20) at src/mod_auth_openidc.c:2991
#10 0x00007f443375ce98 in ap_run_check_user_id ()
#11 0x00007f443375e4da in ap_process_request_internal ()
#12 0x00007f443378c31b in ap_process_async_request ()
#13 0x00007f443378780a in ap_process_http_async_connection ()
#14 0x00007f4433787a47 in ap_process_http_connection ()
#15 0x00007f443377ac38 in ap_run_process_connection ()
#16 0x00007f4433797bf8 in process_socket ()
#17 0x00007f443379a6e6 in worker_thread ()
#18 0x00007f44334c99b4 in ?? () from /lib/ld-musl-x86_64.so.1
#19 0x0000000000000000 in ?? ()

I am lost: now it seems that the entry log function call is crashing:
https://github.com/pingidentity/mod_auth_openidc/blob/master/src/util.c#L511
can you uncomment this call and see what happens?
FWIW: I can't reproduce this myself: on a clean stretch system everything works; can you give an indication  of the changes/packages you've added wrt. to a clean install?

I am tested this on RHEL 7.2 and on Alpine, here's the backtrace when I comment out the line.
(gdb) bt
#0  0x00007fa57e0baacb in ?? ()
#1  0x00007fa57e0babbe in ap_recent_ctime_ex ()
#2  0x00007fa57e0b61ff in ?? ()
#3  0x00007fa57e0b71f6 in ?? ()
#4  0x00007fa57e0b8730 in ap_log_rerror_ ()
#5  0x00007fa5748e9e5b in oidc_util_http_call (r=r@entry=0x7fa57ec526a0, url=url@entry=0x7fa57eb4afe8 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", data=data@entry=0x0, content_type=content_type@entry=0x0, basic_auth=basic_auth@entry=0x0, bearer_token=bearer_token@entry=0x0,
    ssl_validate_server=1, response=0x7fa572f59670, timeout=5, outgoing_proxy=0x0, pass_cookies=0x0, ssl_cert=0x0, ssl_key=0x0) at src/util.c:645
#6  0x00007fa5748ea168 in oidc_util_http_get (r=r@entry=0x7fa57ec526a0, url=url@entry=0x7fa57eb4afe8 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", params=params@entry=0x0, basic_auth=basic_auth@entry=0x0, bearer_token=bearer_token@entry=0x0, ssl_validate_server=1, response=0x7fa572f59670,
    timeout=5, outgoing_proxy=0x0, pass_cookies=0x0, ssl_cert=0x0, ssl_key=0x0) at src/util.c:680
#7  0x00007fa5748e5cb7 in oidc_metadata_provider_retrieve (r=r@entry=0x7fa57ec526a0, cfg=cfg@entry=0x7fa57eb15428, issuer=issuer@entry=0x0, url=0x7fa57eb4afe8 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", j_metadata=j_metadata@entry=0x7fa572f59668, response=response@entry=0x7fa572f59670)
    at src/metadata.c:657
#8  0x00007fa5748fba30 in oidc_provider_static_config (r=r@entry=0x7fa57ec526a0, c=c@entry=0x7fa57eb15428, provider=provider@entry=0x7fa572f596d8) at src/mod_auth_openidc.c:267
#9  0x00007fa57490036d in oidc_authenticate_user (r=r@entry=0x7fa57ec526a0, c=c@entry=0x7fa57eb15428, provider=<optimized out>, provider@entry=0x0, original_url=0x7fa57ec58fb0 "http://sjc-wwpl-dock1.cisco.com:32792/server/www/?as", login_hint=login_hint@entry=0x0, id_token_hint=id_token_hint@entry=0x0, prompt=0x0,
    auth_request_params=0x0) at src/mod_auth_openidc.c:2017
#10 0x00007fa574902fd7 in oidc_check_userid_openidc (c=0x7fa57eb15428, r=0x7fa57ec526a0) at src/mod_auth_openidc.c:2968
#11 oidc_check_user_id (r=0x7fa57ec526a0) at src/mod_auth_openidc.c:2991
#12 0x00007fa57e0ab308 in ap_run_check_user_id ()
#13 0x00007fa57e0ada1b in ap_process_request_internal ()
#14 0x00007fa57e0c4eb2 in ap_process_async_request ()
#15 0x00007fa57e0c1d2a in ?? ()
#16 0x00007fa57e0bb132 in ap_run_process_connection ()
#17 0x00007fa575d64693 in ?? () from /app/apache2/modules/mod_mpm_event.so
#18 0x00007fa57de2b9b4 in ?? () from /lib/ld-musl-x86_64.so.1
#19 0x0000000000000000 in ?? ()

Here's the dockerfile that I am using

FROM alpine

ENV APP_USER              www-data
ENV APP_GROUP             www-data
ENV APP_DIR               /app
ENV APP_LOG_DIR           /app/log
ENV APP_WWW_DIR           /app/www
ENV APP_BIN_DIR           /app/apache2/bin
ENV APP_CONF_DIR          /app/apache2/conf
ENV APP_CUSTOMIZATION_DIR /app/apache2/server
ENV APP_MODULES_DIR       /app/apache2/modules
ENV APP_CERT_DIR          /app/cert
ENV INSTALL_DIR           /usr/local
ENV PATH $APP_DIR/bin:$APP_DIR/apache2/bin:$INSTALL_DIR/bin:$PATH

RUN set -x \
    && addgroup -g 82 -S www-data \
    && adduser -u 82 -D -S -G www-data www-data \
    && mkdir -p "$APP_DIR" "$APP_LOG_DIR" "$APP_BIN_DIR" "$APP_WWW_DIR" "$APP_CONF_DIR" "$APP_CERT_DIR" "$APP_DIR/apache2/bin" "$APP_DIR/apache2/conf" "$APP_DIR/apache2/server" \
    && chown www-data:www-data "$APP_WWW_DIR" \
    && chown root:www-data "$APP_LOG_DIR"

RUN set -x \
    && runDeps='libressl apr-dev apr-util-dev perl hiredis curl wget git pcre apache2-proxy-html apache2-webdav apache2-mod-wsgi-doc apache2-ssl apache2 apache2-lua apache2-http2 apache2-proxy apache2-mod-wsgi apache2-error apache2-utils apache2-dev apache2-icons apache2-doc apache2-ldap apache2-dev vim gdb' \
    && apk add --no-cache --virtual .build-deps \
        $runDeps \
        gcc \
        libc-dev \
        libressl-dev \
        libxml2-dev \
        lua-dev \
        pcre-dev \
        nghttp2-dev \
        zlib-dev \
        hiredis-dev \
        pcre-dev \
        curl-dev \
        tar \
        make \
        autoconf \
        automake \
    && mkdir -p /tmp/src /tmp/download

RUN set -x \
    && mkdir -p /tmp/src /tmp/download \
    && wget -O /tmp/download/jansson.tar.gz http://www.digip.org/jansson/releases/jansson-2.9.tar.gz \
        && tar -zxf /tmp/download/jansson.tar.gz -C /tmp/src \
        && cd /tmp/src/jansson* && ./configure \
            --prefix="/usr/local" \
        && make \
        && make install \
        && rm -rf /tmp/download/jansson.tar.gz /tmp/src/jansson*

RUN set -x \
        && wget -O /tmp/download/openssl.tar.gz https://www.openssl.org/source/openssl-1.0.2j.tar.gz \
        && tar -zxf /tmp/download/openssl.tar.gz -C /tmp/src \
        && cd /tmp/src/openssl* && ./config --prefix=/usr/local --libdir=lib shared zlib enable-montasm enable-md2 \
        && make depend \
        && make \
        && make install \
        && rm -rf /tmp/download/openssl.tar.gz /tmp/src/openssl*

RUN set -x \
        && wget -O /tmp/download/cjose.tar.gz https://github.com/cisco/cjose/archive/latest.tar.gz \
        && tar -zxf /tmp/download/cjose.tar.gz -C /tmp/src \
        && cd /tmp/src/cjose* && ./configure \
            --prefix="/usr/local" \
            --with-openssl="/usr/local" \
            --with-jansson="/usr/local" \
        && make \
        && make install \
        && rm -rf /tmp/download/cjose.tar.gz /tmp/src/cjose*

RUN set -x \
        && wget -O /tmp/download/mod_auth_openidc.zip https://github.com/hihellobolke/mod_auth_openidc/archive/master.zip \
        && cd /tmp/src && unzip /tmp/download/mod_auth_openidc.zip \
        && cd /tmp/src/mod_* \
        && ./autogen.sh && ./configure --with-apxs2=$(which apxs) \
        && make \
        && make install \
        && rm -rf /tmp/download/mod_auth_openidc.tar.gz  /tmp/src/mod_auth_openidc*

RUN set -x \
    && runDeps='libressl apr-dev apr-util-dev perl hiredis curl wget git pcre apache2-proxy-html apache2-webdav apache2-mod-wsgi-doc apache2-ssl apache2 apache2-lua apache2-http2 apache2-proxy apache2-mod-wsgi apache2-error apache2-utils apache2-dev apache2-icons apache2-doc apache2-ldap apache2-dev vim gdb' \
    && deps="$( \
            scanelf --needed --nobanner --recursive /usr/lib/apache2 \
                | awk '{ gsub(/,/, "\nso:", $2); print "so:" $2 }' \
                | sort -u \
                | xargs -r apk info --installed \
                | sort -u \
        )" \
        && apk add --no-cache --virtual .run-deps $rundeps $deps

RUN set -x \
    && git clone http://xxx.yyy.zzz/conf.git $APP_CONF_DIR \
    && ln -s /usr/sbin/httpd $APP_BIN_DIR/httpd \
    && cp $APP_CONF_DIR/apachectl $APP_BIN_DIR/apachectl \
    && ln -s /usr/lib/apache2 $APP_MODULES_DIR \
    && rm -rf /tmp/src /tmp/downloads

EXPOSE 80 443
CMD ["bash"]

Do you have a Dockerfile or RHEL 7.2?

Unfortunately I do not have a Dockerfile for RHEL, it is on VM.

Ok; lets try to stick with the Alpine log; this time you haven't applied the patch, have you (just uncommented the entry call)?

Yes just commented the call, I forked off mod_auth_openidc and commented out those lines https://github.com/hihellobolke/mod_auth_openidc

Can you apply the previous util-log.patch.txt patch as well next to the commented out entry; run with debug log on and send a stacktrace when it still segfaults?

Patched it - https://github.com/hihellobolke/mod_auth_openidc/commit/ae490aad9435c9c68cdbc3f0f8d8f397904a9744
(gdb) s
Single stepping until exit from function __clone,
which has no line number information.

Thread 19 "httpd" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 132]
0x00007fc689fb9a50 in ?? ()
(gdb) bt
#0  0x00007fc689fb9a50 in ?? ()
#1  0x00007fc689fb9bbe in ap_recent_ctime_ex ()
#2  0x00007fc689fb51ff in ?? ()
#3  0x00007fc689fb61f6 in ?? ()
#4  0x00007fc689fb7730 in ap_log_rerror_ ()
#5  0x00007fc6807e8e68 in oidc_util_http_call (r=r@entry=0x7fc68a6776a0, url=url@entry=0x7fc68a56ffe8 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", data=data@entry=0x0, content_type=content_type@entry=0x0, basic_auth=basic_auth@entry=0x0, bearer_token=bearer_token@entry=0x0,
    ssl_validate_server=1, response=0x7fc67ee58670, timeout=5, outgoing_proxy=0x0, pass_cookies=0x0, ssl_cert=0x0, ssl_key=0x0) at src/util.c:648
#6  0x00007fc6807e917f in oidc_util_http_get (r=r@entry=0x7fc68a6776a0, url=url@entry=0x7fc68a56ffe8 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", params=params@entry=0x0, basic_auth=basic_auth@entry=0x0, bearer_token=bearer_token@entry=0x0, ssl_validate_server=1, response=0x7fc67ee58670,
    timeout=5, outgoing_proxy=0x0, pass_cookies=0x0, ssl_cert=0x0, ssl_key=0x0) at src/util.c:683
#7  0x00007fc6807e4cb7 in oidc_metadata_provider_retrieve (r=r@entry=0x7fc68a6776a0, cfg=cfg@entry=0x7fc68a53a428, issuer=issuer@entry=0x0, url=0x7fc68a56ffe8 "https://cloudsso-test.cisco.com/.well-known/openid-configuration", j_metadata=j_metadata@entry=0x7fc67ee58668, response=response@entry=0x7fc67ee58670)
    at src/metadata.c:657
#8  0x00007fc6807faa47 in oidc_provider_static_config (r=r@entry=0x7fc68a6776a0, c=c@entry=0x7fc68a53a428, provider=provider@entry=0x7fc67ee586d8) at src/mod_auth_openidc.c:267
#9  0x00007fc6807ff384 in oidc_authenticate_user (r=r@entry=0x7fc68a6776a0, c=c@entry=0x7fc68a53a428, provider=<optimized out>, provider@entry=0x0, original_url=0x7fc68a67c430 "http://sjc-wwpl-dock1.cisco.com:32794/index.html", login_hint=login_hint@entry=0x0, id_token_hint=id_token_hint@entry=0x0, prompt=0x0,
    auth_request_params=0x0) at src/mod_auth_openidc.c:2017
#10 0x00007fc680801fee in oidc_check_userid_openidc (c=0x7fc68a53a428, r=0x7fc68a6776a0) at src/mod_auth_openidc.c:2968
#11 oidc_check_user_id (r=0x7fc68a6776a0) at src/mod_auth_openidc.c:2991
#12 0x00007fc689faa308 in ap_run_check_user_id ()
#13 0x00007fc689faca1b in ap_process_request_internal ()
#14 0x00007fc689fc3eb2 in ap_process_async_request ()
#15 0x00007fc689fc0d2a in ?? ()
#16 0x00007fc689fba132 in ap_run_process_connection ()
#17 0x00007fc681c63693 in ?? () from /app/apache2/modules/mod_mpm_event.so
#18 0x00007fc689d2a9b4 in ?? () from /lib/ld-musl-x86_64.so.1
#19 0x0000000000000000 in ?? ()

Logs
[Fri Jan 13 09:12:48.020481 2017] [mpm_event:debug] [pid 63:tid 140490509314736] event.c(2095): AH02471: start_threads: Using epoll
[Fri Jan 13 09:14:06.514013 2017] [authz_core:debug] [pid 63:tid 140490509224624] mod_authz_core.c(809): [client 1.2.3.4:58086] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
[Fri Jan 13 09:14:06.514058 2017] [authz_core:debug] [pid 63:tid 140490509224624] mod_authz_core.c(809): [client 1.2.3.4:58086] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
[Fri Jan 13 09:14:06.514076 2017] [auth_openidc:debug] [pid 63:tid 140490509224624] src/mod_auth_openidc.c(2982): [client 1.2.3.4:58086] oidc_check_user_id: incoming request: "/index.html?(null)", ap_is_initial_req(r)=1
[Fri Jan 13 09:14:06.514094 2017] [auth_openidc:debug] [pid 63:tid 140490509224624] src/util.c(856): [client 1.2.3.4:58086] oidc_util_get_cookie: returning "mod_auth_openidc_session" = <null>
[Fri Jan 13 09:14:06.514148 2017] [auth_openidc:debug] [pid 63:tid 140490509224624] src/util.c(959): [client 1.2.3.4:58086] oidc_util_request_matches_url: comparing "/index.html"=="/redirect"
[Fri Jan 13 09:14:06.514170 2017] [auth_openidc:debug] [pid 63:tid 140490509224624] src/util.c(447): [client 1.2.3.4:58086] oidc_get_current_url: current URL 'http://xxx.yyy.zzz/index.html'
[Fri Jan 13 09:14:06.514180 2017] [auth_openidc:debug] [pid 63:tid 140490509224624] src/mod_auth_openidc.c(2008): [client 1.2.3.4:58086] oidc_authenticate_user: enter
[Fri Jan 13 09:14:06.514349 2017] [auth_openidc:debug] [pid 63:tid 140490509224624] src/cache/shm.c(158): [client 1.2.3.4:58086] oidc_cache_shm_get: enter, section="provider", key="https%3A%2F%2Fcloudsso-test.cisco.com%2F.well-known%2Fopenid-configuration"

I cannot reproduce this even using your Dockerfile...
I have to replace the last entries with:
#RUN set -x \
#    && git clone http://xxx.yyy.zzz/conf.git $APP_CONF_DIR \
#    && ln -s /usr/sbin/httpd $APP_BIN_DIR/httpd \
#    && cp $APP_CONF_DIR/apachectl $APP_BIN_DIR/apachectl \
#    && ln -s /usr/lib/apache2 $APP_MODULES_DIR \
#    && rm -rf /tmp/src /tmp/downloads

ADD openidc.conf /etc/apache2/conf.d/openidc.conf
RUN mkdir /run/apache2/

EXPOSE 80 443
CMD ["bash"]

and then adding the openidc.conf as attached runs just fine an unpatched checkout, even on your Provider config endpoint

That is very strange, let me tweak my check configs then. Can I see you Dockerfile and work from there. Thank you so much.

Like I mentioned: I use your Dockerfile with the only changes listed in my previous comment
Dockerfile.txt

Thanks! I figured, the enabling mpm_event_module instead of prefork causes this issue. I could reproduced this.
LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

great! now we have something I can work from

I am not sure what the interference between curl and mpm event is here, but I rewrote the curl calls to use a dynamic memory buffer instead of a static one and that seems to solve this problem as well; could you confirm 90efd7a?

debug log attached. it does not seg fault but does not work either.  the browser redirects to OIDCRedirectURI and displays 404 error (not found).
e.txt

looks like you're now down to a configuration error; the log shows an outgoing authorization request to Google and that's it; there's no authorization response from Google or any other activity; where do you see the 404? perhaps at the Google provider?

I see
https://hm.sivalik.com/personal/openidc?state=LM-GQ0SqJLGvAula8LqFK1BZwNI&code=4/-aBvcVtKG0kawpM-PQkaZF72i_glgun5kLTx3CqsIDc&authuser=0&session_state=49fb45720f9e401b03c08d3c3e66c7e6373ded1d..7556&prompt=none#
in the URL bar of the browser. OIDCRedirectURI is https://hm.sivalik.com/personal/openidc.  The same config was working before.  I don't know the protocol well enough to help resolve.

Could it be that the log is not complete, the login works but the page you initially tried to access does not exist? That should be visible in a complete log.

I cleaned up my environment and retried. It works with no issues. Thanks.

Can you confirm that you reverted to libcurl3 7.51.0 (testing) and your are using Apache MPM event module?

yes, i am using event module and libcurl 7.51.0
The problem was with my authentication setup for OIDCRedirectURI.  Can you confirm what should it be- currently I am using  the following

AuthType openid-connect
Require group ... (list of groups which have access to any resource protected by oidc)

To apply access control based on the claims in the id_token and the claims resolved from the userinfo endpoint see: https://github.com/pingidentity/mod_auth_openidc/wiki/Authorization

@hihellobolke can you confirm 90efd7a as well?

Checking this today, I was on vacation :)
On Thu, Jan 19, 2017 at 1:23 PM Hans Zandbelt notifications@github.com
wrote:

@hihellobolke https://github.com/hihellobolke can you confirm 90efd7a
https://github.com/pingidentity/mod_auth_openidc/commit/90efd7a20191e0feda5779b5f0d823fb0a2fe152
as well?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/pingidentity/mod_auth_openidc/issues/207#issuecomment-273902943,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACzbQzGLQhAkDXtDi2kocrUP8hDeeJOwks5rT9RogaJpZM4LcN6K
.

This is perfect! @zandbelt Thank you so much!

authors: hihellobolke rajeevn1 zandbelt


text:
Added client_secret_bearer functionality for token introspection

I have made these changes to accomodate Gluu server (and perhaps others) as it does not seem to support any other authorization method for the introspection endpoint, except a bearer token sent via Authorization header.
It seemed the functionality for using a bearer token was already there, only not used.
It is a bit of a hack, to use the same token received from a client, instead one obtained by mod_auth_openidc itself, but that would mean the module would first call the /token endpoint authorizing with Basic or other method, and then call the /introspection endpoint to validate the incoming bearer token from an external client. And this is not yet implemented.

Thanks for the suggestion. I like the cleanliness of the addition in general but I do think that there should be a better way for obtaining the client authentication token than hijacking the OIDCOAuthIntrospectionTokenParamName primitive for that: this may conflict with some introspection mechanisms that actually do need to modify the token parameter name.
I guess it would need a its own OIDCOAuthIntrospectionClientAuthBearerToken primitive (regardless of future more dynamic ways of obtaining that token that may be added).

The existing token extraction mechanisms is actually leveraged, regardless of the token attribute name, as defined by OIDCOAuthIntrospectionTokenParamName (default "token") and the method of passing it defined by OIDCOAuthAcceptTokenAs (header, cookie, post, query).
All I did was to add the option client_secret_bearer to the OIDCOAuthIntrospectionEndpointAuth directive, that simply uses the extracted token from the client request (irrespective of how the token parameter is named), and sends it as a Authorization Bearer header to the introspection endpoint.
To me, this serves the following scenario:

The RP is an actual machine (API) doing the call to a protected API by the Resource Server. It will first call a /token endpoint from the OP to get a bearer token.
The called API is "dumb", protected by the mod_auth_openidc, turning the Apache proxy into an RS
The RP will pass the bearer token however it sees fit (usually via the Autorization: Bearer) header, but could post it, or send it via querystring or cookie
mod_auth_openidc will try to call the /introspect endpoint defined by OIDCOAuthIntrospectionEndpoint

All the above is the known behaviour, however the suggested new one would be:

My particular OP server (Gluu) does not take any authorization method to /introspect endpoint, except Authorize: Bearer, where the bearer token is one issued previously by a call to /token.
If OIDCOAuthIntrospectionEndpointAuth is set to the new client_secret_bearer option, then disregard the other AuthZ methods and simply use the extracted token (subject to validation) to authorize the call to /introspect endpoint, and will of course pass the same token to be inspected, as currently happends.
A new directive can be added, for example instead of the client_secret_bearer option, but behind the scenes would be the same logic.

# Enables authorization of the call to the introspection endpoint using the bearer token passed by the
# client in any of the forms dictated by OIDCOAuthIntrospectionTokenParamName and OIDCOAuthAcceptTokenAs
# Setting it to On, will ignore the OIDCOAuthIntrospectionEndpointAuth and related directives used in
# authorization to the introspection endpoint.
# When not defined, the default value is Off
#OIDCOAuthIntrospectionClientAuthBearerToken [On|Off]

I really hope I got the whole inner workings right though, thank you so much for your input.

I think the reasoning above is collapsing some concepts from OAuth 2.0 that should really be separate.
Having said that, supporting a Bearer access token authentication method to the introspection endpoint still does seem useful to me in general.  It should not be called "client_secret_bearer" though since that suggests something is done with a client secret.
How do you explain this code:
https://github.com/pingidentity/mod_auth_openidc/pull/309/files#diff-d618e00ddb13e656bb9591f71a905d0bR1815
that puts the value configured in OIDCOAuthIntrospectionTokenParamName into the bearer value?

Well, my aim to to adhere to the standard and not deviate, of course!
Can you be more specific about the overlapping?
Agree with the naming, perhaps go with your suggestion of new directive (OIDCOAuthIntrospectionClientAuthBearerToken) altogether?
The existing code has the token value placed in the params list:
oauth.c:78:     apr_table_addn(params, c->oauth.introspection_token_param_name, token);

The new code gets that token value (not the token value name) and places it in an currently unused "bearer_token" to be passed around to the methods calling the introspection endpoint
 +    const char *token = apr_table_get(params, cfg->oauth.introspection_token_param_name);
 +    *bearer_auth_str = apr_psprintf(r->pool, "%s", token);

Of course, I should remove that extra "token" variable and use directly bearer_auth_str.
Calling an RS endpoint:
POST /apiserver
cache-control: no-cache
postman-token: dc0b45be-4555-410c-99d6-594090b36ca9
content-type: application/x-www-form-urlencoded
**authorization: Bearer 02bf8961-0be0-4ace-b868-a966cd657e7a**
user-agent: PostmanRuntime/6.4.1
accept: */*
host: ontime-qa.vencuro.com
accept-encoding: gzip, deflate
content-length:

will have the outcome (from debug log):
src/util.c(662): [client 10.10.10.115:1180] oidc_util_http_call: url=https://myserver/oxauth/restv1/introspection,
**data=token=02bf8961-0be0-4ace-b868-a966cd657e7a**, content_type=application/x-www-form-urlencoded, basic_auth=(null),
**bearer_token=02bf8961-0be0-4ace-b868-a966cd657e7a**, ssl_validate_server=0, timeout=60, outgoing_proxy=(null),
pass_cookies=0, ssl_cert=(null), ssl_key=(null)

Full disclaimer: I am a beginner in OAuth/OIDC, however, I am studying the specs and checked of course why the OP has this behavior instead of accepting also "Basic" or JWT via post.

Ok, I see what you did with the params table indeed.
However, now I'm confused about the effect: you want to provide the access token in both a bearer header and a token parameter? Why would you need it twice? If the AS requires that I'd say the AS needs to be changed. (I'm willing to proceed with code to deal with a statically registered bearer token, not sending duplicate parameters)

Well, you want to keep the current functionality: validate a token against the /introspection endpoint, in a dynamic way.
It is twice, because once you use that token to authorize to /introspection endpoint, and then you must send the token to be introspected, in our case it is the same one (this is the existing behavior in mod_auth_openidc).
The effects here are:

if it is not valid, will fail to get to /introspection in the first place, resulting in denying access to the resource.
if the token is valid but is not of type "bearer", as it is in the existing code right now, fail again and deny access to the resource.
the token expiration is reset, just by calling /introspection.

I agree in discussing with the server developers to find out the reason for not supporting other auth methods.
What do you mean by statically registered token, one that would be hardcoded in the apache config and passed for authorization to /introspection?

yes
yes, you've already added 80% of the code :-)
it is very specific to your situation and doesn't serve a generic purpose

I propose to:
a.  mark the method as access_token_bearer
b. add the OIDCOAuthIntrospectionClientAuthBearerToken primitive
c. when configured with an empty string, fill it with the access token that is introspected
if you could modify the PR to that, I'd be willing to merge
Calling another endpoint with a set of statically configured credentials first - IMHO- is out of scope for this module: why not use the statically configured credentials towards the introspection endpoint in one step.

I have implemented your suggested changes.
When OIDCOAuthIntrospectionClientAuthBearerToken:

not set, then OIDCOAuthIntrospectionEndpointAuth will be in effect (the current behaviour)
with a string value, will ignore OIDCOAuthIntrospectionEndpointAuth and pass the directive string in the Authorization: Bearer <directive string> header
with no value, will ignore OIDCOAuthIntrospectionEndpointAuth and pass in the Authorization header the token it extracted from the client request.

Some debug output:

OIDCOAuthIntrospectionClientAuthBearerToken not set:

src/util.c(662): [client ] oidc_util_http_call: url=https://AS/oxauth/restv1/introspection,
data=token=197af532-76e5-43dd-81ba-ea3ec7bb1c3d, content_type=application/x-www-form-urlencoded,
basic_auth=clientid1:clientsecret1, bearer_token=(null),
ssl_validate_server=0, timeout=60, outgoing_proxy=(null), pass_cookies=0, ssl_cert=(null), ssl_key=(null)

OIDCOAuthIntrospectionClientAuthBearerToken without value

src/util.c(662): [client ] oidc_util_http_call: url=https://AS/oxauth/restv1/introspection,
data=token=197af532-76e5-43dd-81ba-ea3ec7bb1c3d, content_type=application/x-www-form-urlencoded,
basic_auth=(null), bearer_token=197af532-76e5-43dd-81ba-ea3ec7bb1c3d,
ssl_validate_server=0, timeout=60, outgoing_proxy=(null), pass_cookies=0, ssl_cert=(null), ssl_key=(null)

OIDCOAuthIntrospectionClientAuthBearerToken = aaa-bbb-ccc-ddd-eee-fff

src/util.c(662): [client ] oidc_util_http_call: url=https://AS/oxauth/restv1/introspection,
data=token=197af532-76e5-43dd-81ba-ea3ec7bb1c3d, content_type=application/x-www-form-urlencoded,
basic_auth=(null), bearer_token=aaa-bbb-ccc-ddd-eee-fff,
ssl_validate_server=0, timeout=60, outgoing_proxy=(null), pass_cookies=0, ssl_cert=(null), ssl_key=(null)

source: gharchive/pull-request

authors: cristichiru zandbelt

license_type: permissive

license_source: bigquery


text:
챕터 #11: 불쾌한 컴포넌트 리렌더링

챕터 #11: 불쾌한 컴포넌트 리렌더링
🎯 대상 챕터
Chapter #11 - Component Performance Optimization

⁉ 발생 문제
교재 제공 코드대로 TodoListItem.scss 파일을 작성하면, react-virtualized 패키지에 의해 스크롤 할 때마다 요소의 표시 순서가 홀수번째에서 짝수번째로 변하거나, 그 반대로 변함. 이 때, &:nth-child(even) 에 의해 background-color도 계속 같이 바뀌며, 사용자에게 마치 렌더링 오류가 발생하는 것 같은 불쾌한 느낌을 심어주는 현상 발견

✨ 생각한 해결 방안
classname 패키지를 사용해,
각 요소에 사용되는 객체의 index 값에 따라 절대적인 background-color 값 부여하기

챕터 #11: 불쾌한 컴포넌트 리렌더링
❔ 해결 여부
✅ 해결하였음.

✨ 해결 방안이 적용된 소스코드
공간 문제로, 수정한 부분만 작성하였음.
./TodoListItem.js
	const { index, text, isTodoChecked } = todo;
	return (

			//
 이 줄을 아래 줄과 같이 변경함.

 whenTodoCheckboxClicked(index)}

./TodoListItem.js
.TodoListItem {
    display: flex;
    padding: 1rem;
    /* 불필요한 소스코드를 주석처리하였으며, 아래의 &.pink {} 로 대체함
    &:nth-child(even) {
        background-color: #ffecf5;
    } */
    &.pink {
        background-color: #ffecf5;
    }
    .checkBox {
        // 체크박스 아이콘입니다.
        cursor: pointer;

source: gharchive/issue

license: MIT

license_source: github-api


text:
Is there a way to upload multiple local images to pinterest?

Hi,
I'm trying to find a way to upload multiple images without using the Pinterest mobile app.
When I try to upload on the web, the images decrease in resolution.
My last try will be to use Pinterest api but I didn't find anything that helps me with that.

Thanks for the feedback! If the API doesn't work for you, please consider creating a ticket through our help center. (Click on Pinterest API and Developer Tools. Then click on API Technical Support and hit the Continue button. Then click on Pinterest API v5 and hit the Continue button. Then, fill out the form and hit the Continue button.) You can also submit feedback through the form linked at the bottom of this page for developers.

authors: davidchaiken ravyrafael

repo: pinterest/api-quickstart


text:
Reformat to over-lines code with max_line_length limited

Expected Behavior
No need too many lines.
Observed Behavior
Original:
fun fooooooooooooo(key: String, default: Boolean) = Unit

class Bar {
  val barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr by lazy { fooooooooooooo("fooooooooooooooooooooooooooooooooooooooooooooo", true) }
}

Reformay manually:
class Bar {
  val barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr by lazy {
    fooooooooooooo("fooooooooooooooooooooooooooooooooooooooooooooo", true)
  }
}

Steps to Reproduce
Reformatd by ktlint:
class Bar {
  val barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr by lazy {
    fooooooooooooo(
      "fooooooooooooooooooooooooooooooooooooooooooooo",
      true,
    )
  }
}

Your Environment

Version of ktlint used: 0.47.1
Relevant parts of the .editorconfig settings

root = true

[*]
charset = utf-8
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.{kt,kts}]
ij_kotlin_imports_layout = *
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
ij_kotlin_name_count_to_use_star_import = 999
ij_kotlin_name_count_to_use_star_import_for_members = 999
max_line_length = 80

Name and version (or code for custom task) of integration used (Gradle plugin, Maven plugin, command line, custom Gradle task): CLI
Version of Gradle used (if applicable): None
Operating System and version: MacOS 12.5.1

I can not reproduce the issue. For me the parameter wrapping is not activated. I have to reduce the max_line_length to 73 before the behavior is triggered. Please note that whenever you change the .editorconfig file with IntelliJ, that you need to save that file explicitly before invoking ktlint. I have been fooled by that many times.

I've tried again on my other Mac, with the same result. Maybe I hadn't described this issue clearly, I meant ktlint formats
class Bar {
  val barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr by lazy { fooooooooooooo("fooooooooooooooooooooooooooooooooooooooooooooo", true) }
}

to
class Bar {
  val barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr by lazy {
    fooooooooooooo(
      "fooooooooooooooooooooooooooooooooooooooooooooo",
      true,
    )
  }
}

but the
class Bar {
  val barrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr by lazy {
    fooooooooooooo("fooooooooooooooooooooooooooooooooooooooooooooo", true)
  }
}

is ok, can pass the lint. If I enlarge max_line_length to 100, will still have the second result.

Ah, now I see what you mean. I consider this as an enhancement on the wrapping rule. If a line exceeds the max_line_length and it contains a BLOCK element type, it should break before start and after end of the block.
  ~.c.i.p.impl.source.tree.LeafPsiElement (IDENTIFIER) "lazy"
~.c.i.p.impl.source.tree.PsiWhiteSpaceImpl (WHITE_SPACE) " "
~.psi.KtLambdaArgument (LAMBDA_ARGUMENT)
  ~.psi.KtLambdaExpression (LAMBDA_EXPRESSION)
    ~.psi.KtFunctionLiteral (FUNCTION_LITERAL)
      ~.c.i.p.impl.source.tree.LeafPsiElement (LBRACE) "{"
      ~.c.i.p.impl.source.tree.PsiWhiteSpaceImpl (WHITE_SPACE) " "  <--- add line break
      ~.psi.KtBlockExpression (BLOCK)
        ...
      ~.c.i.p.impl.source.tree.PsiWhiteSpaceImpl (WHITE_SPACE) " " <--- add line break
      ~.c.i.p.impl.source.tree.LeafPsiElement (RBRACE) "}"

In addition to this, the wrapping run needs to run beforebthe argument-list-wrapping / function-signature rule.

authors: Goooler paul-dingemans

repo: pinterest/ktlint


text:
ktlint 1.1.0 doesn't respect disabled discouraged-comment-location rule in .editorconfig

We don't want to enforce comments location in our project because we like the following code style:
        val object = Object(
            someParam1 = 10000, // comment here about why
            someParam2 = 100, // comment here about why
            sameParam3 = emptyList(), // comment here about why
        )

It's compact and nice to work with, but discouraged by ktlint.
To disable the A comment in a 'value_argument_list' is only allowed when placed on a separate line (cannot be auto-corrected) warnings for such usages, our .editorconfig file looks the following way:
root = true

[*]
ktlint_code_style = intellij_idea
ktlint_standard_discouraged-comment-location = disabled

It works for ktlint 1.0.1, but ignored when we try to update ktlint to 1.1.0.
Additional context
We are using org.jlleitschuh.gradle.ktlint:12.0.3 gradle plugin configured the following way:
    ktlint {
        version.set(libs.versions.ktlint)
        coloredOutput.set(true)
        android.set(false)
        ignoreFailures.set(false)
        filter {
            exclude("**/generated/**")
            exclude { element -> element.file.path.contains("generated/") }
        }
    }

Looks like a new rule was added for this - value-argument-comment
Unfortunately disabling it results in:

Rule with id 'RuleId(value=standard:argument-list-wrapping)' requires rule with id 'RuleId(value=standard:value-argument-comment)' to be loaded

At this rate I'll have most ktlint rules disabled by 2025 :disappointed:

It would be nice to see the mention of the new value-argument-comment and value-parameter-comment rules

in docs: https://pinterest.github.io/ktlint/1.1.0/rules/standard/
in release notes: https://github.com/pinterest/ktlint/releases/tag/1.1.0, ideally including some kind of migration guide?

Also, yeah, it looks like disabling  value-argument-comment requires disabling argument-list-wrapping, and disabling  value-parameter-comment requires disabling of function-signature rule.
It's not fully clear why.
For the argument-list-wrapping, why can't we enforce that every parameter is on a separate line if there are trailing comments?
For the function-signature, why can't we still place into one line the function arguments with short comments? But I see that this may require changing line comments to block comments.

Sorry for not clearly communicating that the discouraged-comment-location has been splitted into separate rules:

type-argument-comment
type-parameter-comment
value-argument-comment
value-parameter-comment

Reason for this is to provide better insights why certain rules are blocked.
With ktlint 1.0.1, disabling discouraged-comment-location was only possible when also disabling:

chain-method-continuation
class-signature
if-else-wrapping
From a user perspective it makes what the relation is between those rules.

With ktlint 1.1.0, disabling value-argument-comment is only possible when also disabling:

argument-list-wrapping
chain-method-continuation
The chain-method-continuation should not have been blocked. From a functional perspective, and from the unit test perspective, there seems no reason to block it.

Intuitively the relation between argument-list-wrapping and value-argument-comment is not too bad even in case you might not agree with disallowing comments in and after value arguments. It is a common pattern to use. But syntaxtically it is not correct as the comment is place after the semi colon while it refers to the element before the comment. Not only ktlint has troubles to process that correctly but also IntelliJ IDEA does not deal with it correctly as can be seen in screenshots below:
We start with this code:

Open 'Change signature' and select 'sameParam3':

Now move 'sameParam3' one position up and press 'Refactor':

The resulting code now looks as follows:

Please note that the comments are no longer related to the original parameter.

It would be nice to see the mention of the new value-argument-comment and value-parameter-comment rules
in docs: https://pinterest.github.io/ktlint/1.1.0/rules/standard/
in release notes: https://github.com/pinterest/ktlint/releases/tag/1.1.0, ideally including some kind of migration guide?

Yes indeed, this should have been documented more clearly. I will fix it.

@paul-dingemans Thank you for the context. Just a thought. It may be beneficial to make a new section in the documentation that would share knowledge about why a rule is dependent on others. Because it looks like some connections are not obvious and I'm sure more users will be asking you or themselves the same questions.

I vehemently agree with this report.  At first, I thought I'd just move all the comments in our codebase, but there are hundreds, and they are much more readable on the same line.  I really want to disable value-argument/parameter-comment, but I want argument-list-wrapping and function-signature.
I do not think these things should be coupled.  I don't think anyone on my team has ever moved a parameter using that UI, and I'd rather eat the cost of manually moving a comment in that case.

I vehemently agree with this report. At first, I thought I'd just move all the comments in our codebase, but there are hundreds, and they are much more readable on the same line. I really want to disable value-argument/parameter-comment, but I want argument-list-wrapping and function-signature.

Nice things sometimes come at cost. But I do hear your argument that refactoring hundreds of lines of code is not an option for you.

I do not think these things should be coupled.

It is technical complex and most likely it will results in lots of other problems when trying to fix this. You are free to submit a PR which handles comments in value argument lists correctly.

I don't think anyone on my team has ever moved a parameter using that UI, and I'd rather eat the cost of manually moving a comment in that case.

This is not a relevant argument. Even if ktlint could handle comments correctly, the problem inside IntelliJ IDEA still exists. The IntelliJ IDEA example was simple to  illustrate that even in Jetbrains products this kind of code can lead to unpredictable results.
Next best thing that I can think of, is that the rules that currently have a dependency on any of the comment rules just simply ignore elements containing unexpected comments. But this will also lead to unpredictable results as devs will not understand why
        val object = Object(
            someParam1 = 10000, someParam2 = 100, // comment here about why
            sameParam3 = emptyList(),
        )

is not being wrapped, while it does work for:
        val object = Object(
            someParam1 = 10000, someParam2 = 100,
            sameParam3 = emptyList(),
        )

I vehemently agree with this report. At first, I thought I'd just move all the comments in our codebase, but there are hundreds, and they are much more readable on the same line. I really want to disable value-argument/parameter-comment, but I want argument-list-wrapping and function-signature.

Nice things sometimes come at cost. But I do hear your argument that refactoring hundreds of lines of code is not an option for you.

That's not the argument.  The argument is

they are much more readable on the same line

I've refactored the codebase many times when ktlint rule enforcement results in "better" code.  This one does not.
I don't even understand why the comment comes into play with
        val object = Object(
            someParam1 = 10000, someParam2 = 100, // comment here about why
            sameParam3 = emptyList(),
        )

You have multiple lines, and two params on one line.  That's not allowed.  Leave it to the developer to fix it.

I think the main problem with this chain disabling from the user perspective is the following:

We want to have comments for the arguments after the commas. Which is, indeed, strictly speaking, grammatically incorrect. Such comments do belong to the next argument from the parser's perspective.
We disable Rule 1 hoping to just leave such comments be.
But that leads to disabling a higher-level Rule 2.
Ok, it's understandable that Rule 2 can't work correctly without applying Rule 1.
But what about all the places that are compliant with Rule 1 and we still want Rule 2 to be applied to them? And it can be applied because they are compliant with Rule 2 prerequisites.

I don't want to disable argument-list-wrapping for the whole project for all function/method invocations just because some minority of these calls are not compliant with value-argument-comment.

I think the main problem with this chain disabling from the user perspective is the following thinking process:

We want to have comments for the arguments after the commas. Which is, indeed, strictly speaking, grammatically incorrect. Such comments do belong to the next argument from the parser's perspective.
We disable Rule 1 for the whole project hoping to just leave such comments be.
But that forces disabling a higher-level Rule 2 for the whole project.
Ok, it's understandable that Rule 2 can't work correctly with invocations with such comments without applying Rule 1.
But what about all the places that are already compliant with Rule 1 and we still want Rule 2 to be applied to them?  Rule 2 doesn't have to be disabled project-wise, it can just skip occurrences non-compliant with its dependencies. We still generally want Rule 2.

I don't want to disable argument-list-wrapping for the whole project for all function/method invocations just because some minority of these calls are not compliant with value-argument-comment.

I think this matches with what I suggested:

Next best thing that I can think of, is that the rules that currently have a dependency on any of the comment rules just simply ignore elements containing unexpected comments.

@paul-dingemans
Explanation why these rules are introduced seems reasonable, but it really sad that technical limitation and incorrect behavior of some tools leads to decreasing of code readability. I think linter is suppose to make code more comprehensible and not vice versa.

Explanation why these rules are introduced seems reasonable, but it really sad that technical limitation and incorrect behavior of some tools leads to decreasing of code readability. I think linter is suppose to make code more comprehensible and not vice versa.

I fail to see the point you are trying to make.

@bay73

incorrect behavior of some tools

If you reference the IntelliJ behavior of treating a trailing comment after a comma as part of the next parameter, it's not an incorrect behavior. You may find it inconvenient or not to your taste. But technically from a language grammar perspective, a comma is a separator of parameters and arguments. Such trailing comments do belong to parameters on the next line according to the language spec.
Tools should behave by respecting correctness and specification first, convenience, taste, and readability second.

@Spikhalskiy
I see, that you failed to understand. You referring again to "technically from a language perspective" and this is exactly what is wrong - technical limitations should not be an argument when we are taking care about readability. Readability is for human and if technical limitations hinder human needs, then technical limitations should be changed, not the human needs.
The ultimate goal of linter is to make it easier for human to work with the code, not for computer or compiler. And now instead of moving to this goal linter becoming a tool with which I have to fight (of suppress) to have readable code.

@bay73 I do understand your point of view, but I show that it may not be the only one.
For example, from my point of view, the purpose of a linter is to make code easier to read and "prettier", but inside the box of the language specification and grammar. I wouldn't want a linter to start bending boundaries defined by them.
If the linter decides that it knows better, and steps out of the rules of the language grammar, it will unavoidably run into incompatibilities with other tools that do it differently. As Paul pointed out in the example with Intelij refactoring.

Frankly speaking your reasoning about "breaking the IDE / unexpected behavior in IntelliJ IDEA" does not work, because the refactoring does not move the comments even in the case when comments are written before each argument.
Before the refactoring:
data class Foo(val someParam1: Int, val someParam2: Int, val someParam3: List<String>)

val foo = Foo(
    // some comment here about why 1
    someParam1 = 10_000,
    // some comment here about why 2
    someParam2 = 100,
    // some comment here about why 3
    someParam3 = emptyList(),
)

After the "Change signature" refactoring:
data class Foo(val someParam1: Int, val someParam3: List<String>, val someParam2: Int)

val foo = Foo(
    // some comment here about why 1
    someParam1 = 10_000,
    // some comment here about why 2
    someParam3 = emptyList(),
    // some comment here about why 3
    someParam2 = 100,
)

This is not to mention that the rule is also reported for the cases when arguments are passed in place of vararg parameters (i.e. to functions like listOf(), setOf() and the like), where no signature refactorings are ever possible anyway (and so nothing can potentially ever "break").
The syntax and formatting in the snippets above are "allowed" by the latest ktlint version (1.1.1), BTW. You've rolled out a half-baked raw rule, which clearly had to be hidden in the experimental section (if even implemented at all), and now after updating the tool version, I've got bunch of rule violations for the code that had "perfectly good" style according to the older version of ktlint.
P.S. The documentation for the rules is also half-baked, because it seems to repeat word-for-word the explanation for rules value-argument-comment and value-parameter-comment.

Frankly speaking your reasoning about "breaking the IDE / unexpected behavior in IntelliJ IDEA" does not work, because the refactoring does not move the comments even in the case when comments are written before each argument.

Nice find! I never noticed that.
I will ignore your other remarks as I take offense about using the phrase "half-baked". If you can do better, please raise a PR to fix.

Sorry if I offended you, but whether you find the language offensive or not, the quality of the current implementation remains to be what it is. I should stress here that I do not mean to berate the quality of the entire tool, which although occasionally has some problematic spots from version to version, largely is very mature, robust and tremendously useful.
I can only raise a PR that reverts this particular rule (value-argument-comment), as I find it useless (for me, so I have to turn it off anyway). It seems some other people have issues with it too. Also it contributes to "bike-shedding" (just look at the discussion above) — the practice this very tool claims to be against (or at least aims to alleviate to some extent).
I am speculating here, but I would venture a guess, that the majority of people who have no issue with this rule are those, who do not write comments in the code (at all, of any kind) to begin with.

I can only raise a PR that reverts this particular rule (value-argument-comment), as I find it useless (for me, so I have to turn it off anyway). It seems some other people have issues with it too. Also it contributes to "bike-shedding" (just look at the discussion above) — the practice this very tool claims to be against (or at least aims to alleviate to some extent).

Thanks for clarifying. In your original comment it was not clear to me that you were referring to the value-argument-comment. I had another look at how the comments are actually parsed, and found that I made a mistake there. Some comments in a value-argument-list or value-parameter-list are siblings of the value-argument or value-parameter. Such comments should not be forbidden by the value-argument-comment and value-parameter-comment rules. See #2519.

authors: Spikhalskiy YSakhno bay73 eygraber paul-dingemans scottkennedy


text:
Add clarification for IDEA setup in README

To clarify how the IntelliJ IDEA code style setting configuration process works, add an brief explanation about what each command does and clarify that the code samples are command line calls, not config file entries

Thanks for the PR, but I am not sure how it wasn't clear from the previous readme?

Thanks for the PR, but I am not sure how it wasn't clear from the previous readme?

Given that the majority of users will not use the ktlint executable directly (instead would run via build tool plugin), it was not clear whether ktlint applyToIDEAProject was a shell command or a setting in a file. I misunderstood that this was a config to be used inside .editorconfig file, which obviously didn't work. It was only when I re-read the entire README and found the "Installation" section that mentioned that it could be run as a standalone binary that I understood that this was a shell command. I think part of the issue is that the .sh code highlighting in GitHub does not show that it is a shell script, so even though the previous README contained the full information needed to understand how to use it, the way GitHub presented it left some room for confusion.
Since I was silly and wasted half an hour getting confused, I really wanted to avoid it happening again, hence this PR :-)

Oh ok, I see.. Well, if that would help you, I am fine with merging this in 👍

Oh ok, I see.. Well, if that would help you, I am fine with merging this in 👍

Thanks! Appreciate your time reviewing and merging this in :-)

authors: Woodz romtsn


text:
Hostname is resolved every time in TextLogFileReaderFactory.java

As part of 9d123d4, SingerUtils.getHostNameBasedOnConfig is called every time in TextLogFileReaderFactory.java (irrespective of what prependHostname is configured to).
Running the tutorial on MacOS shows 5 second freezes due to this at times. (there seem to be known issues with InetAddress.getLocalHost().getHostName() on MacOS)  We can avoid this resolution when not configured.

Thanks for raising the issue, created a PR to fix.

Fix is merged and will be released in Singer 0.8.0.6

repo: pinterest/singer


text:
Create namespace if not exist the namespace with helm3

What would you like to be added:
When I install a new application in another namespace with helm, I'm pleased that it will be created if that namespace doesn't exist. helm3 has --create-namespace option!
Why is this needed:

This is done

repo: pipe-cd/pipecd


text:
Disable syncing CloudRun services in preparation for next release

What this PR does / why we need it:
Temporarily disable livestatestore for CloudRun in preparation for next release.
Which issue(s) this PR fixes:
Fixes #
Does this PR introduce a user-facing change?:

NONE

Thank you.
/approve

/changelog

authors: knanao nghialv


text:
Fix simple-chatbot example

Please describe the changes in your PR. If it is addressing an issue, please reference that as well.
This example has fallen behind on recent changes. It needed:

To trigger the speaking animations on BotStartedSpeakingFrame, BotStoppedSpeakingFrame
push the frame with a direction in the TalkingAnimation processor
await transport.capture_participant_transcription

LGTM! Thanks!

Thanks fo the fix @markbackman

authors: MoeMamdouh aconchillo markbackman

repo: pipecat-ai/pipecat


text:
Performance concerns about pure SQL vs pipeline_kafka

Hi @derekjn,
May I know something about the performance metric about pipeline_kafka extension?
Assuming that we consume data from kafka by pipeline_kafka extension, will it be much slower than pure sql data talks to pipelinedb directly?
Please show me some pieces or suggestions. Appreciate for help!
Allen Lai

Hi @derekjn,
Assuming we need continuously consume ~20k detailed data per seconds via pipeline_kafka extension which produced by 20 clients with multiple processes, would it be performance issue?
In this case, would pure sql be much sufficient?
Hoping to see your advise!
Thanks.

@cailin-lai pipeline_kafka internally uses COPY to write data to streams, so each consumer process is basically as fast as possible already. The parallelism argument to your consume command determines how many parallel consumer processes run, with a maximum of 1 consumer process per Kafka partition.

Thanks @derekjn, it is helpful!
Basically, according to our verifications, sounds like the data consuming performance index heavily depends on server disk i/o since the specific data scenarios, wherever it consumes from SQL or kafka. Anyway, SSD device is required.
I'd close this question.

authors: cailin-lai derekjn

repo: pipelinedb/pipelinedb


text:
Fix #49 Mode restriction applied only to the relevant types.

Mode restriction only applied to S3, HDFS, WebHDFS modes
@piskvorky @gojomo Would appreciate your opinion before bug fix release in 8 hours.

Looks good to me :+1:

Looks good to me – the unit test seems to cover the case that was failing for gensim. (But has that been separately tested to succeed with this branch?)

authors: gojomo piskvorky tmylk

license: mit


text:
FIx CareerCredentialSubject

関連

https://github.com/pitpa/sakazuki/pull/512
https://github.com/pitpa/ssi/pull/2

セルフマージします！

repo: pitpa/didkit


text:
Update loggregator-network-paths.html.md.erb

Since TAS 2.8, log-cache can ingest from the log-cache-syslog-server if it is enabled. The log-cache-syslog-server is colocated on the Doppler VM and will listen on port 6067.

Thanks @pivotal-Josh-Gainey!

authors: paigecalvert pivotal-Josh-Gainey

repo: pivotal-cf/docs-pcf-security


text:
Why opsman IP is hardcoded?!!

https://github.com/pivotal-cf/pcf-pipelines/blob/f8e5b5793729278d9c9a5c13d2c8d4d9be4d640a/install-pcf/azure/terraform/c0-azure-base/ops_manager.tf#L16

Hi @kamoljan, thanks, the team's implemented a fix for the issue you have raised. We will be releasing pcf-pipelines v24 with this fix at some point soon. Thanks again.

authors: abbyachau kamoljan

repo: pivotal-cf/pcf-pipelines


text:
NPM: Detect by package-lock.json

Since npm has envolved over the past and there should
always be a package-lock.json. when using npm we should
check for that file instead since package.json is also
available when using yarn.
A reason for that change is that when you are using yarn, it will detect both NPM and Yarn but it should only detect one of both or if you have - for whatever reason - both a yarn.lock  and a package-lock.json then it will still detect both.
If the simple detection is needed and this won't get merged I would suggest at least an additional test that yarn.lock is not present as long as you don't see a reason why there should be both at the same time required.

@forelabs Thank you so much for your contributions today! We are always open for improvements to LF as well as any input from the community on existing PRs or code. As you saw, we are also in the middle of improving our matching and having input from the community is very valuable due to having more use cases in the wild. We were actually recently talking about the proper way to get install paths for yarn as well as properly detecting Go Workspace projects so this helps us out quite a bit!
I have merged all of your PRs except this one as it has tests failing in CI. Also I am wondering if we want to do this because I worry about a case where someone does not commit their package.lock file. That would mean the LF would not trigger for that project. I'm open to justifications but just something that came to mind. Thanks again :)

Thank you, I have some more features introduced in our sub tool which I want to provide step by step here (e.g. package url generation like ruby gems, yarn.pm,... or copyright detection like copyright by author and others).
Regarding package-lock.json:
That was why I also had some concerns about it and already suggested a different solution. But maybe a more general solution could be introduced. How about the possibility to deactivate package manager detections? Eg introduce a flag ignored-package-managers where someone could list ignored package managers by name or as a subcommand with list, add, remove and we store those decisions in the decision file (same behavior as for ignored dependencies). By using this, one could have npm and yarn or go modules and go vendor activated while another could simply ignore one of both if one is enough.

Having ignored package manager options is a very interesting thought. Right now we have a way to ignore some package managers with takes_priority_over but it makes some assumptions about what kind of code a user may have. It works okay for Go cases but Yarn vs NPM is not as obvious. I would be open to an optional ignored package manager flow.

I will close this one and work on a ignored_package_managers command soon. I think it will be a better solution which might also be useful for other cases.

authors: forelabs xtreme-shane-lattanzio

repo: pivotal/LicenseFinder


text:
Implement smarter KVC handling for class fakes

This is an attempt at addressing #355. I have confirmed with @pivotal-tom-mcneely that this patch does address the situation that prompted him to file the issue.
I tried not make the KVC implementation too smart. The -valueForKey: implementation won't try to call into any other stubbed methods to retrieve a value for return. The main goal was to ensure that calling -valueForKey: won't simply throw an exception in cases where a real instance of the class wouldn't.

@idoru @tjarratt I've updated this based on your feedback. It no longer tries to determine whether the object being faked would be KVC-compliant for a given key.
Assuming CI goes green, how would you feel about merging this in?

:+1: Thanks for driving this out and continuously soliciting feedback, @briancroom. This has been a painful feature, both from an implementor's perspective and the community's.

authors: briancroom tjarratt

repo: pivotal/cedar


text:
Add toArray method to resource owner

The common project was updated to include a new method on the ResourceOwnerInterface. This PR includes those fixes and a small bit of housekeeping.

:+1: Thanks again!

authors: jasonvarga stevenmaguire


text:
Target tvOS Framework + Static Library

Added both a tvOS dynamic framework and static library target to allow for using ZipZap for Apple TV development.

Looks good to me, thanks for the contribution!

@rileytestut I just pulled from the merged master. Could you please make the two new tvOS schemes "Shared"? You can do this from the Xcode > [Scheme name] > Manage Schemes... dialog. I would do this myself but I'm currently running Xcode 7.0 and figure that 7.1 may inject different attributes into its schemes.

authors: pixelglow rileytestut

repo: pixelglow/ZipZap


text:
🛑 Senditure Email Marketing is down

In 5685ddb, Senditure Email Marketing (https://www.senditure.co.uk/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Senditure Email Marketing is back up in 4cc97c0.

repo: pixifydigitalagency/monitors


text:
GraphicsGeometry calculateBounds not taking alignment into account

Prologue
I wanted to make a pull request with a fix, but npm test is failing with the message:
Error: Unable to find Electron. Install 'electron' alongside Floss.
I tried to install electron and floss globally but that didn't fix the issue. Same problem for both master and dev.
Suddenly I had two problems instead of one :-)
Expected Behavior
When drawing with a line style having an alignment different from 0.5 the GraphicsGeometry bounds are not calculated correctly.
The correct bounds calculation can be seen in the previous updateLocalBounds implementation.
Current Code
  GraphicsGeometry.prototype.calculateBounds = function calculateBounds ()
        {

      ...
                for (var i = 0; i < this.graphicsData.length; i++)
                {
                    var data = this.graphicsData[i];

                    var type = data.type;
                    var lineWidth = data.lineStyle ? data.lineStyle.width : 0;

                    shape = data.shape;

                    if (type === math.SHAPES.RECT || type === math.SHAPES.RREC)
                    {
                        x = shape.x - (lineWidth / 2);  <<<<<
                        y = shape.y - (lineWidth / 2); <<<<<
                        w = shape.width + lineWidth; <<<<<
                        h = shape.height + lineWidth; <<<<<
   ....

Same for CIRC and ELIP
Correct Solution
The bounds needs to reflect the alignment like in the old implementation:
for (var i = 0; i < this.graphicsData.length; i++)

           {
               var data = this.graphicsData[i];

               var type = data.type;
               var lineWidth = data.lineStyle ? data.lineStyle.width : 0;
               var lineAlignment = data.lineStyle ? data.lineStyle.alignment : 0.5;
               var lineOffset = lineWidth * lineAlignment;

               shape = data.shape;

               if (type === SHAPES.RECT || type === SHAPES.RREC)
               {
                   x = shape.x - lineOffset;
                   y = shape.y - lineOffset;
                   w = shape.width + 2 * lineOffset;
                   h = shape.height + 2 * lineOffset;

I would like to make a Pull Request, but not being able to run the test suite kind of makes me not want to do so.
Thanks for a great library.

https://github.com/pixijs/pixi.js/pull/5991
Try pixijs.download/dev/pixi.js

We could use some more details about electron issue.
What version of npm/node and what operating system? Also please do a clean npm install my deleting your node_modules and see if that helps?
Graphics bounds issue should be fixed like Ivan said but I’ll keep this open for sorting the electron issue.

@ivanpopelyshev, super - can you say when that fix is released?
@bigtimebuddy, my bad turns out that specific terminal window was running an old version of node.  Test as running fine now, thanks.

@lwallent 5.2

@lwallent I didn't see an example of this occurring in your original post, is this the behavior that you're seeing?

Pixi Playground Example

@dylanbox Its different in dev: https://www.pixiplayground.com/#/edit/PxCgDoE88v_sfxQThrPWF , it doesnt account for miters, I'll check it in Flash later.

authors: bigtimebuddy dylanbox eXponenta ivanpopelyshev lwallent


text:
Spikes from strokes when a segment contains a neighboring point

When a path is drawn using moveTo and lineTo in PIXI.Graphics, and the path width is large enough that a segment contains a neighboring point, anomalous spikes can appear.
For instance: If you try to draw the path defined by the black circles and black segments, with a suitably large stroke width, you'll get the triangles & stroke shown here:

Note that a large spike emerges, facing in the opposite direction of the angle in the path. Here's a GIF:

A live version of this demo is available here.
Note that this problem is unrelated to overly-sharp miter joins. This spike occurs in a direction opposite the angle in the path. Also, it occurs with all join settings – this demo uses BEVEL.
In the wild
This problem occurs naturally if you shrink a path while keeping its stroke width fixed – for instance, in mapping applications. The spikes in the map below come from this problem:

Fix
I have a stop-gap fix implemented, which I will submit as a PR ASAP.
Thanks! ✌

Thank you for this PR! Awesome visual explanations.

authors: bigtimebuddy joshuahhh


text:
Sound stops on iOS 15.0.2

We've had customers report issues with sound in the latest version of iOS. Sound stops at unpredictable times. Myself and a colleague can reproduce by clicking the buttons on the Pixi sound demo page: https://pixijs.io/sound/examples, though it can take some time to occur.

We have and iOS  app with webview content were we use pixijs for a bunch of interactives. Unfortunately we have issues with sound as well but they are more related to changes in the audio output. If you have headphones on and unplug/disconnect then the canvas app loses sound almost all the time and I am forced to reload the entire page, which is bad because progress is can be lost. Old createjs interactives (canvas games) do not suffer the issue.

Are you able to isolate if this is a webaudio issue? Like, if you can find another pure webaudio example that still behaves incorrectly?

Well I tried howlr examples with an iPad and headphones and there its the same problem. Switching to headphones works, going back to speakers  doesnt. In howlr I tried the Music Player  where I need to press pause and play again to regain sound. It doesnt do that automatically.

Looking at the howler issues on GitHub, seems like a lot of the same: tons of iOS 15 issues. If forcing HTML Audio works, that might have to be a workaround for the moment.

Have the same issue of not being able to play sounds in iphone 15.3.
Any workaround?

import { PlayOptions, Sound, sound } from '@pixi/sound';
import { isIOS, pageVisibilityChange } from '@shared/utils/tools';
import { gsap } from 'gsap';
import { resolveAndKillTweens } from './animation';
/**

@description  处理背景音乐，一次只循环播放一个音频文件，如果请求播放新的音乐，则淡出/停止当前音乐。不改变其他声音的音量。
*/
class BGM {
// 当前播放音乐的别名
private _currentAlias?: string;
// 当前正在播放的音乐实例
private _current?: Sound;
// 当前设置的音量
private _volume = 0.5;
constructor() {
// 禁用自动暂停
sound.disableAutoPause = true;
}
/**

@description: 修复ios切换后台声音消失问题
*/
private _fixIosSound() {
if (isIOS()) {
pageVisibilityChange(
() => {
this._current.context.audioContext.resume();
},
() => {
this._current.context.audioContext.suspend();
},
);
}
}

/**

@description:  播放背景音乐，如果有正在播放的音乐，则淡出并停止之前的音乐
*/
public async play(alias: string, options?: PlayOptions) {
// 如果请求播放的音乐已经在播放，则不做任何操作
if (this._currentAlias === alias) return;
// 淡出然后停止当前音乐
if (this._current) {
const _current = this._current;
resolveAndKillTweens(_current);
gsap.to(_current, {
volume: 0,
duration: 1,
ease: 'linear',
onComplete: () => {
_current.stop();
},
});
}
// 找出要播放的新实例
this._current = sound.find(alias);
// 播放并淡入新音乐
this._currentAlias = alias;
this._current.play({ loop: true, ...options });
this._volume = this._volume ?? options?.volume;
this._current.volume = 0;
resolveAndKillTweens(this._current);
gsap.to(this._current, {
volume: this._volume,
duration: 1,
ease: 'linear',
onComplete: () => {
this._fixIosSound();
},
});
}

/**

@description:  获取背景音乐的音量
*/
public getVolume() {
return this._volume;
}

/**

@description:  设置背景音乐的音量
*/
public setVolume(value: number) {
this._volume = value;
if (this._current) {
this._current.volume = this._volume;
}
}

/**

@description:  暂停当前背景音乐
*/
public pause() {
if (this._currentAlias) {
const currentSound = sound.find(this._currentAlias);
if (currentSound) {
currentSound.pause();
}
}
}

/**

@description:  恢复当前背景音乐
*/
public resume() {
if (this._currentAlias) {
const currentSound = sound.find(this._currentAlias);
if (currentSound) {
currentSound.resume();
}
}
}
}

我已经修复好了

authors: bigtimebuddy manico prubie teejayhh zj12357

repo: pixijs/sound


text:
[BUG] grafics

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.

What problem did you encounter?
if u put the meniu from 2020 and acctivate the 1-21 grafics ur not going to get 1-21 only 1-10

what do you expect from using an abandoned menu

grafics

they fixed it w

authors: GoingCrazyDude Xpnp bluepilledgreat

repo: pizzaboxer/bloxstrap


text:
[BUG]

i have encountered the same issue always even with the fix

and here
Bloxstrap_20240614T193759Z.log
is the log btw

No description provided.


text:
[BUG] when i want to open roblox, nothing opens.

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.

What problem did you encounter?
so i am opening roblox and nothing is opening, it says "starting roblox" but nothing is opening.

Does it happen only with Bloxstrap? https://github.com/pizzaboxer/bloxstrap/wiki/Switching-between-Roblox-and-Bloxstrap

yes only bloxtrap doesnt work, normal roblox works.

i fixxed it, ty for you help!

i fixxed it, ty for you help!


text:
Fixed minor typo in comments

Hi,
I fixed a minor typo in comments

Hi @davecheney
Is there any chance to merge it?

@davecheney are there active maintainers for this package?

@eikenb @gbbr @mdlayher @kuba-- can we have active maintainers assigned to pkg/errors?

authors: beono gregwebs

repo: pkg/errors


text:
HUD moves to accomodate keyboard #2

i made a new pull request according to the previous pull request @MendyK because it was a bit outdated.
https://github.com/pkluz/PKHUD/pull/179
check it out and merge if possible

Thanks

@PGLongo thank you for the PL. should i add move buttons when keyboard shows up in another PL?

authors: Alexookah PGLongo

repo: pkluz/PKHUD


text:
Feature/tgyuu/#47

1. 📄 관련된 이슈 및 소개
closed #47 #48
2. 🔥변경된 점
- Firebase에서 데이터 불러올 때, Loading Lottie 추가
- Custom Calendar 구현
- Dummy Data였던 데이터들 실제 데이터로 변경
3. 📸 스크린샷(선택)

4. 💡알게된 혹은 궁금한 사항들
커스텀 캘린더 구현하는 부분은 블로그 포스팅으로 따로 나중에 업데이트 할게요!
한 번 알아두면 다음에도 다른 유형의 달력으로도 커스텀하기 편해서 포스팅 해놓으면 좋을 것 같아서요.
틀만 잡아두면 응용하기가 매우 쉽더라고요.

일단 따끔한 코드 리뷰 부탁드립니다!

그리고, 캡스톤 디자인 입상 축하드려요! 😁😁😁😁😁

티지와이유유 제가 없는 기간동안, 고생많으셨어요 !!
ㅎㅎ 저도 무사히 캡디 마치구, 남은 기간동안 와피 열심히 달려볼게요 !

태규상 고생많으셨어요 !!
운 좋게 저희 둘다 수상한 거 완즈히 기적이네요,, 하하 저도 오늘까지만 쉬고 내일 부터 다시 해커톤 시작할게요 !

@jeongjaino
해커톤 시작할게요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

이얏호 드디어 머지 라벨!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@jeongjaino

authors: jeongjaino tgyuuAn

repo: pknu-wap/WAPP


text:
Proposal to add S.random

Would you be interested in adding a helper function for a random number generator, S.random?
Math.random is limited in that you can't specify a range (it's [0, 1)), which is why Lodash and Underscore have their own implementation. It would be nice to have something like this in the library.

Have you given any thought to how we can keep this function pure? Perhaps by accepting and returning a seed value for the next number.

Yeah, a seed sounds like a good idea. It would also be nice is implementing newStdGen could include CSPRNG as an option also.

Let's keep the discussion in one place: ramda/ramda#1677.

authors: Risto-Stevcev davidchambers svozza

repo: plaid/sanctuary


text:
Invalid email addresses are showing as valid

I'm using the validatable module Some examples:
vicente.xxxxxx@gmail.com)
mailto:martyn.xxxxx@thetimes.co.uk
And some special characters:
�osvaldobukovski@hotmail.com
Are being allowed through.

Facing the same issue. Using devise 4.2 and emails ids such as abc@abc,com, abc@abc.com, & abc@abc.com. are all returning as valid.

Just ran into this.  Looks like the new default regex only validates that the domain doesn't contain "@" or "\s".  The old regex didn't validate against space chars. :(
You can set your own regex in config/initializers/devise.rb with:
config.email_regexp = /\A[^@\s]+@([^@\s\.]+\.)+[^@\s\.]+\z/
The above is a hybrid of the old and new defaults (rejects commas and spaces).

Yeah, if you need some more strict validation on email you can redefine it in config. See full answer here https://github.com/plataformatec/devise/issues/3820

authors: Guitaronin jeffblake nashby theRealNG

repo: plataformatec/devise


text:
NoMethodError in Devise::Sessions#new

mbs/app/views/devise/sessions/new.html.erb where line #21 raised:
undefined method `login' for #User:0x00000006e2bef8
`

                <%= f.text_field :login, autofocus: true, placeholder: "Usuário", class: "form-control" %>

`
`

You need to give us more information on how to reproduce this issue, otherwise there is nothing we can do. Please read CONTRIBUTING.md file for more information about creating bug reports. Thanks!


text:
Multiple emails

How do I send am email to multiple addresses?

nevermind sorry, figured it out

How did you manage to do it?

Sorry, I forget, it was awhile ago and I don't have access to the repository where I got it working anymore :/

authors: acreilly dedles


text:
swap node core watcher with Chokidar

This would likely resolve most of our issues with file watching.
https://www.npmjs.com/package/chokidar

The problem behind this is fixed in Node.js core https://github.com/nodejs/node/pull/51406

repo: platformatic/platformatic


text:
Revise Platformatic DB Authorization docs

Fixes #437.

@mcollina @marcopiraccini This PR is ready for review, but there are a couple of things to note:

I've completely reorganised the Platformatic DB Authorisation docs. I'm sorting out a preview site as it will be much easier for you to review these docs if you can see them in context on the OSS site.
There are lots of TODOs in comments. Most of them won't be addressed in this PR as it's already quite large, but I've noted them as things to be addressed in follow up PRs.

There are conflicts now

@mcollina I've made revisions based on your feedback.
Unfortunately I've not been able to easily set up a preview version of the OSS site with these docs as the static site that Docusaurus generates is 50MB+.
I think there's plenty more that we can do to improve the Platformatic DB Authorization docs (including some use case specific guides), but this is hopefully a good foundation for us to move forward with.
Are you comfortable with landing this PR and then iterating on these docs in future PRs?

authors: mcollina simonplend


text:
Fix - Set isLeft to true to use leftIconColor on renderIcon

O que foi feito? 📝
Setar como true o parametro isLeft quando tiver o icone da esquerda, para que ele possa utilizar o leftIconColor.
Screenshots ou GIFs 📸

Tipo de mudança 🏗

[ ] Nova feature (mudança non-breaking que adiciona uma funcionalidade)
[ x ] Bug fix (mudança non-breaking que conserta um problema)
[ ] Refactor (mudança non-breaking que melhora o código ou débito técnico)
[ ] Chore (nenhuma das anteriores, como upgrade de libs)
[ ] Breaking change 🚨

Checklist 🧐

[ x ] Testado no iOS
[ ] Testado no Android

Boa 😍

authors: ammichael manoelrpn

repo: platformbuilders/react-native-elements


text:
pio command not found

[X ] I have reset Atom to defaults prior to submitting report.
[ ] I have not reset Atom to defaults prior to submitting report.

Description

Pio command not found on terminal when i want to use serial monitor
Steps to reproduce

Open serial monitor and terminal can't find pio command

Expected behavior:
Serial monitor show serial messages
Actual behavior:
Terminal can't find pio command
Reproduces how often:
Versions

> atom --version
Atom    : 1.34.0
Electron: 2.0.16
Chrome  : 61.0.3163.100
Node    : 8.9.3

> apm --version
apm  2.1.3
npm  6.2.0
node 8.9.3 x64
atom 1.34.0
python 2.7.16
git 2.20.1

OS name and version:
Distributor ID:	Debian
Description:	Debian GNU/Linux buster/sid
Release:	unstable
Codename:	sid
Platformio-ide-terminal version:
2.9.1
Additional Information

PATH enviroment variable of the terminal don't have the path for my pio command (on my home dir). Don't know how to set it.

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

But my pio command is here:
/home/holic/bin/pio

Hello @holic-cl! Thank you for reaching out with this query.
You should probably symlink to the expected path in usr, alternatively try to export your home path.
To export, add a modified version of this (that suits your particular needs) to your .bashrc
export PATH="$HOME/bin:$PATH"
Without either a symlink or exporting the path its unlikely any terminal/shell will magically know where your own bins are stored.

Hi @ the-j0k3r thanks for your answer.
My .bashrc file already have my home path, this is the content of PATH var on my bash-terminal:

echo $ PATH
/home/holic/bin:/home/holic/.local/bin/:/home/holic/app/node-v11.10.0-linux-x64/bin:/usr/local/bin:/usr/bin:/ bin: / usr / local / games: / usr / games: /home/holic/.platformio/penv/bin: /home/holic/app/node_modules/.bin

Seems to be problem on the terminal where PATH var is not being exported from .bashrc file, do not know why, maybe i am missing a specific setting or reassigning the PATH in some place

@holic-cl does your setup work on a terminal besides platformio-ide-terminal or not?
Try to export the path once on the terminal and see if that does it.
Try on terminal.

export PATH="$PATH:/home/holic/bin/pio
Confirm that does it.

Else try.

echo export PATH="$PATH:/home/holic/bin/pio  >> ~/.bash_profile"

You can also export that path into .bashrc
The orther solution is symlinking
cd /usr/bin sudo ln -s /home/holic/bin pio
However if you are still getting issues you may want to relocate your binaries into their expected path rather than your home folders.

@the-j0k3r my problem is with atom terminal, which does not seem to read the .bashrc file, but i just tried with .bash_profile file as you suggest and it is working. I don't know if is normal to not read the .bashrc.
I was looking for a solution that did not involve the symbolic link, but i had it in mind.
Thank you a lot!

@the-j0k3r my problem is with atom terminal, which does not seem to read the .bashrc file, but i just tried with .bash_profile file as you suggest and it is working.

The problem here is that platformio-ide-terminal is using term.js to interact with system shells, etc, that library has been abandoned for years and its buggy. In order to improve these types issue, we would need to implement xterm.js  same as vscode uses, its currently developed, more compatible with different OS/shells terminals etc.
This project has no official developers anymore either (the main dev is just merging PR's and doing releases and Im sort of managing the bug tracker), anything like fixes/and switching to other libraries has to come from users, except this project doesnt have enough skilled users that want/can or have time to implement this much needed change. SO iunless someone comes along willing and able, this is it.
Glad my suggestion worked out for you in the end though =)

repo: platformio/platformio-atom-ide-terminal


text:
Fix sheen glossiness being consistent throughout the engine

Description
Sheen glossiness wasn't applied correctly from the GLB due to an inconsistency with the sheen glossiness material parameter naming.

Yep! Let me prepare a PR for that as well.

repo: playcanvas/engine


text:
[WIP]: Simplify Travis matrix configuration

This is just me playing with Travis. Don't bother.

oh wow, travis didn't even trigger.
How rude of you, Travis. At least throw a Syntax error or something.

See https://travis-ci.com/playframework/play-samples/requests:

Could not parse playframework/play-samples/.travis.yml@71883cb58e8a4dc4

authors: dwijnand ignasi35 marcospereira

repo: playframework/play-samples


text:
Strange timeout behaviour

I am looking at this trace from one of my test executions - The test failed on asserting url p.Expect.Page(p.Page).ToHaveURL(regexp.MustCompile(expected))

I have configured the timeout to be 50000ms, but for some reason the assertion failed after less than 1 second - why could this happen, I am confused?
I received this log in my CI:
Page URL expected to be 'warning'
Actual value: <nil>
Call log:
 with timeout 50000ms
waiting for locator(':root')

Page.Goto default timeout 30000ms,  and ToHaveURL  depends on playwright.NewPlaywrightAssertions(timeout), default 5000ms.

I did set the playwright.NewPlaywrightAssertions to 50000ms and I see that it is set correctly in the log.
From the debugging I did I think the problem is with the version of Chrome I use. I need to test with Chrome 83, so I have downloaded it separately and I am passing it when launching Chromium (with the ExecutablePath option).
I noticed that every time the test fails in such a strange way it is always with Chrome 83 and never with the Chrome version that comes with Playwright. So it appears that somehow the Chrome 83 gets stuck or even crashes (sometimes I get Target crashed  message in the logs).
From what I understand using older versions of Chrome is not officially supported and issues can be expected, correct? If that is the case I guess I just have to assume the tests with Chrome 83 will be flaky.

repo: playwright-community/playwright-go


text:
🛑 Treatmentbank is down

In 584c405, Treatmentbank (https://tb.plazi.org/GgServer/search?fullText.ftQuery=lepus&fullText.matchMode=prefix&taxonomicName.taxonomicName=&taxonomicName.isNomenclature=true&taxonomicName.exactMatch=true&taxonomicName.order=&taxonomicName.family=&taxonomicName.genus=&taxonomicName.species=&BibMetaData.docAuthor=&BibMetaData.docDate=&BibMetaData.docTitle=&BibMetaData.docOrigin=&BibMetaData.part=&BibMetaData.pageNumber=&BibMetaData.extId=&materialsCitation.location=&materialsCitation.country=&materialsCitation.stateProvince=&materialsCitation.typeStatus=All+Types&materialsCitation.collectionCode=&materialsCitation.specimenCode=&materialsCitation.LSID=&materialsCitation.longitude=&materialsCitation.latitude=&materialsCitation.degreeCircle=1&materialsCitation.elevation=&materialsCitation.elevationCircle=100&indexName=0&subIndexName=0&minSubResultSize=0) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Treatmentbank is back up in 9472a20 after 20 minutes.

repo: plazi/monitoring


text:
🛑 Treatmentbank is down

In 14652ea, Treatmentbank (https://tb.plazi.org/GgServer/search?fullText.ftQuery=lepus&fullText.matchMode=prefix&taxonomicName.taxonomicName=&taxonomicName.isNomenclature=true&taxonomicName.exactMatch=true&taxonomicName.order=&taxonomicName.family=&taxonomicName.genus=&taxonomicName.species=&BibMetaData.docAuthor=&BibMetaData.docDate=&BibMetaData.docTitle=&BibMetaData.docOrigin=&BibMetaData.part=&BibMetaData.pageNumber=&BibMetaData.extId=&materialsCitation.location=&materialsCitation.country=&materialsCitation.stateProvince=&materialsCitation.typeStatus=All+Types&materialsCitation.collectionCode=&materialsCitation.specimenCode=&materialsCitation.LSID=&materialsCitation.longitude=&materialsCitation.latitude=&materialsCitation.degreeCircle=1&materialsCitation.elevation=&materialsCitation.elevationCircle=100&indexName=0&subIndexName=0&minSubResultSize=0) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Treatmentbank is back up in 61f96dd after 23 days, 6 hours, 27 minutes.


text:
🛑 Treatmentbank is down

In fd233bc, Treatmentbank (https://tb.plazi.org/GgServer/search?fullText.ftQuery=lepus&fullText.matchMode=prefix&taxonomicName.taxonomicName=&taxonomicName.isNomenclature=true&taxonomicName.exactMatch=true&taxonomicName.order=&taxonomicName.family=&taxonomicName.genus=&taxonomicName.species=&BibMetaData.docAuthor=&BibMetaData.docDate=&BibMetaData.docTitle=&BibMetaData.docOrigin=&BibMetaData.part=&BibMetaData.pageNumber=&BibMetaData.extId=&materialsCitation.location=&materialsCitation.country=&materialsCitation.stateProvince=&materialsCitation.typeStatus=All+Types&materialsCitation.collectionCode=&materialsCitation.specimenCode=&materialsCitation.LSID=&materialsCitation.longitude=&materialsCitation.latitude=&materialsCitation.degreeCircle=1&materialsCitation.elevation=&materialsCitation.elevationCircle=100&indexName=0&subIndexName=0&minSubResultSize=0) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Treatmentbank is back up in 3fb6697 after 17 days, 22 hours, 38 minutes.


text:
🛑 Treatmentbank is down

In 0961372, Treatmentbank (https://tb.plazi.org/GgServer/search?fullText.ftQuery=lepus&fullText.matchMode=prefix&taxonomicName.taxonomicName=&taxonomicName.isNomenclature=true&taxonomicName.exactMatch=true&taxonomicName.order=&taxonomicName.family=&taxonomicName.genus=&taxonomicName.species=&BibMetaData.docAuthor=&BibMetaData.docDate=&BibMetaData.docTitle=&BibMetaData.docOrigin=&BibMetaData.part=&BibMetaData.pageNumber=&BibMetaData.extId=&materialsCitation.location=&materialsCitation.country=&materialsCitation.stateProvince=&materialsCitation.typeStatus=All+Types&materialsCitation.collectionCode=&materialsCitation.specimenCode=&materialsCitation.LSID=&materialsCitation.longitude=&materialsCitation.latitude=&materialsCitation.degreeCircle=1&materialsCitation.elevation=&materialsCitation.elevationCircle=100&indexName=0&subIndexName=0&minSubResultSize=0) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Treatmentbank is back up in a61df2c.