Question about performance

./frankenphp-linux-x86_64 --version
FrankenPHP v1.0.0 PHP 8.3.0 Caddy v2.7.5 h1:HoysvZkLcN2xJExEepaFHK92Qgs7xAiCFydN5x5Hs6Q=
Using non-worker mode:
sudo GOMAXPROCS=4 GOMEMLIMIT=10GiB GOGC=off ./frankenphp-linux-x86_64 run --config caddy.conf --adapter caddyfile php_server

caddy.conf
{
	frankenphp
	order php_server before file_server
	http_port 8080
	frankenphp {
		num_threads 64
	}
}
localhost:8080 <IP_ADDRESS>:8080 {
	root * ./
	php_server
}

index.php
<?php
echo 'test';

with:
ab -n 10000 -c 64 http://<IP_ADDRESS>:8080/

=> I get ~700 requests per second (cpu usage 45%, 2-core intel cpu with hyperthreading)

Using worker mode:
sudo GOMAXPROCS=4 GOMEMLIMIT=10GiB GOGC=off ./frankenphp-linux-x86_64 run --config caddy.conf --adapter caddyfile php_server

caddy.conf
{
	frankenphp
	order php_server before file_server
	http_port 8080
	frankenphp {
		num_threads 64
		worker index.php 16
	}
}
localhost:8080 <IP_ADDRESS>:8080 {
	root * ./
	php_server
}

index.php
<?php

do {
    $handler = static function () {
        echo 'test';
    };
// skip gc collect for this test
   \frankenphp_handle_request($handler);
} while (true);

with:
ab -n 10000 -c 64 http://<IP_ADDRESS>:8080/

=> I get ~7.5k requests per second (cpu usage 95%, 2-core intel cpu with hyperthreading)

Using the same with nginx/fpm I get ~2.5k requests per second.
Worker mode is great!
Is it expected that non-worker mode is much slower than fpm/nginx?

The project is still in the early stages and we're working on improving performance.
The static build (unlike Docker images and non-static builds) is known to have a bug with JIT, which is disabled by default. Also, be sure that you're using the same PHP version, with the same set of extensions (by default, the static build embeds almost all PHP extensions) and the same php.ini.
In addition, many parameters can affect performance, especially in stress tests like that. Especially, the Go garbage collector may need special tuning: #366 (but I saw that you disabled it). There are also likely bugs (leaks?) and possible optimizations in the FrankenPHP core. And Caddy is known to be a bit slower (but has more features, including some improving real-life performance such as Early Hints) than NGINX, so, to test FrankenPHP only, I suggest benchmarking Caddy + FPM vs FrankenPHP.
Anyway, thanks for the benchmark! Benchmarks like this, profiles to find the bottlenecks, and of course, contributions to fix them are very welcome and will help improve performance!

I also compared the performance with our existing php implementation. Unfortunately, FrankenPHP is about 10 - 15% slower than the native php binaries. This is for stress test benchmarks and when serving the website in general. Is this an expected behavior or a bug? If you want, I can provide more specific details.

Can you share your configuration so we can dig deeper?

I'd be curious how it holds up with 1.0.3 as well if you get a chance to test it again.

Sure. Here is an example repo of a dummy Laravel app (Statamic) that requires a lot of IO access, due to the architecture of the CMS (no database, based on files): https://github.com/o1y/statamic-io-performance
I use a quite simple script response.sh, which just records a few response times and calculates the average response, without simultaneous access.
I use php 8.3.0 in both cases.  In my actual project, the execution times are even slower (around 10-15%), that's why I'm not using frankenphp in production yet. Maybe I'm doing something wrong or this slower performance is by intention, so happy about any feedback :)

Can we see your php.ini files? FrankenPHP uses the official PHP engine, so there should be no difference regarding IO compared to FPM.
I suspect different configurations, missing extensions or something like that.

Thanks guys! I just did another comparison, but just used the exact same build config via static-php-cli to build a php cli, as you did in your build process. This makes the performance the same, so there's no performance overhead from frankenphp, sorry about that :)
Before, I was comparing it with the php binaries from Laravel Herd, probably they're using a different build configuration.

I use a quite simple script response.sh, which just records a few response times and calculates the average response, without simultaneous access.

I think it's normal that single thread access is slower than fpm due to overhead of TSRM (http://php.adamharvey.name/manual/ro/internals2.memory.tsrm.php).

The overhead of cgo is quite substantial (in fact, it's the dominating thing in the last profile I did of 1.0.3), and might be one reason you're seeing slower request times. Also, make sure to remove any symfony polyfills via replace in your composer.json, so if you are missing any extensions the app will crash instead of using the polyfill.
Reducing the context switches between go/php should improve performance hugely (big chunks of output, etc). For a simple script, I was seeing over 17k reqs per sec with frankenphp on a big server, completely saturating my connection; so I suspect this is an issue with polyfills/extensions or your code vs. frankenphp being slower (though it might be, I can't test it yet). I need to upgrade my network interfaces to 10g/bit to get CPU bound to properly compare frankenphp to other SAPIs, which is something I hope to have done by Q2.

Handled in https://github.com/dunglas/frankenphp/issues/481.


Introduce tests that utilize a TOM

Talking with Rob and Amanda these seem like the tests to write. These would use the current docker compose setup paired with TOM's docker compose setup, so there is a current tom in-the-loop for the test.
Test 1:

Spin up tom and RESSPECT in a docker-compose env
Ensure there are objects in the tom's database before asking for sepctra.  (done in in the test_ealsticc2_spectrumcycle.py TOM test)
Trigger RESSPECT to askforspectrum then use wantedspectra  to ensure the spectrum is on the list

Test 2 (slightly more complex):

Spin up tom and RESSPECT in a docker-compose env
Load sample hot transients from the TOM side
Trigger RESSPECT to gethottransients and verify we recieve the test data.

Test 3:

Spin up tom and RESSPECT in a docker-compose env
Trigger RESSPECT to askforspectrum then use wantedspectra  to ensure the spectrum is on the list
Have a piece of test code do the telescope piece of declaring an intent to take the spectrum and reporting data back
Verifying that RESSPECT can call getknownspectruminfo , it gets the test data from the telescope.


use PureConfig for misc. runtimesManifest configuration

Refactor runtimes.json so that the misc. simple configuration
fields are specified using PureConfig (whisk.runtimes),
leaving only the more complex arrays of runtimes and blackboxes
in runtime.json.  Since we expect deployments to frequently
override the set of runtimes, it makes sense to leave them as
being defined by a json file that is not included in the
Invoker/Controller docker image (simplify override).  The flags
moved to PureConfig are simple fields, and thus easier to override
via envvars if necessary.
Restores the ability to easily override bypassPullForLocalImages.
Fixes #3245.

PG1 / 2590 🏃

PG1 / 2604 🏃

rebased to latest master; PG1/2605 🏃

PG3 / 1841 🔵


⚠ Bofrost.es has degraded performance

In e529bba, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1564 ms

Resolved: Bofrost.es performance has improved in e284d9d after 6 minutes.


add the ability for eventually to defaultly handle AssertionErrors

A strong use case for using eventually is so that something you are
asserting eventually becomes true. Before this change you would have to
explicitly pass AssertionError as an exception to handle. Now it will
do this automatically. This enables you to pass a different exception if
you should so choose.
Fixes #753

Two things I thought I would point out:

I don't think ./gradlew build actually runs these tests I made edits to. I made some changes locally that I did not commit to make sure they did work. I am not sure if this is on purpose or not, but I just thought I would point it out.

I would consider deprecating eventually(duration: Duration, predicate: (T) -> Boolean, f: () -> T): T . To me there is not a super clear idea why I would do this over just a "normal eventually" with some type of assertion in it. Also, this method is not handling any exceptions, which makes its behavior different than the other two overloaded functions that do. If it is desirable I could include this in the PR, lmk.

Ok, so the tests aren't running because we are currently changing KT to MultiPlatform, and we're still adjusting test execution on the master branch.

What you can do right now is instead of basing off master, base it off release/3.3 if you want to test things quickly, and we can merge into master later on

Just did that locally and it is all good :+1:  Or are you saying I should close this PR and open it against release/3.3?

We can point it to 3.3 here, so that we take a look at that integration right away, and merge it as soon as possible. What do you think?

Hmmm does not seem clean...

I think you need to base your branch off of the release branch, and not master. This is making Github try to merge everything from master into 3.3

:fireworks

Travis seems to be failing, but not due to tests. Looks related to: https://travis-ci.community/t/install-of-openjdk11-is-failing/1914/6

Travis issue solved itself. I set it to build again.

Can we add a test with a custom exception, just to ensure it's still working? We were treating AssertionError as the custom exception, but I'd like to have a test which will accept another exception to be passed.

I could add one, but I think https://github.com/kotlintest/kotlintest/pull/754/files#diff-11b9d0bed259e1191ce787f4f94cb147R55 covers that case, right?

You're correct.
I think this is good to go!

This got a little ugly since I started from basing off master and now pushing to the release branch, but I think the requested changes are done.

It's all good. I'm just thinking of how I'm gonna merge this, as we're moving assertions to MPP. This is all fine and you don't need to do anything else!

Ok, so here's the thing: We changed the master branch to normal. Due to that, I changed your PR to be to master instead of to release. I'll just get CI to build again, and we'll see if this can successfully be merged.

Merged manually.


Google fonts not being displayed

Because of the way the scss is generated, the @import statement is appearing somewhere in the middle, after the normalize and toc imports.
Moving the @import of googlefonts to the first line (in the browser developer tools) fixes this, we do see the Google fonts correctly.
My gut feeling is this is to do with the sequence in which the scss file is generated (not sure, not a front end developer).
Can you please take a look and make a fix?
I love your theme!

Font is not displayed because first line is not the import from google fonts

Font displayed correctly when import from google fonts is the first line

I will look into this, but I think you are right. I bet I didn't notice
when I made changes because it was cached. I'll try to patch that today.
On Fri, Jul 1, 2022 at 11:40 AM algoexpt @.***> wrote:

Because of the way the scss is generated, the @import
https://github.com/import statement is appearing somewhere in the
middle, after the normalize and toc imports.
Moving the @import https://github.com/import of googlefonts to the
first line (in the browser developer tools) fixes this, we do see the
Google fonts correctly.
My gut feeling is this is to do with the sequence in which the scss file
is generated (not sure, not a front end developer).
Can you please take a look and make a fix?
I love your theme!
[image: Screenshot_20220702_003858]
https://user-images.githubusercontent.com/22828481/176926509-6dec6345-44c0-4bc8-8c0d-f1f5514199d2.png
Font is not displayed because first line is not the import from google
fonts
[image: Screenshot_20220702_003925]
https://user-images.githubusercontent.com/22828481/176926591-e80b9877-99d8-40dd-9c74-e1d051e8ca22.png
Font displayed correctly when import from google fonts is the first line
—
Reply to this email directly, view it on GitHub
https://github.com/pacollins/calligraphy/issues/6, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACWVJSL2423XVSFCJQEPMTTVR4GPVANCNFSM52NDRZKA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

@algoexpt - If you would be so kind as to check the PR, I'll go ahead and merge! I took the opportunity to also include font files into the theme for those who prefer to not use CDNs.

Checked, and it works! Good idea to include font files in static as well. Thanks!

I'll reopen, you can close after you merge the PR


SPI boss fight lvl 5.1

makefiles to current standard

SPI.h + SPI.c -> ch32v003_SPI.h

converted runtime branches to compiletime branches via #if defined
converted runtime math to compile-time math
added compile-time checks for #defines
CH32V003_SPI_IMPLEMENTATION implementation block now ineffective

was able to static inline all functions

clear user instructions in library
all functions declared in easy-to-read manner where user can find them
clear library structure
exterminated stray spaces in preprocessor #define requirements

nrf24l01.c and nrf24l01.h

further improved function naming
not ported to tabs because of synchronicity to original (platform agnostic) library

writes to port pins made write-only instead of read-write

Arduino files not ported to tabs because .arduino15/preferences.txt will by default nuke tabs to spaces on edit because of default editor.tabs.expand=true

main README.md added info on how to make without sudo

removed binaries minichlink and minichlink.so and added them to .gitignore because making any example, they are reliably built nowadays, compile time is ~1s on my weaksauce i5-5300U (dual-core ultrabook processor released 8 yrs ago) so it's not as annoying as compiling riscv-newlib for 60 minutes at 100% CPU use. This way they won't ever get committed again and users always have a fresh version when pulling from repo. hope testing workflows won't have an issue with this, but apparently, they don't.

minichlink makefile reverted to original state

added nRF library author to RX readme

I hope this is even more appropriate for this project.

Good enough for now - I will update this from main.


Handle featuring of undated topical events

Topical events can be created without a start and end date, but the organisation featurings page in admin assumes that any featured topical events have these dates set. This updates the view code to handle topical events that don't have a start and end date, and also those that only have a start date.
Story: https://www.agileplannerapp.com/boards/173808/cards/9131

a minor comment about the test title, rest looks good.

Good spot, corrected.


webp_transform plugin: Use Accept header from client request.

Also switches from obsolete TSDebug() to TSDbg().

OK changes made.

I'm not sure if we should make this change. Accept header on the origin side should be the same as the one on the client side unless something modifies it. If it's not the same, that means something modified it for some reason, and this change ignores it.

Yahoo origin servers sanitize some responses, which includes not putting the Accept header field in the response.
What's a plausible scenario where the server would communicate something to the client by changing the accept header?

I don't see the connection with sanitizing responses. Accept header field in the response? Can you tell me some more detail?
I have no idea in what case one would want to modify Accept header, but if you need this change, something on your ATS modifies it, right?

I still don't understand the context.
Your origin server includes Accept header in HTTP response?
How using Accept header from a client helps something in the situation?
In any case, the behavior should be configurable at a minimum because it could affect somebody else's use case. And the default behavior should be current behavior unless there's some justification.

@bryancall any thougths?  Our relevant Jira is YTSATS-3928.

I agree we should use the client Accept header.

[approve ci cmake]

[approve ci centos]


Update AppendCollection schemas and algorithms

Updated following discussion in https://github.com/ceramicnetwork/CIP/pull/85#discussion_r584966753

Updated the graphic and changed sliceNumber to sliceIndex for consistency with other naming conventions.

Thanks for all the feedback!


Update github-releases to 0.3.2

This PR fixes two issues:

github-releases versions below 0.3.1 required an outdated version of prettyjson that itself required a Node version <= 0.11.0 and would log a warning otherwise.
Downloading releases from behind a proxy would fail with Fatal error: Request path contains unescaped characters.

Refs atom/atom#11525

Yeah, thanks a lot! After removing the proxy settings in .npmrc and my shell (http_proxy, https_proxy), the fatal error is gone.

Thanks @50Wliu

Published in 2.1.4


Unable to render site

Im unable to render the site due to this error
WARN 2023/01/23 11:14:22 Module "hugo-theme-relearn" is not compatible with this Hugo version; run "hugo mod graph" for more information.
Error: add site dependencies: load resources: loading templates: "/home/mistrysiddh/Documents/excel-tutorials/themes/hugo-theme-relearn/layouts/partials/header.html:142:1": parse failed: template: partials/header.html:142: function "break" not defined

The required minimum Hugo version is 0.95.0


feat(jobs): initial set of samples for jobs

Issue: Samples to be added to the following documentation

https://cloud.google.com/run/docs/create-jobs
https://cloud.google.com/run/docs/execute/jobs
https://cloud.google.com/run/docs/execute/jobs-on-schedule
https://cloud.google.com/run/docs/configuring/max-retries
https://cloud.google.com/run/docs/configuring/task-timeout
https://cloud.google.com/run/docs/configuring/parallelism

@pattishin
Thanks for the PR! 🚀✅ Lint checks have passed.

@pattishin
Thanks for the PR! 🚀✅ Lint checks have passed.

@pattishin
Thanks for the PR! 🚀
Unfortunately it looks like some of our CI checks failed. See the Contributing Guide for details.

⚠check_terraform
Failed Terraform check. More details below.

Running terraform fmt
Running terraform validate
terraform_validate ./autoscaler_instance_group
Success!
The configuration is valid.
terraform_validate ./certificate_manager/dns_managed_zone_with_wildcard_certificate
Success!
The configuration is valid.
terraform_validate ./certificate_manager/google_managed_cert
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_liveness_probe_gRPC
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_liveness_probe_http
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_startup_probe_http
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_startup_probe_tcp
Success!
The configuration is valid.
terraform_validate ./cloud_run_jobs_create
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 25, in resource "google_project_service" "cloudrun_api":
│

 25:   project            =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 35, in resource "google_cloud_run_v2_job" "default":
│

 35:   project      =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
terraform_validate ./cloud_run_jobs_execute_jobs_on_schedule
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 23, in data "google_compute_default_service_account" "default":
│

 23:   project =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 30, in resource "google_project_service" "cloudrun_api":
│

 30:   project            =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 37, in resource "google_project_service" "computeengine_api":
│

 37:   project            =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 44, in resource "google_project_service" "cloudscheduler_api":
│

 44:   project            =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 52, in resource "google_cloud_run_v2_job" "default":
│

 52:   project      =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
terraform_validate ./cloud_run_jobs_max_retries_create
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 25, in resource "google_project_service" "cloudrun_api":
│

 25:   project            =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 33, in resource "google_cloud_run_v2_job" "default":
│

 33:   project      =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
terraform_validate ./cloud_run_jobs_task_parallelism_create
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 25, in resource "google_project_service" "cloudrun_api":
│

 25:   project            =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 33, in resource "google_cloud_run_v2_job" "default":
│

 33:   project      =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
terraform_validate ./cloud_run_jobs_task_timeout_create
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 25, in resource "google_project_service" "cloudrun_api":
│

 25:   project            =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 33, in resource "google_cloud_run_v2_job" "default":
│

 33:   project      =
data.google_project.project
.project_id
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
terraform_validate ./cloud_run_service_add_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_configuration
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_connect_cloud_sql
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_custom_domain_mapping
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_deploy_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_image_processing
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_ingress
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_interservice
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_multiple_regions
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_noauth
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_pubsub
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_remove_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_scheduled
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_secure_services
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_static_outbound
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_tasks
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_gradual_rollout
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_latest_revision
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_rollback
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_split
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_split_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_system_packages
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_basic
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_basic_auditlogs
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_basic_gcs
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_full
Success!
The configuration is valid.
terraform_validate ./cloudrun_service_access_control
Success!
The configuration is valid.
terraform_validate ./cloudrun_service_identity
Success!
The configuration is valid.
terraform_validate ./cloudrun_vpc_access_connector
Success!
The configuration is valid.
terraform_validate ./composer_multi_project_monitoring
Success!
The configuration is valid.
terraform_validate ./compute/basic_vm
Success!
The configuration is valid.
terraform_validate ./compute/external_address
Success!
The configuration is valid.
terraform_validate ./compute/os_login_ssh_key
Success!
The configuration is valid.
terraform_validate ./compute/service_account_for_instances
Success!
The configuration is valid.
terraform_validate ./compute_add_persistent_disk
Success!
The configuration is valid.
terraform_validate ./compute_disk
Success!
The configuration is valid.
terraform_validate ./compute_packet_mirroring_full
Success!
The configuration is valid.
terraform_validate ./compute_reservation
Success!
The configuration is valid.
terraform_validate ./compute_run_shutdown_scripts
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_basic
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_private
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_private_forwarding
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_private_peering
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_quickstart
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_reverse_lookup
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_service_directory
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_with_dnssec
Success!
The configuration is valid.
terraform_validate ./dns_policy_basic
Success!
The configuration is valid.
terraform_validate ./dns_policy_inbound
Success!
The configuration is valid.
terraform_validate ./dns_policy_outbound
Success!
The configuration is valid.
terraform_validate ./dns_record_set_basic
Success!
The configuration is valid.
terraform_validate ./dns_response_policy_basic
Success!
The configuration is valid.
terraform_validate ./dns_response_policy_rule_basic
Success!
The configuration is valid.
terraform_validate ./eventarc_basic_tf
Success!
The configuration is valid.
terraform_validate ./eventarc_workflows
Success!
The configuration is valid.
terraform_validate ./external_cdn_lb_with_backend_bucket
Success!
The configuration is valid.
terraform_validate ./external_http_lb_bucket_backend
Success!
The configuration is valid.
terraform_validate ./external_http_lb_mig_backend
Success!
The configuration is valid.
terraform_validate ./external_http_lb_mig_backend_custom_header
Success!
The configuration is valid.
terraform_validate ./external_ssl_proxy_lb_mig_backend
Success!
The configuration is valid.
terraform_validate ./external_ssl_proxy_lb_mig_backend_custom_header
Success!
The configuration is valid.
terraform_validate ./external_tcp_proxy_lb_mig_backend
Success!
The configuration is valid.
terraform_validate ./external_tcp_proxy_lb_mig_backend_custom_header
Success!
The configuration is valid.
terraform_validate ./external_vpn_gateway
Success!
The configuration is valid.
terraform_validate ./firewall_with_target_tags
Success!
The configuration is valid.
terraform_validate ./flask_google_cloud_quickstart
Success!
The configuration is valid.
terraform_validate ./ha_vpn_gateway_gcp_to_gcp
Success!
The configuration is valid.
terraform_validate ./ha_vpn_over_interconnect_10GB_attach
Success!
The configuration is valid.
terraform_validate ./ha_vpn_over_interconnect_5GB_attach
Success!
The configuration is valid.
terraform_validate ./health-check-region
Success!
The configuration is valid.
terraform_validate ./health-check-tcp
Success!
The configuration is valid.
terraform_validate ./iam_create_deny_policy
Success!
The configuration is valid.
terraform_validate ./instance_custom_hostname
Success!
The configuration is valid.
terraform_validate ./instance_virtual_display_enabled
Success!
The configuration is valid.
terraform_validate ./int_https_lb_https_redirect
Success!
The configuration is valid.
terraform_validate ./internal_http_lb_with_mig_backend
Success!
The configuration is valid.
terraform_validate ./internal_tcp_udp_lb_with_mig_backend
Success!
The configuration is valid.
terraform_validate ./media_cdn_keyset
Success!
The configuration is valid.
terraform_validate ./media_cdn_quickstart
Success!
The configuration is valid.
terraform_validate ./media_cdn_security_policies
Success!
The configuration is valid.
terraform_validate ./network_custom_mtu
Success!
The configuration is valid.
terraform_validate ./network_management_connectivity_test_addresses
Success!
The configuration is valid.
terraform_validate ./network_management_connectivity_test_instances
Success!
The configuration is valid.
terraform_validate ./os_login
Success!
The configuration is valid.
terraform_validate ./private_service_connect_google_apis
Success!
The configuration is valid.
terraform_validate ./privateca_capool_all_fields
Success!
The configuration is valid.
terraform_validate ./privateca_capool_basic
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_authority_basic
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_authority_byo_key
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_authority_subordinate
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_config
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_csr
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_no_authority
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_with_template
Success!
The configuration is valid.
terraform_validate ./privateca_quickstart
Success!
The configuration is valid.
terraform_validate ./region_autoscaler_basic
Success!
The configuration is valid.
terraform_validate ./regional-external-http-load-balancer
Success!
The configuration is valid.
terraform_validate ./regional_external_http_load_balancer
Success!
The configuration is valid.
terraform_validate ./shared_vpc_http_ilb_with_mig_backend
Success!
The configuration is valid.
terraform_validate ./shared_vpc_http_ilb_with_mig_backend_basic_example
Success!
The configuration is valid.
terraform_validate ./shared_vpc_http_ilb_with_mig_backend_cross_reference_example
Success!
The configuration is valid.
terraform_validate ./shared_vpc_https_ilb_with_mig_backend_basic_example
Success!
The configuration is valid.
terraform_validate ./shared_vpc_https_ilb_with_mig_backend_cross_reference_example
Success!
The configuration is valid.
terraform_validate ./spot_instance_basic
Success!
The configuration is valid.
terraform_validate ./sql_database_basic
Success!
The configuration is valid.
terraform_validate ./sql_database_instance_my_sql
Success!
The configuration is valid.
terraform_validate ./sql_database_instance_postgres
Success!
The configuration is valid.
terraform_validate ./sql_database_instance_sqlserver
Success!
The configuration is valid.
terraform_validate ./sql_instance_cmek
Success!
The configuration is valid.
terraform_validate ./sql_instance_ha
Success!
The configuration is valid.
terraform_validate ./sql_instance_iam_condition
Success!
The configuration is valid.
terraform_validate ./sql_instance_labels
Success!
The configuration is valid.
terraform_validate ./sql_instance_pitr
Success!
The configuration is valid.
terraform_validate ./sql_instance_ssl_cert
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_authorized_network
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_backup
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_backup_location
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_backup_retention
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_clone
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_flags
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_private_ip
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_public_ip
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_pvp
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_replica
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_ssm
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_authorized_network
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_backup
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_backup_location
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_backup_retention
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_clone
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_flags
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_private_ip
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_public_ip
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_pvp
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_replica
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_ssm
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_active_directory
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_authorized_network
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_backup
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_backup_location
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_backup_retention
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_clone
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_flags
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_private_ip
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_public_ip
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_replica
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_ssm
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_vm_instance
Success!
The configuration is valid.
terraform_validate ./storage_hmac_key
Success!
The configuration is valid.
terraform_validate ./storage_make_data_public
Success!
The configuration is valid.
terraform_validate ./storage_new_bucket
Success!
The configuration is valid.
terraform_validate ./storage_object_lifecycle_setting
Success!
The configuration is valid.
terraform_validate ./storage_pubsub_notifications
Success!
The configuration is valid.
terraform_validate ./storage_static_website
Success!
The configuration is valid.
terraform_validate ./target_grpc_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_http_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_http_proxy_https_redirect
Success!
The configuration is valid.
terraform_validate ./target_https_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_ssl_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_tcp_proxy_basic
Success!
The configuration is valid.
terraform_validate ./test/setup
Success!
The configuration is valid.
terraform_validate ./url_map_bucket_and_service
Success!
The configuration is valid.
terraform_validate ./url_map_header_based_routing
Success!
The configuration is valid.
terraform_validate ./url_map_parameter_based_routing
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_path
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_path_partial
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_route
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_route_partial
Success!
The configuration is valid.
terraform_validate ./vertex_ai_dataset
Success!
The configuration is valid.
terraform_validate ./vertex_ai_featurestore
Success!
The configuration is valid.
terraform_validate ./vertex_ai_managed_notebooks_runtime
Success!
The configuration is valid.
terraform_validate ./vertex_ai_metadata_store
Success!
The configuration is valid.
terraform_validate ./vertex_ai_user_managed_notebooks_instance
Success!
The configuration is valid.

@pattishin
Thanks for the PR! 🚀
Unfortunately it looks like some of our CI checks failed. See the Contributing Guide for details.

⚠check_terraform
Failed Terraform check. More details below.

Running terraform fmt
Running terraform validate
terraform_validate ./autoscaler_instance_group
Success!
The configuration is valid.
terraform_validate ./certificate_manager/dns_managed_zone_with_wildcard_certificate
Success!
The configuration is valid.
terraform_validate ./certificate_manager/google_managed_cert
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_liveness_probe_gRPC
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_liveness_probe_http
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_startup_probe_http
Success!
The configuration is valid.
terraform_validate ./cloud_run_healthchecks_startup_probe_tcp
Success!
The configuration is valid.
terraform_validate ./cloud_run_jobs_create
Success!
The configuration is valid.
terraform_validate ./cloud_run_jobs_execute_jobs_on_schedule
╷
│

Error:
Reference to undeclared resource
│

│

 on main.tf line 73, in resource "google_cloud_scheduler_job" "job":
│

 73:     uri         = "https://${google_cloud_run_v2_job.default.location}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${
data.google_project.project
.number}/jobs/${google_cloud_run_v2_job.default.name}:run"
│

│

A data resource "google_project" "project" has not been declared in the
│

root module.
╵
terraform_validate ./cloud_run_jobs_max_retries_create
Success!
The configuration is valid.
terraform_validate ./cloud_run_jobs_task_parallelism_create
Success!
The configuration is valid.
terraform_validate ./cloud_run_jobs_task_timeout_create
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_add_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_configuration
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_connect_cloud_sql
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_custom_domain_mapping
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_deploy_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_image_processing
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_ingress
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_interservice
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_multiple_regions
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_noauth
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_pubsub
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_remove_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_scheduled
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_secure_services
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_static_outbound
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_tasks
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_gradual_rollout
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_latest_revision
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_rollback
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_split
Success!
The configuration is valid.
terraform_validate ./cloud_run_service_traffic_split_tag
Success!
The configuration is valid.
terraform_validate ./cloud_run_system_packages
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_basic
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_basic_auditlogs
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_basic_gcs
Success!
The configuration is valid.
terraform_validate ./cloudfunctions2_full
Success!
The configuration is valid.
terraform_validate ./cloudrun_service_access_control
Success!
The configuration is valid.
terraform_validate ./cloudrun_service_identity
Success!
The configuration is valid.
terraform_validate ./cloudrun_vpc_access_connector
Success!
The configuration is valid.
terraform_validate ./composer_multi_project_monitoring
Success!
The configuration is valid.
terraform_validate ./compute/basic_vm
Success!
The configuration is valid.
terraform_validate ./compute/external_address
Success!
The configuration is valid.
terraform_validate ./compute/os_login_ssh_key
Success!
The configuration is valid.
terraform_validate ./compute/service_account_for_instances
Success!
The configuration is valid.
terraform_validate ./compute_add_persistent_disk
Success!
The configuration is valid.
terraform_validate ./compute_disk
Success!
The configuration is valid.
terraform_validate ./compute_packet_mirroring_full
Success!
The configuration is valid.
terraform_validate ./compute_reservation
Success!
The configuration is valid.
terraform_validate ./compute_run_shutdown_scripts
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_basic
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_private
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_private_forwarding
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_private_peering
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_quickstart
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_reverse_lookup
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_service_directory
Success!
The configuration is valid.
terraform_validate ./dns_managed_zone_with_dnssec
Success!
The configuration is valid.
terraform_validate ./dns_policy_basic
Success!
The configuration is valid.
terraform_validate ./dns_policy_inbound
Success!
The configuration is valid.
terraform_validate ./dns_policy_outbound
Success!
The configuration is valid.
terraform_validate ./dns_record_set_basic
Success!
The configuration is valid.
terraform_validate ./dns_response_policy_basic
Success!
The configuration is valid.
terraform_validate ./dns_response_policy_rule_basic
Success!
The configuration is valid.
terraform_validate ./eventarc_basic_tf
Success!
The configuration is valid.
terraform_validate ./eventarc_workflows
Success!
The configuration is valid.
terraform_validate ./external_cdn_lb_with_backend_bucket
Success!
The configuration is valid.
terraform_validate ./external_http_lb_bucket_backend
Success!
The configuration is valid.
terraform_validate ./external_http_lb_mig_backend
Success!
The configuration is valid.
terraform_validate ./external_http_lb_mig_backend_custom_header
Success!
The configuration is valid.
terraform_validate ./external_ssl_proxy_lb_mig_backend
Success!
The configuration is valid.
terraform_validate ./external_ssl_proxy_lb_mig_backend_custom_header
Success!
The configuration is valid.
terraform_validate ./external_tcp_proxy_lb_mig_backend
Success!
The configuration is valid.
terraform_validate ./external_tcp_proxy_lb_mig_backend_custom_header
Success!
The configuration is valid.
terraform_validate ./external_vpn_gateway
Success!
The configuration is valid.
terraform_validate ./firewall_with_target_tags
Success!
The configuration is valid.
terraform_validate ./flask_google_cloud_quickstart
Success!
The configuration is valid.
terraform_validate ./ha_vpn_gateway_gcp_to_gcp
Success!
The configuration is valid.
terraform_validate ./ha_vpn_over_interconnect_10GB_attach
Success!
The configuration is valid.
terraform_validate ./ha_vpn_over_interconnect_5GB_attach
Success!
The configuration is valid.
terraform_validate ./health-check-region
Success!
The configuration is valid.
terraform_validate ./health-check-tcp
Success!
The configuration is valid.
terraform_validate ./iam_create_deny_policy
Success!
The configuration is valid.
terraform_validate ./instance_custom_hostname
Success!
The configuration is valid.
terraform_validate ./instance_virtual_display_enabled
Success!
The configuration is valid.
terraform_validate ./int_https_lb_https_redirect
Success!
The configuration is valid.
terraform_validate ./internal_http_lb_with_mig_backend
Success!
The configuration is valid.
terraform_validate ./internal_tcp_udp_lb_with_mig_backend
Success!
The configuration is valid.
terraform_validate ./media_cdn_keyset
Success!
The configuration is valid.
terraform_validate ./media_cdn_quickstart
Success!
The configuration is valid.
terraform_validate ./media_cdn_security_policies
Success!
The configuration is valid.
terraform_validate ./network_custom_mtu
Success!
The configuration is valid.
terraform_validate ./network_management_connectivity_test_addresses
Success!
The configuration is valid.
terraform_validate ./network_management_connectivity_test_instances
Success!
The configuration is valid.
terraform_validate ./os_login
Success!
The configuration is valid.
terraform_validate ./private_service_connect_google_apis
Success!
The configuration is valid.
terraform_validate ./privateca_capool_all_fields
Success!
The configuration is valid.
terraform_validate ./privateca_capool_basic
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_authority_basic
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_authority_byo_key
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_authority_subordinate
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_config
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_csr
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_no_authority
Success!
The configuration is valid.
terraform_validate ./privateca_certificate_with_template
Success!
The configuration is valid.
terraform_validate ./privateca_quickstart
Success!
The configuration is valid.
terraform_validate ./region_autoscaler_basic
Success!
The configuration is valid.
terraform_validate ./regional-external-http-load-balancer
Success!
The configuration is valid.
terraform_validate ./regional_external_http_load_balancer
Success!
The configuration is valid.
terraform_validate ./shared_vpc_http_ilb_with_mig_backend
Success!
The configuration is valid.
terraform_validate ./shared_vpc_http_ilb_with_mig_backend_basic_example
Success!
The configuration is valid.
terraform_validate ./shared_vpc_http_ilb_with_mig_backend_cross_reference_example
Success!
The configuration is valid.
terraform_validate ./shared_vpc_https_ilb_with_mig_backend_basic_example
Success!
The configuration is valid.
terraform_validate ./shared_vpc_https_ilb_with_mig_backend_cross_reference_example
Success!
The configuration is valid.
terraform_validate ./spot_instance_basic
Success!
The configuration is valid.
terraform_validate ./sql_database_basic
Success!
The configuration is valid.
terraform_validate ./sql_database_instance_my_sql
Success!
The configuration is valid.
terraform_validate ./sql_database_instance_postgres
Success!
The configuration is valid.
terraform_validate ./sql_database_instance_sqlserver
Success!
The configuration is valid.
terraform_validate ./sql_instance_cmek
Success!
The configuration is valid.
terraform_validate ./sql_instance_ha
Success!
The configuration is valid.
terraform_validate ./sql_instance_iam_condition
Success!
The configuration is valid.
terraform_validate ./sql_instance_labels
Success!
The configuration is valid.
terraform_validate ./sql_instance_pitr
Success!
The configuration is valid.
terraform_validate ./sql_instance_ssl_cert
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_authorized_network
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_backup
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_backup_location
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_backup_retention
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_clone
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_flags
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_private_ip
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_public_ip
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_pvp
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_replica
Success!
The configuration is valid.
terraform_validate ./sql_mysql_instance_ssm
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_authorized_network
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_backup
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_backup_location
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_backup_retention
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_clone
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_flags
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_private_ip
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_public_ip
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_pvp
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_replica
Success!
The configuration is valid.
terraform_validate ./sql_postgres_instance_ssm
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_active_directory
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_authorized_network
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_backup
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_backup_location
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_backup_retention
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_clone
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_flags
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_private_ip
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_public_ip
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_replica
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_instance_ssm
Success!
The configuration is valid.
terraform_validate ./sql_sqlserver_vm_instance
Success!
The configuration is valid.
terraform_validate ./storage_hmac_key
Success!
The configuration is valid.
terraform_validate ./storage_make_data_public
Success!
The configuration is valid.
terraform_validate ./storage_new_bucket
Success!
The configuration is valid.
terraform_validate ./storage_object_lifecycle_setting
Success!
The configuration is valid.
terraform_validate ./storage_pubsub_notifications
Success!
The configuration is valid.
terraform_validate ./storage_static_website
Success!
The configuration is valid.
terraform_validate ./target_grpc_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_http_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_http_proxy_https_redirect
Success!
The configuration is valid.
terraform_validate ./target_https_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_ssl_proxy_basic
Success!
The configuration is valid.
terraform_validate ./target_tcp_proxy_basic
Success!
The configuration is valid.
terraform_validate ./test/setup
Success!
The configuration is valid.
terraform_validate ./url_map_bucket_and_service
Success!
The configuration is valid.
terraform_validate ./url_map_header_based_routing
Success!
The configuration is valid.
terraform_validate ./url_map_parameter_based_routing
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_path
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_path_partial
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_route
Success!
The configuration is valid.
terraform_validate ./url_map_traffic_director_route_partial
Success!
The configuration is valid.
terraform_validate ./vertex_ai_dataset
Success!
The configuration is valid.
terraform_validate ./vertex_ai_featurestore
Success!
The configuration is valid.
terraform_validate ./vertex_ai_managed_notebooks_runtime
Success!
The configuration is valid.
terraform_validate ./vertex_ai_metadata_store
Success!
The configuration is valid.
terraform_validate ./vertex_ai_user_managed_notebooks_instance
Success!
The configuration is valid.

/gcbrun

Investigating integration test check failures 👀

/gcbrun


Configurable alt-click from bag and corpse

Prevent the auctioning window from being opened when not in a raid group or not in a group at all. I often use alt click to find certain items using bagnon and it forces open the auctioning window and obstructs view

Duplicate of #262


prune dead code

What does this PR do and why?
Provide a description of what this PR does. Link to any relevant GitHub issues, Notion tasks or Discord discussions.
Screenshots or screen recordings
If applicable, provide screenshots or screen recordings to demonstrate the changes.
Acceptance checklist

[ ] I have evaluated the Approval Guidelines for this PR.
[ ] I have tested this PR in all supported browsers.
[ ] I have tested this PR in dark mode and light mode (if applicable).

Current dependencies on/for this PR:

main

PR #2822   👈

This comment was auto-generated by Graphite.

⏳ This pull request is set to merge as part of a Graphite merge job
Stack job ID: Kf6VOZ3shANW2oFFcG1d.
See details on graphite.dev


Use oc wait anywhere where it says "wait to build"

We could also use specific tags when you deploy new versions


Transformations not working correctly

Hi Tim,
I've just discovered this rather alarming issue. The transformation appears to be correctly set up but it converts positive stream flow values into random, sometimes even negative values. I haven't looked for the issue very widely. Just at Bosboukloof weir, where it seems to affect the actual half hourly stream flow.
See below:

Any idea what could cause this?

Hi Abri
No idea why, I haven't worked on the Admin site for a while. Will download the backup from the server (takes forever) and have a look and get back to you

I have checked the values in my Transformation Calculator. The values do come out as negative. So there is an error in either the parameters or the formula.


Virtual Machines

Theory
Data services
object store file store etc
infrastructure as a service
We need to go through both Geoffery's and Judis lecture

Slides: https://1drv.ms/p/s!AvpSEd2J24STjCk3vcLfbpjXSxWr
Labs: https://github.com/cloudmesh/book/tree/master/section/virtualmachines

which tex file in book

Two tex files are under the folder: https://github.com/cloudmesh/book/tree/master/section/virtualmachines
Two chapters "Introduction to Virtual Machines" and "Virtual Machines Management" can be found in the handbook.

please remember the sections must show up in the handbook. Thus it is not enough if they are in a directory. They need to be visible in the handbook in a section

The section "Virtual Machines Management" was commented out. So I added it again. The book was compiled successfully: https://travis-ci.org/cloudmesh/book/jobs/365107086


Deployment Issue - With solution

If you see any error of unexpected token ">" while deploying, try to remove the following from the package.json file and you will be able to deply:
"homepage": "https://rodrigo-arenas.github.io/portfolio",

I'll put this in the read me, thanks


query not filtering on modelType

When I call get on an async hasMany relationship that isn't loaded, I do not get the related models back. To get around this, I tried calling query filtering on the belongsTo attribute, but I'm getting back additional models that also have the same belongsTo relationship as the model type I queried.
If I have a model structure like the following:
const Author = Model.extend({
    name: DS.attr('string'),
    posts: DS.hasMany('post'),
    comments: DS.hasMany('comment')
});
const Post = Model.extend({
    title: DS.attr('string'),
    content: DS.attr('string'),
    author: DS.belongsTo('author')
});
const Comment = Model.extend({
    text: DS.attr('string'),
    author: DS.belongsTo('author')
});

With just the author loaded and I call author.get('comments'), I do not get back any results. If I call:
store.query('comment', { filter: { author: author.get('id') }});

I will also get back posts for the author, but they will be loaded in the store as comment and the text attribute will be undefined.
Additional information, I'm using the dontsavehasmany flag, ember-pouch 4.2.3, and ember-data 2.10 (and 2.11.0-beta.1).

Using query with only the 'author' as a selector is a known bug: https://github.com/nolanlawson/relational-pouch/issues/73
But the query that is used to get the entries for the hasMany should work with a better query that does restrict by type (filter on id). I'll try to see if I can reproduce this, but this should be covered by the test suite. Maybe you could build a ember twiddle?

Thanks for the quick feedback. I had searched around to see if this was an existing issue before submitting, but did not find any results. I'll try and create a Twiddle, but I don't see ember-pouch hosted on a CDN to add as a dependency.
Is it possible to build my query to filter on ID as well? I'm thinking of just adding a type attribute and filtering on that.

If you use Ember Twiddle, @eneuhauser, you can put dependencies in the twiddle.json, similarly to how Ember CLI dependencies work.

You can see the code for querying by type here: https://github.com/nolanlawson/relational-pouch/blob/master/lib/index.js#L426
The _id filter on that line does what you want, though the parameters for lt and gt might be a bit confusing.

I appreciate @jlami and @backspace help. I did not expect such quick turnaround. I was able to add the ember-pouch addon to Twiddle. The last time I tried to make a Twiddle with an external dependency, I don't think that was possible. Knowing how to do that will be useful in the future.
Before trying the Twiddle, I pulled down the ember-pouch code and found an existing test that shows that async hasMany relationships are loaded with a get, so I'm not sure why it doesn't work for my project.
I was able to get query to work based on your suggestions. I had to copy the query from ember-pouch and override it in my adapter because not enough details were passed to _buildSelector to properly build the selector:
query: function(store, type, query) {
  this._init(store, type);

  var recordTypeName = this.getRecordTypeName(type);
  var db = this.get('db');

  var queryParams = {
    selector: this._buildSelector(query.filter)
  };
  queryParams.selector['_id'] = this._buildDocIDTypeSelector(recordTypeName);

  if (!Ember.isEmpty(query.sort)) {
    queryParams.sort = this._buildSort(query.sort);
  }

  return db.find(queryParams).then(pouchRes => db.rel.parseRelDocs(recordTypeName, pouchRes.docs));
},
_buildDocIDTypeSelector(recordTypeName) {
  var makeDocID = this.get('db').rel.makeDocID;
  return {
    '$gt': makeDocID({ type: recordTypeName }),
    '$lt': makeDocID({ type: recordTypeName, id: {} })
  };
},

Would it be useful to make a pull request with this change?

A PR for the fix in query is certainly welcome. Though I'm wondering if this should not be moved down to relational-pouch, since that is the layer that is actually in charge of the mapping to types. In my eyes it should have a query function of it's own that ember-couch should call.
Did you have any success in making a twiddle that reproduces your initial problem with hasMany? I'm still very curious where this comes from. You are right that there are tests that work with hasMany and get, so this should work correctly.

@eneuhauser @guillett Perhaps relational-pouch it the place to fix this. See also https://github.com/nolanlawson/relational-pouch/issues/73

+1 this needs to be fixed
If I query posts by their name, why am I receiving users by their name?
Isn't that the point of passing in a type to a query!

@eneuhauser So... I was bitten by this unexpected behaviour and it took a while to realize it was being caused by the wrong records being retrieved by my query statements. I just grabbed your code above and pasted it into my application adatapber, and it seems like that did the trick. I'm just going to leave your code in place in my adapter until I see an update from the addon itself. Thanks for sharing!

See also nolanlawson/relational-pouch#3

Unfortunately this approach might cause unexpected results due to a bug in CouchDB: https://github.com/apache/couchdb/pull/816
I.e. if you have a mango index created using _id, all queries that just want to query on _id uses that index.

Wouldn't that be true for any index with _id?
Ember-pouch now already uses _id to make indexes for the belongsTo relations, so I don't know if this should change anything. https://github.com/pouchdb-community/ember-pouch/blob/master/addon/adapters/pouch.js#L205


avif and jpg XL greyed out

Hello,
First of all thanks for this plugin.
Do I need to install something special on my dedicated server, before I can select Avif from the dropdown menu?
Currently, its greyed out.

Hey @myedgy you need to have a server that supports the formats.  If the option is greyed out, it is likely your server doesn't support the format. I'm not sure which hosts support AVIF, you will need to run on PHP 8.1 to get AVIF support.
You can also check which formats your server supports under Tools->Site Health->Info(tab)->Media Handling.

Hello I have an dedicated server in full control. What should i need to install except php 8.1 ?
I have a avif convert libary installed to but that didn't worked.

So I installed a fresh wordpress on Php 8.1.13 on Debian 11
And it's still grayed out.

libavif-dev is installed too.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libavif-dev is already the newest version (0.8.4-2+deb11u1).
0 upgraded, 0 newly installed, 0 to remove and 24 not upgraded.

Although you may have probably already resolved this issue, here is some additional information:
To enable AVIF, GD extension must be compiled with AVIF support. Additionally, it depends on libavif package, but that you already have installed. Please refer to the following article: AVIF image support in PHP 8.1

Nope it's not solved yet. I did that step, will try it again.

@myedgy I suggest checking under Tools->Site Health->Info->Media to verify the supported formats for your server.

@adamsilverstein Thank you for this plugin.
AVIF option is still greyed out yet GD supported file formats: GIF, JPEG, PNG, WebP, BMP, AVIF, XPM exists under Tools > Site Health > Info. Running PHP version 8.1 and latest WP version.

Actually, I was able to reproduce this on a test server - it looks like _wp_image_editor_choose still isn't returning the correct editor. I updated the plugin in 1.1.1 to fall back to GD even when core returns no editor for the mime type.  I'll try to look into this further in core; in the meantime can you please give 1.1.1 a test?

https://core.trac.wordpress.org/ticket/59760 will fix the issue for AVIF detection in GD.
JPEGXL detection isn't possible yet for this plugin since we rely on server side PHP support and JPEGXL isn't supported yet in PHP as far as I can tell.

I updated the plugin and AVIF option is no longer greyed out and have set it as such, but image output is still as it was. I hope the ticket you just shared to WordPress Core will fix it in a future WordPress update.


{Help} Credential

When using these parameters $Boxstarter.RebootOk=$true $Boxstarter.NoPassword=$false $Boxstarter.AutoLogin=$true why he only asks for credentials after the first reboot and not when the script starts for the first time?

Its best not to change those parameters at all and instead simply pass credentials to the -Credentials arg of Install-BoxstarterPackage

So I need to remove these parameters from my script and use -Credentials arg?
My script: https://raw.githubusercontent.com/nibodev/machineSetup/master/Boxstarter.MachineSetup.ps1

thats correct. (Correction: -credential)

-Credential was giving me an error with the latest version of boxstarter console. Also, there are blank lines, that start with "VERBOSE:" and nothing else.
I will try to get logs and screenshots when the machine is back up.

Yes. -Credential takes a PSCredential. You could create one with Get-Credential:
Install-BoxstarterPackage -Package http://xxx.xxxxxxxxxxx.xxx/xxxxxxxx_deploy.txt -
Credential (Get-Credential TSG)

Thanks for the tip, it did prompt me for the credentials. I will update my
documentation to reflect this format.
On Thu, Aug 24, 2017 at 11:27 PM, Matt Wrock<EMAIL_ADDRESS>wrote:

Yes. -Credential takes a PSCredential. You could create one with
Get-Credential:
Install-BoxstarterPackage -Package http://xxx.xxxxxxxxxxx.xxx/xxxxxxxx_deploy.txt -
Credential (Get-Credential TSG)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/mwrock/boxstarter/issues/280#issuecomment-324834642,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEjHKuMTSBk8bck2R5Lvf-PNxGbq8SBeks5sbmk2gaJpZM4OqEwv
.

@Skolzack @flatlinebb I am going to go ahead and close this issue.  Let us know if you have any follow up questions/concerns.


Some refactoring

What changes were proposed in this pull request?
Some code refactoring for https://github.com/apache/spark/pull/24821. Mostly try to reduce the number of public methods under ResourceUtils.
How was this patch tested?
(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests)
(If this patch involves UI changes, please attach a screenshot; otherwise, remove this)
Please review http://spark.apache.org/contributing.html before opening a pull request.

I think you should just put up a PR for this yourself as its your code.


Path weight snippet?

I'm not a JS expert, but I could create a really nice quick flow map, thank you.
I wanted to vary the lines' widths according to a weight, but I couldn't find any example.
Could you add such a feature? Thank you.

I'm glad you are trying out this library!  What you're asking for is indeed supported and possible, but I agree that without an example it isn't very clear what to do.  We'll create a new sample page sometime soon to share with the :world_map:.
cc @sarahbellum

@mfortini there's a new demo that does class breaks of the canvas lines:

https://jwasilgeo.github.io/Leaflet.Canvas-Flowmap-Layer/docs/class-breaks-symbology
source code is here and please focus on these lines: https://github.com/jwasilgeo/Leaflet.Canvas-Flowmap-Layer/blob/master/docs/class-breaks-symbology/index.html#L94-L137

The object specification is actually modeled after Esri's ArcGIS REST API renderer json specification.
Simple, unique value, and class breaks are all supported but instead use canvas stroke and line style property names.

@mfortini I suggest you to extend the Library by modifying the the following function, you can calculate the strokewidth (which is in your case I presume weight) and maybe multiply it by a factor (either linear or not):
applyAnimatedCanvasLineSymbol: function(ctx, symbolObject, screenOriginPoint, screenDestinationPoint, strokewidth) {
ctx.lineCap = symbolObject.lineCap;
ctx.strokeStyle = symbolObject.strokeStyle;
ctx.lineWidth = strokewidth * 4;   // HERE
ctx.shadowBlur = symbolObject.shadowBlur;
ctx.shadowColor = symbolObject.shadowColor;
ctx.moveTo(screenOriginPoint.x, screenOriginPoint.y);
ctx.bezierCurveTo(screenOriginPoint.x, screenDestinationPoint.y, screenDestinationPoint.x, screenDestinationPoint.y, screenDestinationPoint.x, screenDestinationPoint.y);
}

@Zahma the source code you point out is indeed where the canvas symbol properties are being set just before an updated drawing of a flowline on the canvas.
But @mfortini, if you can follow the new example I created of how to set these kinds of properties when creating and adding the layer to the map without having to alter this layer's source code, I think that will serve you well.
The catch here is that this Leaflet version of the Canvas-Flowmap-Layer and the Esri-compatible Canvas-Flowmap-Layer both apply flowline symbols based on this info (from the other repo):

Symbol configurations are defined using property objects inspired by the ArcGIS REST API renderer objects specification. Simple, unique value, and class breaks are all supported but instead use canvas stroke and line style property names.

http://resources.arcgis.com/en/help/arcgis-rest-api/#/Renderer_objects/02r30000019t000000/
Let me know if you have any additional questions.  Thanks all.


Not all tags being sync ? if so, should we document it ?

for example. minio/minio:RELEASE.2022-07-29T19-40-48Z is not sync.
If it's expected behavior, I guess some regular expression filter it out ? (maybe only sync those tags with vx.y.z ?)
if so ,please write this NOTES down in documents to avoid confusion.
# docker pull docker.m.daocloud.io/minio/minio:RELEASE.2022-07-29T19-40-48Z
Error response from daemon: manifest for docker.m.daocloud.io/minio/minio:RELEASE.2022-07-29T19-40-48Z not found: manifest unknown: manifest unknown

tag 不在同步列表
这个问题后续支持 懒加速 修复


Improvements to provider docs

Split each provider out into a separate section to avoid cramming all
the info onto a single page
Introduce a limitations doc for SQLite
@bricelam can you take a look at this one? docs/providers/SQLite/limitations.rst is the only new content, the rest is just restructuring what we already had.

:shipit:


[BEAM-10658] Update BigQuery storage sources to v1 API

This pull request updates the BigQuery storage sources -- stream, table, and query -- to use v1 of the BigQuery storage API, rather than the now-legacy v1beta1 API, in preparation for turning down v1beta1.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

R: @chamikaramj

@chamikaramj ping?


malformed chunked responses will be cached under some terrible network circumstances

Recently we found some uncompleted chunked responses were cached and served on production ATS 5.3.2 and 6.2.1 which complained by our customers, we consider this also is a possible reason for such warnings "Document 6E175543E1C4B188B8DDD553EEF9862F truncated"  in diags.log.
If the original servers(OS) sent chunked response back to ATS under some terrible network circumstances, ATS couldn't receive a complete chunked data but it surprisedly cached the malformed response and then served from cache.
I reviewed some source codes related to http tunnel and chunked in ATS, and later combined the following diags.log，I concluded that this is a bug which ATS couldn't handle VC_EVENT_EOS from original server correctly.
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpTunnel.cc:1106 (producer_handler)> (http_tunnel) [9698] producer_handler [http server VC_EVENT_EOS]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpTunnel.cc:1041 (producer_handler_chunked)> (http_tunnel) [9698] producer_handler_chunked [http server VC_EVENT_EOS]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpTunnel.cc:1146 (producer_handler)> (http_redirect) [HttpTunnel::producer_handler] enable_redirection: [1 0 0] event: 104
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:2846 (tunnel_handler_server)> (http) [9698] [&HttpSM::tunnel_handler_server, VC_EVENT_EOS]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:2897 (tunnel_handler_server)> (http) [9698] [HttpSM::tunnel_handler_server] finishing HTTP tunnel
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpTunnel.cc:1306 (consumer_handler)> (http_tunnel) [9698] consumer_handler [cache write VC_EVENT_WRITE_COMPLETE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:3293 (tunnel_handler_cache_write)> (http) [9698] [&HttpSM::tunnel_handler_cache_write, VC_EVENT_WRITE_COMPLETE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpTunnel.cc:1306 (consumer_handler)> (http_tunnel) [9698] consumer_handler [user agent VC_EVENT_WRITE_COMPLETE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:3086 (tunnel_handler_ua)> (http) [9698] [&HttpSM::tunnel_handler_ua, VC_EVENT_WRITE_COMPLETE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpClientSession.cc:478 (release)> (http_cs) [9666] session released by sm [9698]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpClientSession.cc:222 (do_io_write)> (http_cs) tcp_init_cwnd_set 1
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpClientSession.cc:507 (release)> (http_cs) [9666] initiating io for next header
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpServerSession.cc:121 (do_io_close)> (http_ss) [9436] session closing, netvc 0x2ad138012f00
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:2532 (main_handler)> (http) [9698] [HttpSM::main_handler, HTTP_TUNNEL_EVENT_DONE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:2785 (tunnel_handler)> (http) [9698] [&HttpSM::tunnel_handler, HTTP_TUNNEL_EVENT_DONE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpTunnel.cc:1669 (deallocate_redirect_postdata_buffers)> (http_redirect) [HttpTunnel::deallocate_postdata_copy_buffers]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpTunnel.cc:1669 (deallocate_redirect_postdata_buffers)> (http_redirect) [HttpTunnel::deallocate_postdata_copy_buffers]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:1376 (state_api_callout)> (http) [9698] calling plugin on hook TS_HTTP_TXN_CLOSE_HOOK at hook 0x2a99e30
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:1273 (state_api_callback)> (http) [9698] [&HttpSM::state_api_callback, HTTP_API_CONTINUE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:1313 (state_api_callout)> (http) [9698] [&HttpSM::state_api_callout, HTTP_API_CONTINUE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:482 (state_remove_from_list)> (http) [9698] [&HttpSM::state_remove_from_list, VC_EVENT_NONE]
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:6568 (kill_this)> (http_seq) [HttpSM::update_stats] Logging transaction
[Sep 27 19:06:44.734] Server {0x2acf89a19700} DEBUG: <HttpSM.cc:6595 (kill_this)> (http) [9698] deallocating sm
you can simulate this issue using limit speed and forced chunked response under a nginx source server with nginx.conf include the location block:
server {
listen      80;
server_name localhost;
location ~ ^/test/ {
 	expires 10d;
 	root html;
 	limit_rate 50K;
 	more_set_headers "Content-Length:";
}

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

}
ATS listen on 18980 and nginx listen on 80 on the same machine, then you make a request for the following url:
curl -vx <IP_ADDRESS>:18980 -o 1 'http://<IP_ADDRESS>/test/1.m3u8'
during the response process, you suddenly stop nginx and the response is interrupted, retry several times you can found the truncated chunked response was cached and served from cache by ATS.

[approve ci]

[approve ci]

@zwoop
Could you please update the clang-format binary ?
It is introduced within "https://cwiki.apache.org/confluence/display/TS/Coding+Style#CodingStyle-clang-formatbinaryandconfiguration"
IMO, It is a bug of current clang-format binary:
"https://ci.trafficserver.apache.org/job/clang-format-github/2437/"
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 420d86e39..3fff027fd 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -2923,7 +2923,7 @@ HttpSM::tunnel_handler_server(int event, HttpTunnelProducer *p)
       // disable cache write for the malformed chunked response
       if ((p->do_dechunking || p->do_chunked_passthru) && p->chunked_handler.truncation) {
         DebugSM("http", "[%" PRId64 "] [HttpSM::tunnel_handler_server] disable cache write due to server truncation but still send "
-                                    "partial response to client",
+                        "partial response to client",
                 sm_id);
         tunnel.abort_cache_write_finish_others(p);
         // We couldn't read all chunks successfully, disable keep-alive.

[approve ci]

It is based on TS-3054!

@shinrich please review this PR.
IMO, it is better to reimplement the TS-3054.

It is a possible solution for issue #1906 .  @SolidWallOfCode

How safe is this to cherry-pick to 7.1.2? It sounds like a real serious issue, that we need to address one way or another.

IMO, I prefer to revert TS-3054, because this pr is do the same thing.
For TS-3054.
If we don't cache the truncated body, the TS-3054 is useless.

Fyi, running with this on Docs.

I see your comments, so we should revert TS-3054 on both master and 7.1.x.

Yeh, reverting TS-3054 will be a lot more complicated than rolling forward. If this PR is not the right thing, please close this, and make a PR that does the "revert", but in a way that it can be landed on master (and hopefully, cherry-picked to 7.1.x).

Hi @shinrich . Could you please have a look with this pr.
I will make a pr reverting TS-3054 if you agree.

I am a bit confused about the need to revert 05cfba6a77c48bf2f651e7d88202d5af3f676074 (The fix for TS-3054).
Does this fix not work on the current code base?  If we revert the one line functional change if TS-3054, I don't think this fix will work.  The is_http_server_eos_truncation will return true instead of false and one set of the changes in this PR will not be executed.
That said, if you feel this logic needs to change, I'd just go ahead and change it.  For a 3 year old one line change, I don't see the value of doing a "git revert" as opposed to just updating the line based on newer understanding of how traffic can flow.

@shinrich and I looked at this and as far as we can tell, this PR requires the TS-3054 patch which is only one line. Without the TS-3054 change, the code in this PR isn't executed in bad situation, AFAICT.

Hi @shinrich @SolidWallOfCode
IMO, we should not land this pr and just revert 05cfba6
I don't want to land this pr since we send the EOS in finish_all_internal. It makes more confusion.
I'm not sure where and how to use it correctly.
this pr makes the chunked data  uncacheable,  so we can use chain_abort_cache_write just like @oknet  comment. But this pr will cause ua_session close directly, it is different  from the original behavior. The original one is to keep ua_session  alive.

The change seems broken TS-3054 at all.
Test code
package main

import (
	"net"
	"fmt"
)

const response =
	`HTTP/1.1 200 OK
Date: Sun, 31 Aug 2014 10:00:38 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Transfer-Encoding: chunked
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: application/xml;; charset=utf-8

34
<recording><validtoken>true</validtoken></recording>`

func main()  {
	l, _ := net.Listen("tcp", ":12345")

	for true {
		c, _ := l.Accept()
		fmt.Println("revceived one connection")
		c.Write([]byte(response))
		c.Close()
	}

}

I'm also confused. Do we need both this PR, and a revert of TS-3054?

Ok, I understand.  You need both this change the the TS-3054 revert.  Performing the abort cache but return data is done better in this code change.

Cherry-picked to 7.1.2

Reverted on master and 7.1.x.


add required check workflow

this is the first part of a change to make tacos apply depend on required checks passing
it adds a new required-check workflow. once this is merged, it also needs to be marked as "required" in github.
this is needed in order to be able to write a test case that will fail to perform tacos apply when this check fails.

I think (perhaps) this fits better in tacos.demo? This is meant to represent some arbitrary required check in some arbitrary repo, if I'm understanding things. If so, this is strictly a part of the system-under-test, and so belongs in tacos-gha.demo, and will never be shared among any other repo, unlilke the other tacos-gha workflows.

I deliberated on where to put this. I think that the arbitrary required check in the demos repo only exists for the purposes of facilitating unit tests in this repo though, and will only be toggled from the test cases in this repo, so i thought putting the definition here might be a better fit.


interface to re-fetch logs for some specific PR

in attempt to troubleshoot https://github.com/datalad/datalad/issues/7296 I thought to compare logs between to CI runs on that PR, for which we should have had logs on smaug a264136 and 2340b4c, for which we have
$> ls -ld */pr/7271/{a264136,2340b4c}
drwxr-sr-x 1 datalad datalad 930 Feb 22 03:28 21/pr/7271/2340b4c/
drwxr-sr-x 1 datalad datalad 166 Feb 22 03:20 21/pr/7271/a264136/
drwxr-sr-x 1 datalad datalad  92 Feb 23 03:20 22/pr/7271/2340b4c/

placing the oddity of 1 fastest github run getting into 22nd aside
(git)smaug:/mnt/datasets/datalad/ci/logs/2023/02[master]git
$> ls -l 22/pr/7271/2340b4c/ 21/pr/7271/2340b4c/
21/pr/7271/2340b4c/:
total 0
drwxr-sr-x 1 datalad datalad 280 Feb 22 03:28 appveyor-9134-failed/
drwxr-sr-x 1 datalad datalad 120 Feb 22 03:28 appveyor-9134-success/
drwxr-sr-x 1 datalad datalad  24 Feb 22 03:20 github-Add\ changelog.d\ snippet-565-incomplete/
drwxr-sr-x 1 datalad datalad  86 Feb 22 03:20 github-Benchmarks-6132-success/
drwxr-sr-x 1 datalad datalad  56 Feb 22 03:20 github-CrippledFS-3876-success/
drwxr-sr-x 1 datalad datalad  62 Feb 22 03:20 github-Docs-6191-success/
drwxr-sr-x 1 datalad datalad 648 Feb 22 03:20 github-Extensions-6140-failed/
drwxr-sr-x 1 datalad datalad  56 Feb 22 03:20 github-Linters-3027-success/
drwxr-sr-x 1 datalad datalad  56 Feb 22 03:20 github-Shellcheck\ on\ scripts-4379-success/
drwxr-sr-x 1 datalad datalad  56 Feb 22 03:20 github-Test\ for\ semver\ label-3182-success/
drwxr-sr-x 1 datalad datalad  56 Feb 22 03:20 github-Test\ old\ nose\ code-795-success/
drwxr-sr-x 1 datalad datalad 148 Feb 22 03:20 github-Test\ on\ macOS-4368-failed/
drwxr-sr-x 1 datalad datalad  68 Feb 22 03:20 github-Type-check-821-success/
drwxr-sr-x 1 datalad datalad  20 Feb 22 03:28 travis-15237-errored/
drwxr-sr-x 1 datalad datalad  70 Feb 22 03:28 travis-15237-failed/
drwxr-sr-x 1 datalad datalad  12 Feb 22 03:28 travis-15237-success/

22/pr/7271/2340b4c/:
total 0
drwxr-sr-x 1 datalad datalad 40 Feb 23 03:20 github-Auto-release\ on\ PR\ merge-325-incomplete/

what is most upsetting is that we have only few of non-interesting logs for the other one:
$> ls 21/pr/7271/a264136/
github-Add\ changelog.d\ snippet-564-success/  github-Test\ for\ semver\ label-3181-success/

AFAIK we do not have logs for those tinuous runs anywhere so can't tell why that happened (may be the idea of #154 would still have value). So I thought that may be there is a way to have a command to (re)fetch logs for some specific PR/commit?  @jwodder -- would that be possible?

@yarikoptic

For GitHub, there's no direct way to get the workflow runs for a PR itself; instead, you have to go through the commits in the PR and fetch the associated runs for those.
Travis and Appveyor do not appear to have a way to request the run(s) for a given PR or commit in the first place.

rright -- commit is associated with a PR. So in principle I could request
"give me logs for commit X and place to folder Y", i.e. smth like tinuous fetch-logs-for-commit a264136 21/pr/7271/a264136/ for my problem above?

@yarikoptic Why would/should the output path be given on the command line?  Wouldn't it make more sense for it to be determined according to the config file as though it were being fetched as part of a normal tinuous run?

the same commit , oddly enough, could be present in multiple PRs.  But ok -- could be without path specified.

I keep running into use cases where I am thinking about having such a feature.


[FR] Support diff3/zdiff3

It would be nice to see support for diff3 and zdiff3 merge conflicts within tree-sitter-diff,  as it roughly falls under the category of "diff".
Here is a rundown of diff3 and zdiff3 for those unfamiliar with it.

Conflict markers and diff syntax are totally separate as far as I know. This grammar covers diffs like you might get from diff or in a verbose git commit rather than highlighting conflicts.


Add a parameter to set the default filters when generating the report.

Sorry for changing the branch but I decided to have a clean one based on 3.0 branch.
Notes:

Had to change the filter value for a plus separated list because through the --report-options I couldn't pass a comma separated list due to Mocha expects something like --reporter-options <k=v,k2=v2,...> and passing the filter value with more than two values separated by commas filter=passed,failed was transformed to { filter: passed, failed: true }.  I tried to figure out how to pass the comma separated string by taking a look at the commander library which is the one that Mocha uses to get commands but unfortunately I didn't find examples or a way to pass values with commas. So this PR changes the filter options to get a plus separated list of values instead.
I tested the feature with both, the CLI and using the generator programatically.
I'm working on the test for the reporter package and will send the PR soon.

@ndiaz-candido Sorry for the delayed response. With 3.0 released I finally had some time to review this and I think the approach can be simplified greatly. I've put together this PR with an alternate approach. Rather than trying to implement the filters as a single list that has to be parsed, I just made a separate option for each filter. The option name maps directly to the filter property.


docformatter removes blank line after last section in docstrings

Issue Summary
If a docstring has a summary and a description that consists of at least one section, then there should be a blank line between the last line of the section and the the final """ of the docstring.
Example
Given the class SomeClass below, docformatter will remove the blank line at the end of the class dosctring, after the "Methods" section. In contrast, pydocstyle will throw a D413 error if that blank line is removed: D413: Missing blank line after last section ('Methods').
Is it possible to setup docformatter to respect D413?
class SomeClass:
    """Summary.

    Methods:
        method_1
        method_2
        method_3

    """

    def __init__(self):
        """Summary.

        Details about this thing that does nothing.
        """
        pass

The blank line after the last section is a numpy (and Google?) docstring convention.  pydocstyle should only raise the D413 if it is passed the --convention=numpy or --convention=google argument.  At the moment, no, docformatter can't be configured to respect the numpy or google convention.  However, see #60.

@weibullguy I think this issue can be closed. Using --blank = false from the Current Implementation does currently remove the empty blank line from the end of the docstring.


Bad TPM OEM certs

Thanks for proving a CAB file with all of the TPM root CAs and OEM intermediate certs.  Unfortunately the intermediate files for ST Micro seem to be corrupted? OpenSSL won't process them:
% openssl x509 -inform DER -in "STM TPM EK Intermediate CA 05.crt"
unable to load certificate
140010300105152:error:0D0E20DD:asn1 encoding routines:c2i_ibuf:illegal padding:../crypto/asn1/a_int.c:187:
140010300105152:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:627:Field=serialNumber, Type=X509_CINF
140010300105152:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:627:Field=cert_info, Type=X509

asn1parse reports that the serial number is a BAD INTEGER:
% openssl asn1parse -inform DER -in "STM TPM EK Intermediate CA 05.crt"
    0:d=0  hl=4 l= 972 cons: SEQUENCE
    4:d=1  hl=4 l= 692 cons: SEQUENCE
    8:d=2  hl=2 l=   3 cons: cont [ 0 ]
   10:d=3  hl=2 l=   1 prim: INTEGER           :02
   13:d=2  hl=2 l=   4 prim: INTEGER           :BAD INTEGER:[00000006]
   19:d=2  hl=2 l=  13 cons: SEQUENCE
   21:d=3  hl=2 l=   9 prim: OBJECT            :sha256WithRSAEncryption
   32:d=3  hl=2 l=   0 prim: NULL
   34:d=2  hl=2 l=  74 cons: SEQUENCE
   36:d=3  hl=2 l=  11 cons: SET
   38:d=4  hl=2 l=   9 cons: SEQUENCE
   40:d=5  hl=2 l=   3 prim: OBJECT            :countryName
   45:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CH
   49:d=3  hl=2 l=  30 cons: SET
   51:d=4  hl=2 l=  28 cons: SEQUENCE
   53:d=5  hl=2 l=   3 prim: OBJECT            :organizationName
   58:d=5  hl=2 l=  21 prim: PRINTABLESTRING   :STMicroelectronics NV
...

Downloading the original version of that cert from GlobalSign (which is linked from STM's TPM EK datasheet) parses fine:
% openssl x509 -inform DER -in stmtpmekint05.crt  -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:<PHONE_NUMBER> (0x40000006)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = CH, O = STMicroelectronics NV, CN = STM TPM EK Root CA
        Validity
            Not Before: Oct 10 00:00:00 2015 GMT
            Not After : Dec 31 00:00:00 2035 GMT
        Subject: C = CH, O = STMicroelectronics NV, CN = STM TPM EK Intermediate CA 05
...
% openssl asn1parse -inform DER -in stmtpmekint05.crt
    0:d=0  hl=4 l= 972 cons: SEQUENCE
    4:d=1  hl=4 l= 692 cons: SEQUENCE
    8:d=2  hl=2 l=   3 cons: cont [ 0 ]
   10:d=3  hl=2 l=   1 prim: INTEGER           :02
   13:d=2  hl=2 l=   4 prim: INTEGER           :40000006
   19:d=2  hl=2 l=  13 cons: SEQUENCE
   21:d=3  hl=2 l=   9 prim: OBJECT            :sha256WithRSAEncryption
   32:d=3  hl=2 l=   0 prim: NULL
   34:d=2  hl=2 l=  74 cons: SEQUENCE
   36:d=3  hl=2 l=  11 cons: SET
   38:d=4  hl=2 l=   9 cons: SEQUENCE
   40:d=5  hl=2 l=   3 prim: OBJECT            :countryName
   45:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CH
   49:d=3  hl=2 l=  30 cons: SET
   51:d=4  hl=2 l=  28 cons: SEQUENCE
   53:d=5  hl=2 l=   3 prim: OBJECT            :organizationName
   58:d=5  hl=2 l=  21 prim: PRINTABLESTRING   :STMicroelectronics NV
...

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

ID: 4fbb1fc3-8eca-4116-9eca-b568471c90e3
Version Independent ID: eb4ae419-dce8-bf6d-bf64-2f7df6d8c2eb
Content: Install trusted TPM root certificates
Content Source: WindowsServerDocs/security/guarded-fabric-shielded-vm/guarded-fabric-install-trusted-tpm-root-certificates.md
Product: windows-server
Technology: security-guarded-fabric
GitHub Login: @rpsqrd
Microsoft Alias: ryanpu

Disclaimer: I am not affiliated with Microsoft or the Microsoft Docs teams.
Thank you for this practical and (hopefully) useful feedback.
Please be patient, it may be a while before the team or the author will have time to post their replies.
Stay safe and well.

We're currently looking into this issue, please give us a couple of weeks to resolve this. Appreciate your patience!

Thank you for the update. Happy to see that there is still hope for this to be resolved.

According to this tweet by @ronaig:

Non-conformant intermediate certs have been reissued with updated serial # and can be downloaded from STM website. Old certs are in TrustedTPM cab to support TPMs that reference older intermediate certs.

Will the TrustedTPM.cab be updated to contain the new certs?

Yes we will update the TrustedTPM.cab but cant state the exact date/time..

The year 2024 is coming soon. The issue is still present.


Add simple CI pipeline via GitHub actions

Create a simple CI pipeline via GitHub actions.
This does a basic "cargo test" on several different environments
and two different versions of Rust. Eventually more checks can
be added.
Signed-off-by: David A. Wheeler<EMAIL_ADDRESS>

I didn't ask for any of this.

I'm not sure I understand your comment. It's normal to always test all changes in a variety of environments, to ensure that the proposed change works.

My apologies if my proposals are annoying; that isn't my intent.
I think it's important to establish an automated CI pipeline and to eliminate all warnings (including lint warnings) over time. Rust has changed over the years; I intend to change the code so it is idiomatic to current Rust usage. I also intend to propose a large number of changes over time to make this capable of doing more (including a C interface & definition checking). I also want to merge Mario's proposed change to support all Metamath proof formats.
I'd rather work with you to make all these changes. But if that's not the direction you want to go, you have every right to say no to all of it. If that isn't the direction you want to go, I'll probably just create & maintain a separate fork of the project, ensuring that everything is done in many public commits so you can cherry-pick what you like if you want to.