Deployment strategy

Figure out a better way to deploy the site. The current deployment is done using Github webhooks to a VPS node running nginx. When a push is made to the master branch, the VPS node rebuilds the site, and makes the latest version available.
Problem areas
These are the things we want to solve.

Custom VPS only serves static files, thus this setup could be simplified to an S3 bucket or some other existing solution. This reduces the work (and hopefully cost) of maintaining a server.
The VPS is hand tuned, thus there's no automated way to provision a fresh node with everything set up. Either automate the VPS provisioning or don't use VPS at all.
How can we do per branch deployment for staging/preview purposes.

Challenges
These are the challenges that need solving.

SSL/TLS certificates are currently provisioned using Let's Encrypt's certbot. Can we provision the certificates separate from the site?
Automating deployment based on Git changes.

Using AWS as the stack:

S3 buckets for hosting the production site and staging environment.
CloudFront pointing at the sites.
Certificate Manager managing the site certificates.
Auto-deployment to staging and production using custom scripts and Travis CI.


Apply new socket options to existing open sockets

I'm using the socket timeout during receive() as a crude timer and need to change it on the fly, but set_socketTimeout() was not applying to existing open persistent sockets.  This update makes set_socketTimeout() and set_socketNODELAY() update immediately, and causes set_socketPersistent() to close the socket if persistent is changed to False and a socket is open.

Great fix!  Thanks for this, @uzlonewolf !

Updated code released in v1.6.0


Feat/eip 4361 1

When opening a pull request to submit a new EIP, please use the suggested template: https://github.com/ethereum/EIPs/blob/master/eip-template.md
We have a GitHub bot that automatically merges some PRs. It will merge yours immediately if certain criteria are met:

The PR edits only existing draft PRs.
The build passes.
Your GitHub username or email address is listed in the 'author' header of all affected PRs, inside .
If matching on email address, the email address is the one publicly listed on your GitHub profile.

@cobward pls don't merge, just review.

Suggestion: what if we can use dag-cbor instead of JSON for encoding a CapGrok URI?
Rationale: JSON is too unstable for encoding/decoding.


[Jetstream] Allow TLS Client Authentication

Looking at the docs, and the configuration struct for Jetstream, it doesn't seem like TLS Client Authentication can be used.
https://github.com/dapr/components-contrib/blob/e639685e83b3a2ad1a73fc89a4370b6d11ed9d17/pubsub/jetstream/metadata.go#L24-L36
I wonder if it is a trivial addition?

Looks like an else if could be added here:
https://github.com/dapr/components-contrib/blob/e639685e83b3a2ad1a73fc89a4370b6d11ed9d17/pubsub/jetstream/jetstream.go#L50-L57
And the NATS client has an example of connecting via TLS:
https://github.com/nats-io/nats.go#tls


Document the council's internal decision making process

Currently it isn't clear exactly how or where decisions are made, or how they are communicated.
https://hackmd.io/@rust-leadership-council/ByAlBiHon contains a draft of some ideas on how to go about this.
This particularly includes where and how async decisions are made and publicized.
The RFC also suggests:

Establishing and agreeing on processes for faster decision-making for simple one-off operational matters, such as responding to emails reaching out to the Project.

As this is marked as active but has not seen an update here for some time, I nominate to review this and to consider whether we should leave an update here about the status.
This should take five minutes.

I plan to review and edit my original proposal, and post it to the leadership-council repo soonish.

Thinking about it, I'd probably just propose that we adopt the normal rfcbot rule.  The 10 day final comment period serves as a kind of unanimity check, as any member can raise a blocking concern during that time and thereby stop the FCP.
Following ourselves the normal process for the rest of the project here would make us more comprehensible to the rest of the project, and I don't see a strong reason for us to deviate in this instance.


Mention the enhanced PG Adapter in the README?

Congratulations on the merge into Rails as a default!
Writing to ask if you'd be open to linking to the actioncable-enhanced-postgresql-adapter gem in your notice about postgres in the README, as it supports messages >8KB relatively seamlessly.

Tagging @jpcamara since I just noticed that this commit https://github.com/rails/solid_cable/commit/ba1b1e54755249a028de69918db5071f02772688 is only 2 hours old

@searls actioncable-enhanced-postgresql-adapter is essentially an alternative option to solid_cable, right? They both essentially serve the same purpose?

This gem is substsantially different from Solid Cable, as it benefits from PG's LISTEN/NOTIFY for push (as opposed to polling), but includes a solution for the 8KB limit by storing the data as transient records.
Yes, it is an alternative to using solid_cable, but since the README already has a notice that PG's LISTEN/NOTIFY is supported by the postgres adapter (with that 8KB caveat), it seems like it'd be most helpful to readers to also learn about this third party option.

Makes sense! Just trying to keep track of the layers they each serve 👍 thanks

Howdy @searls! Appreciate the suggestion but i think for now im going to lean towards no. Looks like there is an open pr to enhance the pg adapter in rails with these changes and based on the comments in https://github.com/rails/rails/pull/49634, https://github.com/rails/rails/pull/49897 core seems frosty to the idea of suggesting the gem. Id like to wait to see how that pr shakes out before i add the note.


Docker builds a lot of unneeded artifacts

While these artifacts dont end up in the final image it makes the build take a lot longer than it needs to.
Should be able to just change https://github.com/shotover/shotover-proxy/blob/606fbfc13d104274312b48c03504e935c0ced8f4/Dockerfile#L7C26-L7C26 to a cargo build -p shotover-bin --release

closed by https://github.com/shotover/shotover-proxy/pull/1364/files


Add Virutal VWAN Objects under com.azure.resourcemanager.network.models packe

https://github.com/Azure/azure-sdk-for-java/issues/41434

Description
Please add an informative description that covers that changes made by the pull request and link all relevant issues.
If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

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

Testing Guidelines

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

API change check
APIView has identified API level changes in this PR and created following API reviews.
com.azure.resourcemanager:azure-resourcemanager-network


Token cache ignores guest user entries

I have a user with access to 2 tenants - one is the home tenant, the other as a guest user.
This is what it looks like in the token cache:

I'm trying to login silently with this account in the shared token cache access the second tenant as the guest user:
String tenantId = "c32df355-c3c7-49eb-8718-dcf53254b0c8";
String clientId = "04b07795-8ddb-461a-bbee-02f9e1bf7b46";
List<String> scopes = Arrays.asList("https://management.azure.com/.default");

String authorityUrl = "https://login.microsoftonline.com/organizations/" + tenantId;

PublicClientApplication pubClient = PublicClientApplication.builder(clientId)
        .authority(authorityUrl)
        .build();

IAccount requestedAccount = getAccountFromCache(pubClient.getAccounts().get(), username);

SilentParameters params = SilentParameters.builder(
        new HashSet<>(scopes), requestedAccount)
    .authorityUrl(authorityUrl)
    .build();

CompletableFuture<IAuthenticationResult> future = pubClient.acquireTokenSilently(params);

This code throws error: Exception in thread "main" com.azure.core.exception.HttpResponseException: Status code 401, "{"error":{"code":"Unauthorized","message":"AKV10032: Invalid issuer. Expected one of https://sts.windows.net/c32df355-c3c7-49eb-8718-dcf53254b0c8/, https://sts.windows.net/f8cdef31-a31e-4b4a-93e4-5f571e91255a/, https://sts.windows.net/e2d54eb5-3869-4f70-8578-dee5fc7331f4/, found https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/."}}"
Digging into TokenCache.java, it seems like we are looking for the first cached entry with a an home account id match (https://github.com/AzureAD/microsoft-authentication-library-for-java/blob/dev/src/main/java/com/microsoft/aad/msal4j/TokenCache.java#L438):
    Optional<AccountCacheEntity> getAccountCacheEntity
            (IAccount account, Set<String> environmentAliases) {

        return accounts.values().stream().filter
                (acc -> acc.homeAccountId.equals(account.homeAccountId()) &&
                        environmentAliases.contains(acc.environment)
                ).findAny();
    }

when we should really find the entry whose realm equals the tenant we are trying to access. Unfortunately, home account id doesn't include tenant we are accessing but only has info of the tenant the account resides. Other than that, there's no information about the tenant we are accessing in the interface IAccount.
Proposed fix: we need to include the realm information from the token cache in IAccount so that we will be using the correct cached account to refresh tokens.

" String authorityUrl = "https://login.microsoftonline.com/organizations/" + tenantId  " - is not
correct format of tenant specific authority,
should be
String authorityUrl = "https://login.microsoftonline.com/" + tenantId

Thanks! That does seem to be the issue. It seems like it doesn't matter which account I load from the cache, acquiring an AT to a different tenant from the RT also works.


Markdown code block (js) IntelliSense

When working in markdown you do not get code intellisense while within a javascript code block.
With the following source file Calculator.js
==> REPO with code
export class Calculator {
  /**
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  add(a, b) {
    return a + b;
  }
}

you do get code IntelliSense while within a *.js file.

but you do NOT get it in *.md files while within a code block

Ideas

provide same code IntelliSense in js code blocks as in js files
require a special meta info for code blocks with intellisense - for example:```js parse
import { Calculator } from './Calculator.js';
const calc = new Calculator();
calc.a
```

require a special file ending like for example mdjs or jsmd

I personally would favor 1 by a LOT.
any other ideas?

theoretical thought - would such a feature be possible via an extension?
maybe just a very rough idea on the effort?

should be possible (with a little tinkering)
possible but hard (you will need to do digging in vs code core)
possible but daaammmnnn (beware you will lose many days on this AND there will be dragons)
nope not possible (or it would require you to fork vs code to make it possible)

I just don't have any idea if it's even remotely possible... so if it's a 1 or 2 I would look into it... if it's a 3 or 4... well in that case let's say god has decided

It's possible but I'm not sold on the value added for uses vs cost of maintaining it. I'd love for someone to prove otherwise though
How I'd go about this:

Write an extension that can extract the contents of fenced code blocks and put each one into its own virtual document of the corresponding language
When a intellisense operation comes in for the original markdown document, map this request into the corresponding virtual document.
Then translate the results of the call back from the virtual document into the markdown document (you'd have to adjust all the positions/ranges for example)

thaaankkk you for that info 💪
that might sound doable 🤔
Some background info
I'm building a static site generator where the source is often markdown. But you can use javascript on the server and clientside within the file...
but now users need to choose between

nice writing experience => *.rocket.md
nice intellisense => *.rocket.js

can't have it both 🙈
Example of such a markdown file
```js server
export const sourceRelativeFilePath = '10--guides/index.rocket.md';
import { layout, html } from '../recursive.data.js';
export { layout, html };

// getting intellisense here would be awesome
layout.setPageOptions(...)

// getting intellisense here would be awesome
const animals = /** @type {import('../data.js')} */ (await fetch('...').then(req => req.json()));
const animalList = animals.map(animal => html`<p>${animal.name}</p>`;
```

# List of animals

Here you find...

${animalList}


maybe something wrong

Hi, @SiyuanHuang95
I change the param SLIDEWINDOWSIZE from 2 to 3 in Estimator.h, and test the bag casual_walk.bag which lio_sam privode.
After lidar-imu inited, the trajectory drift .Used topics: /points_raw and /imu_raw.
The extrinsics lidar -> IMU:
extrinsicTrans: [0.0, 0.0, 0.0]
extrinsicRot: [-1, 0, 0,
0, 1, 0,
0, 0, -1]

If set the SLIDEWINDOWSIZE=2, the program is normal.

The bag contains two imu topics(/imu_raw and /imu_correct).
If used /imu_corrcect as the imu input, The extrinsics lidar -> IMU:
extrinsicTrans: [0.0, 0.0, 0.0]
extrinsicRot: [1, 0, 0,
0, 1, 0,
0, 0, 1]
Whether the SLIDEWINDOWSIZE is 2 or 3, the program is normal.
It's strange, and maybe something wrong with the extrinsics params in the code.
Do you have a similar problem? Or any Suggestions?

Have not met that issue. No further suggestions could be given. When you find anything interesting, you are quite welcome to share with us.

hi~ I see you issue.    In the terminal, there  are  “cannot create a KD-Tree with an empty input cloud”？ Why?

hi~ I see you issue. In the terminal, there are “cannot create a KD-Tree with an empty input cloud”？ Why?

There are three KD-trees, corresponding to the three types of features(edge, surf and non), you could check the three types of feature, maybe one of them is empty.

https://github.com/TixiaoShan/LIO-SAM/issues/204

https://github.com/TixiaoShan/LIO-SAM/issues/204

Cannot catch your main idea, was the transformation matrix will cost this issue?
Real url:
https://github.com/TixiaoShan/LIO-SAM/issues/204

Since there is no further update, I will close this issue.


Do not set resource limits

What this PR does / why we need it:
This PR removes default values for resource.limits. Helm recommends not to specify default resources and to leave this as a conscious choice for the user.
We currently have two issues with default resources:

Using CPU limits leads to unnecessary throttling - https://github.com/kubernetes/kubernetes/issues/67577
We can not unset the cpu limit key in a sub-chart due to a bug in Helm - https://github.com/helm/helm/issues/9027

Most community helm charts do not set resources but provide guidance with some commented values instead.
Thanks!
Which issue this PR fixes
N/A
Special notes for your reviewer:
Checklist

[x] DCO signed
[x] Chart Version bumped
[x] helm-docs are updated
[x] Helm chart is tested
[x] Update artifacthub.io/changes in Chart.yaml
[x] Run make reviewable

LGTM from my side.
@stefanprodan Are there any requirements/concerns for basic limits (or the removel of them)?


Change WYSIWYG editor

find one what supports NG-11

bumped to https://github.com/kolkov/angular-editor/releases/tag/v1.2.0


fix(curriculum): Date Validation in Tests with Non-UTC Server Timezones

Checklist:

[x] I have read and followed the contribution guidelines.
[x] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #57381

While the date in the future is unnecessary, I don't see it breaking anything.

@ilenia-magoni can you assign another review.

@Abhishek-dev479 no, a second reviewer will come depending on availability and expertise. @a2937 had specifically said she wanted to review the PR for the issue, assigning her was the way to give her notice the PR existed.

Alright.


Option 1 esc

Include the sorting commit that I created independently. https://github.com/cluzier/graphcalc/pull/3
The idea is to eliminate the need for the first ESC to clear the search when you return from the view. I added the action to allow editing any item in the search.
I also removed the feedback, as it shouldn't be included if the extension is to be published. There should be no code that won't be executed in prod.
Personally I like the Option 0 Esc more now.
THIS NEED TO BE TESTED

Closed in favor of:
https://github.com/cluzier/graphcalc/pull/5

Closed in favor of:
https://github.com/cluzier/graphcalc/pull/5


Temp Data for Database

Insert some data into mongo for testing purposes. For now, the template is (with an example):
{
    "_id": ObjectId('...'),
    "repoName": "RandomRepo",
    "repoStars": 300,
    "creationDate": new Date("2022-10-09"),
    "description": "This project aims to ...",
}

decided to go with such a structure:
{
    "title": "something",
    "stars": 10,
    "url": "https://..."
}


Design of configuration migration system

I've ended up writing a number of migrations over the course of my work the last few months and have noticed some problems with it's current design.
It currently works by each migration is responsible for it to upgrade it from the version it's migrating from, to the current config version. Every time the configuration changes every version's migration also needs to change and then subsequently be tested.
I think there is a better way which make the migrations much more reliable and easier to test. That is the way most database migrations work that I've come across. Each migration version is responsible only for upgrading from the previous configuration to the new version it is migrating to and the migrations are then chained together to perform a full migration. The UX would not change but rather behind the scenes it finds the specified migration, runs that and finds the next migration, rinse and repeat until there are no more migrations and it's at current.
I don't think this would be a large time investment but I do think it would make writing migrations easier and more reliable, as the migrations we're doing grows so does the amount of changes and testing you're doing. You really should just need to focus on the changes you're migrating from.
WDYT?

Sounds good to me, for the record :)


Corrected name of DataCoding 0x01 in SmppConstants to IA5 (not GSM)

The DataCoding value 0x01 represents IA5, as indicated in the SMPP spec - however the name given to the 0x01 value in SmppConstants is DATA_CODING_GSM not DATA_CODING_IA5 which is misleading.
This changes the name to properly represent the 0x01 DATA_CODING_IA5 value, and sets the DATA_CODING_GSM to the default data coding to prevent breaking existing usages of this constant.

I see your point with backward compatibility and you're right about the SMSC default alphabet. However, having a constant called GSM that actually points to the IA5 data coding value just seems to be asking for trouble?

One alternative I suppose would be to simply rename the GSM constant to IA5. Though a breaking change, it would force users to make the choice about whether they actually need the 0x01 or 0x00 data coding value.
Initially I didn't want to do this as it forces users to do make a code change when they update - but maybe that's a good thing in this situation? What do you think?

I always defer to backwards compat.  Let's simply make GSM point to IA5 and
add the deprecated annotation to the GSM constant.  Add a comment that we
may remove it in a future version.
On Tue, Jun 30, 2015 at 5:19 AM, Robin Cox<EMAIL_ADDRESS>wrote:

One alternative I suppose would be to simply rename the GSM constant to
IA5. Though a breaking change, it would force users to make the choice
about whether they actually need the 0x01 or 0x00 data coding value.
Initially I didn't want to do this as it forces users to do make a code
change when they update - but maybe that's a good thing in this situation?
What do you think?
—
Reply to this email directly or view it on GitHub
https://github.com/twitter/cloudhopper-smpp/pull/107#issuecomment-117069976
.

Have updated my fork making the GSM constant deprecated as suggested


Move OGNL under Softwaremill organisation

I would like to move this project under Softwaremill's umbrella - we have a large experience in maintaining Open Source projects and supporting open source projects is one of our core values :)
At the same time I would like to request ASF to drop Commons-OGNL as this is outdated and unsupported project, tbh :(
Any objections @jkuhnert @harawata @JCgH4164838Gh792C124B5 @yasserzamani and others?

Thanks for the heads up, @lukaszlenart !
There should be no big impact on MyBatis. No objection from me. 👍

The only impact I see is to use org.ognl as a groupId

As MyBatis uses maven-shade-plugin to includes OGNL in its JAR, the impact of groupId change is relatively small, I believe.
It could cause the classic 'JAR hell' situation to other projects, though.

Project A depends on library A and B.
Library A depends on ognl/ognl
Library B depends on org.ognl/ognl

You should not trust me on this, but it might be better to change the package name from ognl to org.ognl if you change the groupId.

@harawata thanks a lot, valid point 👍

Works for me too, thanks for your support :+1: :)

Hi @lukaszlenart , thanks for including us in the discussion.
I do not claim to fully understand what ramifications there might be for the proposed "project move", so please keep that in mind for any of my comments.  :smile:
That being said, if you think it is a good plan for maintaining OGNL in the future, given your continued efforts in maintaining this repository, then it is probably reasonable.  👍  The many thumbs-up in the issue commentary above would seem to indicate that as well.  :wink:
If the groupId and/or package names are changed, it could have some build impacts (as @harawata mentioned above).  If the package name changes, there might be some additional "ripple effects" for  some projects/applications built using the current naming (some change impacts are not always easy to predict).

Thanks a lot for all the comments! The groupId & package change can be discussed later, if we agree such change is needed. Right I do not expect any large changes. I would like to extract the benchmark part from Commons-OGNL and moved it here.

As I started large refactoring #155 of OGNL I wonder if moving this code under SML gives any advantage ... I thought about creating another organisation under Github which will take over all orphan projects like this one.

Sorry @lukaszlenart I didn't notice this until now. Absolutely agree, you are clearly the maintainer of project now so happy to do whatever you want. I only stuck this in github originally when Patrick was closing down opensymphony or whatever the last home was called.

@jkuhnert thanks a lot, I created a new Github organisation to cover all OSS projects I'm maintaining right now and I think it will be a better place for OGNL - could you transfer this repo under Orphan OSS?
https://github.com/orphan-oss
https://orphan.software/


Wind generator with power (?)

Hello there,
I'm having trouble trying to make the wind generator work.

As you can see there is no power generated and i tried to put the wind turbine in different position on Y.
I need your help thanks :).j
Btw i'm running <IP_ADDRESS>1 for 1.7.10

2 things:

The wind turbine requires visibility to the sky.  If you place (opaque) blocks above it, it won't work.  Your picture does not make it clear if you are doing that or not.

Those power output numbers have clearly been altered.  This may be bad configuration, or an attempt to effectively disable the Wind Generator.


chore(master): release 2.9.2

:robot: I have created a release beep boop
2.9.2 (2023-06-04)
Bug Fixes

strategy: properly match all regions to a node (#93) (f25b84f)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/ooliver1/mafic/releases/tag/v2.9.2 :sunflower:


Sdc/add v6+zl/re configure for integration

worth merging https://github.com/williamofockham/utils/pull/6 first.
major cleanup
removal of unncessary files and folders
rustfmt cause 120!
dpdk file path changes
vagrantisms and vm-setups
we can bring back upstream files as needed.
e2d2 -> netbricks
includes ipv6 handling and early SR work.

We should avoid having a Vagrantfile/vm-setup in this repo if we are assuming the sandbox idea will work in utils. Otherwise it just looks like duplicated effort.

Closing this in favor of #7, since it includes the same commits.


[Localization] Missing the case when default namespace is different from assembly name

The document says:

the default namespace (which is also the name of the assembly)

In some cases, the default namespace is different from the assembly name. However, the document is missing for this case. The document should describe the available workaround for it. Or should clearly say "this is the limitation" if there's no workaround.

It goes on to say

Resources are named for the type of their class minus the default namespace (which is also the name of the assembly). For example, a French resource in the LocalizationWebsite.Web project for the class LocalizationWebsite.Web.Startup would be named Startup.fr.resx. The class LocalizationWebsite.Web.Controllers.HomeController would be Controllers.HomeController.fr.resx. If for some reason your targeted class is in the same project but not in the base namespace you will need the full type name. For example, in the sample project a type ExtraNamespace.Tools would be ExtraNamespace.Tools.fr.resx.

That should be rewritten to:
If your targeted class does not use the same namespace you will need the full type name.**
@ryanbrandenburg  is this correct?

@Rick-Anderson I don't think that's what @tanaka-takayoshi is saying. I think he's saying that although by default most people will have the default namespace be the same as their assembly name that's not always the case, the two can different. The determining factor is the HostingEnvironement.ApplicationName which I believe should be the AssemblyName.
We should remove the references to default namespace in that section.
@dougbu does that all sound accurate to you?

@ryanbrandenburg  can you tap Edit  link and make a first pass?
Can you include using resource files from another class ( a common question) - which I think is the same - using FQN.fr.resx

I debugged something with reading [ResourceManagerStringLocalizerFactory] (https://github.com/aspnet/Localization/blob/dev/src/Microsoft.Extensions.Localization/ResourceManagerStringLocalizerFactory.cs) and @Rick-Anderson 's comment appears good.
At first, ApplicationName should be the AssemblyName. I think this is the current dotnet core specification and I confirmed when I specify the "name" in project.json, this become the application name and assembly name.
Then I tried two cases.
Case1)
If the class name of resource, which is the T of IStringLocalizer<T> or IHtmlLocalizer<T>, starts with the assembly name, we must abbreviate assembly name from class name. It means we can't specify the full class name.
e.g.:
assembly name: AspNetCore.StarterWeb
class name: AspNetCore.StarterWeb.Controllers.HomeController (used by IStringLocalizer<HomeController> )
resource file: Controllers.HomeController.ja.resx (in the case of Japanese resouce)
AspNetCore.StarterWeb.Controllers.HomeController.ja.resx is not working.
Case2)
If the class name of resource doesn't start with the assembly name, we must specify the full class name in resource file name.
e.g.:
assembly name: AspNetCore.StarterWeb
class name: WebApplication.Controllers.HomeController (used by IStringLocalizer<HomeController> )
resource file: WebApplication.Controllers.HomeController.ja.resx (in the case of Japanese resouce)

@tanaka-takayoshi  Excellent!

@ryanbrandenburg your comments on assembly names are correct though @tanaka-takayoshi's cases make things more clear.
For one thing, there's no requirement that a C# namespace have any relationship to the assembly name. So mentioning the default namespace is somewhat off-topic except for the narrow case where users create classes in or below the default namespace and that default happens to be different from the assembly name e.g. because the assembly name contains special characters.

I've made #2513 as a first run at clearing up that doc.

That's all merged in now, so closing this out.


Too many open files

I'm running Ruby 2.3 because of #228. This is under Windows 7 (which I'm stuck with as it's my corporate machine). The following commands were run under Git Bash, but I get the same results from the Windows shell. This is a 64-bit machine but I'm using the 32-bit version of everything as I recall seeing somewhere that maybe it's recommended for DevKit or something. It's all kind of running together after so much googling. (I had to fix the Ruby "certificate verify failed" issue first.)
ZAT was working fine until recently -- I think I updated it and this is when the certificate verify issue came up.
$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

$ gem -v
2.7.6

$ zat -v
2.8.4

$ zat validate
D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/app_file.rb:9:in `initialize': Too many open files @ rb_sysopen - D:/dev/download-all-attachments/zendesk/node_modules/nyc/node_modules/cliui/node_modules/wordwrap/README.markdown (Errno::EMFILE)
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/app_file.rb:9:in `new'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/app_file.rb:9:in `initialize'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/package.rb:81:in `new'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/package.rb:81:in `block in files'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/package.rb:77:in `each'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/package.rb:77:in `files'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/package.rb:103:in `translation_files'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/validations/manifest.rb:220:in `default_locale_error'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/validations/manifest.rb:40:in `collate_manifest_errors'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/validations/manifest.rb:23:in `call'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_support-4.7.0/lib/zendesk_apps_support/package.rb:32:in `validate'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_tools-2.8.4/lib/zendesk_apps_tools/command.rb:74:in `validate'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor/command.rb:27:in `run'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor/invocation.rb:126:in `invoke_command'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor.rb:369:in `dispatch'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor/base.rb:444:in `start'
        from D:/Ruby23/lib/ruby/gems/2.3.0/gems/zendesk_apps_tools-2.8.4/bin/zat:13:in `<top (required)>'
        from D:/Ruby23/bin/zat:23:in `load'
        from D:/Ruby23/bin/zat:23:in `<main>'

Hi @chuck-wood -- make sure you are running zat validate (and 'zat package' too) from the directory that contains the final app content. If you're using the app scaffold, that would be the 'dist' directory (IOW, cd to 'dist' and try again).

Yeah, I'm in the correct directory. I just noticed that you guys have previous releases saved here. I'll try 2.8.3 and see if it has the same issue.

I tried ZAT 2.8.3 and had the same issue. Unfortunately I'm not sure what version of ZAT I was on before upgrading.

Turns out it was caused by having a node_modules in the project root. (I am not using the scaffold, so there's no dist directory. Guess there should be!)
Thanks for the help!


Adding a Jenkinsfile for ci.jenkins.io

Just realized we didn't have one. That was silly.
cc @reviewbybees @jglick

This pull request originates from a CloudBees employee. At CloudBees, we require that all pull requests be reviewed by other CloudBees employees before we seek to have the change accepted. If you want to learn more about our process please see this explanation.

Hrm, tests don't seem to like Windows. Switching to just build on Linux for now.

java.io.IOException: C:\Windows\TEMP\junit2358093855473654142\junit193522114391118477\jobs\p\builds\1 is in use
	at hudson.model.Run.delete(Run.java:1505)
	at org.jenkins.plugins.lockableresources.LockStepTest$14.evaluate(LockStepTest.java:505)

seems like it could be fixed right? Or just
assumeFalse(Functions.isWindows()); // TODO investigate failures

for this one.

Ah, good point.


hard code and deprecate y_data_suffix

TODO y_data_suffix is currently used in utils.py (previously framework.py)
    # We plan to hard-code this in the future release and deprecate.
    {"name": "y_data_suffix", # default expected
     "type": str,
     "default": "y_data", # TODO Oleksandr: "gives error when default is not set"
     "help": "[Dep] Suffix to compose file name for storing true y dataframe."
     },

also this in cli_param_def
TODO y_data_preds_suffix, json_scores_suffix, pred_col_name_suffix
# are currently used in utils.py (previously framework.py)
# We plan to hard-code these in the future release and deprecate.
# Defined in improve_train_conf and improve_infer_conf
{"name": "y_data_preds_suffix", # default expected
 "type": str,
 "default": "predicted",
 "help": "[Dep] Suffix to use for file name that stores predictions."
},
{"name": "json_scores_suffix", # default expected
 "type": str,
 "default": "scores",
 "help": "[Dep] Suffix to use for file name that stores scores."
},
{"name": "pred_col_name_suffix", # default expected
 "type": str,
 "default": "_pred",
 "help": "[Dep] Suffix to add to a column name in the y data file to identify \
         predictions made by the model (e.g., if y_col_name is 'auc', then \
         a new column that stores model predictions will be added to the y \
         data file and will be called 'auc_pred')."

PR approved

PR approved

PR approved


Getting a count for number of likers of a liked "Entry"

Hi,
Thank you for your Work.
I have a Entry Model  and  a Profile Model.
Profiles can like Comments and  Entry (entries) ...
Now i want to get the informations, how many likes has the Entry with the # 193.
I tried all kind of Kombinations of the like/likers/liking ways, and i always got 0.
What is the right way ?

i think, i found a solution:
$entry->likers(App\Models\Profile::class)->count();
btw: if tinker says:
$entry->likers(Profile::class)->count();

!] Aliasing 'Profile' to 'App\Models\Profile' for this Tinker session.

this does not work for morphs ..
only:
$entry->likers(App\Models\Profile::class)->count();
with full written App\Models\Profile  seems to be the trick ...

forgot to close this


There is No "Your Comments History" like YT

[Your Comment History] or [Watch History] Tab should be in:
https://odysee.com/$/watchhistory
also:
[Notifications] or [Your Comment History] Tab in:
https://odysee.com/$/notifications
to avoid unnecessary nested menus, or click in circles.
when clicking [your comment], should link to video.
should be only text, video name & comment, video preview is unnecessary.

It's on the settings page currently


Deleting a single file in a multi-file submission makes all files disappear.

Describe the bug
If you start a submission, and upload many files, then delete one...all of the files disappear from the submission.  However, only the one is deleted.  The others will reappear if you exit the submission & reopen it.
To Reproduce
Steps to reproduce the behavior:

Start a new Item submission
Upload 3 files.  This succeeds. All three files will be listed.
Now, delete one file.  This succeeds, but now all files disappear from the submission form.
 You'll see that 2 files now remain.

Expected behavior
Deleting one file should only cause that file to disappear from the submission form.

@atarix83 : Could you look into this bug for me & see if you can figure out what may be going on? (Please provide an estimate & let me know if your team is interested in working on it.)  It sounds (to me) like some sort of caching issue -- all the files are removed from the cache & "disappear", even though only one is actually deleted.

@tdonohue this should take about 2-3 hours to fix, we are interested to fix it

Thanks @atarix83 ! That sounds good to me.  Adding the estimate & will keep you assigned so that your team can start work on fixing this.


key / ref mechanism does not work on root element

This fails
QUnit.test("Key/ref tests", function(assert) {
  var ClickableComponent = TestComponent.extend({
    render: function() {
      return $$('a').attr('href', '#').key('link').append('hello');
    }
  });

  var comp = Component.mount($$(ClickableComponent), $('#qunit-fixture'));
  assert.ok(comp.refs.link, 'Should have a ref to link');
});

Could we do something about it, for consistency? I understand that i could reach the root element using comp.$el, but somehow it's strange i can not use it.

Will need to take a closer look to understand.

On a second thought, this is kind of strange: using 'key' does not really make sense here.
The lfe-time of  the component is not controlled by itself. So persistence-wise, this would not make a difference.
Used as a ref, this would have the effect that
this.refs.link === this

While we can support this for better consistency, it simply doesn't bring anything.

this.refs.link ===  this.$el[0]

it would be be?
Which brings me to the next question.. when a HTML-Element is referenced, should this.refs.elem return the jQuery wrapped element or the element itself?

No. Refs are components.

But only if really a user-defined component is referenced. If it's just an ordinary DOM node what can you do with it? Well maybe... calling .html on addClass etc.
Just thought of a common situation where you reference two input fields:
function login() {
  var username = this.refs.name.$el.val();
  var passwd = this.refs.passwd.$el.val();
}

We could spare the .$el if we directly returned the jquery element...  React 0.14 made this change since there was no other use-case for referencing ElementComponents.
It's not soo important for me.. just something in the API that will used often. Just wondering if there's a usecase of doing something with those bare components. Adding a class for instance should only be done if the props have changed appropriately, because the determinism props/state -> dom would be violated.

Hmmm... but also React does not like you to do incremental updates, like changing the element. The component still makes it possible to set classes etc. incrementally, while still being compatible with the reactive rendering flow.
While I see, that there are cases where 'reading' from the element are necessary, there also might be cases where you 'write'.
You could add more jquery convenience delegators if you want to achieve that.

Let's see how we will use this stuff in the coming months.

Let's not allow a ref on the root element. That way the parent can control the ref of the component. A component should not self-manage it's own ref. I think we should implement #40 though.


Added option to display timezone offset next to local time

Added option to view UTC offset next to local time, per #28. Disabled by default.

I'm not going to merge quite this yet as I was going to try to include this along with the names of each timezone when I implement #20 and #44.
Thank you for the PR though!


Incorporate testing into the Build pipelines

Currently tests are automatically triggered by the upstream build jobs (using Jenkins build triggers).  We should slightly change how the tests are triggered by adding them to the build pipelines in the openjdk-build repo to be ready for when we will gate the final step (release step) in those pipelines.

Closing, fixed by https://github.com/AdoptOpenJDK/openjdk-build/pull/279


add install_prereqs.sh

drake001 was failing because of a missing dependency.  resolved with
brew install pyqwt

+1!

fixed by RobotLocomotion/drake/pull/1287.  For what it's worth, I'm not a fan of per project install_prereqs.sh, I'd rather have package manager dependencies listed in the drake.

awesome, thanks!

@patmarion +1
@RussTedrake having all of the dependencies listed at the top level in drake would also allow us to switch to Travis's newer & faster infrastructure, which means faster build times. The new infrastructure does not allow the build to use sudo, but does allow us to list all of our needed apt packages in the .travis.yml file. We need sudo right now in order to invoke all the install_prereqs scripts.

But i'd be fine if drake's superbuild could report it's list of dependencies for the currently included externals, but want to ensure that:

the individual pods also know their externals (for use outside of drake)
drake only lists the externals for the existing externals (i think).  It seems like the list of all possible dependencies would be obnoxious.  No?

On Aug 26, 2015, at 11:56 AM, Robin Deits<EMAIL_ADDRESS>wrote:
@patmarion +1
@RussTedrake having all of the dependencies listed at the top level in drake would also allow us to switch to Travis's newer & faster infrastructure, which means faster build times. The new infrastructure does not allow the build to use sudo, but does allow us to list all of our needed apt packages in the .travis.yml file. We need sudo right now in order to invoke all the install_prereqs scripts.
—
Reply to this email directly or view it on GitHub.


Model local volume id in RAML.

Summary:
Model the EnrichedTask response in RAML. This is the first step of removing the infamous handwritten Formats.scala. I used the raw JSON in EnrickedTaskWritesTest as examples.
JIRA issues:

Should I also replace the tests in EnrichedTaskWritesTest with conversions? This way we can be sure that the everything still works.

maybe just use the new types in docs somehow, otherwise LGTM 👍

Good point. I'll follow up.


validate_on_lfw.py error

when I run validate_on_lfw.py (I don't modify the code),it turns out :
Traceback (most recent call last):
File "validate_on_lfw.py", line 115, in
main(parse_arguments(sys.argv[1:]))
File "validate_on_lfw.py", line 82, in main
images = facenet.load_data(paths_batch, False, False, image_size)
File "/home/anthony/facenet/src/facenet.py", line 264, in load_data
img = crop(img, do_random_crop, image_size)
File "/home/anthony/facenet/src/facenet.py", line 241, in crop
image = image[(sz1-sz2+v):(sz1+sz2+v),(sz1-sz2+h):(sz1+sz2+h),:]
TypeError: unsupported operand type(s) for -: 'int' and 'Dimension'
and here is the code:
def crop(image, random_crop, image_size):
if image.shape[1]>image_size:
sz1 = image.shape[1]//2
sz2 = image_size//2
print(sz1)
if random_crop:
diff = sz1-sz2
(h, v) = (np.random.randint(-diff, diff+1), np.random.randint(-diff, diff+1))
else:
(h, v) = (0,0)
image = image[(sz1-sz2+v):(sz1+sz2+v),(sz1-sz2+h):(sz1+sz2+h),:]
return image
how could I solve it ?

@MiloAnthony Try pulling the repository. I resolved this issue in my commit.

@RakshakTalwar Thanks! But here comes another one:
Traceback (most recent call last):
far = float(false_accept) / float(n_diff)
ZeroDivisionError: float division by zero
So I add a judgement:
if n_diff == 0:
far = 0.0
else:
far = float(false_accept) / float(n_diff)
and then the problem changed:
File "validate_on_lfw.py", line 94, in main
eer = brentq(lambda x: 1. - x - interpolate.interp1d(fpr, tpr)(x), 0., 1.)
ValueError: A value in x_new is above the interpolation range.
After I deleted the code above,I got the accuracy except validation rate ,AUC .
Accuracy: 0.950+-0.150
Validation rate: 0.00000+-0.00000 @ FAR=0.00000
Area Under Curve (AUC): 0.000

@MiloAnthony  my problem is
Accuracy: 1.000+-0.001
Validation rate: 0.00000+-0.00000 @ FAR=0.00000
Area Under Curve (AUC): 0.000
...
ValueError: A value in x_new is above the interpolation range.
How did you solve the problem?
Thank you in advance

So...have you solved this issue? I'm trying to validate my own dataset, but I met "float division by zero" too......wanna cry.

@eustcPL Sorry, I did not pay attention to the issue for a long time.  @ZxqSoftWare you can check my comment above or the pulling made by RakshakTalwar.

hi @zxq-creations
Have you solved the problem yet?
I have same problem and I shuffle the order list in my pairs.txt

@MiloAnthony Try pulling the repository. I resolved this issue in my commit.
Hi @MiloAnthony
I have the same problem and I can not find your solution! How I can solve it?
thanks a lot

@Rasoul20sh Thanks very much.

@RakshakTalwar Thanks! But here comes another one: Traceback (most recent call last): far = float(false_accept) / float(n_diff) ZeroDivisionError: float division by zero
So I add a judgement: if n_diff == 0: far = 0.0 else: far = float(false_accept) / float(n_diff)
and then the problem changed: File "validate_on_lfw.py", line 94, in main eer = brentq(lambda x: 1. - x - interpolate.interp1d(fpr, tpr)(x), 0., 1.) ValueError: A value in x_new is above the interpolation range.
After I deleted the code above,I got the accuracy except validation rate ,AUC .
Accuracy: 0.950+-0.150 Validation rate: 0.00000+-0.00000 @ FAR=0.00000 Area Under Curve (AUC): 0.000

Hi, Have you solved this problem?
I did like this but still got "ZeroDivison Error" after have deleted the code you had mentioned


have an initial version of the basic docs

/kind documentation
/assign
Let's have a simple README.md, CONTRIBUTION.md to describe this project.

/kind documentation
/assign
🤔


"AuthenticationServiceException" exception when running parallel CATs

We recently upgraded our UAA to uaa-release 53 and are seeing an exception being thrown from here.
We are running a single UAA instance on GCP on a n1-standard-1 VM. We are running the CATs with -nodes=20, and they are failing when running cf create-user with the error {"error_description":"Unexpected error","error":"scim","message":"Unexpected error"}.
Here's the full stack trace:
org.springframework.security.authentication.AuthenticationServiceException: System resources busy. Try again.
        at org.cloudfoundry.identity.uaa.util.LowConcurrencyPasswordEncoder.waitIfWeNeedTo(LowConcurrencyPasswordEncoder.java:165)
        at org.cloudfoundry.identity.uaa.util.LowConcurrencyPasswordEncoder.encode(LowConcurrencyPasswordEncoder.java:142)
        at org.cloudfoundry.identity.uaa.scim.jdbc.JdbcScimUserProvisioning.createUser(JdbcScimUserProvisioning.java:226)
        at org.cloudfoundry.identity.uaa.scim.jdbc.JdbcScimUserProvisioning$$FastClassBySpringCGLIB$$8d9e12f9.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

We're investigating whether increasing the VM to have more CPUs will resolve this problem, but Shash asked us to create an issue here to track our problem.

We were able to repro the issue outside the CATs with just printf %s\\n {0..100} | xargs -n 1 -I{} -P 100 cf create-user user-{} pass-{}, which will create 100 users in parallel.

@benmoss : We were able to reproduce this issue on our environment and it appears that tests fails with login errors if number of Ginkgo nodes are set to a high number(like 20)
Regards
Shash

Fixed in 53.1.


Change EmojiTrie implementation to SuffixTree

For this issue ticket we have implemented a very efficient/fast suffix tree implementation:

https://github.com/Expensify/App/issues/46591

PR:

https://github.com/Expensify/App/pull/48652

It was discussed that we want to use the implementation of the SuffixTree for the emoji search as well:

Discussion here

This enables:

more efficient search in emojis
faster construction of the emoji tree (we should compare the construction time before and after the change.)
searching for any substring of an emoji name (not just perfect name matches)

cc @roryabraham

Hey @hannojg, I have been very passionate Competitive Programmer back during my college days.
I think I could be a help here.
Do you think there is a scope of an External contributor here?

I think this is more of an internal ticket. The suffix tree implementation has already been built by our internal team and this is a follow up issue from one of our PRs.

Alright,
But I have one more suggestion here, we could make use of c++ here instead of js , c++ is well known for it's speed, I am really positive that c++ would make significant improvement here.

Alright,
But I have one more suggestion here, we could make use of c++ here instead of js , c++ is well known for it's speed, I am really positive that c++ would make significant improvement here.


[Bug]: latest version of mkdocs feature fails with babel error

Feature id and version
latest version of mkdocs fails with babel error
Devcontainer base Image
mcr.microsoft.com/vscode/devcontainers/base:ubuntu-22.04
What happened?
Steps to reproduce:

Create new devcontainer with following config:

{
    "name": "latest version of mkdocs fails with babel error",
    "image": "mcr.microsoft.com/vscode/devcontainers/base:ubuntu-22.04",
    "features": {
        "ghcr.io/devcontainers-contrib/features/mkdocs:2": {
            "version": "latest"
        }
    }
}

Run mkdocs new test
change to test dir cd test
Run mkdocs serve to serve newly created documentation to localhost

Expected behavior:
Newly created documentation is served to localhost and accessible via the browser.
Actual behavior:
Error log:
Traceback (most recent call last):
  File "/usr/local/py-utils/bin/mkdocs", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/__main__.py", line 270, in serve_command
    serve.serve(**kwargs)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/commands/serve.py", line 59, in serve
    config = get_config()
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/commands/serve.py", line 47, in get_config
    config = load_config(
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/config/base.py", line 366, in load_config
    from mkdocs.config.defaults import MkDocsConfig
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/config/defaults.py", line 7, in <module>
    from mkdocs.config import config_options as c
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/config/config_options.py", line 35, in <module>
    from mkdocs import plugins, theme, utils
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/theme.py", line 9, in <module>
    from mkdocs import localization, utils
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/localization.py", line 14, in <module>
    from babel.support import NullTranslations, Translations
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/support.py", line 23, in <module>
    from babel.dates import format_date, format_datetime, format_time, format_timedelta
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/dates.py", line 34, in <module>
    from babel import localtime
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/__init__.py", line 41, in <module>
    LOCALTZ = get_localzone()
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/__init__.py", line 37, in get_localzone
    return _get_localzone()
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/_unix.py", line 49, in _get_localzone
    tzinfo = _get_tzinfo(zone_name)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/_helpers.py", line 21, in _get_tzinfo
    return zoneinfo.ZoneInfo(tzenv)
  File "/usr/lib/python3.10/zoneinfo/_tzpath.py", line 67, in find_tzfile
    _validate_tzfile_path(key)
  File "/usr/lib/python3.10/zoneinfo/_tzpath.py", line 81, in _validate_tzfile_path
    raise ValueError(
ValueError: ZoneInfo keys may not be absolute paths, got: /UTC

Relevant log output
Traceback (most recent call last):
  File "/usr/local/py-utils/bin/mkdocs", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/__main__.py", line 270, in serve_command
    serve.serve(**kwargs)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/commands/serve.py", line 59, in serve
    config = get_config()
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/commands/serve.py", line 47, in get_config
    config = load_config(
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/config/base.py", line 366, in load_config
    from mkdocs.config.defaults import MkDocsConfig
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/config/defaults.py", line 7, in <module>
    from mkdocs.config import config_options as c
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/config/config_options.py", line 35, in <module>
    from mkdocs import plugins, theme, utils
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/theme.py", line 9, in <module>
    from mkdocs import localization, utils
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/mkdocs/localization.py", line 14, in <module>
    from babel.support import NullTranslations, Translations
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/support.py", line 23, in <module>
    from babel.dates import format_date, format_datetime, format_time, format_timedelta
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/dates.py", line 34, in <module>
    from babel import localtime
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/__init__.py", line 41, in <module>
    LOCALTZ = get_localzone()
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/__init__.py", line 37, in get_localzone
    return _get_localzone()
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/_unix.py", line 49, in _get_localzone
    tzinfo = _get_tzinfo(zone_name)
  File "/usr/local/py-utils/venvs/mkdocs/lib/python3.10/site-packages/babel/localtime/_helpers.py", line 21, in _get_tzinfo
    return zoneinfo.ZoneInfo(tzenv)
  File "/usr/lib/python3.10/zoneinfo/_tzpath.py", line 67, in find_tzfile
    _validate_tzfile_path(key)
  File "/usr/lib/python3.10/zoneinfo/_tzpath.py", line 81, in _validate_tzfile_path
    raise ValueError(
ValueError: ZoneInfo keys may not be absolute paths, got: /UTC

@agyss Thanks for reporting this
This actually seems like a bug in the image mcr.microsoft.com/vscode/devcontainers/base:ubuntu-22.04  time zone configuration(/etc/localtime file)
command:
docker run -it mcr.microsoft.com/devcontainers/base:debian ls /etc/localtime -l
results:
lrwxrwxrwx 1 root root 27 Sep  4 00:00 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC
However when running on ubuntu:
command:
docker run -it mcr.microsoft.com/devcontainers/base:ubuntu-22.04 ls /etc/localtime -l
results:
lrwxrwxrwx 1 root root 24 Sep  1 23:59 /etc/localtime -> /usr/share/zoneinfo//UTC
Notice the extra / in before the UTC part.
this causes os.readlink method of python (used in babel here   to incorrectly resolve the link to the localtime path.
As a quick fix I can add an explicit TZ=UTC environment variable to the mkdocs feature, but It looks like the same problem could appear in all python programs running on these mcr ubuntu containers

@agyss  try ghcr.io/devcontainers-contrib/features/mkdocs:2.0.18 for the workaround fix


UUID to []byte?

Is there any function to get []byte from a UUID instance, or I should write the code as below?
func getBytes(u uuid.UUID) []byte {
	b := make([]byte, 16)
	for i := range b {
		b[i] = u[i]
	}
	return b
}

b := uuidInstance[:]

also, might see MarshalBinary


placeholderData not applied when query is disabled

Describe the bug
When there're query dependent, the last query:

placeholderData not applied until the query is fetching.
isLoading never triggerd.

To Reproduce
online sandbox:
https://codesandbox.io/s/react-query-issue-et8hs?file=/src/index.js
I have two querys: auth, getUserDetail.
getUserDetail depends on auth.
The fetching order will be: auth -> getUserDetail.
placeholderData of getUserDetail is set to "placeholder"

when auth is fetching, the placeholderData of getUserDetail is undefined (BUG ?).
when getUserDetail is fetching, the placeholderData of getUserDetail is "placeholder" .
isLoading of getUserDetail is never been true (BUG ? I want to make sure this is expect behavior.).

Expected behavior

placeholderData applied at start (isIdle).

Desktop (please complete the following information):

Device: [PC]
OS: [Win10]
Browser: [edge(chromium)]

Additional context

Do we also want to show the placeholder data when a query is not enabled @tannerlinsley?

Do we also want to show the placeholder data when a query is not enabled @tannerlinsley?

Good question. Since placeholder data is meant to be “incomplete” data that never goes into the cache, i would say yes. How is initialData handling this case? I think it also works on disabled queries, but I’m not sure it should 🤔 See also here maybe: https://github.com/tannerlinsley/react-query/discussions/1318

Generically, I would expect placeholderData to populate and function as expected on disabled queries and initialData to not.

I also expected placeholderData to be returned in this case.
BTW once you do that you can drop unknown from TData when placeholder is set.

Generically, I would expect placeholderData to populate and function as expected on disabled queries and initialData to not.

@tannerlinsley since initialData is persisted to the cache, we currently apply it when the queryCache entry is created, which also happens for disabled queries. Also, a query can't really be enabled or disabled, only observers can (you can have two observers on the same query, one being enabled and one disabled). So I'm not sure if this would be doable, and it also goes a bit against my understanding of initialData...

I also expected placeholderData to be returned in this case.

Yes it makes sense. Would you like to take a stab at it?

BTW once you do that you can drop unknown from TData when placeholder is set.

You likely mean undefined, and that is not an easy thing to do, because you can define all options also on the QueryClient as defaults, or via queryClient.setQueryDefaults for a specific query. Ignoring this, and only making it work on type level for  useQuery directly, you still have the case where you define placeholderData, but the query that fetches in the background errors. In this case, the query will go to error state and placeholderData will no longer be applied, so you're back to undefined data. I think only initialData can solve this, and we could take a stab at improving the types there.

could it be as easy as adding || status === 'idle' here after we check for loading state?
https://github.com/tannerlinsley/react-query/blob/69b0c9857c04ab77eb394c416454650ba5963fc9/src/core/queryObserver.ts#L494-L499
🤔

IMHO placeholderData should be returned in all cases where there is no valid data. That includes errors.
Such behavior would match basic implementation of of fetching with state hooks.

imo that is what initialData is for. placeholderData moves the loading query directly to success state and we can’t do that in case of error. It would be a substantial change to how placeholderData works

Are you sure? How can placeholderData move query to success if it is supposed to be returned while query is executing (therefore no success yet)?

Well internally, it stays in loading because placeholderData only concerns the observer that uses it. But when placeholderData is supplied, the status on the returned result will be success. This happens here:
https://github.com/tannerlinsley/react-query/blob/a7780444bb0bdd0e7a768c6ebc57e04aea5f7c51/src/core/queryObserver.ts#L533-538

Seems very counterintuitive

What alternative would you suggest? We can’t keep it in loading state with data because loading state implies that you have no data. placeholderData is a "fake" success because it gives you data so that you can fake-it-till-you-make-it on screen. And if the query fails you go to error with no data, because you didn’t make it.

I would totally expect that loading state and data are not exclusive.
I'm not really that familiar with this library but back in the day when did a lot of desktop apps every component library would work that way (they would also expose separate property for fetched data if you needed it).
Also that matches basic behavior of state based fetching.

Another surprise for me is that data contains body of error response. Not sure if I should file an issue about that or I just expect too much from data prop.

Ignore last comment. I was experimenting and left some wrong code.

I just started using react-query today and this caught me off guard. I figured placeholderData would be used even when the query was disabled as well. Glad to see there's an incoming PR.
However, I'm still concerned about bypassing the isLoading state. Why is the initial state "success" if it hasn't successfully fetched anything yet?
Here's my use-case:

I've got two drop-downs; the 2nd one depends on the 1st. When you choose a "Twilio Subaccount" it should load the phone numbers for that account. I have the phone number query set to disabled until you choose an account. I also tried using placeholderData to initialize the phone numbers to an empty array to simplify my code (so I don't have to check if data is undefined or not everywhere). The phone number field also shows a little loading animation when it's in the isLoading state.
So what I expect to happen is that whenever the user chooses a new Twilio Subaccount the phone number field goes into the isLoading state to hint them that it's still populating, unless they pick an account that's already in the cache then it will quietly load that data and update the list if it's changed.
But the way it is now I lose that loading animation if I use if I use placeholderData. Alternatively, I have to litter my code with ?., ?? and ?: to handle the undefined data which is much less legible and will probably scale even worse if I was using anything more complicated than an empty array.

However, I'm still concerned about bypassing the isLoading state. Why is the initial state "success" if it hasn't successfully fetched anything yet?

That is per design. success means there is data to display, while loading should indicate that you have nothing to display, so you need to show a loading spinner.
In your situation you'd likely want to show your little loading animation depending on the isFetching flag, which will be true for every outgoing request. Alternatively, you can use the isPlaceholderData flag which will be true for as long as react-query is showing the placeholder data.

Which properties should is set such that data is always set to something (whether it's not loaded yet or load failed) but nothing is cached except the result of successful query?
Which single property says that data was fetched successfully?

Which properties should I set such that data is always set to something (whether it's not loaded yet or load failed) but nothing is cached except the result of successful query?

placeholderData

Which single property says that data was fetched successfully?

isFetched will be true if you have either data or an error. data && !isPlaceholderData will tell if you if you have data that is not placeholder data, which in turn means it's "real" data.

I think what I want is query.isLoading || (query.isFetching && query.isPlaceholderData) then. It would be nice to have a property for this so we don't have to repeat that logic everywhere. Something like isLoadingRealData.
It would also be nice be nice if data was still populated even when there's an error if placeholderData is set (like https://github.com/tannerlinsley/react-query/issues/1749#issuecomment-892115834). I wouldn't matter to anyone who already has an if(query.isError) or if(query.error) block because those properties would still be populated, it just helps so that you never need to handle undefined data.
Although it still seems odd to me that isSuccess means "has data" not "the query was successful" and isLoading means "there's no data" not "we're loading the data".

I think what I want is query.isLoading || (query.isFetching && query.isPlaceholderData) then. It would be nice to have a property for this so we don't have to repeat that logic everywhere. Something like isLoadingRealData.

if you have placeholder data, you can't be loading. If isPlaceholderData is true, you are also fetching (unless you disable the query). So I think either using only isPlaceholderData or isFetching for showing background loading indicators is sufficient.

It would also be nice be nice if data was still populated even when there's an error if placeholderData is set (like #1749 (comment)). I wouldn't matter to anyone who already has an if(query.isError) or if(query.error) block because those properties would still be populated, it just helps so that you never need to handle undefined data.

if that's what you want, why not use initialData ? Or, you can just do:
const { data = myPlaceholderData } = useQuery(...)

which will make any undefined data be myPlaceholderData instead.

Although it still seems odd to me that isSuccess means "has data" not "the query was successful" and isLoading means "there's no data" not "we're loading the data".

A successful query is a query that has data in the cache. How it got there doesn't matter. If you call queryClient.setQueryData() and manually prime the cache, it will also be successful. Why should it be loading in that case? It's successful, and potentially in isFetching state to indicate a background update. Actually, react-query doesn't even know how the data got in the cache. Could be via initialData, could be via prefetching or via setQueryData or via a different component that called useQuery before you and thus fetched data successfully.

:tada: This issue has been resolved in version 3.19.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

Which properties should I set such that data is always set to something (whether it's not loaded yet or load failed) but nothing is cached except the result of successful query?

placeholderData

But that's not really true, is it? I'll need to retest it but according to other posts here, data won't be set in case of error even if there is placeholderData.

Which single property says that data was fetched successfully?

isFetched will be true if you have either data or an error. data && !isPlaceholderData will tell if you if you have data that is not placeholder data, which in turn means it's "real" data.

Would be nice to have single property for common use case.

But that's not really true, is it? I'll need to retest it but according to other posts here, data won't be set in case of an error even if there is placeholderData

Yes, if you have an error, you don't get placeholder data. placeholder data "holds the place" until either real data or a real error comes back from the api request. It's something you can display instead of the loading spinner you would usually display in these cases.

so I'll actually need something like data ?? placeholderData.

If you just want never undefined, I'd do:
const { data = myPlaceholderData } = useQuery(...)

basically coercing undefined to the placeholder data. I personally don't think it makes much sense though to display it even if there is an error. If that's the case, how do you distinguish it from real data? It looks more like you have some data you want to always no matter what, which again sounds more like initialData to me. But we're going in circles.
I've written a blogpost yesterday about those differences, maybe it helps someone: https://tkdodo.eu/blog/placeholder-and-initial-data-in-react-query

The point of always having some data is that I don't have to handle undefined anywhere. Especially with arrays I can do whatever processing as usual without caring whether there is any data. I can also display it without caring about that too. A lot of the time this is good enough. It's the same reason why people use monads.
Iff I want to do something special for errors then I will check if there are any errors.
There is no reason to cache fallback data and also sometimes I might need to know whether data is fallback/default/placeholder or not (e.g. to style it differently) and with initialData that is lost.

re: https://github.com/tannerlinsley/react-query/issues/1749#issuecomment-895856195

if you have placeholder data, you can't be loading. If isPlaceholderData is true, you are also fetching (unless you disable the query).

That's the point. There's too many caveats. I don't want my logic to change depending on whether or not I've set the placeholderData or disabled the query. I want one flag that works the same everywhere.
const { data = myPlaceholderData } = useQuery(...)

That might solve my undefined data problem nicely actually. Thanks. I don't think it works so well when I want back an object, not destructured vars. (When you use 2 or more queries in 1 component, destructuring gets ugly)

A successful query is a query that has data in the cache.

Isn't that inconsistent with what you said https://github.com/tannerlinsley/react-query/issues/1749#issuecomment-894956693? I thought placeholderData doesn't put data in the cache. That's what the docs say. Yet, if you set the placeholderData the query will be in "success" state even before the cache is populated.

If you call queryClient.setQueryData() and manually prime the cache, it will also be successful. Why should it be loading in that case?

It wouldn't be isLoading because it's not fetching. isSuccess makes sense there. Perhaps I should rephrase "the query was successful" to "the query successfully returned non-placeholder data"; whether it's from the cache or a fetch isn't the important bit.

Actually, react-query doesn't even know how the data got in the cache. Could be via initialData, could be via prefetching or via setQueryData or via a different component that called useQuery before you and thus fetched data successfully.

That all sounds fine. If it got into the cache, isSuccess makes sense. But placeholderData is not cache data AFAIK.

re: https://github.com/tannerlinsley/react-query/issues/1749#issuecomment-896115286

I personally don't think it makes much sense though to display it even if there is an error.

We can do both. i.e. display a skeleton page and an error message to indicate it's never going to load. But if the placeholderData gets wiped, so does our skeleton.

If that's the case, how do you distinguish it from real data?

However the developer desires. If we're rendering a skeleton or lorem ipsum, it's probably obvious the data isn't real. Plus they should render a spinner (which is why I'd prefer if isLoading were true)

It looks more like you have some data you want to always no matter what, which again sounds more like initialData to me.

@mwisnicki said it better; https://github.com/tannerlinsley/react-query/issues/1749#issuecomment-896137668

I think the idea behind going into success state directly is so that you can treat it as any other data in your component. If we change that to be in loading state, every component breaks that is implemented like:
function Component({ someDataThatIsPotentiallyUndefined }) {
  const { isLoading, data } = useQuery(key, fn, { placeholderData: someDataThatIsPotentiallyUndefined })

  if (isLoading) return <LoadingSpinner />

  ... do something with data ...
}

because it would just always show the loading spinner, even if we have defined placeholderData.

Why? When data is loaded, isLoading = false and there is no spinner.

I can get behind the idea of keeping placeholderData in case of error. if the status stays error, checking for it will show the error. But it would break the same way if we code our component the other way around:
function Component({ someDataThatIsPotentiallyUndefined }) {
  const { data, error } = useQuery(key, fn, { placeholderData: someDataThatIsPotentiallyUndefined })

  if (data)  ... do something with data ...
  if (error) showError

  return <LoadingSpinner />
}

That very much depends on how you define meaning of data. If you define it the way I and @mnpenner want it (which IMHO is more intuitive) then this snippet is just bad code.

Btw, I think it's the same that keepPreviousData is doing. If we go from one page to the next, we keep previous data and show it while we are transitioning to the next page. If that next page fetch errors, why should we keep showing the data from the previous page? It's like a placeholder for the fetch of the next page, until it finishes. Once it's finished, successfully or not, the placeholder vanishes.

I'm on the fence about what the correct behavior for that scenario is. You could either wipe the previous data and reset it back to placeholderData if it exists, or keep the previous data. Either way, you'd want to handle the error. I don't think it would be terrible from a UX perspective to leave the previous page of data on the screen and splash an error message over top to say "Failed to load next page" or something of the sort -- wiping the page clean would only create more jitter. Let the developer decide what they want to do; as long as both error and data are populated they have the choice.

If we change that to be in loading state, every component breaks ...

Ya, unfortunately I believe that's true. Both changing the definition of isLoading and whether or not data is populated with initialData when there's an error are potentially backwards-incompatible changes. Unless you guys are planning a v4 soon I think the only way to release this change safely would be with a new config option.

Why? When data is loaded, isLoading = false and there is no spinner.

I'm talking about the example where we provide placeholderData and the queryInfo returned from useQuery would be:
{ status: 'loading', data: thePlaceholderData, isPlaceholderData: true, error: undefined }

because that's what you are proposing right? Just to be clear, this is what you currently get in that scenario:
{ status: 'success', data: thePlaceholderData, isPlaceholderData: true, error: undefined }

The difference being that we go to success state for this observer, temporarily. If we didn't do that, we would have to stay in loading state, in which case my shown snippet that checks for the loading state at first would not render the placeholderData, but the loading spinner.

I think I can 'fix' it like this on my end:
export function useFixedQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, queryFn: QueryFunction<TQueryFnData, TQueryKey>, options?: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>) {
    const query = useQuery(queryKey, queryFn, options)
    if (query.data === undefined && options?.placeholderData !== undefined) {
        query.data = resolveValue(options.placeholderData)
        query.isPlaceholderData = true
    }
    if(query.isSuccess && query.isFetching && query.isPlaceholderData) {
        query.isLoading = true
        query.isSuccess = false
        query.status = 'loading'
    }
    return query
}

Hope I'm not missing anything.


[Bug]: APP_TITLE .env var seems to have no effect

What happened?
In my .env file I have:
APP_TITLE="Test"
CUSTOM_FOOTER="GPT Proxy"

But this seems to have no effect on the actual service as per screenshot below and it still displays LibreChat.

Though, CUSTOM_FOOTER works perfectly and has no issues. I believe, this happened after some of December updates in the repo.
PS - tested both with ticks and without them (but it should not matter)
Steps to Reproduce

Get latest update following Updating LibreChat section in this manual https://docs.librechat.ai/install/installation/docker_compose_install.html
Set APP_TITLE .env var
It has no effect.

What browsers are you seeing the problem on?
Chrome
Relevant log output
sudo docker logs LibreChat

><EMAIL_ADDRESS>backend
> cross-env NODE_ENV=production node api/server/index.js

2024-01-15 00:03:51 info: [Optional] Redis not initialized. Note: Redis support is experimental.
2024-01-15 00:03:55 info: Connected to MongoDB
2024-01-15 00:03:55 info: Server listening on all interfaces at port 3080. Use http://localhost:3080 to access it

Screenshots
No response
Code of Conduct

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

Thanks for your report. It should have some effect already in the footer, as for the browser/tab title, I'm pushing a fix for this.
You might still see "LibreChat" show on refresh. There's no way to avoid this unless you edit client/index.html, in case this matters to you.


build hhvm on trusty box

Same as https://github.com/php-http/message/pull/77.

You need to remove hhvm on line 14

Build is now green! I just fixed one test which was probably working for php because of a mocking side-effect.


ExecSync did not return according to the timeout set in the request

Description
While both https://github.com/kubernetes/kubernetes/issues/123931 and https://github.com/containerd/containerd/issues/9568 have been closed, the problem still exists.
Steps to reproduce the issue
See https://github.com/kubernetes/kubernetes/issues/123931#issuecomment-2008359159 for the recreate steps.
Describe the results you received and expected
Exec timeout is honored.
What version of containerd are you using?
1.7.15
Any other relevant information
No response
Show configuration if it is related to CRI plugin.
No response

Sorry for missing the comment in closed #9568. @tallclair @rtheis
I would like to explain more detail about shim IO handler first.
The following chart is about setns process's stdout dataflow.
When setns-process exits, we don't want to have any log loss issue so we will wait for IO closed.
The pipe+w writer should be closed after setns-process exited.
After pipe writer is closed, since there is only one writer, the pipe reader will return EOF in shim side.
And then shim closes the fifo+w and CRI plugin will get the EOF from fifo+r.
+--------------------------------+      +-----------shim----------+   +--------CRI--------+
|                                |      |                         |   |                   |
| setns-process/stdout (pipe+w)----------->(pipe+r)---->(fifo+w)-------->(fifo+r)-->FILE  |
|                                |      |                         |   |                   |
+--------------------------------+      +-------------------------+   +-------------------+

However, setns-process can have child processes or grandchild processes.
When ExecSync timeouts, CRI only kills setns-process.
Since we don't have sub-cgroup to track all the processes created by the setns-process, we can't force-stop these processes. So, these processes will hold pipe+w file descriptor. Based on current design in shim, shim will wait for EOF from pipe+r.
In 'sh', '-c', 'date >> /probe/readiness-log.txt && sleep 45' case, we kill the sh but sleep 45 is still holding the writer's file descriptor. That's why it takes so long.
Currently, I don't have better solution to cleanup all the processes created by setns-process without introducing sub-cgroup for each exec call. So, I introduces a  drain_exec_sync_io_timeout in https://github.com/containerd/containerd/pull/7832.
By default, there is no timeout to drain IO. If user wants to fastfail after timeout, we can set it to 10ms.

Side note: The setns-process and init container should take responsibility to cleanup the orphaned processes https://github.com/containerd/containerd/pull/10002#discussion_r1571892279

@fuweid thank you.  That works as you've noted.  I'm concerned with changing the value since you all left the default value to effectively disable the timeout.  I'd like a reasonable timeout but also don't want data loss either.  What is your recommendation?

ping @dmcgowan  @mikebrow
I think that the default value could be 3-5 seconds.
In https://github.com/containerd/containerd/pull/3361, we use 2 seconds to drain IO. 3-5 seconds looks safe

test  environment:
containerd 1.7.11
rustshim latest
test function:
containerd : TestContainerDrainExecIOAfterExit
It will exec exceed the time, and it will report a fail.In delete function. If the shim return no error , but the io still used by runc fork process , io.wait will wait long time.
May be add a time maximum time limit in io.wait ?
Fifo file write  is not close  will cause this problem.
friendly ping @fuweid , thanks

Hi @jokemanfire ,

rust-shim looks like use fifo directly , have no pipe in it.

Yes, the rust-shim opens fifo directly. Without sub-cgroup for each exec process, I don't have good solution to handle this in CRI-side. Ping @abel-von @Burning1020 for help on rust-shim issue, since they are maintainers on rust-shim.

Hi @fuweid  @Burning1020  @abel-von
I try to resolve this problem  in rust-shim at the beginning . But  I think use fifo directly can reduce the copy-io 's performance loss now (I think it is a  good way). How about add a timeout to io.wait to avoid waiting forever? not only for rust-shim, but for every occupation IO cases.
I think when containerd send a delete request to shim. It defaults that Shim can disable the writing end of IO. So it used io wait to wait for the remaining data to be written to completion. If  it is necessary to keep waiting for the IO write end to close while deleting. Containerd believes too much in shim, I think this is not very reasonable.

It defaults that Shim can disable the writing end of IO

When container holds fifo directly, the write side of fifo must be hold by the processes created by exec-init process.
It's unlikely to close it. The timeout is just for WaitIO progress. Without close event of fifo, the cri-containerd is still waiting for EOF from container. I believe that rust-shim still needs pipe and forwards bytes into fifo.

But I think use fifo directly can reduce the copy-io 's performance loss now (I think it is a good way).

Just my two cents. Correctness is first priority. And if there is performance data, it will be more convincible.

How about try to use copy-io first ,  it may not same with go-shim to implementation copy-io @Burning1020 . I will try to do this thing, resolve issues that differ from goruntime implementation。

Use copy-io just for exec io. Even if the read side of pipe was cloased, the rust copy-io thread was still waiting for IO, as it is a synchronized syscall different with Goruntime.
And show the test performance data ,  if the performance is worth it . And I think change process.io.wait is  more valuable. @fuweid
But I still think  that process.io.wait  must wait for the  write-side have been closed .There are no restrictions on it here ,I think it's a bit unreasonable. Thanks.

@jokemanfire

And show the test performance data , if the performance is worth it . And I think change process.io.wait is more valuable

Sorry I didn't follow you here. The write side of fifo is hold by processes in container instead of shim, while the CRI-containerd holds the read side of fifo. Even if you have timeout policy, the write side of fifo is still open. How does CRI-Containerd get the closed event? If you already have POC, please file pull request in rust-shim side, thanks

Thanks for your patience , I know that the process is runc to start that , and hold the fifo write (such like sh -c sleep 365d), But I don't understand the containerd if it necessary to wait forever for the write end of IO to close after delete rpc request send ?That's my think point .  The shim process pid file have been remove , but the io file wirte will still used by start process. containerd just close the read side will cause any problem? @fuweid

Thanks for your patience , I know that the process is runc to start that , and hold the fifo write (such like sh -c sleep 365d), But I don't understand the containerd if it necessary to wait forever for the write end of IO to close after delete rpc request send

@jokemanfire Sorry for missing this comment. I have article to describe fifo things for that in Chinese https://fuweid.com/post/2022-embedshim-kernel-is-my-sidecar/ (google translation for English should work :joy ). Hope it can help.
Both containerd and containerd-shim don't wait for it forever.
The containerd is waiting for closed event for that fifo, which triggerd by containerd-shim.
When we call the delete call to shim, containerd-shim will wait for it in 2 seconds and close it. And then containerd will get the notification.
REF: https://github.com/containerd/containerd/pull/3691/files

Thanks for your patience , I know that the process is runc to start that , and hold the fifo write (such like sh -c sleep 365d), But I don't understand the containerd if it necessary to wait forever for the write end of IO to close after delete rpc request send

@jokemanfire Sorry for missing this comment. I have article to describe fifo things for that in Chinese https://fuweid.com/post/2022-embedshim-kernel-is-my-sidecar/ (google translation for English should work :joy ). Hope it can help.
Both containerd and containerd-shim don't wait for it forever. The containerd is waiting for closed event for that fifo, which triggerd by containerd-shim.
When we call the delete call to shim, containerd-shim will wait for it in 2 seconds and close it. And then containerd will get the notification.
REF: https://github.com/containerd/containerd/pull/3691/files

Thank you very much , this is very useful to me.


Error on CLI after Deploy Twilio Access Token Server

Describe the bug
When running the README.md of this application, running the command twilio rtc:apps:video:deploy --authentication passcode will result in an error twilio-cli encountered an unexpected error. To report this issue, execute the command with the "-l debug" flag, then copy the output to a new issue here: https://github.com/twilio/twilio-cli/issues.
To Reproduce
Steps to reproduce the behavior:

Create a new twilio account
Follow the steps on Deploy Twilio Access Token Server
See error after executing step 3

Expected behavior
A clear and concise description of what you expected to happen.
Additional context
Pop-OS 19.04 x86_64
Twilio CLI: twilio-cli/1.12.0 linux-x64 node-v12.16.1
NodeJS: 12.16.1
npm: 6.13.4
nvm: 0.35.3
Running with the debug flag gives:
twilio rtc:apps:video:deploy --authentication passcode -l debug [DEBUG] Config File: /home/gferreira/.twilio-cli/config.json [DEBUG] Using profile: goncalo-pop [DEBUG] -- BEGIN Twilio API Request -- [DEBUG] GET https://serverless.twilio.com/v1/Services [DEBUG] User-Agent: @twilio/cli-core/4.6.0 (twilio-node/3.42.0, node.js v12.16.1, linux 5.0.0-21-generic x64, rtc:apps:video:deploy) [DEBUG] -- END Twilio API Request -- [DEBUG] response.statusCode: 200 [DEBUG] response.headers: {"date":"Wed, 01 Apr 2020 22:11:32 GMT","content-type":"application/json; charset=utf-8; charset=utf-8","content-length":"1067","connection":"close","twilio-concurrent-requests":"1","twilio-request-id":"RQea6e243479e14b04bf18e1538dc8c856","twilio-request-duration":"0.034","access-control-allow-origin":"*","access-control-allow-headers":"Accept, Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since","access-control-allow-methods":"GET, POST, DELETE, OPTIONS","access-control-expose-headers":"ETag","access-control-allow-credentials":"true","x-powered-by":"AT-5000","x-shenanigans":"none","x-home-region":"us1","x-api-domain":"serverless.twilio.com","strict-transport-security":"max-age=31536000"} [DEBUG] -- BEGIN Twilio API Request -- [DEBUG] GET https://serverless.twilio.com/v1/Services/ZSf9c1875b44881004a043b620f0bba67b/Environments [DEBUG] User-Agent: @twilio/cli-core/4.6.0 (twilio-node/3.42.0, node.js v12.16.1, linux 5.0.0-21-generic x64, rtc:apps:video:deploy) [DEBUG] -- END Twilio API Request -- [DEBUG] response.statusCode: 200 [DEBUG] response.headers: {"date":"Wed, 01 Apr 2020 22:11:32 GMT","content-type":"application/json; charset=utf-8; charset=utf-8","content-length":"380","connection":"close","twilio-concurrent-requests":"1","twilio-request-id":"RQ5ef2a61053ca4e24acdc9a5386a2aa35","twilio-request-duration":"0.034","access-control-allow-origin":"*","access-control-allow-headers":"Accept, Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since","access-control-allow-methods":"GET, POST, DELETE, OPTIONS","access-control-expose-headers":"ETag","access-control-allow-credentials":"true","x-powered-by":"AT-5000","x-shenanigans":"none","x-home-region":"us1","x-api-domain":"serverless.twilio.com","strict-transport-security":"max-age=31536000"}  » twilio-cli encountered an unexpected error. To report this issue, execute the command with the "-l debug" flag, then copy the output to a new issue here: https://github.com/twilio/twilio-cli/issues [DEBUG] Cannot read property 'sid' of undefined [DEBUG] TypeError: Cannot read property 'sid' of undefined     at DeployCommand.getAppInfo (/home/gferreira/.twilio-cli/node_modules/@twilio-labs/plugin-rtc/src/helpers.js:76:64)     at processTicksAndRejections (internal/process/task_queues.js:97:5)     at async DeployCommand.run (/home/gferreira/.twilio-cli/node_modules/@twilio-labs/plugin-rtc/src/commands/rtc/apps/video/deploy.js:18:20)     at async DeployCommand._run (/home/gferreira/.twilio-cli/node_modules/@oclif/command/lib/command.js:44:20)     at async Config.runCommand (/home/gferreira/.nvm/versions/node/v12.16.1/lib/node_modules/twilio-cli/node_modules/@oclif/config/lib/config.js:160:9)     at async Main.run (/home/gferreira/.nvm/versions/node/v12.16.1/lib/node_modules/twilio-cli/node_modules/@oclif/command/lib/main.js:21:9)     at async Main._run (/home/gferreira/.nvm/versions/node/v12.16.1/lib/node_modules/twilio-cli/node_modules/@oclif/command/lib/command.js:44:20)

I've tried using twilio login and two ENV VARS methods described in here, both without success

Hi @goncaloflf,
Thanks for reaching out! Do you mind updating to the latest version by running the following commands?
twilio plugins:update
twilio rtc:apps:video:delete
twilio rtc:apps:video:deploy --authentication passcode

Cheers @Alton09 , thank you for the quick response! That fixed my problem, thank you so much. Do you believe it's worth mentioning that on the README? :thought_balloon:

Glad that helped @goncaloflf! We'll be sure to update the README to include that information. Thanks for the feedback 👍


Use "in-repo" (git powered) issues; allow to post/edit/view issues without internet (localhost).

Rationales:

Improves offline (localhost) workflow.
Serves as continuous, distributed backup of issues.
Is asymptotic improvement if it integrates with GitHub's issues.

Background:

Found huge list of such programs for git.
Some of those share a branch with code, whereas some use an issues branch.

Perhaps some have mechanisms to have a closed-access code branch but allow the public to push issues to such issues branch

More simple to just have the tool pull GitHub's issues.
or have a GitHub script (gist?) push public issues to an issues branch.

Some of those attach local git to GitHub's issues.
Some of those also track pull requests.

https://www.reddit.com/r/git/comments/46b6cq/how_could_inrepo_issue_tracking_work/ talks about this

https://stackoverflow.com/questions/11002908/can-i-add-issues-to-github-from-the-command-line talks about the interfaces to GitHub's issues.


Some missing libraries

The family of libraries descended from Savant is missing; the best representatives are Aura.View and Qiq.

Hello @pmjones,
Can you show here how a bridge could look like to this two engines?
And can you answer what they support of the feature list: https://github.com/schranz-templating/templating#analysis and if possible how.
Also which framework do support (official and unofficial (third party integrations)) exist currently for this template engines.

I implemented the Bridge please check them out here if they are correctly:

https://github.com/schranz-templating/templating/blob/0.1/src/Bridge/AuraView/AuraViewRenderer.php
https://github.com/schranz-templating/templating/blob/0.1/src/Bridge/Qiq/QiqRenderer.php

Still would be nice if you could complete the feature list for completness.


fix: export editable color values autoware overlay

Description
This PR adds the capability to use editable color values directly through RViz for the speed limit indicator display. The colors for the speed limit indicator can now be customized, allowing for better visualization and adherence to user preferences.
Tests performed
The functionality was tested by setting different light and dark color values for the speed limit indicator and verifying the color transitions based on speed-to-limit ratios. The updated function was tested within the RViz environment to ensure the colors update as expected.
https://github.com/autowarefoundation/autoware.universe/assets/36904941/7196d0f5-6b47-4daf-bd5f-d5f488837ad6
Effects on system behavior
Not applicable.
Interface changes
The following new parameters are introduced to allow color customization through RViz:

light_color: The color used for the lower end of the speed-to-limit ratio.
dark_color: The color used for the upper end of the speed-to-limit ratio.
bg_color: The background color for the speed limit indicator.
bg_alpha: The transparency level for the background color.

These parameters can be adjusted via the RViz UI to achieve the desired visualization effect.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[x] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

@xmfcx should i make these similar changes to the mission overlay in this same PR as well or not necessary ?

@KhalilSelyan It would be good to add them in this same PR too, they packages are very similar anyways.

@xmfcx It has been done.

@KhalilSelyan It's cool :+1:
There have been so many changes. could you do git rebase?

@KhalilSelyan It's cool :+1:
There have been so many changes. could you do git rebase?

I tried to rebase and i ended up with this calling all reviewers etc i might have done it wrong