Delete old pipeline logs after X days or Y new runs

Clear and concise description of the problem
From https://codeberg.org/Codeberg-CI/feedback/issues/63:
It would be nice to have an option to delete old logs of pipeline entries. Either automatic (delete logs of succesful runs after X days or Y new runs?) or with some sort of checkbox selection and action?
Suggested solution
An option that automatically deletes old pipeline logs
Alternative
No response
Additional context
No response
Validations

[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Indeed, an option to manually delete pipeline runs (for example, after debugging the CI config on a testing branch) would be nice to have.

I would like to add support for automatic deletion of old pipelines.
Therefore I would suggest the "keep max last x pipelines" approach as it seems to be covering the issue (I want to keep the database size to a minimum by deleting unused content) well and seems to be the easiest solution to implement keeping things simple. This would make special api endpoints as requested in #3506 obsolete for now.
My plan would be the following:

add UI option to set max amount of pipelines to keep per repo (we could later on add a server max amount as well)
everytime a new pipeline is created we simply check the amount and delete the oldest ones to get back to amount x specified

I don't get it. Why not keep the API first approach? Why would you hardcode this feature instead of a reusable API?

I don't get it. Why not keep the API first approach? Why would you hardcode this feature instead of a reusable API?

How should any other users benefit from this feature, will you open-source it as a service? If the plan is to introduce it as an internal feature later on wouldn't those api endpoints be unused by the internal service anyways? I guess we don't plan to call the api endpoints from the code?

Still don't get your point... As I wrote in the PR already, the API can be called by the UI (that's how the UI works at all, no?). The API can also be called (from the CLI)[https://github.com/woodpecker-ci/woodpecker/blob/main/woodpecker-go/woodpecker/client.go] (the client is using the go sdk which is just doing plain API calls). If that's not true, why do we expose APIs at all? Creating an internal only function prevents manual cleanups whenever a user wants to do it with whatever range the user want to clean up.
If you don't plan to create a re-usable API first, how will the UI implementation look at all? Nevertheless, I thought woodpecker is using an api-first approach. This means users are able to write own CLI clients or even own web frontends if they want to. That's why I don't get why you don't want a public API.

Reading this thread, @xoxys reasoning makes a lot of sense to me (having API endpoints which can be called from the UI and CLI) and would also cover the intentions of @anbraten AFAICS.
@anbraten Can you eloborate what the downsides would be in your view to the approach of @xoxys?

I thought about adding an api in the beginning as well. However to have an automatic deletion / retention of pipelines this has to be integrated into some kind of routine. At first there was the idea to have it executed by a cron scheduler, but then someone in chat suggested to simply remove old pipelines each time a new pipeline is created which seems pretty smart in terms of not checking inactive repos on large instances. This would make an api for this kinda obsolete. The main question remaining from what I read is if a keep x pipelines setting or a keep pipelines not older than x days setting is more useful for the majority of users.
Keep x pipelines seems to be nice as projects often have a different amounts of activity over time. Based on our UI most users are probably looking at sth like the last 10 pipelines in the UI. So keeping the 100 latest pipeline could do the job. If there is no activity for a year or so on a project you would still have some pipelines once you come back to the project.
Keeping pipelines for x days could make more sense for legal requirements, but I haven't heard of someone that this is a thing for CI pipelines yet.

You still just ignore my main points.

If you don't plan to create a reusable API first, what should the UI implementation even look like?

Is not answered.

This would make an api for this kinda obsolete.

No because users should still have the ability to delete pipelines whenever they want and the amount they want. I can't understand why you try to avoid an API that at all costs. However, I have outlined and explained my points pretty clear multiple times now.

Keep x pipelines seems to be nice as projects often have a different amounts of activity over time. Based on our UI most users are probably looking at sth like the last 10 pipelines in the UI. So keeping the 100 latest pipeline could do the job. If there is no activity for a year or so on a project you would still have some pipelines once you come back to the project.

I have chosen the time bases approach for the API because it can also handle "Keep x pipelines" as well. If we prefer this for e.g. the Woodpecker UI, just do:

get last 100 pipelines via "get pipelines api" /repos/{repo_id}/pipelines [get]  (exists already)
read "create date" from last pipeline in the returned list
call "delete pipelines" api /repos/{repo_id}/pipelines [delete] with /?before=... (was proposed in the linked PR)

If some people want to use a time-based approach, they can use the same API.

You still just ignore my main points.

If you don't plan to create a reusable API first, what should the UI implementation even look like?

To achieve the goal "cleanup the pipeline list / database to not fill up the disk" most user probably don't wont to create an external service / cron-job. Therefore a setting like the following which enables an automatic cleanup would be sufficient for the majority:

If a user still has specific needs the /repos/{repo_id}/pipelines endpoint could be used to receive a list of pipelines and we could consider adding a generic endpoint for deleting just a single pipeline as suggested before. For even more specific needs there is always the option to manually interact with the database directly.

You make assumptions about what users want instead of letting them choose on their own. As I'm a user as well, I can tell you I don't want such a setting, and it would not help me at all. However, I'm out at this point :wave:

What a hot discussion! It's funny and sad at the same time...
TLDR: go on and implement it in your way. Who wants API/whatever will implement it on top of your service.

why you try to avoid an API at all costs

I doubt it is the main reason. The main is avoiding scheduling service, I think. It is and it was. I don't understand why though...
If one has concerns in regards HA, then

It doesn't work now anyway;
We can develop separate micro service as Harbor did Job service, for example.

The second one is Why one should implement functionality, which is orthogonal to what he wants/needs (requirements)?
Why orthogonal? Because current feature requires just one integer - the setting of retention policy - not low-level API.

would like to add support for automatic deletion of old pipelines

Note automatic.

I have chosen the time bases approach ... just do ...

Who? Me? Manually? ^ Automatic.

users are able to write their own CLI clients or even their own web front-ends

What a beautiful definition of an user!

To achieve the goal "cleanup the pipeline list / database to not fill up the disk" most user probably don't wont to create an external service / cron-job

Exactly! I'm in that bucket of users. We do not consume cool Application Programming Interfaces, nor write frontends. We use GUI (CLI at worst).

I can tell you that I do not want such a setting, and it would not help me at all

Don't want - don't use. It would not help me either, but it may help somebody.

Anbraten are going to write internal service to clean up logs. That service will be triggered by pipeline creation (I prefer cron, as you know:). There will be retention policy setting in GUI.
Who wants to expose that service via REST API, GRPC, CLI / whatever are welcomed, I guess.

If a user still has specific needs the /repos/{repo_id}/pipelines endpoint could be used to receive a list of pipelines and we could consider adding a generic endpoint for deleting just a single pipeline as suggested before. For even more specific needs there is always the option to manually interact with the database directly.

But it's a different task.

You missed the entire point...

I have created a PR to expose an API to delete pipelines and it wad refused
I have not refused to implement this feature in the UI I have not even refused the way Anbraten had suggested
I just wanted to create the API first because thats how the Woodpecker UI and the cli works already by using the API of the woodpecker server

That is sad, but not related to implementation in discussion.

Your API is completely different to what current implementation requires.
I doubt. Are you suggesting to run this algorithm in frontend? When, considering automatic aspect?
It is completely different features.

Having an API to delete pipelines is a different feature than having a UI setting to do it? Why do we have an API to delete a Repo if we have a button in the UI to do it? And what is the red button "Delete Repo" doing? It calls the DeleteRepo API.
And thats exactly what Im talking about.

I doubt. Are you suggesting to run this algorithm in frontend? When, considering automatic aspect?

I agree the UI might be the wrong place to automate it.

Having an API to delete pipelines is a different feature than having a UI setting to do it?

Having an API to delete pipelines is a different feature than having an UI to set a retention policy / setting up a trigger.
Also, I've just read through #3506:

Note: These APIs are about deleting the entire pipeline, not only it logs.

And this issue title:

Delete old pipeline logs

deleting the entire pipeline

Don't want to search, but there was concern about audit.

Why do we have an API to delete a Repo if we have a button in the UI to do it? And what is the red button "Delete Repo" doing? It calls the DeleteRepo API. And thats exactly what Im talking about.

I understood it. If Anbranten wanted just button to delete pipeline/s (or logs?;), than your points absolutely right.

Having an API to delete pipelines is a different feature than having an UI to set a retention policy / setting up a trigger.

You are right.

Don't want to search, but there was concern about audit.

If that would have been the mail problem I could understand it as well but nobody said something like this not in the PR not in this discussion.
Anyway I agree it might be better to separate these topics.

I've been thinking for a while...
Hooking into pipeline lifecycle is fine if we could decouple it. Instead of calling directly LogsCleaningService from PipelineService, we could emit event PipelineCreatedEvent and handle it in cleaning service.

LogsCleaningService is singleton, loads configuration (retention policy) at startup.
Pipeline runs. At some point it is saved to DB in PipelineService (should already exist, didn't look for a name in the code).
Right after that PipelineCreatedEvent is created/emitted.
LogsCleaningService catches event, gets repo ID.
Loads (via PipelineService probably) pipeline runs IDs by condition from retention policy: older than X days / X count.
Calls method (supplying IDs from previous step) of PipelineService (or maybe some dedicated to logs exists PipelineService) to remove log entries like removeLogsOf(int[]{1,2,3}).

Looking forward to implementation of this feature, cause I could apply this approach to the agents cleaning also.


the worst sample visualization

Thank you for your excellent work.
I am wondering if you could share the code for the worst sample visualization.
Looking forward to your reply！

Hi,
The current code includes worst sample visualization for stylegan2 trained models. An example command will be:
python calc_metrics.py --metrics sort_likelihood --name afhq_dog --split custom --network https://www.cs.cmu.edu/~vision-aided-gan/models/main_paper_table3_afhq/vision-aided-gan-afhqdog-ada-3.pkl --data afhq_dog

where --name and --split=custom (by default) flag values are the ones used to create reference dataset statistics using clean-fid library. An example command for the same is:
from cleanfid import fid
fid.make_custom_stats( name, dataset_path, mode="clean")

The above command should be run before calling calc_metrics.py.
Thanks.

Thank you very much for your guidance, but I have the following problems at present：

My command is:
!python calc_metrics.py --metrics sort_likelihood --name face --split custom --network "/content/drive/MyDrive/stylegan2-ada-pytorch-main/models/network-snapshot-001700.pkl" --data /content/drive/MyDrive/stylegan2-ada-pytorch-main/datasets/pv-face7k.zip
I also got two npz files from clean-FID
saving custom FID stats to /content/drive/MyDrive/stylegan2-ada-pytorch-main/cleanfid/stats/face_clean_custom_na.npz
Sincerely hope to get your help！

It looks like args.run_dir might be None while running calc_metrics.py.
By default it is the folder with training_options.json file (the folder created during training stylegan2 model).
I have updated the code for set args.run_dir to out (in case its None) inside stylegan2 folder so should work now.
Thanks.

Thanks again for your help, I made it!
Best wishes to you!


Lag in midi event generation over time

Hi, I recorded the midi sound produced using midi events generated by lomse. Comparing it with Musescore exported audio and expert rendered audio I have the below observations.

There are 3-4 beats added by lomse at the beginning of score after which the playback starts. This is producing a delay of around 2-3 seconds.
As time progresses, the audio starts to lag. Note events are generated with a lag. Differences were seen in the note onset location for the audios. While musescore and expert onsets were nearly coinciding, lomse onsets had lag.

I am not sure if this is an issue with my implementation. Please advice.
Thanks.

There are 3-4 beats added by lomse at the beginning of score after which the playback starts. This is producing a delay of around 2-3 seconds.

Probably you have enabled, in lomse score player, the option "count off before start playback" to generate one empty measure at start with only metronome clicks (if metronome enabled) or no sound (if metronome disabled).

Yes had enabled "count off option". Disabled that but still noticed delay. Modified the below lines of code. Some compensation was being done for the empty measure added for count off  even when count off was disabled. Now the sync is better.
//determine last metronome pulse before first note to play.
    //First note could be syncopated or an off-beat note. Round time to nearest
    //lower pulse time
    nMtrEvDeltaTime = ((events[i]->DeltaTime / m_nMtrPulseDuration) - 1 ) * m_nMtrPulseDuration;
with
   nMtrEvDeltaTime = ((events[i]->DeltaTime / m_nMtrPulseDuration)  ) * m_nMtrPulseDuration;

The above issue was specific to our application since we are synchronizing multiple audios.

Any tempo difference between the players will make one recording to delay in reference to the other one. I do not know how MuseScore and the other app. (expert rendered audio) manage tempo, so I can not tell you if there are differences with Lomse. In any case, this tempo difference might be caused by different factors, the most plausible:
If using different computers, by the precision of the computer clock
If it happend on the same computer it could be caused by rounding errors on the beat duration, or by the time precision used by each app.
In any case I do not think that this might be caused by your application. Lomse uses a dedicated thread to generate midi events and any delay in your application for processing the midi events and generate the sound will only cause a non-cumulative delay in next midi event but not a tempo shift.
If you are trying to synchronize lomse midi player tempo with another audio player, it is going to be a nearly impossible task, as I told you in answer to issue #145. The only solution for ensuring synchronization between lomse highlight and sound produced by an external audio player would be some solution such as the one requested in issue #163

Still think I need to revisit my application code. I think somehow the sound thread is getting blocked. Anyway will keep you posted in case it is issue with lomse.

By the way, you mention MuseScore and "expert rendered audio". What is the name of this "expert rendered audio" application? Can you provide me a link to their website? Thank you.

By expert  I meant a trained musician. A musician was asked to play the music on a keyboard which was recorded. Sorry for the confusion.
Really glad that the issue got resolved. Thanks for lomse!

I am closing this issue as it appears to be resolved.


fix(deps): update module github.com/bitfield/script to v0.22.1

This PR contains the following updates:

Package
Type
Update
Change

github.com/bitfield/script
require
patch
v0.22.0 -> v0.22.1

Release Notes

bitfield/script (github.com/bitfield/script)
v0.22.1
Compare Source

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 8.486%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
37

Relevant Lines:
436

💛  - Coveralls


Integrate Bedrock Asset System into the Core

Supersedes https://github.com/concrete5/concrete5/pull/8448
Leaving this open pending review. (Note: we are committed to this approach, but I do want some review on this. We've already had good review by about scopes, what this means for backward compatibility, etc...)

@KorvinSzanto I've updated the PR per your review. Updates are in this commit: https://github.com/concrete5/concrete5/pull/8451/commits/e4fee4df942393c022751393e1b2fe285120c284
Additionally, I've added another commit that I hope should get the tests in this repo back to passing, so let's not merge until tests fully pass. I'll keep monitoring this morning.


Question about SearchResults for Common alert schema

I enabled the common alert schema as instruction but the json payload POST to the webhook always have "IncludedSearchResults": "False"
{
  "schemaId": "azureMonitorCommonAlertSchema",
  "data": {
    "essentials": {
      "alertId": "/subscriptions/..../providers/Microsoft.AlertsManagement/alerts/da78b714-eb10-4fb8-8195-132427bb5e5f",
      "alertRule": "notification-exceptions",
      "severity": "Sev2",
      "signalType": "Log",
      "monitorCondition": "Fired",
      "monitoringService": "Application Insights",
      "alertTargetIDs": [
        ""
      ],
      "originAlertId": "907a53b4-a458-4ff8-9708-b47478a9440b",
      "firedDateTime": "2019-09-14T05:50:15.5361852Z",
      "description": ".........",
      "essentialsVersion": "1.0",
      "alertContextVersion": "1.1"
    },
    "alertContext": {
      "SearchQuery": "exception",
      "SearchIntervalStartTimeUtc": "2019-09-13T05:50:09Z",
      "SearchIntervalEndtimeUtc": "2019-09-14T05:50:09Z",
      "ResultCount": 547,
      "LinkToSearchResults": "https://portal.azure.com.......",
      "SearchIntervalDurationMin": "1440",
      "AlertType": "Number of results",
      "SearchIntervalInMinutes": "1440",
      "Threshold": 1,
      "Operator": "Greater Than",
      "ApplicationId": "1aec5909-e362-422d-9bf4-59fed97c6f8f",
      "IncludedSearchResults": "False"
    }
  }
}

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

ID: ac3dbdc9-c3d9-c955-6045-d5365fbd369d
Version Independent ID: b5ea6c85-848e-048c-9523-8ce6b2ab3736
Content: Common alert schema for Azure monitor alerts
Content Source: articles/azure-monitor/platform/alerts-common-schema.md
Service: azure-monitor
Sub-service: alerts
GitHub Login: @anantr
Microsoft Alias: anantr

@vanthoainguyen Thanks for the comment. We are actively investigating on the issue and will get back to you shortly with an update.

@vanthoainguyen This document has a note related to the same but for monitoring service Log Analytics in this case. Hope this helps to relate!
i.e., For log alerts that have a custom JSON payload defined, enabling the common schema reverts the payload schema to the one described as follows. Alerts with the common schema enabled have an upper size limit of 256 KB per alert. Search results aren't embedded in the log alerts payload if they cause the alert size to cross this threshold. You can determine this by checking the flag IncludedSearchResults. When the search results aren't included, you should use the search query in conjunction with the Log Analytics API.
@ananthradhakrishnan Do you have any other / better insights regarding this ?

@KrishnaG-MSFT : Yup, spot on. The search results are not included if it causes the payload to cross the size limit of 256KB. For such scenarios, the recommendation is to use the search query and other payload parameters (search interval start/end time, etc.) in conjunction with the Log Analytics REST API for the complete search results.
@harelbr  as FYI.

Thank s for your response. In some of my alerts, the Search results count is 1 or 2 but the payload was still showing IncludeSearchResult = false. I were aware if the size so was trying to test with projection a few columns to make sure it won't exceed 256kb.

@vanthoainguyen Based on above comment, what I understand is the search results count is 1 or 2 so IMO as expected it has shown IncludeSearchResult = false because the search results didn't cause the payload to cross the size limit of 256KB. I hope the doubt is sorted now.
At this point it appears that there's no edits or updates needed for the referred Azure documentation so closing this issue for now. If there are further questions regarding this matter or feedback on the referred Azure documentation, please do let us know and we will gladly continue the discussion.

Seriously, IncludeSearchResult should only be false when the search result size exceed 256k which in my case it did not

@ananthradhakrishnan FYI. Please clarify.

Okey, i found out what's going on.
In the alert rule, I ticked "Include custom Json payload for webhook".

But at the same time, also enabled the common alert schema in my webhook. I do have different webhooks in the same action group.
As you can see above, the custom payload does not have anything special but text and IncludedSearchResults. However, the webhook still receive the common alert schema (without the SearchResults for some reason).
I expected whatever custom payload I provide in the textbox, as soon as in a specific webhook I enable common alert schema, such payload should be ingored.
The reason for that is  custom payload cannot be shared between different webhooks from the same alert action like you have 1 alert defined and choose the action group with multiple actions of different webhook types.
Turnning of the custom Json payload fix it but 1 of my webhook (which doesn't want common alert schema) broken

Hi @vanthoainguyen, ideally the behaviour should be as you stated, that the customization is ignored if the common schema toggle is enabled.
Looping in @harelbr to investigate this further.

#reassign @harelbr

Custom JSON is not supported with common alert schema is overrides it.
Also, in common alert schema limits results to 256k and is dropped it the results are larger.
I suggest you move to using LinkToSearchResultsAPI to query log analytics for the results.

See the note here:
https://docs.microsoft.com/en-us/azure/azure-monitor/platform/alerts-common-schema-definitions#log-alerts

#please-close I believe this question has been answered. If not, please reopen this issue.

#assign:rboucher

#please-close

I want to clarify what the flag should I check, from the document is IncludeSearchResults
My testing there have 2 flags IncludeSearchResults and IncludedSearchResults, and seems IncludedSearchResults is correct one, and IncludedSearchResults also discuss in this thread

Just make sure check IncludedSearchResults is correct, right? Thanks

Can you clarify this statement? In the second half you've listed the same string twice (IncludedSearchResults).
My testing there have 2 flags IncludeSearchResults and IncludedSearchResults, and seems IncludedSearchResults is correct one, and IncludedSearchResults also discuss in this thread
How are you testing? With a live alert in your system?

Hi @rboucher, it's a live alert
I just want to know which one is the correct flag I should check, from my live alert IncludedSearchResults is correct
But IncludeSearchResults is from MS document, thank you

I issued a fix and it will be published tomorrow.

Hello,
I believe this is still happening and that there might be a bug on the SearchResults.
I have an alert that uses the InsightMetrics table joined with itself to do a comparison on freespacepercentage and freeMBavailable.
The alert I am using fires to a logic app for pre-processing. While tinkering with the autoMitigate functionality, it appears that having this option on, I do not get searchResults posted to my logic app.
With the autoMitigate flag turned off, I do get search results.
The content-length is 8680 with the searchResults, and 7695, so I presumed this rules out the 256k limit.
noSearchResults.txt
includes-searchresults.txt
alertTemplate.txt
The difference between getting searchResults, and not, was turning the auto resolve flag off in the alert config.
Thanks - Jared

Search results are not included in stateful alerts right now. We planned to add that soon.
Please either use dimensions or the link to get results for now.

Thank you for the quick reply.
Is it documented that stateful alerts do not include the searchresults?
I could not find a reason why this flag would remove the search results table in the commonalertschema.

It is a preview feature with a known issue. We don't include known issues in the documentation.
We are planning to release a fix very soon. I'll keep you posted.

Apologies for the delay on my end, but i did test this with automitigation on.  I generated an alert and the SearchResults table was included as expected!
Thanks!

With automitigate set on the searchresults are now again not available. Not sure if this worked before with the fix as mentioned before.

@BartDecker can you try again with the 2018-04-16 API version? (for example, using ARM template)
https://learn.microsoft.com/en-us/rest/api/monitor/scheduledqueryrule-2018-04-16/scheduled-query-rules/create-or-update?tabs=HTTP
search results were removed in the current API versions due to data residency concerns.


Multiple instance limited with 50% utilization

TRTIS Docker image:  19.09-py3
Client: perf_client
OS : Ubuntu 18.04
CUDA Driver: 430.34
GPU model and memory: 12080Super / 12080TI / 1*T4
Model used: (TRT) model.plan file and config
I plan to deploy 1 model, 2 instances on TRTIS. The utilization limited at 50%.
The situations I have tried :

1 instance on 1 TRTIS on 1 GPU
2 instance on 1 TRTIS on 1 GPU
1 instance on 2 TRTIS on 1 GPU

From the results below,  2 trtis eat up VRAM but no improvement

1 instance - 2469MB
2 instance - 3931MB
2 TRTIS - 2469MB * 2

with same Throughput , same utilization on 1GPU
Remarks: i also tried default and dynamic scheduler , same ~400 inf/s
Situation1 - 1 instance:
perf_client -m face_lffd -u xx.xx.xx.xx:8001 -i gRPC -v -p3000  -d -l3000 -t1 -c5  -b64
VRAM(trtserver): 2469 MiB

GPU utilization ~ 35%  (batch size 64 ) , ~50% (batch size 1)
===================================================
Request concurrency: 5
  Pass [1] throughput: 448 infer/sec. Avg latency: 717295 usec (std 207798 usec)
  Pass [2] throughput: 426 infer/sec. Avg latency: 716477 usec (std 77407 usec)
  Pass [3] throughput: 426 infer/sec. Avg latency: 727705 usec (std 77921 usec)
  Client:
    Request count: 20
    Throughput: 426 infer/sec
    Avg latency: 727705 usec (standard deviation 77921 usec)
    p50 latency: 737671 usec
    p90 latency: 831071 usec
    p95 latency: 836330 usec
    p99 latency: 864522 usec
    Avg gRPC time: 732391 usec (marshal 47678 usec + response wait 683189 usec + unmarshal 1524 usec)
  Server:
    Request count: 26
    Avg request latency: 109105 usec (overhead 51 usec + queue 2572 usec + compute 106482 usec)

Inferences/Second vs. Client Average Batch Latency
Concurrency: 1, 298 infer/sec, latency 207470 usec
Concurrency: 2, 384 infer/sec, latency 322270 usec
Concurrency: 3, 426 infer/sec, latency 438554 usec
Concurrency: 4, 448 infer/sec, latency 558617 usec
Concurrency: 5, 426 infer/sec, latency 727705 usec

Situation2 - 2 instances:
perf_client -m face_lffd -u xx.xx.xx.xx:8001 -i gRPC -v -p3000  -d -l3000 -t1 -c5  -b64
VRAM(trtserver): 3931 MiB

GPU utilization ~ 35%  (batch size 64 ) , ~50% (batch size 1)
===================================================
Request concurrency: 5
  Pass [1] throughput: 448 infer/sec. Avg latency: 729112 usec (std 143922 usec)
  Pass [2] throughput: 469 infer/sec. Avg latency: 754392 usec (std 129833 usec)
  Pass [3] throughput: 448 infer/sec. Avg latency: 747341 usec (std 117667 usec)
  Client:
    Request count: 21
    Throughput: 448 infer/sec
    Avg latency: 747341 usec (standard deviation 117667 usec)
    p50 latency: 711100 usec
    p90 latency: 899084 usec
    p95 latency: 983171 usec
    p99 latency: 1014742 usec
    Avg gRPC time: 747195 usec (marshal 46338 usec + response wait 699715 usec + unmarshal 1142 usec)
  Server:
    Request count: 25
    Avg request latency: 127904 usec (overhead 53 usec + queue 1490 usec + compute 126361 usec)

Inferences/Second vs. Client Average Batch Latency
Concurrency: 1, 277 infer/sec, latency 222772 usec
Concurrency: 2, 384 infer/sec, latency 319762 usec
Concurrency: 3, 448 infer/sec, latency 443085 usec
Concurrency: 4, 469 infer/sec, latency 571926 usec
Concurrency: 5, 448 infer/sec, latency 747341 usec

I checked both #269 & #239 , used to start docker-compose with 2 TRTIS , 2 perf_client**
Situation3 - 1 Instance on 2 TRTIS on 1 GPU:
VRAM(trtserver1): 2469 MiB
VRAM(trtserver2): 2469 MiB
GPU utilization ~ 50%

perf_client on Server A:
Request concurrency: 5
  Pass [1] throughput: 192 infer/sec. Avg latency: 1462076 usec (std 452607 usec)
  Pass [2] throughput: 213 infer/sec. Avg latency: 1645591 usec (std 285035 usec)
  Pass [3] throughput: 213 infer/sec. Avg latency: 1338029 usec (std 169647 usec)
  Pass [4] throughput: 213 infer/sec. Avg latency: 1336935 usec (std 238249 usec)
  Pass [5] throughput: 192 infer/sec. Avg latency: 1468982 usec (std 243846 usec)
  Client:
    Request count: 9
    Throughput: 192 infer/sec
    Avg latency: 1468982 usec (standard deviation 243846 usec)
    p50 latency: 1429994 usec
    p90 latency: 1699857 usec
    p95 latency: 1905205 usec
    p99 latency: 1905205 usec
    Avg gRPC time: 1449012 usec (marshal 93166 usec + response wait 1349345 usec + unmarshal 6501 usec)
  Server:
    Request count: 13
    Avg request latency: 176906 usec (overhead 95 usec + queue 1204 usec + compute 175607 usec)

Inferences/Second vs. Client Average Batch Latency
Concurrency: 1, 213 infer/sec, latency 327844 usec
Concurrency: 2, 213 infer/sec, latency 601838 usec
Concurrency: 3, 277 infer/sec, latency 760015 usec
Concurrency: 4, 213 infer/sec, latency 1161671 usec
Concurrency: 5, 192 infer/sec, latency 1468982 usec

perf_client on Server B:
Request concurrency: 5
  Pass [1] throughput: 192 infer/sec. Avg latency: 1345482 usec (std 334982 usec)
  Pass [2] throughput: 170 infer/sec. Avg latency: 1595961 usec (std 171651 usec)
  Pass [3] throughput: 192 infer/sec. Avg latency: 1658977 usec (std 385140 usec)
  Pass [4] throughput: 213 infer/sec. Avg latency: 1446637 usec (std 183416 usec)
  Pass [5] throughput: 384 infer/sec. Avg latency: 868516 usec (std 261350 usec)
  Pass [6] throughput: 448 infer/sec. Avg latency: 756875 usec (std 101381 usec)
  Pass [7] throughput: 426 infer/sec. Avg latency: 747722 usec (std 83247 usec)
  Client:
    Request count: 20
    Throughput: 426 infer/sec
    Avg latency: 747722 usec (standard deviation 83247 usec)
    p50 latency: 739064 usec
    p90 latency: 839012 usec
    p95 latency: 891422 usec
    p99 latency: 940661 usec
    Avg gRPC time: 753008 usec (marshal 48091 usec + response wait 703167 usec + unmarshal 1750 usec)
  Server:
    Request count: 25
    Avg request latency: 111378 usec (overhead 57 usec + queue 4076 usec + compute 107245 usec)

Inferences/Second vs. Client Average Batch Latency
Concurrency: 1, 192 infer/sec, latency 312246 usec
Concurrency: 2, 192 infer/sec, latency 687711 usec
Concurrency: 3, 192 infer/sec, latency 939533 usec
Concurrency: 4, 192 infer/sec, latency 1216420 usec
Concurrency: 5, 426 infer/sec, latency 747722 usec

For a tensorflow model there is likely not much difference in performance. TRTIS does have some capabilities like multi-instance but for TF models those aren't (typically) much benefit because of limitations of the TF framework.
For the performance numbers you shared it is strange that your GPU utilization is lower for a larger batch size. Also your response wait time is large compared to the compute time. Both of those seem to indicate that perhaps the network is your bottleneck. Are you running perf-client on the same system as the inference server?

I am using 2 containers TRTIS - 19.09-py3 and TRTIS - client dockerfile  on same Desktop
CPU: 3700X
GPU: 2080Super
RAM: 32GB
I tested for the bandwidth of both containers , and the network bandwidth maybe not a bottleneck .
FP32 (4bytes) * 3 ch * 480 h * 640 w = 1.37GB/s

Docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
81c4c69fc7f1        trtis_perf_tester   0.00%               3.617MiB / 31.42GiB   0.01%               3.61GB / 26.5GB     512kB / 0B          1
a0a57751fbfe        trtis               0.03%               6.624GiB / 31.42GiB   21.08%              26.5GB / 3.6GB      63.2MB / 0B         40

perf_client
root@81c4c69fc7f1:/workspace# perf_client -m face_lffd -u  XX.XX.XX.XX:8001 -i gRPC -v -p3000 -d -l3000 -t5 -c5 -b64
*** Measurement Settings ***
  Batch size: 64
  Measurement window: 3000 msec
  Latency limit: 3000 msec
  Concurrency limit: 5 concurrent requests
  Stabilizing using average latency

Request concurrency: 5
  Pass [1] throughput: 42 infer/sec. Avg latency: 1098230 usec (std 65211 usec)
  Pass [2] throughput: 384 infer/sec. Avg latency: 899362 usec (std 368437 usec)
  Pass [3] throughput: 469 infer/sec. Avg latency: 703719 usec (std 124942 usec)
  Pass [4] throughput: 426 infer/sec. Avg latency: 760636 usec (std 132688 usec)
  Pass [5] throughput: 448 infer/sec. Avg latency: 739009 usec (std 97395 usec)
  Client:
    Request count: 21
    Throughput: 448 infer/sec
    Avg latency: 739009 usec (standard deviation 97395 usec)
    p50 latency: 749726 usec
    p90 latency: 862850 usec
    p95 latency: 908628 usec
    p99 latency: 984573 usec
    Avg gRPC time: 733348 usec (marshal 48497 usec + response wait 683904 usec + unmarshal 947 usec)
  Server:
    Request count: 25
    Avg request latency: 120107 usec (overhead 60 usec + queue 4227 usec + compute 115820 usec)

Inferences/Second vs. Client Average Batch Latency
Concurrency: 5, 448 infer/sec, latency 739009 usec

iperf network testing
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local XX.XX.XX.XX port 19999 connected with XX.XX.XX.XX port 33546
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  35.0 GBytes  30.1 Gbits/sec
[  4] local XX.XX.XX.XX port 19999 connected with XX.XX.XX.XX port 33560
[  4]  0.0-10.0 sec  35.8 GBytes  30.7 Gbits/sec

@royinx Hello, i am new to use tensorrt inference server
The same model, deployed on tensorflow -severing and tensorrt inference server, is there a difference in speed between them

I haven't tried the TF model since if you check out the issues that a lot of problems on memory initialize and model optimization.
My works always work on pytorch and mxnet. I have tried out Libtorch (nightmare) , onnx , TF and TensorRT.
Highly recommend TensorRT(model simplify) > ONNX Runtime > Framework.

More information

#
Model Instance
UTIL
VRAM
Throughput

1
WITHOUT TRTIS2 x TRT
100%
2 x 619MB
> 1000(514 + 520)

2
1 x TRTIS  2 x TRT
50%
/
TRT - 340~ 400

3
1 x TRTIS  1 x TRT_A1 x TRT_B
~50%
/
TRT_A - 224  TRT_B - 224

Tested 3 models together with 3 different perf_client containers.
1 TRTIS with

1 x TRT
1 x ONNX_A
1 x ONNX_B

The utilization works around 60-90%.
And I find only cause with 2 TRT.

2 x TRT, setting instances_group{count:2}
same trt model in 2 models name with 1 TRTIS (same model in TRT_A, TRT_B)
same trt model with 2 TRTIS

Network
According to Both of those seem to indicate that perhaps the network is your bottleneck
I tried set Model file N = 1 and config dynamic_batch_size = 1.
perf_client -m face_lffd -u  xx.xx.xx.xx:8001 -i gRPC -v -p3000 -d -l3000 -t3 -c10
Request concurrency: 10
  Pass [1] throughput: 402 infer/sec. Avg latency: 24835 usec (std 6011 usec)
  Pass [2] throughput: 403 infer/sec. Avg latency: 24728 usec (std 5848 usec)
  Pass [3] throughput: 404 infer/sec. Avg latency: 24780 usec (std 5759 usec)
  Client:
    Request count: 1212
    Throughput: 404 infer/sec
    Avg latency: 24780 usec (standard deviation 5759 usec)
    p50 latency: 24260 usec
    p90 latency: 31920 usec
    p95 latency: 35120 usec
    p99 latency: 40517 usec
    Avg gRPC time: 24790 usec (marshal 1698 usec + response wait 23010 usec + unmarshal 82 usec)
  Server:
    Request count: 1453
    Avg request latency: 8680 usec (overhead 37 usec + queue 34 usec + compute 8609 usec)

Inferences/Second vs. Client Average Batch Latency
Concurrency: 3, 403 infer/sec, latency 7426 usec
Concurrency: 4, 400 infer/sec, latency 9971 usec
Concurrency: 5, 399 infer/sec, latency 12505 usec
Concurrency: 6, 399 infer/sec, latency 15009 usec
Concurrency: 7, 395 infer/sec, latency 17663 usec
Concurrency: 8, 394 infer/sec, latency 20251 usec
Concurrency: 9, 402 infer/sec, latency 22348 usec
Concurrency: 10, 404 infer/sec, latency 24780 usec

I think network maybe the bottleneck of TRTIS since 2 x TRT models, because onnx is resnext-50 ,an expensive model, but small batch_size = 1.
Otherwise I tested with iperf , results around 30Gb/s , ~ 3.75GB/s
How to improve the network between containers? for now is ~ 1.4 - 2.0GB/s from docker stats

If your goal is to use server and client on the same device you should leverage the shared memory feature to minimized network overhead. This allows you to pass inputs and store outputs from TRTIS in system shared memory.


Cannot invoke "JsonSerializer.clone(Object)" because "this.jsonSerializer" is null

I am upgrading our applications and libraries to hypersistence utils 3.0.0 and am now facing the following issue:
Cannot invoke "io.hypersistence.utils.hibernate.type.util.JsonSerializer.clone(Object)" because "this.jsonSerializer" is null.
Some more testing actually reveals this is caused by changes implemented in 2.21.1 (2.20.0 and also 2.21.0 work fine), so this might be related to #530 and/or #533.
Something else I noted that may be related: I have set the hibernate.types.jackson.object.mapper in hibernate.properties to make use of my own object mapper. When running the application (or tests) in debug mode though, I can see the get method of the provider class it is not called when using version 3.0.0 or 2.21.1. It is called with 2.21.0 (and earlier) though.
(updated: my previous comment that 2.21.1 did call the provider get was wrong; it also does not call the object mapper provider get, so hopefully this helps in finding the cause.)

Try to provide a replicating test case for the issue as all current integration tests run just fine.

I'll try to create a simple test case. Our code, heavily uses custom query database and other libraries so this might be a bit hard without exposing all that proprietary code. If I can't come up with a clean example, could I perhaps send you one an example application, privately?

@Hayo-Baan Nevermind. I managed to replicate it and will provide a quick fix.

Awesome, you're the greatest!

Fixed.

@Hayo-Baan Let me know if the issue is fixed on 3.0.1.

@vladmihalcea Yes, everything is working fine in 3.0.1. Many thanks for the quick fix!)
(thought I replied this yesterday already, but I guess I forgot to post the comment 🙄)

Great 👍 Stay tuned for some really cool features that will come in the next releases.


added Spanish

Hello!
Brother from Barcelona here! I added Spanish support for this extension.
Best,
Marc

And here I was just going through the repo to look how to add Spanish! OMG! Thanks brother @Marc-Fernandez

Dear @Floydv149  , please could you help us to accept this pull request?
Thanks for all your efforts, this is an amazing plugin.


console.trace from EH not handled correctly

In an extension, parse a URI without a scheme like console.log(vscode.Uri.parse('/foo/bar'));
Or, just call it directly console.trace('hi')
When debugging the extension, the debug console shows [object Object] and a stack trace. The message is missing. This is a bad experience for the Uri.parse change from #66802 because the stack trace has no message or explanation.

cc @jrieken

This works just fine for me.
Here's my code snippet, and here's the output
       console.trace('hi');
       console.log(vscode.Uri.parse('/foo/bar'))

Let me know what you are doing differently.
I tried both out of source and insiders on os x

I can still repro. I'll try to debug it.

This is very weird, I traced it into node console.js. It essentially does
  const err = {
    name: 'Trace',
    message: this[kFormatForStderr](args)
  };
  Error.captureStackTrace(err, trace);
  this.error(err.stack);

message is "foo". Error.captureStackTrace is native but it creates a stack property with [object Object] and I don't know why.
I'm curious about this so I'll debug more but there's probably nothing we can do and it will probably disappear at some point so I'll just close this.


Update before_script.sh - remove required workarounds

Seems to be an problem with rvm get stable
>>> rvm get stable
Downloading https://get.rvm.io
Could not download rvm-installer, get some help at #rvm IRC channel at freenode servers.

https://travis-ci.org/caskroom/homebrew-cask/builds/246525411
https://travis-ci.org/caskroom/homebrew-cask/builds/246532792

The workarounds don't seem to be required.

https://github.com/caskroom/homebrew-cask/pull/35833
https://travis-ci.org/caskroom/homebrew-cask/builds/246530284
https://travis-ci.org/caskroom/homebrew-cask/builds/246531898

Edit: I think the rvm get stable requirement may have been fixed with the travis xcode8.3 image.

Looks like rvm get stable is working again, I've restarted the failed builds.

If everything works fine without these lines, I’m OK with having them out. That would be preferred, even.

I'll merge this and restart the current PRs.

Seems to be fine. As the previous Could not download rvm-installer error has disappeared, do you want to wait a couple of days before pushing this to the other repos just in case this needs to be reverted?


As a busy fitness trainer, I can view my summary for today at 1 glance

so that I do not have to waste time navigating through the software

Updates: The UI is already available on the homepage. We just need to change the listview to display only today's schedule instead of the whole schedule list

Should we close this issue?


rest_gophkeeper.go:32: Implement Identity.

The puzzle 28-442bc112 from #28 has to be resolved:
https://github.com/kerelape/gophkeeper/blob/88fa409db64b050c99a6b28a22631ef20b7cbea0/pkg/gophkeeper/rest_gophkeeper.go#L32-L32
The puzzle was created by @kerelape on 01-Sep-23.
role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

The puzzle 28-442bc112 has disappeared from the source code, that's why I closed this issue.

@0pdd 6 puzzles #38, #39, #40, #41, #42, #43 are still not solved.

@0pdd 4 puzzles #40, #41, #42, #43 are still not solved; solved: #38, #39.

@0pdd 3 puzzles #42, #43, #46 are still not solved; solved: #38, #39, #40, #41.

@0pdd 2 puzzles #42, #43 are still not solved; solved: #38, #39, #40, #41, #46.

@0pdd the puzzle #42 is still not solved; solved: #38, #39, #40, #41, #43, #46.

@0pdd all 7 puzzles are solved here: #38, #39, #40, #41, #42, #43, #46.


Fix a couple of commands in writing a plugin guide

Pull Request Test Coverage Report for Build 340

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 34.534%

Totals

Change from base Build 338:
0.0%

Covered Lines:
537

Relevant Lines:
1555

💛  - Coveralls


Lack of support for nested routes of the same resource

OpenAPI version
3
Describe the bug
Lack of support for routes like:
/resource/new
/resource/:id

To Reproduce
Prepare spec for ie:
/resource/new
/resource/:id

and try to satisfyApiSpec against /resource/new route.
Current behavior
For /resource/new route it matches /resource/:id and spec fails.
Expected behavior
If /resource/new is being tested, it matches /resource/new in the spec.
If /resource/:id is being tested, it matches /resource/:id in the spec.
Additional context

I don't have any meaningful proof (RFC or smth similar) in hand that defining routes in such way is good or bad practice. What I can tell is that never had a problem with such approach with any WEB server.
EDIT: It seems that this is more like a convention in some environments rather than a standard itself (ie. route /resource/new).
Internally the "problem" is in OpenApi3Spec.js:  const openApiPath = this.paths().find(openApiPath =>
    doesOpenApiPathMatchPathname(openApiPath, pathname, matchingServerBasePaths)
  );

I'm still not sure whether it should be fixed so we should discuss it further.
Workaround: Use satisfySchemaInApiSpec("...");

Good spot! I agree that this is a genuine bug, and that the bug is in that matching logic.
The desired behaviour from that logic:
/new should match /new if we have a /new in our OpenAPI spec. If there isn't a /new in our OpenAPI spec, then it can try to match /{id}.
Current behaviour of that logic:
/new matches both /new and /:id, and we choose one of them (the first or the last, I can't remember). This should be easy to recreate in a test
Very happy to take a PR on this as I’m short on time at the moment. Otherwise I will see when I can fix it

I've created a branch with new tests that expose this bug, see the diff https://github.com/RuntimeTools/chai-openapi-response-validator/compare/57-match-path-without-params-over-path-with-params?expand=1
Are we agreed the new tests capture the bug?
If so, feel free to PR a fix that satisfies those tests :)

Thanks for looking into this. I prefer the second approach (filter) because it makes nice conceptual sense: find all matching paths, and if there are multiple matches then choose the path that matches directly over the path that matches using a path parameter.
I think filter would work for that.
Do we have to consider efficiency? If so, instead of iterating over all paths (as filter would do) we could stop iterating once we’ve found a path that matches directly. So instead of find or filter it might be faster to do something like (pseudocode):
let matching Path;
paths.forEach(path => {
    if (match) {
        matchingPath = path;
        if (pathMatchesDirectly) {
            return;
        }
    }
});

I don’t know if that would actually be faster. It probably wouldn’t make a significant difference unless the OpenAPI spec were enormous.
Anyway, I don’t have strong opinions about this. I think your approach is spot on and I’m happy to see what you come up with!

To confirm, this is a genuine bug according to OpenAPI 3 spec:

A relative path to an individual endpoint. The field name MUST begin with a slash. The path is appended (no relative URL resolution) to the expanded URL from the Server Object's url field in order to construct the full URL. Path templating is allowed. When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts. Templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical. In case of ambiguous matching, it's up to the tooling to decide which one to use.

Quite a lot of code has changed since I initially recreated the failure in a branch.
So here's a new branch recreating the failure https://github.com/RuntimeTools/OpenAPIValidators/compare/master...rwalle61:57-match-non-templated-path-instead-of-templated-path?expand=1

I don't have time to fix this immediately, so am happy if anyone wants to take over :)

@blelump and @Nitwel, I've merged a fix into master, would you mind pulling master and checking it works? I'll release if so

published in 0.9.4 (https://github.com/RuntimeTools/OpenAPIValidators/pull/111), please close this when you've verified it now works for you :)

@rwalle61 could you please check this fix with a path like:
/resourceA/:id/resourceB?
I'm afraid it fails for me and matches to the similar /:id1/:id2/:id3 endpoint.


Allow pagination on inline record lists when in view mode

We should allow pagination on inline record lists when in view mode.

Tested and confirming that this works as expected. The only missing part now is the CL entry.

I added the following CL entry:
"added": [
    {
      "what": [
        "pagination on inline record lists when in view mode."
      ],
      "why": [
        "to have consistency and better user experience when users will use the inline editing of records."
      ],
      "refs": [
        "https://github.com/cortezaproject/corteza/commit/e0ae50866eab7f362bc27e676bf052ce4d8b827c"
      ]
    }]


connect to activemq

Hi,
Trying to connect to an activemq instance on aws,
Here is my source code:
val client = MQTTClient(
                    5,
                    "id.mq.eu-central-1.amazonaws.com",
                    8883,
                    TLSClientSettings()
                ) {
                    Logger.debug(TAG, "test ${it.payload?.toByteArray()?.decodeToString()}")
                }
                client.publish(
                    false,
                    Qos.AT_MOST_ONCE,
                    "/toto",
                    "hello".encodeToByteArray().toUByteArray()
                )
                client.step()
                client.run()

Exception trapped
socket.SocketClosedException
at socket.tls.TLSSocket.read0(TLSSocket.kt:152)
at socket.tls.TLSSocket.read--5HJl4c(TLSSocket.kt:172)
at TLSClientSocket.read--5HJl4c(TLSClientSocket.kt:117)
at MQTTClient.check(MQTTClient.kt:283)
at MQTTClient.step(MQTTClient.kt:346)
at MQTTClient.run(MQTTClient.kt:355)

Using jitpack version 0.4.1
Please could you test on your side using amazon mq instance on mqtt protocol ?
Thanks

Please make sure you configured the client appropriately. It seems weird you aren't setting any username and password. Additionally you might have to provide a client certificate and/or the server certificate, depending on the broker's configuration and your target platform.
I will try specifically with AWS when I have some time to make sure it's all in order, but as the broker is MQTT compliant it should work just fine.

I followed the documentation https://activemq.apache.org/how-do-i-use-ssl for creating ssl certificate.
Could you provide a sample in Kotlin how to set path on TLSClientSettings data class ?
Where should i put my client/server certs etc.

Any news ?

Steps:

ActiveMQ supports only MQTT3.1.1, so you need to set the client MQTT version to 4.
Get the root CA certificate (https://www.amazontrust.com/repository/G2-RootCA1.pem) and save it to a file (like aws.crt).
In the TLSClientSettings constructor you need to pass the path to that file to the serverCertificatePath parameter (for example TLSClientSettings(serverCertificatePath = "aws.crt")).
In your AWS panel go to the Connections section and there will be a link to a guide on how to enable the connection to the broker. You need to allow the specific ports like 8883 in the EC2 security group panel.
Set the userName and password fields in the client constructor to your ActiveMQ username and password you set when creating the instance.

Full sample:
val client = MQTTClient(
        4, // MQTTVersion.MQTT3_1_1 if using the latest version
        "id.mq.us-west-2.amazonaws.com",
        8883,
        TLSClientSettings(serverCertificatePath = "aws.crt"),
        30,
        userName = "testuser",
        password = "testpassword".encodeToByteArray().toUByteArray()
    ) {
        println(it.payload?.toByteArray()?.decodeToString())
    }


feat: subscriptions for meta fields

follow up for #4768

Summary by CodeRabbit

New Features

Introduced enhanced client metadata management capabilities.
Added new functionality for managing and caching metadata fields, with support for continuous updates from various sources.
Implemented a Waiter functionality for asynchronous task completion tracking.

Enhancements

Integrated reqwest library for improved HTTP request handling.

Documentation

Not explicitly mentioned, but changes suggest updates to how metadata and task management are documented internally.

rebased on parent

Backport failed for releases/v0.3, because it was unable to cherry-pick the commit(s).
Please cherry-pick the changes locally and resolve any conflicts.
git fetch origin releases/v0.3
git worktree add -d .worktree/backport-4787-to-releases/v0.3 origin/releases/v0.3
cd .worktree/backport-4787-to-releases/v0.3
git switch --create backport-4787-to-releases/v0.3
git cherry-pick -x edf977d04a3bf8925fa41fd7f62909fcdd7abde1


Bugfixes

Fixed some bugs found by using large blobs

I have no idea why the macos with dynamic_loading is failing

I have no idea why the macos with dynamic_loading is failing

Let me see what happened.

Sadly no change, and the test only writes alphanumeric chars, so it shouldn't be a utf8 problem, it seems to occur on a specific lengths actually (The blob segments are received in chunks of 256 bytes in the wire, and the \u{3} chars seems to be 256 bytes appart of each other).
Maybe it's a bug on the shared library, as the pure_rust test passes (the linking is not being tested at the moment, as we could not get it to link).

Pull Request Test Coverage Report for Build 229552848

74 of 76 (97.37%)  changed or added relevant lines in 6 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.6%) to 50.0%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

rsfbclient-rust/src/client.rs
8
10
80.0%

Totals

Change from base Build 229164175:
0.6%

Covered Lines:
2067

Relevant Lines:
4134

💛  - Coveralls

It was a problem with the CString use, as the segments are not 0 terminated


fix(routable): Use correct label key for routable

fixes #233
cc @bacongobbler @krancour

going to test this manually.

Also testing.

works for me too.
><> deis routing:disable
Disabling routing for go... done

><> curl go.k8s.local

<title>404 Not Found</title>

404 Not Found

nginx/1.11.2

Current coverage is 45.87% (diff: 100%)

Merging #235 into master will not change coverage

@@             master       #235   diff @@
==========================================
  Files             3          3
  Lines           303        303
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            139        139
  Misses          160        160
  Partials          4          4

Powered by Codecov. Last update c3b6ded...e085023


fix(popup): Fix tag/project dropdown toggle in-page

:star2: What does this PR do?

0c0a6e5 - fix(popup): Fix tag/project dropdown toggle in-page

Similar fix to d40b843, but this time for the dropdown in-page
:bug: Recommendations for testing

Check if tab/project in the extension in-page dropdown works fine

:memo: Links to relevant issues or information
Related #1422

Ok, So I took another good look at this to see if we could remove the timer. I wasn't happy with the solution too, the timer can be different on each machine so the problem could happen again 😞 .
Now there's no time and the race condition should be fixed. Instead of relying on timings I'm checking if the element that is causing the duplicated focus event is inside the pop-down if so there's no need to change the pop-down state.

Update: still having problems in fresh Chrome profile. It's fine on Firefox though. Apparently it's totally fine in Chrome for @shantanuraj 🤔

My gut feeling suggestion is to bring the overlay back @dpsxp and go from there 🤔

Ok, I was able to reproduce the issue. Did some changes, it should be ready for another review now.


Applying a released version of the operator

Proposed Changes

describe how to run an actual release, instead of nightly

/assign @houshengbo


loggers.get & loggers.add unable to add rewriters and filters

I've been trying to add a rewriter and filter function to a second logger within a container using:
winston.loggers.get('secondLogger', { filters: [function(level, msg, meta, _self){ return msg; }]})
The logic doesn't seem correct when iterating over the logger options passed in: https://github.com/winstonjs/winston/blob/master/lib/winston/container.js#L61
My suggestion is to remove the block of code where it tries to load all option keys as transports as it doesn't seem to make sense that transports would be outside of the transport property.
Does this sound correct to the maintainers? I'm happy to submit a pull request with the change if this helps.

For an example, I have added this change to my branch: https://github.com/stevokk/winston

I have same problem: I want to set custom rewriters to my winston instances in container. Is there pull request?

There is no pull request, I also have another pull request open (to fix leftover listeners) but after multiple requests for a merge I have given up.
You're welcome to point to my repo (I don't plan on making any more changes) or copy the changes to your own, or if a maintainer see's this, I am happy to open a request.
Change referenced in my opening comments:
https://github.com/stevokk/winston/commit/3043494e78fc27c84de63c022db925696f437116

rewriters and filters have been removed in winston@3 in favor of custom formats. loggers.get and loggers.add are 100% capable of accepting custom formats in winston@3. Please consider upgrading.


Bump OLM Release Version to 0.9.0

Description
First step in creating a release to include the new API version changes.

/retest

/retest

/retest


function stepBubbles() missing from code

In the template, the span for the step indicators is:

However the function stepBubbles() does not exist anywhere in the code, so you never get any tick indicators besides the start and end ones.

how can i implement that


Python version support

Just wondering if we should target any specific minimum version of Python for this library?
In the Travis config it is currently targeting:

2.7
3.4
3.5
3.6
3.7

I'm not sure we need to continue with Python 2 support and the more recent updates have not been tested against 2.7
3.6 is already EOL and 3.7 is weeks away from also being EOL https://devguide.python.org/versions/
I wonder if perhaps 3.8 and above might be appropriate?
This would also allow us to use Poetry for the publication workflow (Poetry is dependent on 3.7+)

3.7 was my current version when I first wrote it. I still run it in a conda environment against that version. I have no need of anything lower than that and I am actively working to move to 3.10. So, 3.8 is a little harsh for me just now but I can live with it :)

We are testing against Python 3.7 - 3.11 at the moment and this seems to be appropriate given the lifecycle of those Pythons.


Issues behind SSO not shown

Hi, is it possible new issues that are on org repos with SSO are not displayed? I see them via the web interface.

Bug Report Dump (Auto-generated)

Version 1.27.2<PHONE_NUMBER>)
Device: iPhone XS (iOS 12.3.1)
TestFlight: false

Hi @hazcod
Until approved by the respected organisation, GitHawk cannot access the private data.
https://github.com/settings/connections/applications/a8488ca1ed943b610815


perf: cache file system operations

Both load_program() and get_os_program() had to make a costly read from the filesystem or invoke the compiler. This was being done during program execution, while instead it should only be done once at the beginning of the script, so that it saves time. This in aggregate ends up saving ~2s (out of ~10) when benchmarking against https://github.com/ametel01/cairo-library

Can you check if this was indeed resolved in v0.7.1?


Various matrix generator improvements

This is a miscellaneous set of improvements coming from the BEAM work.

Fix some invalid omp parallel for usage in the diag, svd, heev, and poev generators
Fix an indexing issue in the ris generator
Add some extra matrix generators (chebspec and kms from Matlab gallery, ZielkeNS from Higham's new AnyMatrix collection, randr as a random matrix from the Rademacher distribution)
Add some seed preprocessing to prevent similar seeds from having similar A[1,1] entries
Add support for Options

Key use is doing geqrf and unmqr in the svd and heev generators on device
Currently used by only the gesv tester when Target::Devices

Add missing A.tileGetForWriting calls to structured matrix generators

Relatedly, there's the work in progress PR#97 which was to add a way to test different matrices with --repeat in a reproducible way.  (The current default seed of -1 gives a different matrix each time, but is not reproducible.)
If that's still wanted, I could get it finalized and added to this PR.

I updated this to fix the merge conflicts from merging the Philox PR.
I also removed a commit and added a commit.

Philox removed the need to "Add some seed preprocessing to prevent similar seeds from having similar A[1,1] entries", so that's been dropped
Minor cleanup to the file

Removed a redundant declaration for split
Improve the clarity of a comment
Improved variable name consistency
Use an explicit pi constant instead of a computed value


DF-2348 - fixes office's contact email addresses

Fixes office contact email address.
Additions

Add check in tests for the office contact email addresses.

Changes

Fixed incorrect email href reference in contacts template.
Minor code style cleanup.

Testing

Run gulp test.

Review

@KimberlyMunoz
@sebworks

:+1:


python-tuf 2.0.0

Update Changelog
bump version

I'd appreciate reviewers to double-check breaking changes listed in the Changelog. Is the list correct and complete?

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 98.175%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1346

Relevant Lines:
1362

💛  - Coveralls


i am use webpack

i am use webpack and i have already import it to my AppModule and when i run it, it encourate a problem
reflection_capabilities.js:63 Uncaught TypeError: ctorParameters.map is not a function
at ReflectionCapabilities.parameters (http://localhost:3000/client-bundle.js:59916:47)
at Reflector.parameters (http://localhost:3000/client-bundle.js:60127:48)
at CompileMetadataResolver.getDependenciesMetadata (http://localhost:3000/client-bundle.js:41032:156)
at CompileMetadataResolver.getTypeMetadata (http://localhost:3000/client-bundle.js:40997:26)
at CompileMetadataResolver.getProviderMetadata (http://localhost:3000/client-bundle.js:41192:40)
at http://localhost:3000/client-bundle.js:41140:45
at Array.forEach (native)
at CompileMetadataResolver.getProvidersMetadata (http://localhost:3000/client-bundle.js:41124:19)
at http://localhost:3000/client-bundle.js:40816:71
at Array.forEach (native)
What should I do to deal with that.thanks very much!

Hi,
this is not an issue related to this library. Please check https://stackoverflow.com/questions/41285889/ctorparameters-map-is-not-a-function-in-angular2-mdl or one of the other helpful links appearing when googling the error message.


Headend REST refactor

We'll need to do a pass on the Headend service definition before we ship anything.
I just noticed that the /cluster/domain API uses GET rather than POST.  HTTP GET operations are normally cache-able by web proxies so we could seen unexpected behavior.  Also, this really should be POST to be consistent with the REST standard.
We should also think about how users will interact with this service long term.  With the current design, we'll create a new domain and certificate every time a user creates a cluster.  We'll probably need a way to reuse the domain by assigning an new IP when users redeploy a cluster.  This will probably require being able to name a domain instance and neonCLOUD user accounts
We should also think about how we arrange the REST endpoints since; perhaps something more like:
/cluster
    /setup
        /domain:
            GET: lists all user domains or retrieves a specific domain by name
            POST: creates a new domain
            PUT: updates a domain
    /telemetry
        POST: receives telemetry from clusters
/app
    /telemetry
        POST: receives telemetry from the app

We'll also need to think about how we're going to version the REST API.

DONE


Content Security Policy violation

Hi @dburles,
I've started using Base as a boilerplate for my Meteor development and I've run into the following issue while trying to add a Google map with the default options you've provided:
Refused to load the script 'https://maps.googleapis.com/maps/api/js?v=3.exp&callback=GoogleMaps.initialize' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline’".

My Google searching hasn't returned anything substantial so I thought I'd ask.

Hey @josephdburdick that boilerplate uses the browser-policy package. You'll need to configure some rules. Put these somewhere on the client:
    BrowserPolicy.content.allowOriginForAll('*.googleapis.com');
    BrowserPolicy.content.allowOriginForAll('*.gstatic.com');
    BrowserPolicy.content.allowEval('https://ajax.googleapis.com');

Getting below error in all the environment. Please help me with this. I tried all the suggested ways.
Refused to create a worker from 'blob:http://localhost:4000/35ba9398-2c4f-429d-b755-6afbc0b94dda' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' https://.google-analytics.com https://.gstatic.com 'unsafe-eval'". Note that 'worker-src' was not explicitly set, so 'script-src' is used as a fallback.


Avoid running identical S3 copy operations at the same time (GSI-1155)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>8
Details

5 of 5 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 92.328%

Totals

Change from base Build<PHONE_NUMBER>9:
0.02%

Covered Lines:
2058

Relevant Lines:
2229

💛  - Coveralls


[contrib] locust stress test environment setup based on ansible

Coverage remained the same at 34.746% when pulling 461285f97d676a89102129494e9a1b9d5ca416bf on yuye/stress-test-auto into b026772f9155d8c4090f052c5f46a82b1f7a9abc on master.


Add Japanese translation of deployment guides #190

Once #190 is closed, we can start working on Japanese translation of the new pages.
The page URLs

https://slack.dev/bolt-python/

Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

This task is no longer needed


English localization missing in add-index dialog

The English localization is missing in add-index dialog, its only available in Turkish currently.

Localization fixed in https://github.com/90pixel/MeiliAdmin/commit/38816d86faa05d2f364287bfd81619b3408e0e05. Thank you for your interest and your feedbacks ^^


Change view of the calendar

Hello,
There's something I'd like to ask and I found nothing that would talk about the same topic.
In the datepickers of my application, I use a lot the methods setStartDate and setEndDate, but in some cases the end date is far enough in the past so that the current month/year/decade will be grey and disabled, and because of that the users are saying "it's not working". The reason that happens is because the view of the calendar is based on the current date.
So my question is : is there a way to initialize/change the view of the calendar based on the maximum date or minimum date?
In worst case, would that be difficult to code it myself?
Example :

Today is 10/12/2014 so the view of the calendar will be initialized based on this date.
My setEndDate value happens to be 10/05/1999

What happens : So all the date in the different views (month/year/decade) that will appear when initialized are disabled
What I'm trying to do : initialize the view of the calendar (when no dates are selected) based on the date that I give, meaning 10/05/1999

+1   For a Birth-date selector I'd like to be able to set the initially viewed decade to be 30-40 years in the past knowing the average age of my users


Frequency scaling can hurt, even in same family

This looks like a fantastically useful library.
Just a point for consideration, given that one of the targets is to make it easier to write fast code:
https://blog.cloudflare.com/on-the-dangers-of-intels-frequency-scaling/
Note that same generation, same feature set can have wildly different performance depending on if it's "Silver", "Gold" or "Platinum", none of which is exposed by flags.  Silver, for example, is de-tuned for AVX-512 (as someone puts it in the comments there).
You can parse that out of /proc/cpuinfo, if you're solely looking at Linux use cases, but this seems like something that would be ideal to find out via this library.

Regarding AVX-512 support in Intel processors using the Skylake Xeon microarchitecture (Intel Xeon Scalable, Xeon W, and Core X-Series processors - see https://github.com/jeffhammond/vpu-count for details), below are the three methods of querying this that I have identified.
I work Intel, but please don't take that to mean this information is official or more authoritative than what somebody else could come up with.  My implementation (the second method below) merely implements what is in public documentation.  I have not evaluated the third method, because I work in userspace.

Method
Pros
Cons
Code

Empirical measurement
Supports pre-production and off-roadmap SKUs
Relatively slow (1); sensitive to noise and oversubscription (2)
here (3)

Processor name from CPUID
Fast (4); ring 3; insensitive to noise and oversubscription
Only supports parts listed in Intel ARK
here

PIROM/SMBus
Fast (unverified)
Requires ring 0
N/A

Notes

Approximately 350 microseconds, based upon my measurements on an Intel Xeon Scalable 8180 processor.
If called from every hardware thread, the performance measurements used to determine how many VPUs are present is noisy and can give incorrect results some of the time.  I have not tested in a virtualized environment, but it is possible that something similar would happen there.
This is a transcription of the code provided in the Intel SDM
Approximately 2.2 microseconds, based upon my measurements on a Xeon Scalable 8180 processor.  The time spent is dominated by acquiring the processor name string from CPUID, not the processing thereof.

@twirrim thank you for reporting. Yes indeed that would be super useful to have a more fine grained information about performance of implementation. We'd need to come up with a stable scheme to assess performance of implementation. Maybe denormalized bits: avx_silver, avx_gold, avx_platinum? What do you guys think?
@jeffhammond Thank you very much for sharing your insights. I'll take some time to read everything carefully and I'll get back to you.

@gchatelet Unfortunately, platinum/gold/silver/bronze isn't the right attribute for determining AVX-512 throughput on Skylake Xeon.  While the correlation between metals and VPUs is constant for platinum (2) and silver/bronze (1), the gold 6xxx SKUs have 2 and the gold 5xxx SKUS have 1 except for 5122, which has 2.  (Don't ask me why it is this way or if I like it.)
The attribute you'll want to support is "# of AVX-512 FMA units", which is a field in the ARK listing and correlates directly with AVX-512 performance characteristics.

Number of FMA also sounds very useful but the original report seems to focus on the AVX-512 turbo clock.
Even non-complex 512-bit instructions (e.g. XOR) apparently cause heavy throttling on silver, especially if several cores are active.
I guess the ideal would be to publish those turbo curves?

@jan-wassenberg Indeed, I got stuck on the VPU count aspect of e.g. Silver.  Sorry about that.  Giving access to the documented base and turbo frequencies for <=128b, 256b, and 512b SIMD would be useful.
The tricky part is that this is a function of how many cores are active, so the implementation requires a 3D array of [SKU, SIMD-width, #active cores].  I have that information for every Skylake Xeon part, usually in a text-based format.  I think it is all public somewhere - I'll post links as I find it.

@jeffhammond  - were you able to dig up the AVX2 and AVX-512 frequencies for the W series?

For anyone who stumbles across this thread looking for the AVX turbo frequencies for the Skylake-W chips (as I did), this AnandTech article is the only source I know of at the moment. Most of the W chips are in there, although a few are missing such as the W-2104, which doesn't have TurboBoost (but does have lower AVX and AVX512 speeds).

Actually, you can detect 2nd FMA in PIROM
avx512_2ndFMA  (<IP_ADDRESS> PFF: Processor Feature Flag) 70h, bit 0
https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xeon-scalable-datasheet-vol-1.pdf


Use "Display Name" instead of direct usage of NickName field in mail compose

http://www.boonex.com/forums/topic/Problem-with-nickname-fullname.htm


Improve handling of incorrect paths in validator

If a path is incorrect in the validator, this is not handled gracefully, and instead we get a whole bunch of errors because the following code in application/libraries/Librivox_mp3gain.php that parses the mp3gain output does not have a second line to work with:
$this->flag     = ' -o  ';
$command = $this->mp3gain .  ' ' . $this->flag . $dir. $file_name;
exec($command, $output);
$parts = explode("\t", $output[1]);

Here's a screenshot of an incorrect validator path (notice the period at the end of the first file):

And here are the PHP errors we get:
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 1
Filename: libraries/Librivox_mp3gain.php
Line Number: 73

A PHP Error was encountered
Severity: Notice
Message: Undefined index: playtime_string
Filename: libraries/Librivox_id3tag.php
Line Number: 171

A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 2
Filename: libraries/Librivox_id3tag.php
Line Number: 172

A PHP Error was encountered
Severity: Notice
Message: Undefined index: audio
Filename: libraries/Librivox_id3tag.php
Line Number: 173

A PHP Error was encountered
Severity: Notice
Message: Undefined index: audio
Filename: libraries/Librivox_id3tag.php
Line Number: 177

A PHP Error was encountered
Severity: Notice
Message: Undefined index: audio
Filename: libraries/Librivox_id3tag.php
Line Number: 179

This is happening frequently; a timely fix would be very helpful!

I also have this issue, the first two files are the guilty ones. I added them separately, the original two were renamed with the date, but now I can't edit the ID tags for the new ones (or for all in general) because of this error: All files must be linked to sections before you can edit the tags
https://librivox.org/validator/16345
Also, when I try to delete any file, all buttons freeze and I can't click anything, only after I refresh.

 I'm basically just skipping any file that mp3gain cannot process for whatever reason.

Alright, I think the commit above (7f63d1c) should prevent broken files form reaching the validator. Is that the only problem though? What about the filenames with the period at the end? How do they end up happening?


intecture-cli: use openssl 1.0.2

Motivation for this change
This was broken on unstable and release-19.09. The upstream seems unmaintained, so I've just got it into a working state in the easiest way.
This should be backported.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @rushmorem

nix-review passes on NixOS :+1:


Add text kwarg to optionally forward to PortalBase.add_text

I noticed that PortalBase allows setting the label directly via add_text, but that MatrixPortal did not. I added in the text kwarg as is done in PortalBase.add_text  along with the existing docstrings.
Any feedback or comments welcome!

Thanks for reformatting :)


Adds passing all arguments specified in input description of SOAP.

Fixes issue with methods returning nothing if called only with partial list of arguments. Closes #7.

thanks!


m3u file can contain empty lines

Now package creates empty channels from empty lines. I think they must be skipped

I thought about this case extensively and I reached the conclusion that, as per m3u standard, every row that is not a comment or a tag is a url row.
Hence, a blank line is a url row... but with an empty url.
Because of this, I don't think empty lines should be skipped.

On second thought, I think you may have a point here...
In fact the RFC for HLS live streams (which uses M3U playlists under the hood) clearly states:

Each line is a URI, is blank, or starts with the character '#'.  Blank lines are ignored.  Whitespace MUST NOT be present, except for elements in which it is explicitly specified.

So, I'm reopening this issue (apologies for the mess): thanks for submitting it.

now it fails on processing this sample
#EXTM3U url-tvg="http://www.cn.ru/data/tv/schedule.zip" cache=500 deinterlace=1 aspect-ratio=4:3 croppadd=10x10 tvg-shift=0

#EXT-INETRA-CHANNEL-INF: channel-id=10338245 recordable=true age-restriction=16 territory-id=16
#EXT-INETRA-STREAM-INF: aspect-ratio=16:9 has-timeshift=true
#EXTINF:-1 cn-id=10338245 cn-records=1 group-title="Эфир", Первый
http://cache-tv.nsotelecom.ru/streaming/1kanal/16/g2500/playlist.m3u8

#EXT-INETRA-CHANNEL-INF: channel-id=10338258 recordable=true age-restriction=16 territory-id=16
#EXT-INETRA-STREAM-INF: id=233 aspect-ratio=16:9 has-timeshift=true
#EXTINF:-1 cn-id=10338258 cn-records=1 group-title="Эфир", Россия 1
http://cache-tv.nsotelecom.ru/streaming/rossija/16/g2500/playlist.m3u8

line left unprocessed
I think that the reason is somewere around +1 shifting in _populate. Didn't you think about skipping empty lines in loadl? Now you will skip every line that not fill known patterns, that not seems to be correct


Add clone to embassy_rp::gpio::Level

Allows you to wite a cleaner state change detector. Example:
let mut button_state: Level = Level::Low;
let mut prev_button_state: Level = button_state;

loop {
    button_state = button.get_level();

    if prev_button_state != button_state {
        led.set_level(button_state);  // Takes ownership of button_state.
    }

    prev_button_state = button_state; // Can't be done since the ownership has been moved.
                                      // Adding Clone makes this code possible
}

Could you add Copy as well? For tiny enums like this, the best is Copy+Clone.


Kong ingress-controller restart all the time when we upgrade the Kong version directly

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
When we upgrade the Kong from an old verison 0.8 to the new version 2.5 directly in the env, the kong ingress-controller container always restart due to this crd udpingress lacked. Except applied this crd mannually, is there any other suggestion to fix it in Kong code? Thank you.
➜  ~ kc get po -A|grep kong
katamari                                           gateway-kong-544f8b74bc-hq2pg                                       1/2     CrashLoopBackOff   7          30m
katamari                                           ibm-kong-operator-65c675b488-gzbm2                                  1/1     Running            0          31m
➜  ~ kc logs gateway-kong-544f8b74bc-hq2pg -c ingress-controller
...
I0222 09:27:56.085980       1 request.go:665] Waited for 11.189621419s due to client-side throttling, not priority and fairness, request: GET:https://<IP_ADDRESS>:443/apis/k8s.cni.cncf.io/v1?timeout=32s
time="2022-02-22T09:28:01Z" level=error msg="if kind is a CRD, it should be installed before calling Start" error="no matches for kind \"UDPIngress\" in version \"configuration.konghq.com/v1beta1\"" kind="{\"
...

Expected Behavior
No response
Steps To Reproduce
No response
Kong Ingress Controller version
No response
Kubernetes version
No response
Anything else?
No response

Currently we provide two explicit methods of deployment:

kustomize
helm

As documented the Helm chart is the only entirely supported production deployment method (kustomize is meant for testing and evaluation) and CRD management for Helm deployments is documented as such:
https://github.com/Kong/charts/tree/main/charts/kong#crd-management
What method are you using, and is this documentation helpful to you? Let us know how we can assist you further.

It would appear now that I've found https://github.com/Kong/kong-operator/issues/74 you're using the Kong Operator, correct?

Hi @shaneutt exactly, we are using kong operator, and we are trying to upgrade the kong version using operator at runtime. So, we'd like to manage CRDs automatically. Do you think it's possible? I see the doc mentioned that it's recommended to backup the resources and it seems manual steps are required. In our case, this may not be a big problem, because all associated custom resources are auto-generated which can be rerun after upgrade.

Ok, I'm going to close this as a duplicate of https://github.com/Kong/kong-operator/issues/74, and I will respond in that issue :+1:


Installation fail on both window & docker container

npm install -g @hqjs/hq shows below error:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-04-23T06_22_21_599Z-debug.log

node ver: 14.0.0
test env:

windows 10 pro ver 1909
node:buster (docker image)

Hi @sesameguy, thanks for reporting an issue. People say installation in docker might work with yarn, please give it a try. As for windows - I can't really test it (only have mac), but it looks like it is a problem with node-sass, not hq.
I will double check compatibility with node@14 and check if there are any related installation problem with node-sass.

thx, it works in docker container with yarn


Daniel/peekandpop

Implements peek and pop in the following places:

To profile from profile image on Feed
To Followers/Following screen on profile screen
To Post History screen on profile screen
To profile on People Search

Did not implement large profile image since Monica's branch is adding that behavior

Remind me to see this implementation while in meeting tonight. It's hard to evaluate all the code without seeing what is actually does ;)

Could we move these outside the main class and add them to an extension:
@available(iOS 9.0, *)
extension FeedViewController: UIViewControllerPreviewingDelegate { ... methods ... }

Makes for a cleaner view of what's the more important stuff to the class.

Should a create a new Swift file and put extensions for every VC that implements the PreviewingDelegate? Or is there a good place for them already?

I would keep them in the same file, but it's nice to have extensions separate from the main code.

@dantheli Looks good, sorry forgot to comment on this yesterday.


Sidebar UI

Describe your changes
Sidebar UI changes
Link the related issue
Closes #2687
Checklist before requesting a review

[x] Is this PR ready for merge? (Please convert to a draft PR otherwise)
[x] I have performed a self-review of my code.
[x] Did I request feedback from a team member prior to merge?
[x] Does my code following the style guide at docs/CODING-STYLE.md?

this looks good.
i do think the old icons look better tbh. not a huge deal if its a pain, but ideally we could use the old style. most (besides the limit and range icons i think) come from the lucide icons pack - https://lucide.dev/icons/
re the status first or last. i think it looks better last

Waiting on @miyuki-eto for icons decision


Enables support for distributing Swinject as a binary library

This fixes #450.
Solution
To allow frameworks to be used by multiple Swift version, we need to set:
BUILD_LIBRARY_FOR_DISTRIBUTION = YES

This isn't necessary for a Swift package (since they are build from source), but it's useful for Carthage or other means of distributing binary frameworks.
This was added to the project.yml and then xcodegen was run.
Testing
I built Swinject.framework in Xcode 11.3.1. Then in Xcode 11.4 I created a test project and linked to the generated project. It built and linked successfully.
Tools
$ xcodegen --version
Version: 2.14.0

$ swift --version
Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1<IP_ADDRESS>)
Target: x86_64-apple-darwin19.3.0

$ carthage version
0.34.0

Thank you for making the PR😃 and sorry for taking long time to merge it🙇♂ I was  not aware about BUILD_LIBRARY_FOR_DISTRIBUTION setting. I appreciate your PR❤

I actually took only the changes about BUILD_LIBRARY_FOR_DISTRIBUTION to avoid conflict.
https://github.com/Swinject/Swinject/commit/190a6d1e4c7c60258034d9b3b8098d87a2daa8fd


If node in downstream cluster's IP changes, node is still reachable but reported IP in rancher is not correct

Rancher Server Setup

Rancher version: v2.6.4-rc1
Installation option (Docker install/Helm Chart): helm

If Helm Chart, Kubernetes Cluster and version (RKE1, RKE2, k3s, EKS, etc): rke1, v1.21.7

Proxy/Cert Details: signed certs

Information about the Cluster
tested with the following:

Kubernetes version: 1.22.6
Cluster Type (Local/Downstream): downstream

If downstream, what type of cluster? (Custom/Imported or specify provider for Hosted/Infrastructure Provider): AWS node driver

User Information

What is the role of the user logged in? (Admin/Cluster Owner/Cluster Member/Project Owner/Project Member/Custom): admin

Describe the bug

if a node goes down in AWS, usually the public IP is rotated once it comes back up.  In rancher however, we keep the 1st IP we get when provisioning with the node driver.
To Reproduce

provision a downstream cluster using aws node driver with 3etcd, 1cp, 3workers
once the cluster is active, go to AWS and power down one of the etcd nodes

note the public IP of the node before shutting it down
wait for rancher to report the node as not responding, and aws to show the node as stopped

start the node again through aws

Result
rancher's IP of the node doesn't match the IP of the actual node.
Expected Result

The IPs should match in the backend and in rancher.  Note that the private IP persists through power downs in AWS, but I suspect that if this was manually updated through the provider, rancher would not update the private IP either.

Both myself and @jakefhyde investigated this issue yesterday. We found that there is currently no mechanism for a node to report that its public IP has changed within RKE. The public IP for a node is only populated within the Node Plan during RKE provisioning. Further discussion is needed for us to determine the best course of action.


chore: update to node 16

node 12 is being deprecated in actions...
https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/

+1 for this change
@hugo19941994 can you review this change?
Thank you :)

Thanks for the heads up


New logger interface and improved logging infrastructure

Related to #143

Exposed ILogger interface
Default ILogger that writes to console
APIs for hooking up an ILogger
Improved infrastructure of how logging is used throughout the solution

(CC @akashlal)

This is a large change, but looks good to me.

Closes #143


Fix NPE when getting stratos health

There is an NPE when we check stratos health.  This prevents any job that requires a resource ro run.

Added the fix for running a job with multiple resources.

Updated with notes from @btsweber notes.


Looking for a way to programatically change the scale and respecting the context/within parameter (zoom/unzoom buttons)

Hi,
I'm desperate in trying to find a way to zoom in and zoom out (while respecting the max and min scale set) by pushing on a + ou - button.
Right now I'm using this:
zoomer.value?.setData({
    scale: newScale,
    originX: state.originX,
    originY: state.originY,
    translateX: state.translateX,
    translateY: state.translateY,
  })

newScale is set with a value withing my min and max scale and it works but not in a logic way.
I'm trying to zoom in the middle and unzoom from the middle, just like if I mousewheeled from the center but on the click on a + or - button. Also, with the method I use now, if I unzoom but I was watching the upper part of content, the content gets out of bound as the scale reduce, until I drag the content, then the "within" context is respected and the content gets back to a good position.
One solution could be to add accessible method to allow setting the scale (and scale from middle), but it would then process like a mousewheel event for content positions?
As last time, I'm ok to contribute or sponsor this plugin, with buymeacoffee or anything else. Let me know! 🙂
I can also provide video if needed.
Thank you!

@jeanfrancoisgb Hi, thanks for reaching out. I'll work on adding this feature over the upcoming weekend. If you have any additional requests, I will definitely try to include them as well.

That's very generous of you, I appreciate your commitment and responsiveness about your package, it is very useful to me. Thank you again and again.
I'm building kind of a magazine reader with it, there would be nice things to have for you if you have time and desire:

a way to paginate content; my content is very large, but consists of multiple divs horizontally, a method that auto moves to the previous/next closest block would be amazing. I think it could be useful to many people (people making image gallery too) but definitely not everyone I guess though.

Thank you again!

@jeanfrancoisgb Hi, I have just finished the implementation of this new feature, please read change log and readme....
to add key actions just add prop 'key-actions' and for initially centralize the image add  prop 'centred'
let me know if it works well and if you would like another features

Hi @coddicat
Thank you so so much, can't wait to test it.
I have trouble updating the package, even when I remove my node_modules and reinstall, the node_modules@coddicat\vue-pinch-scroll-zoom folder only contains README.md and the package.json.
Because all other packages seems to work ok, I'm not sure it's on my side, but I'm trying to find the issue and keep you updated.

I confirm you there is only 2 files in the new version: https://www.npmjs.com/package/@coddicat/vue-pinch-scroll-zoom

@jeanfrancoisgb oops, fixed, please check it

@jeanfrancoisgb #24 -  you'r right - just fixed, please update version
manualZoom() - works relatively to the current scale value, so if the current scale is 2 and execute .manualZoom(2) the new scale value will be 4. but if you need to scale to a concrete value run
  const newState = zoomer.value.setData({
    scale: 1
  });
  mapStateProps(newState);

let me know if now it works

Ok I tested more, I could make it work once, only if I zoomed just a little bit with the mousewheel at least one before clicking the zoom button. But then I can't unzoom or zoom, or even drag/move with mouse.

don't set null values, use undefined instead, send me the link to fiddler I will try investigate your issues

The package sets values at NaN after I use manualZoom method like provided code.
I will prepare a Fiddle, I get back to your really soon. Thank you!

I could not use CodeSandbox or FiddleJS because of imports structure so I made a public test repo that you can use https://github.com/jeanfrancoisgb/demo-pinch
Just npm run dev.
You can try Zoom + and Zoom - buttons. Events are shown in the js console.
Whatever the situation, the only way I could make it work was if I prezoom manually a little  bit, then press Zoom +, then nothing works anymore, scale and other values are lost. Even then, it doesn't zoom as if cursor was in middle.
Let me know if you need anything else. Thanks again!

I got it,
There is a discrepancy in the method implementation compared to the method signatures described in the README, specifically regarding the parameter types. The correct approach is to pass the parameters directly, not as objects.
For example:
function zoom() {
  zoomer.value?.manualZoom(1.5);
}

function unzoom() {
  zoomer.value?.manualZoom(0.5);
}

Also, please note that the value passed is a scaling factor. Passing 1 will have no effect. To scale up, the value should be greater than 1, and to scale down, it should be less than 1 (but not negative)

Great, I'll test again tomorrow with the good values. Thank you very much for you time.
I think it would be nice to have a setScale() method as well. If we use the reset one, we need to specify all the other properties as well, making it very hard to be used as zoom method. If setscale receives a value smaller than minscale, then minscale is set as scale. And opposite for maxScale. And zooming/dezooming from middle as well?
I can live without that, but it would be a nice luxury! 😊
In all cases, thank you again, I'll confirm and close tomorrow after testing.

@jeanfrancoisgb you don't need to provide all the values in setData function, it's allowed undefined - setData({ scale: 1 })


Plugin does not download audio attachments (BUG)

I am using the latest version of the plugin (0.0.24) and obsidian 1.7.4. The plugin synchronizes the notes when I don't have the option to download the audios activated but when I activate it, it doesn't synchronize the notes nor download the audios.
At the end the plugin rejects my credentials and I have to re-enter them.

I believe that 0.0.26 should fix the credential rejection issue, please re-open if this isn't the case. thanks!