Improve Prune Messages Feature to Multiple Channel Types

Description
This PR improve the existing Prune Messages feature https://github.com/creatorsgarten/kaogeek-discord-bot/pull/41#issue-1715440476

extends the capability of this feature to handle multiple types of channels. Previously, the feature was only capable of handling text channels (GuildText). With this update, it now also supports voice channels (GuildVoice), stage voice channels (GuildStageVoice), and public threads (PublicThread) see https://discord-api-types.dev/api/discord-api-types-v10/enum/ChannelType
improvement involves handling a 400 status code error by filtering messages within 24 hours and deleting all of them. (noted that Discord only allows deleting messages that are up to 2 weeks old)
fix This interaction failed sometime by reply to discord in 3 second (noted that Discord expects bot to acknowledge the interaction within 3 seconds so reply something first)
Add typeguard.ts : have isInArray function checks whether a specific item is included in an array and returns a boolean value
Add suportTextChannel : Define a own (to use in deleteAllMessage) custom type called supportedTextChannel that represents the supported text channel types

Type of change

[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Screenshot
after confirm to prune message

example log when successfull prune message from different type : text channel,open chat in voice,stage channels,threads and forum

Checklist:

[x] I have run pnpm format and my code don't have any linting issues

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation

Ok, thank you krubb. I will resolve all of this tonight.


Initial Spring Boot API

Initial pass at a graphql API written in Spring Boot, to be backed by a postgresql database and runnable in any containerized environment.
TODO:

[x] dockerize for the folks who don't play java
[ ] database layer
[x] dockerize that too
[x] implement mutators
[ ] argue about schema a bunch
[x] CI workflows

Is there anything I can do with this to verify, check things out, etc. to help you? I'm not seeing any documentation, not sure what you'd want me to do to start it up and try it out?

backend is now deployed to https://prime-data-input-backend.app.cloud.gov/

merging this into main captured next steps in issues https://github.com/CDCgov/prime-data-input-client/issues/69 and https://github.com/CDCgov/prime-data-input-client/issues/70


(Multi)DrawIndirect support

Describe the solution you'd like
Implement support for MultiDrawIndirect and DrawIndirect in the various rendering api's. MultiDrawIndirect is not supported in DX11 though but could be added to DX12/Vulkan/OGL backends. Having these features would make it possible to more easily implement various gpu driven rendering techniques (culling, lod selection etc).

These are there as overloads that take a Buffer as the argument. https://github.com/stride3d/stride/blob/master/sources/engine/Stride.Graphics/Direct3D/CommandList.Direct3D.cs#L490
The "Multi" versions can be simulated by using SV_VertexID and SV_InstanceID in the vertex shader, afaik.

ohh, nice I shall check this out :)

For reference #37 #39 #1218


Small Improvement in the async chat response code.

[ ] I understand that this repository is auto-generated and my pull request may not be merged

Changes being requested
Improvement to the README file, specifically the Streaming Responses example. This example runs as is now (circa Python 3.10).
Additional context & links

Thank you for the contribution!

@ssojoodi there's a merge conflict because we recently fixed the prompt -> model thing, could you update accordingly?

@rattrayalex done. Please have a look. Thanks.

Thank you!


ASP.NET Core 3 preview 7 - AspNetCoreModuleV2 not working on Windows Azure Pack

Describe the bug
When publishing a self-contained application based on ASP.NET Core 3 preview 7 (I read that is supported in production since preview7) on a Windows Azure Pack WebsitesV2 account, application won't start when using module AspNetCoreModuleV2 which has been installed on server roles (we installed the latest preview7 bundle available).
The actual error is reported as:
Handler "aspNetCore" has a bad module "AspNetCoreModuleV2" in its module list
However, switching to AspNetCoreModule (which had also been installed) by the WAP runtime, works fine. Do we need extra steps in WAP to enable module V2 ?
Not sure that using AspNetCoreModule instead of V2 is safe enough. We will surely miss some functionalities.
Thanks.

This usually means the AspNetCoreModuleV2 isn't installed on the target machine. I'm not familiar with the Windows Azure Pack WebsitesV2, @anurse ?

I'm not either but I'll make inquiries :).
@tbprince, as @jkotalik said, this usually means that the ASP.NET Core module isn't properly installed. This is a global installation that must be done on the Web Site base image. In Azure Web Apps (in the cloud) we work with the team to do this, but I don't know how/if that translates in Azure Pack. Do you have the ability to modify the base image used for your Web Site? If so, you could try installing the Windows Hosting Bundle (from https://dotnet.microsoft.com/download/dotnet-core/3.0) and that should install ANCM for you.
If you don't have the ability to affect the base image in Azure Pack, you may have to wait for Azure Pack's images to support ASP.NET Core 3.0.

Not sure that using AspNetCoreModule instead of V2 is safe enough. We will surely miss some functionalities.

You should be able to do this safely and run an ASP.NET Core 3.0 app. You're right that you'll miss out on some new functionality. Specifically you won't be able to run in the in-process mode added in ASP.NET Core 2.2. There are also some diagnostics and error reporting improvements in AspNetCoreModuleV2. However, the core scenarios should work find with AspNetCoreModule and ASP.NET Core 3.0.
We'll work with the Azure Pack team to see what the best way forward is here in the long-term.

Looks like Azure Pack V2 Web Sites are no longer supported: https://support.microsoft.com/en-us/lifecycle/search?alpha=Windows Azure Pack V2 Web Sites

The docs also indicate this: https://docs.microsoft.com/en-us/previous-versions/azure/windows-server-azure-pack/dn457745(v=technet.10)
As a result, Azure Pack is not going to be updated to include this. If it's possible to install the Hosting Bundle on the VMs themselves, you'll be able to get it working but it won't be supported by Azure Pack natively.
Closing this issue.

@anurse,
that's exactly what we wanted to do and indeed we installed the hosting bundle on our test servers. Please look at this image:

it seems to me that the module is installed since we manually did it:

Any hint ? Is there something else that we should install ?
Thanks.

@anurse,
regarding ASP.NET Core Module v1, yes, it works fine. App runs when we do it through Module v1 but of course it would be better if we could just run it through v2.
Thanks again.

Any hint ? Is there something else that we should install ?

That does look like it would work. @jkotalik are there some places @tbprince could look on disk to confirm the installation is correct?

Check the global applicationhost.config file in C:\Windows\System32\inetsrv\config.

What should I look for ?
Attaching the file
applicationHost.zip

I see the module installed there:
            <add name="AspNetCoreModuleV2" image="%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll" />

@tbprince can you check for this file and double-check the bitness? You can do that with dumpbin /headers [filepath] (which is available from the VS command prompt). We don't need the whole output, just the value for machine, which is right at the top. For example:
Dump of file ...\path\to\aspnetcorev2.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
             14C machine (x86)

Where is the error being reported? The Windows Event Log? Is there any more detail in the error message you can provide?

@anurse,
here you go:
`Microsoft (R) COFF/PE Dumper Version 14.00.23506.0
Copyright (C) Microsoft Corporation.  All rights reserved.
Dump of file c:\dev\aspnetcorev2.dll
PE signature found
File Type: DLL
FILE HEADER VALUES
8664 machine (x64)
7 number of sections
5D2D53FB time date stamp Tue Jul 16 06:35:07 2019
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
Executable
Application can handle large (>2GB) addresses
DLL
`
We have failed trace logs active. The error is being reported there. Not sure which other details to report. Anything I can provide via Kudu ?

Running in Kudu seems to be working fine.

I can tell you that our project is using Kestrel, not HTTP.sys since I know that is not compatible with Module v2. By the way, this is just a default ASP.NET Core app in Visual Studio 2019 Preview. Our init code seems to confirm that we are using Kestrel:
        public static IHostBuilder CreateHostBuilder(string[] args) =>             Host.CreateDefaultBuilder(args)                 .ConfigureWebHostDefaults(webBuilder =>                 {                     webBuilder.UseStartup<Startup>();                 });

Not sure this can help but this is the failed traced log that gets generated:
IIS Detailed Error - 500.21 - Internal Server Error.html.zip

The app configuration doesn't really affect this. The problem is that IIS can't load the aspnetcorev2.dll module on the machine running the website. Assuming the XML entry I referenced is present in the apphost.config on the app server and the DLL is physically present there and the bitness matches, I don't know why it wouldn't be loading.

@anurse,
any log I could check for specific errors ? Since the v1 module seems to be working fine, generally speaking, there should be no problem with v2 either. Any runtime to install or any dependency ?
Thanks.

The Windows Event Log is probably your best source for more information.
I'm going to ask a fairly obvious question just to make sure we haven't missed something: The Web Site is running directly on these machines, correct? I don't know if Azure Pack does anything with VMs or has multiple tiers (i.e. a front-end and web roles, etc.).

@anurse,
yes, website is running on those machines. If you aren't familiar with WAP layout, it has frontends accepting connections and load balancing worker roles where websites will be executed inside a specific process. Websites are not directly configured in IIS though. There's a worker process, similar to Azure App Service. In facts, I believe that WAP and Azure App Service share the same heritage.
However, ASP.NET Core Module v1 is working fine so I don't believe there's anything for that.
Anyway, logs haven't been helpful. Nothing wrong there.

yes, website is running on those machines. If you aren't familiar with WAP layout, it has frontends accepting connections and load balancing worker roles where websites will be executed inside a specific process.

Ok, that's what I thought. I just wanted to make absolutely sure you were installing the module on the backend worker roles actually running the websites (which it sounds like you were, but it's always good to double check 😄)

Websites are not directly configured in IIS though. There's a worker process, similar to Azure App Service

That may be part of the problem. I just don't know what WAP is running to host the app. If they're in IIS, then the module needs to be installed into IIS (which is what our installers do). If they run in a special IIS process of some kind that uses a different set of module configurations then it might need to be configured there.
If you aren't seeing App Pools in IIS Manager then it would definitely strongly indicate that WAP uses some custom IIS hosting that may not be targeted by our Hosting Bundle.

In facts, I believe that WAP and Azure App Service share the same heritage.

Yeah, and we have a bunch of special stuff we do with the App Service team to deploy the module which why I think this might just be a limitation of WAP (which, since it's now out of support, isn't likely to change).

However, ASP.NET Core Module v1 is working fine so I don't believe there's anything for that.

I think sticking with ANCMv1 is probably your best bet for now. Since WAP is out of support, I don't expect you'll see official support for ANCMv2 there. Migrating to Azure Stack (which is still supported I believe) or just plain Virtual/Physical Machines may be your best plan moving forward to get future releases running.

@anurse,
first of all, thank you for your replies. I don't want to bother and I believe that sticking with Module v1 is our best option but do you mind to explain (even roughly) what you had to do with the App Service team ? Maybe we could use such info to perform changes for our deployment since those two environments are quite similar, at least in their first forms.
I believe that WAP and App Service skip configuring multiple app pools and websites and only run a single process that spawns other processes based on website configuration. So it might well be that the list of enabled modules is dynamically loaded somewhere using configuration and that's why we do have the module installed but that's not picked up by the "master" process. It might not be included into the configuration even when installed.
Thanks.

what you had to do with the App Service team

Mostly just installing the MSI on their base image. I'm not aware of specifics beyond that but I know we work closely with them to deploy. I also know that while WAP is based on some of that technology, it's not the same, so there definitely could be other things going on.

There must be something else that we need to do because we installed the module on worker servers. Thanks anyway for looking into this.


Limit scope of backup apply label to one backup

Before this commit the scope of resources to be backed up using apply-backup label was cluster wide. So each individual backup resource made a backup of every resource it matched with.
Changing the value of label selector to the name of backup CR fixes this issue.
/cc @Missxiaoguo @browsell

/hold

/unhold

/lgtm


CUDA: debug=True conflates checking for exceptions and generating debug info

From the docstring of the cuda.jit decorator:

debug: If True, check for exceptions thrown when executing the kernel. Since this degrades performance, this should only be used for debugging purposes. Defaults to False. (The default value can be overridden by setting environment variable NUMBA_CUDA_DEBUGINFO=1.)

This also enables the generation of debug information. Ideally there should be two separate flags, one for debuginfo, and one for checking for exceptions. Perhaps:

debuginfo: Set to True to enable debug info generation.
exception_check: Set to True to enable exception checking.

with debug=True implying that both of the above are True - this will provide consistent behavior with existing versions of Numba as well as providing more fine-grained control over debugging functionality.

There is some alignment / improvement needed with the rest of Numba here (e.g. debug switching on boundscheck for the CPU  target) so I'm removing the good first issue label as it requires some alignment / thinking about with Numba.

This won't make it into 0.55, optimistically bumping to 0.56.

I feel this feature would be useful if we have. I will try to work on this. Any suggestion about how? @gmarkall

I have this prototyped somewhere already, let me see if I can find it...

It's in this branch: https://github.com/gmarkall/numba/compare/cuda-decorator-refactor...gmarkall:numba:cuda-compilation-refactor
Which is based on this PR: https://github.com/numba/numba/pull/8773


[VectorDistribution] Add infrastructure to support vector distribution based on layout

This patch adds vector distribution based on VectorLayoutAnalysis.
The VectorDistribution framework itself is generic, and relies on VectorLayoutOptions to decide the policies, for example: what anchors to use for distribution.

Thanks @Groverkss for making this work. I think the implementation here is pretty neat!


Support NTAccount string translations

Support automatically accepting an NTAccount or SecurityIdentifier string to translate to the SID string value on the -Sid parameters. This means the caller does not have to translate the NTAccount string value themselves or pass it as that typed object making it easier to call.
cc @davehope

Looks good to me, I ran some basic tests (which were similar to your unit tests) and found no issues.
My only thought was whether README.md would benefit from an example of this?

Thanks for looking through the changes and testing them out. Your point about the README was great so I've updated the example there and in the module docs.


refactor: TopUp Auction

This PR builds on https://github.com/galacticcouncil/Basilisk-node/pull/308
It delivers the missing pieces for finishing TopUp auctions
When a user bids on a topup auction, the amount which is bid is reserved (ie moved to a subaccount belonging to the auction).
At auction close, the whole amount is transferred to the seller in case the lot is sold (ie reserve_price is met)
If there is no winner because the reserve price was not met, all bidders can claim back their (aggregated) reserved amounts
TODO:

Add documentation

some of the docs are obsolete so that needs revisiting but LGTM


Feature/tuya-panel-outdoor-sdk

Description
Please provide a brief summary of the changes. If it is related to an issue, please bring the issue number, like fixes #${number}.
Package

[x] tuya-panel-outdoor-sdk

Type of change
Please select the relevant option.

[x] New feature (non-breaking change which adds functionality)

Description
Please provide a brief summary of the changes. If it is related to an issue, please bring the issue number, like fixes #${number}.
Package

[x]  tuya-panel-outdoor-sdk

Type of change
Please select the relevant option.

[x]  New feature (non-breaking change which adds functionality)

描述写一下

合并一下 commit，不要出现中文

Codecov Report

Merging #56 (cfeec60) into main (1750094) will increase coverage by 2.28%.
The diff coverage is 56.52%.

@@            Coverage Diff             @@
##             main      #56      +/-   ##
==========================================
+ Coverage   56.51%   58.79%   +2.28%
==========================================
  Files         129      135       +6
  Lines        4721     5199     +478
  Branches     1101     1256     +155
==========================================
+ Hits         2668     3057     +389
- Misses       2051     2130      +79
- Partials        2       12      +10

Impacted Files
Coverage Δ

...utdoor-sdk/src/components/setting-slider/index.tsx
37.50% <37.50%> (ø)

...outdoor-sdk/src/components/location-text/index.tsx
58.82% <58.82%> (ø)

...dk/src/components/shadow-circle-progress/index.tsx
85.00% <85.00%> (ø)

packages/tuya-panel-api/src/robot/gyroDataApi.ts
9.72% <0.00%> (ø)

packages/tuya-panel-api/src/robot/laserDataApi.ts
8.88% <0.00%> (ø)

...l-gateway-sdk/src/components/setPassword/index.tsx
48.27% <0.00%> (ø)

...-gateway-sdk/src/components/addDeviceTip/index.tsx
42.30% <0.00%> (ø)

...rician-sdk/src/components/curtain/curtain-base.tsx
1.03% <0.00%> (ø)

...cian-sdk/src/components/layout/modal-container.tsx
3.48% <0.00%> (ø)

...sdk/src/components/ele-setting/container/index.tsx
22.80% <0.00%> (ø)

... and 6 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1750094...cfeec60. Read the comment docs.


Fix CI

CI is currently broken. This PR is an attempt to fix it.
Fix #3121

I think at least one of the problems is that we're now testing against OpenSSL 3, but we need net-ssh 7 to support it. But net-ssh 7 doesn't support Ruby 2.5, which is our oldest supported Ruby version.
...and as I typed that, you added a commit to allow net-ssh 7! That should be mostly fine. We only test against 2.7 and 3.1, and we ship 2.7 in our packages. I think it will prevent you from doing gem install bolt on Ruby 2.5 though. Maybe if you explicitly install net-ssh 6 first it will work? I will test that out a bit.

It looks like we already have an issue like that with a couple of other gems (public_suffix and faraday-net_http), so this is probably fine.
#3121 mentions some breaking changes to supported algorithms, hmm...

According to net-ssh 7.0 gemspec:
  spec.required_ruby_version = Gem::Requirement.new(">= 2.6")

So with older versions of Ruby, bundler should resolve to version 6.x which is still allowed.  I would expect it work seamlessly. That being said, Ruby 2.5 has reached EOL 20 months ago and does not receive security updates anymore.  Support for it might be less important than support for modern setups.

Bundler may do the right thing, but I believe gem install doesn't actually use Ruby version requirements to decide which gem version to install. It just fails if the version it resolves to doesn't support the Ruby version you're using. It's kind of a pain...
Puppet 8 is planned for February and will be shipping with Ruby 3.2 and dropping support for Ruby 2.5 and 2.6, along with upgrading to OpenSSL 3.0. Sounds like it's time for Bolt 4!

Bundler may do the right thing, but I believe gem install doesn't actually use Ruby version requirements to decide which gem version to install. It just fails if the version it resolves to doesn't support the Ruby version you're using. It's kind of a pain...

Ah I see what you mean… Indeed, installing out of bundler its a PITA, nobody wants to do that :grin:
romain@buster:~/bolt$ gem build bolt.gemspec
WARNING:  description and summary are identical
WARNING:  open-ended dependency on puppet (>= 6.18.0) is not recommended
  if puppet is semantically versioned, use:
    add_runtime_dependency 'puppet', '~> 6.18', '>= 6.18.0'
WARNING:  open-ended dependency on puppet-resource_api (>= 1.8.1) is not recommended
  if puppet-resource_api is semantically versioned, use:
    add_runtime_dependency 'puppet-resource_api', '~> 1.8', '>= 1.8.1'
WARNING:  open-ended dependency on bundler (>= 1.14, development) is not recommended
  if bundler is semantically versioned, use:
    add_development_dependency 'bundler', '~> 1.14'
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
  Successfully built RubyGem
  Name: bolt
  Version: 3.26.2
  File: bolt-3.26.2.gem
root@buster:/home/romain/bolt# gem install bolt-3.26.2.gem
ERROR:  Error installing bolt-3.26.2.gem:
	The last version of faraday-net_http (< 3.1, >= 2.0) to support your Ruby & RubyGems was 2.1.0. Try installing it with `gem install faraday-net_http -v 2.1.0` and then running the current command again
	faraday-net_http requires Ruby version >= 2.6.0. The current ruby version is 2.5.0.
root@buster:/home/romain/bolt# gem install faraday-net_http -v 2.1.0
Fetching: faraday-net_http-2.1.0.gem (100%)
Successfully installed faraday-net_http-2.1.0
Parsing documentation for faraday-net_http-2.1.0
Installing ri documentation for faraday-net_http-2.1.0
Done installing documentation for faraday-net_http after 0 seconds
1 gem installed
root@buster:/home/romain/bolt# gem install bolt-3.26.2.gem
Fetching: faraday-2.7.2.gem (100%)
ERROR:  Error installing bolt-3.26.2.gem:
	There are no versions of faraday (~> 2.0) compatible with your Ruby & RubyGems. Maybe try installing an older version of the gem you're looking for?
	faraday requires Ruby version >= 2.6. The current ruby version is 2.5.0.
root@buster:/home/romain/bolt# gem install faraday -v 1.10.2
root@buster:/home/romain/bolt# gem install bolt-3.26.2.gem
root@buster:/home/romain/bolt# gem install bolt-3.26.2.gem --ignore-dependencies
Successfully installed bolt-3.26.2
Parsing documentation for bolt-3.26.2
Installing ri documentation for bolt-3.26.2
Done installing documentation for bolt after 16 seconds
1 gem installed
root@buster:/home/romain/bolt# bolt
Traceback (most recent call last):
	8: from /usr/local/bin/bolt:23:in `<main>'
	7: from /usr/lib/ruby/2.5.0/rubygems.rb:304:in `activate_bin_path'
	6: from /usr/lib/ruby/2.5.0/rubygems.rb:304:in `synchronize'
	5: from /usr/lib/ruby/2.5.0/rubygems.rb:305:in `block in activate_bin_path'
	4: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1440:in `activate'
	3: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1458:in `activate_dependencies'
	2: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1458:in `each'
	1: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1469:in `block in activate_dependencies'
/usr/lib/ruby/2.5.0/rubygems/dependency.rb:310:in `to_specs': Could not find 'addressable' (~> 2.5) among 71 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/root/.gem/ruby/2.5.0:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all', execute `gem env` for more information
root@buster:/home/romain/bolt# gem install addressable
Fetching: public_suffix-5.0.1.gem (100%)
ERROR:  Error installing addressable:
	The last version of public_suffix (< 6.0, >= 2.0.2) to support your Ruby & RubyGems was 4.0.7. Try installing it with `gem install public_suffix -v 4.0.7` and then running the current command again
	public_suffix requires Ruby version >= 2.6. The current ruby version is 2.5.0.
root@buster:/home/romain/bolt# gem install public_suffix -v 4.0.7
Fetching: public_suffix-4.0.7.gem (100%)
Successfully installed public_suffix-4.0.7
Parsing documentation for public_suffix-4.0.7
Installing ri documentation for public_suffix-4.0.7
Done installing documentation for public_suffix after 0 seconds
1 gem installed
root@buster:/home/romain/bolt# gem install addressable
Fetching: addressable-2.8.1.gem (100%)
Successfully installed addressable-2.8.1
Parsing documentation for addressable-2.8.1
Installing ri documentation for addressable-2.8.1
Done installing documentation for addressable after 3 seconds
1 gem installed
root@buster:/home/romain/bolt# bolt
Traceback (most recent call last):
	8: from /usr/local/bin/bolt:23:in `<main>'
	7: from /usr/lib/ruby/2.5.0/rubygems.rb:304:in `activate_bin_path'
	6: from /usr/lib/ruby/2.5.0/rubygems.rb:304:in `synchronize'
	5: from /usr/lib/ruby/2.5.0/rubygems.rb:305:in `block in activate_bin_path'
	4: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1440:in `activate'
	3: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1458:in `activate_dependencies'
	2: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1458:in `each'
	1: from /usr/lib/ruby/2.5.0/rubygems/specification.rb:1469:in `block in activate_dependencies'
/usr/lib/ruby/2.5.0/rubygems/dependency.rb:310:in `to_specs': Could not find 'aws-sdk-ec2' (~> 1) among 73 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/root/.gem/ruby/2.5.0:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all', execute `gem env` for more information
root@buster:/home/romain/bolt# gem install aws-sdk-ec2
root@buster:/home/romain/bolt# gem install CFPropertyList -v 2.3.6
root@buster:/home/romain/bolt# gem install concurrent-ruby
root@buster:/home/romain/bolt# gem install hiera-eyaml
root@buster:/home/romain/bolt# gem install jwt
root@buster:/home/romain/bolt# gem install minitar
root@buster:/home/romain/bolt# gem install net-scp
ERROR:  Error installing net-scp:
	The last version of net-ssh (< 8.0.0, >= 2.6.5) to support your Ruby & RubyGems was 6.1.0. Try installing it with `gem install net-ssh -v 6.1.0` and then running the current command again
	net-ssh requires Ruby version >= 2.6. The current ruby version is 2.5.0.
root@buster:/home/romain/bolt# gem install net-scp -v 6.1.0
ERROR:  Could not find a valid gem 'net-scp' (= 6.1.0) in any repository
ERROR:  Possible alternatives: net-scp
root@buster:/home/romain/bolt# gem install net-ssh -v 6.1.0
root@buster:/home/romain/bolt# gem install net-scp -v 1.2.1
root@buster:/home/romain/bolt# gem install net-ssh-krb
root@buster:/home/romain/bolt# gem install orchestrator_client
root@buster:/home/romain/bolt# gem install puppet
root@buster:/home/romain/bolt# gem install puppetfile-resolver
root@buster:/home/romain/bolt# gem install puppet-strings -v 2.9.0
root@buster:/home/romain/bolt# gem install faraday_middleware -v 0.14.0
root@buster:/home/romain/bolt# gem install r10k
root@buster:/home/romain/bolt# bolt
             `.::-`
        `.-:///////-.`
     `-:////:.  `-:///:-  /ooo.                        .ooo/
 `.-:///::///:-`   `-//:  ymmm-                        :mmmy  .---.
:///:-.   `.:////.  -//:  ymmm-                        :mmmy  +mmm+
://.          ///.  -//:  ymmm--/++/-       `-/++/:`   :mmmy-:smmms::-
://.          ://. .://:  ymmmdmmmmmmdo`  .smmmmmmmmh: :mmmysmmmmmmmms
://.          ://:///:-.  ymmmh/--/hmmmy -mmmd/-.:hmmm+:mmmy.-smmms--.
://:.`      .-////:-`     ymmm-     ymmm:hmmm-    `dmmm/mmmy  +mmm+
`-:///:-..:///:-.`        ymmm-     ommm/dmmm`     hmmm+mmmy  +mmm+
   `.-:////:-`            ymmm+    /mmmm.ommms`   /mmmh:mmmy  +mmmo
       `-.`               ymmmmmhhmmmmd:  ommmmhydmmmy`:mmmy  -mmmmdhd
                          oyyy+shddhs/`    .+shddhy+-  -yyyo   .ohddhs

🎉 Welcome to Bolt 3.26.2
😌 We're here to help bring order to the chaos
📖 Find our documentation at https://bolt.guide
🙋 Ask a question in #bolt on https://slack.puppet.com/
🔩 Contribute at https://github.com/puppetlabs/bolt/
💡 Not sure where to start? Try "bolt command run 'hostname' --target localhost"

We only print this message once. Run "bolt" again for help text.

Puppet 8 is planned for February and will be shipping with Ruby 3.2 and dropping support for Ruby 2.5 and 2.6, along with upgrading to OpenSSL 3.0. Sounds like it's time for Bolt 4!

Has the End-Of-Life date of older components been announced yet?

Given that Ruby 2.5 and 2.6 are EoL, I think Bolt should drop support for it.

Given that Ruby 2.5 and 2.6 are EoL, I think Bolt should drop support for it.

Also, 2.7 is in end-of-support phase and only receive security updates until the end of march this year, so it probably makes sense to also drop support for a Ruby version that will be dead 1 month later [source].

Thanks, I relaxed net-ssh in https://github.com/puppetlabs/bolt/pull/3179 not quite sure why requiring the newer orchestrator-client is required?

@donoghuc I had to update both to fix CI, see for example:
https://github.com/puppetlabs/bolt/actions/runs/3715476307/jobs/6300691846
Will try to rebase #3170 on top of main to see if the situation improved.

I had some green runs when I did my work. I think there is a new issue with puppet and concurrent ruby 1.2.0 that may pop up in our CI today 😭

Sorry, I was vague in my last comment... I was not seeing the same failures you were regarding the orchestrator client. Thanks for the link to the test that was failing.
Unfortunately the https://tickets.puppetlabs.com/browse/PUP-11722 ticket (which I see you actually filed 😅 ) is going to be breaking bolt CI today. I suppose we can restrict concurrent ruby here until we get a puppet release out.

The concurrent-ruby problem got fixed \o/

Looks like main is now fixed and no need to tweak the conf for orchestrator-client anymore according to #3170. Closing.

Thanks for helping with this!


added IAsyncCollector sample

Added a sample that shows how to use the IAsyncCollector to process events in a batch and send each single message back to another event hub

@yorek : Thanks for your contribution! The author, @craigshoemaker, has been notified to review your proposed change.

Closing as document as been updated already


session storage example broken

https://data-star.dev/examples/session_storage
most likely related to #248

Correct, this is a duplicate of https://github.com/starfederation/datastar/issues/248.


add seeds to query page

After an operation is selected, the user should be able to add and remove seeds from the query.
By default the page should use whatever seeds are selected. The user should then be able to customise which ones they want to keep or add.
This is working towards a workflow of
add-seeds ----> write query ----> get results ----> select seeds ----> write query
This is blocked until the completion of #251  and #250

Merged into develop.


As an operator of Cloud Foundry, I want to enable logging of specified headers for all applications.

This PR implements the use case
As an operator of Cloud Foundry,
I want to enable logging of specified headers for all applications.

It is based on the discussion on the mailing list.
If you specify the following in your gorouter config
extra_headers_to_log:
  - Span-Id
  - Trace-Id
  - Cache-Control

your access log line will look like
FakeRequestHost - [01/01/2000:00:00:00 +0000] "FakeRequestMethod http://example.com/request FakeRequestProto" MissingResponseStatusCode 0 0 "-" "-" FakeRemoteAddr x_forwarded_for:"-" vcap_request_id:- response_time:MissingFinishedAt app_id:FakeApplicationId headers:{"Cache-Control":"private","Span-Id":"3888dcb6-34f4-11e5-a151-feff819cdc9f","Trace-Id":"7b28f886-fe5f-41af-8182-f88c8fec9e1c"}

Hi
Thanks for the PR, reviewed and here are our comments:

We agree with @shinji62 that performance should not be impacted if these extra headers to log
are NOT configured. Since the majority of users will not configure this and this
code is executed for every request, do as little work as possible.

Handle the error response from json.Marshal. Only print the json to the
buffer if err is nil. Potentially add some tests around cases where json.Marshal would return an error.

Configuration and AccessLogRecord

This new configuration entry will have to be optional and operators will need
to opt-in. If there are no headers configured to log, the access logs will NOT have the new
headers element in the log entry.
Instead of using a global variable in config.go, we'd suggest

Add the list of header names to the Proxy and ProxyArgs structs

Update proxy.NewProxy and main.buildProxy to pass along the arguments from the config struct

Add a new field to the AccessLogRecord struct called OptionalHeaders that holds a map of the extra headers to log

Create a new NewAccessLogRecord function in access_log_record.go that creates the AccessLogRecord and populates the OptionalHeaders map

For example:
type AccessLogRecord struct {
	Request              *http.Request
	StatusCode           int
	RouteEndpoint        *route.Endpoint
	StartedAt            time.Time
	FirstByteAt          time.Time
	FinishedAt           time.Time
	BodyBytesSent        int
	RequestBytesReceived int
	OptionalHeaders      map[string]string
}

func NewAccessLogRecord(request *http.Request, startedAt time.Time, logHeaders []string) *AccessLogRecord {
	accessLog := &AccessLogRecord{
		Request:   request,
		StartedAt: startedAt,
	}

	accessLog.setOptionalHeaders(logHeaders)

	return accessLog
}

func (r *AccessLogRecord) setOptionalHeaders(logHeaders []string) {

	if len(logHeaders) > 0 {
		r.OptionalHeaders = make(map[string]string)
		for _, header := range logHeaders {
			r.OptionalHeaders[header] = r.FormatRequestHeader(header)
		}
	}
}

Update AccessLogRecord makeRecord func to log the OptionalHeaders if present
For example:

if r.OptionalHeaders != nil {
  marshalledExtraHeadersToLog, _ := json.Marshal(r.OptionalHeaders)
  fmt.Fprintf(b, `headers:%s`, string(marshalledExtraHeadersToLog))
}

@markstgodard and @mmb
Thanks for the PR, let us know if you have any questions.

+1 for the @mmb idea.
@simonjohansson you know what to do now :)

@mmb @shinji62
I took a slightly different approach, rather than passing in a list of headers I want to (a new func) NewAccessLogRecord and adding the lookup results to AccessLogRecord.OptionalHeaders I added AccessLogRecord.ExtraHeadersToLog which contains the list of the headers I want, and populate it ServeHTTP, as this require less refactoring of the codebase/tests.
I have yet to write tests cases for when marshalling fails, but will look into that.
I will also write some gatling tests to verify the performance impact of using the new feature.

@simonjohansson That approach looks fine to us. Let us known when you have everything ready to go.

@shinji62 @mmb @crhino @mrdavidlaing
So, some JMeter tests.
Running these on a VM with 8gigs of ram, 4 cpus in the same network as the CF installation.
On on of the router machines(4cpu, 4gb ram) I run 3 gorouters. The one that comes with 212, and two instances of the fork at master, each with the same config as the 212 router, but one of the fork routers have
extra_headers_to_log:
  - Span-Id
  - Trace-Id
  - Cache-Control

The app Im targeting
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func hello(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "Hello world!")
}

func main() {
	http.HandleFunc("/", hello)
	http.ListenAndServe(fmt.Sprintf(":%v", os.Getenv("PORT")), nil)
}

JMeter tests.
require 'ruby-jmeter'
test serialize_threadgroups: "true" do

  # We use F5 instead of HAProxy for entrypoint to routing layer.
  threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
    visit name: 'F5->[Gorouter(212)]->[App]', url: 'perf.test.cf.springer-sbm.com'
  end

  threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
    header [{ name: 'Host', value: 'perf.test.cf.springer-sbm.com' }]
    visit name: 'Gorouter(212)->[App]', url: '<IP_ADDRESS>'
  end

  threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
    visit name: 'App', url: '<IP_ADDRESS>', port: '61032'
  end

  threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
    header [{ name: 'Host', value: 'perf.test.cf.springer-sbm.com' }]
    visit name: 'Gorouter(fork-no-headers)->[App]', url: '<IP_ADDRESS>', port: '9000'
  end

  threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
    header [{ name: 'Host', value: 'perf.test.cf.springer-sbm.com' }]
    visit name: 'Gorouter(fork-with-headers)->[App]', url: '<IP_ADDRESS>', port: '9001'
  end

end.jmx

Ive run two test cases, one with 10 threads and 1000 loops, and one with 10 threads and 10000 loops. Ie 10k vs 100k requests in each test case and I get slightly different results.
10k requests

Label
# Samples
Average
Min
Max
Std. Dev.
Error %
Throughput
KB/sec
Avg. Bytes

F5->[Gorouter(212)]->[App]
10000
2
1
109
3.51
0.00%
3653.6
652.94
183.0

Gorouter(212)->[App]
10000
2
1
15
1.25
0.00%
3731.3
666.83
183.0

App
10000
0
0
14
0.62
0.00%
24630.5
3102.87
129.0

Gorouter(fork-no-headers)->[App]
10000
2
1
20
1.40
0.00%
4135.6
739.09
183.0

Gorouter(fork-with-headers)->[App]
10000
2
1
18
1.23
0.00%
3946.3
705.25
183.0

TOTAL
50000
1
0
109
2.05
0.00%
4625.3
777.82
172.2

100k requests

Label
# Samples
Average
Min
Max
Std. Dev.
Error %
Throughput
KB/sec
Avg. Bytes

F5->[Gorouter(212)]->[App]
61062
7
0
15005
247.92
0.02%
943.5
168.63
183.0

Gorouter(212)->[App]
98904
5
0
10003
138.48
0.00%
1649.7
294.81
183.0

App
100000
0
0
17
0.55
0.00%
22686.0
2857.91
129.0

Gorouter(fork-no-headers)->[App]
100000
2
0
118
1.86
0.00%
4108.1
734.17
183.0

Gorouter(fork-with-headers)->[App]
100000
2
1
21
1.24
0.00%
4006.6
716.02
183.0

TOTAL
459966
3
0
15005
110.86
0.00%
2577.4
431.06
171.3

Some takeaways

Head of gorouter seems to be slightly faster then packaged 212 version, even when my fork is checking if r.ExtraHeadersToLog is nil for every request.
When logging with extra headers there is a noticeable loss of throughput, but not big enough to disable it in our installation.
Our F5 config seems to need some TLC since the performance there is pretty lousy.

All in all, Im happy with the performance.

Nice seems no different when not enabled.
Default behavior is respected ;)
Just a question did you try to compile with go 1.5 ?
I am just curious ..
Envoyé de mon iPhone

Le 30 juil. 2015 à 18:55, Simon Johansson<EMAIL_ADDRESS>a écrit :
@shinji62 @mmb @crhino @mrdavidlaing
So, some JMeter tests.
Running these on a VM with 8gigs of ram, 4 cpus in the same network as the CF installation.
On on of the router machines(4cpu, 4gb ram) I run 3 gorouters. The one that comes with 212, and two instances of the fork at master, each with the same config as the 212 router, but one of the fork routers have
extra_headers_to_log:

Span-Id
Trace-Id
Cache-Control
The app Im targeting

package main
import (
"fmt"
"io"
"net/http"
"os"
)
func hello(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "Hello world!")
}
func main() {
http.HandleFunc("/", hello)
http.ListenAndServe(fmt.Sprintf(":%v", os.Getenv("PORT")), nil)
}
JMeter tests.
require 'ruby-jmeter'
test serialize_threadgroups: "true" do
We use F5 instead of HAProxy for entrypoint to routing layer.
threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
visit name: 'F5->[Gorouter(212)]->[App]', url: 'perf.test.cf.springer-sbm.com'
end
threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
header [{ name: 'Host', value: 'perf.test.cf.springer-sbm.com' }]
visit name: 'Gorouter(212)->[App]', url: '<IP_ADDRESS>'
end
threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
visit name: 'App', url: '<IP_ADDRESS>', port: '61032'
end
threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
header [{ name: 'Host', value: 'perf.test.cf.springer-sbm.com' }]
visit name: 'Gorouter(fork-no-headers)->[App]', url: '<IP_ADDRESS>', port: '9000'
end
threads ramp_time: 0, count: 10, loops: 10000, ramp: 0 do
header [{ name: 'Host', value: 'perf.test.cf.springer-sbm.com' }]
visit name: 'Gorouter(fork-with-headers)->[App]', url: '<IP_ADDRESS>', port: '9001'
end
end.jmx
Ive run two test cases, one with 10 threads and 1000 loops, and one with 10 threads and 10000 loops. Ie 10k vs 100k requests in each test case and I get slightly different results.
10k requests
Label	# Samples	Average	Min	Max	Std. Dev.	Error %	Throughput	KB/sec	Avg. Bytes
F5->[Gorouter(212)]->[App]	10000	2	1	109	3.51	0.00%	3653.6	652.94	183.0
Gorouter(212)->[App]	10000	2	1	15	1.25	0.00%	3731.3	666.83	183.0
App	10000	0	0	14	0.62	0.00%	24630.5	3102.87	129.0
Gorouter(fork-no-headers)->[App]	10000	2	1	20	1.40	0.00%	4135.6	739.09	183.0
Gorouter(fork-with-headers)->[App]	10000	2	1	18	1.23	0.00%	3946.3	705.25	183.0
TOTAL	50000	1	0	109	2.05	0.00%	4625.3	777.82	172.2
100k requests
Label	# Samples	Average	Min	Max	Std. Dev.	Error %	Throughput	KB/sec	Avg. Bytes
F5->[Gorouter(212)]->[App]	61062	7	0	15005	247.92	0.02%	943.5	168.63	183.0
Gorouter(212)->[App]	98904	5	0	10003	138.48	0.00%	1649.7	294.81	183.0
App	100000	0	0	17	0.55	0.00%	22686.0	2857.91	129.0
Gorouter(fork-no-headers)->[App]	100000	2	0	118	1.86	0.00%	4108.1	734.17	183.0
Gorouter(fork-with-headers)->[App]	100000	2	1	21	1.24	0.00%	4006.6	716.02	183.0
TOTAL	459966	3	0	15005	110.86	0.00%	2577.4	431.06	171.3
Some takeaways
Head of gorouter seems to be slightly faster then packaged 212 version, even when my fork is checking if r.ExtraHeadersToLog is nil for every request.
When logging with extra headers there is a noticeable loss of throughput, but not big enough to disable it in our installation.
Our F5 config seems to need some TLC since the performance there is pretty lousy.
All in all, Im happy with the performance.
—
Reply to this email directly or view it on GitHub.

@shinji62
Nope, compiled with go1.4.2 darwin/amd64, gorouter compiled with 1.5 in CF release?

No no I was just wondering if perf improve ;)
Envoyé de mon iPhone

Le 30 juil. 2015 à 19:35, Simon Johansson<EMAIL_ADDRESS>a écrit :
@shinji62
Nope, compiled with go1.4.2 darwin/amd64, gorouter compiled with 1.5 in CF release?
—
Reply to this email directly or view it on GitHub.

@shinji62 @mmb @crhino
Anything else I need to sort for a merge?

Commented inline, if you could make that change and add a test case for it that would be great. Otherwise looks good to go. We have this PR prioritized in our backlog here.

Also might want to rebase / squash the commits
Cheers

@crhino Ive made the returned value from ExtraHeaders() a bit more clear.
But I have a hard time creating a test case as ExtraHeadersToLog[1] is typed as []string, FormatRequestHeader[2] returns a string, extraHeadersToLog[3](which we marshal) is typed map[string]string, http.Headers used by the tests[4] is typed map[string][]string so everywhere where we deal with the headers we are dealing with strings, and thus would not compile if I try to add a int somewhere for instance. Do you have any pointers as how to create a failing test case?
[1] https://github.com/simonjohansson/gorouter/blob/add-extra-headers-to-log/access_log/access_log_record.go#L23
[2] https://github.com/simonjohansson/gorouter/blob/add-extra-headers-to-log/access_log/access_log_record.go#L30
[3] https://github.com/simonjohansson/gorouter/blob/add-extra-headers-to-log/access_log/access_log_record.go#L105
[4] http://golang.org/src/net/http/header.go?s=350:381#L9

@markstgodard rebased and squashed.

@CAFxX Maybe you should read the discussion here http://cf-dev.70369.x6.nabble.com/cf-dev-Allow-gorouter-to-log-random-headers-td800.html#a912
"The reason for a stringified JSON is to make it easy to parse with logstash or other loganalysis tools"

@shinji62 yup I read that discussion before posting, and the fact is that my point still stands: you need two parsers (custom text format, JSON) instead of one (custom text format) :)

I would ask that we keep the logging format consistent. If that format is not easily consumable, let's address that holistically as an independent issue.

@CAFxX @shalako
I think that the json format is the easiest and least error prone to deal with.
Take these two examples
Say for instance that we care about two headers for all our application, Header-A, Header-B.
With json
{FakeRequestHost - ..... app_id:FakeApplicationId headers:{"Header-A":"value","Header-B":"value"}

With normal fields
{FakeRequestHost - ..... app_id:FakeApplicationId Header-A:value Header-B:value}

A Grok pattern for json
grok {
  match => {
    'msg' => '%{HOSTNAME:hostname} .... app_id:%{UUID:uuid} (?:%{EXTRA_HEADERS:headers}|{})'
  }
  json {
    source => "EXTRA_HEADERS"
  }
}

A grok pattern for normal fields.
grok {
  match => {
    'msg' => '%{HOSTNAME:hostname} .... app_id:%{UUID:uuid} (?Header-A:%{WORD:header-a}) (?Header-B:%{WORD:header-b})'
  }
}

I see two issues with a grok pattern for normal fields.

If we want to add another headers, we have to change config both for Gorouter and in our patterns, and then redeploy two systems. With json we never have to worry about the grok pattern since it will work for all permutations of headers.
What if the header sometimes consist of ints, sometimes of dates, sometimes of strings with a space in them etc. etc. Again, with json we never have to worry about the grok pattern since it will work for all permutations of headers.

In https://github.com/logsearch/logsearch-for-cloudfoundry which is a generic release for random peoples CF installations we don't know upfront what headers they want, if any. And I don't think the users are to keen to themselves have to create the Grok patterns, the beauty of the project is that you basically do a  "bosh install" and magically gets all the logs from CF/Apps parsed and ready to go for free.
I hope this clears up the rational behind the json vs fields.

@shalako; on the issue of consistancy; as you can see we've thought about this carefully, and decided that in this case usability of the logging the "user configured extra fields" as JSON outweighs the apparent difference in format.
Also, if you squint, the log format is consistent :smile: :
{FakeRequestHost - ..... app_id:FakeApplicationId headers: {extra-header-info-as-json} }

@mmb @crhino Should be ok to merge now ?

Not ok to merge yet. The introduction of a new format for admin-managed fields is of concern. We are considering and will reply.

@shalako,
In the interests of getting this moving again, if we updated this PR to remove the JSON from the logging format, i.e.:
{FakeRequestHost - ..... app_id:FakeApplicationId Header-A:value Header-B:value}

would that get us back on track to getting this merged?
Thanks
David

@mrdavidlaing I was just re-reviewing this PR and we will finalize decision w/ @shalako... stay tuned.
An yes, we need to get this PR moving :)
Cheers

Thank you, @mrdavidlaing. Yes, this should get us on back on track. We'll likely review your latest changes tomorrow and merge if it looks good.

We'll need the new property extra_headers_to_log added to the gorouter job spec in cf-release. Will you be making that PR also?
Please confirm that:

If the new property is specified in the cf-release manifest, specified headers are logged on deploy
If the values of the property are modified in the cf-release manifest, only the specified headers are logged on deploy
If the property is removed from the manifest, no additional headers are logged on deploy
If the new property is specified in a spiff template stuff, the property is added to the cf-release manifest on running cf-release/generate_deployment_manifest

@markstgodard @shalako
PR updated to revert to the current logging format.

Will you be making that PR also?

Yes, as soon as this is merged I will send a PR for cf-release spec/template/relevant spiff-templates

If the new property is specified in the cf-release manifest, specified headers are logged on deploy
If the values of the property are modified in the cf-release manifest, only the specified headers are logged on deploy
If the property is removed from the manifest, no additional headers are logged on deploy

Extra headers to be logged is derived from the gorouter config. So if the config changes, and the goprocess is restarted all of the above will be true.

If the new property is specified in a spiff template stuff, the property is added to the cf-release manifest on running cf-release/generate_deployment_manifest

This will be the case. The details on how this is to be done is a discussion better kept in the PR from cf-release I think

@shalako @simonjohansson Reviewed and provided my comments on last commit in PR
(See inline code comments)
Looks great, only concern I had was the missing double quotes around the header values, to account for headers that had a list of comma separated values.
Cheers

@markstgodard
Good spot, altough now we break the original layout again... :P
Ill get cracking at it first thing monday,
Have a nice weekend.

@markstgodard
Header values are now quoted. Updated test to take into when we want a header that doesnt exist, when a header has a quoted value in it and when the header have a list of values in it.

@simonjohansson Everything looks good, but we would prefer that the PR to cf-release at least be opened. Otherwise, we are not able to validate the feature from a user-facing perspective.
We could of course change the config on the router VM, but without the property being exposed in the manifest this PR has no real value.
Sorry for the run around here, we also want to get this PR merged! If you have thoughts about why merging this PR first is better, I would love to hear them.

@crhino sure thang, Ill get cracking on it right away.
The reason why I would prefer this to be merged beforehand is because we would expose configuration in the release that does nothing, as the relevant code is not merged for the component it controls. Doesn't matter at the end of the day. :)

https://github.com/cloudfoundry/cf-release/pull/773

@leochu ah, good catch, thanks!
Pushed a fix.

Could someone rescedule travis?
All that's changed since the last green build is https://github.com/simonjohansson/gorouter/commit/3b8006f38959c343b4e4655e86f93b7772d74cae

These changes seems to have been merged/cherry-picked into master, so I will close the PR.

Thank you for working with us to get this in, @simonjohansson


Fluidsynth MIDI port not detected in Bottles / Heroic  / possibly other launchers

Describe the bug
Fluidsynth's MIDI port is not being detected in the nix versions of Bottles or Heroic. However, in Lutris (nix version), sys-wine (wineWowPackages.stagingFull), Steam (as non-Steam game), distroboxes, appimage, and Flatpak, Fluidsynth is detected and works as expected. I'm determining this with System Shock: Enhanced Edition.
The game shows 'invalid' when selecting audio devices (screenshots below).
In the Wine/Proton logs, this error shows:
LSA lib conf.c:4122:(config_file_open) cannot access file /etc/alsa/conf.d/10-speexrate.conf
ALSA lib conf.c:4042:(snd_config_hooks_call) function snd_config_hook_load returned error: No such file or directory
ALSA lib conf.c:4649:(snd_config_update_r) hooks failed, removing configuration
0124:err:winediag:MIDIMAP_drvOpen No software synthesizer midi port found, Midi sound output probably won't work.

I'm using Fluidsynth as a home-manager option:
  services = {
    fluidsynth = {
      enable = true;
      extraOptions = [
        "--gain 1.0"
      ];
      soundFont = "/home/keenan/Music/soundfonts/default.sf2";
      soundService = "pipewire-pulse";
    };
  };

However, the issue happens as a system-wide package or running in non-daemon mode. I've tried all sorts of switches (ALSA mode, PulseAudio mode, etc.) but the issue always happens. I'm running Pipewire.
It's not an issue specific to System Shock, as I've tested another game (Necrodome) and it isn't detected either. Out of curiosity, I tried with TiMidity++ and it was the same issue. I also tried the nix DOSBox Staging, which read the port with no problem.
I'm assuming fluidsynth needs to be added to the FHS of these packages.
Steps To Reproduce
Steps to reproduce the behavior:

Install/run Bottles or Heroic
Install/run Fluidsynth as a daemon or manually
Install System Shock: Enhanced Edition (or any other ancient game that would use Fluidsynth) in Bottles or Heroic
Launch game and see invalid device / don't hear music.

Expected behavior
They should detect the Fluidsynth MIDI port.
Screenshots
Bottles, Heroic (nix package):

Flatpak, appimage, Distrobox, Wine, Steam non-Steam game, & Lutris (nix packages):

Additional context
Fluidsynth operates as normal when using commands like aplaymidi -p128:0 example.mid
Output of aconnect -o:
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 128: 'FLUID Synth (3621)' [type=user,pid=3621]
    0 'Synth input port (3621:0)'

Notify maintainers

@aidalgol @SuperSamus (in lieu of absent Bottles maintainers)
Metadata
 - system: `"x86_64-linux"`
 - host os: `Linux 6.8.1, NixOS, 24.05 (Uakari), 24.05.20240323.44d0940`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.2`
 - channels(root): `"nixos"`
 - nixpkgs: `/nix/store/amxd2p02wx78nyaa4bkb0hjvgwhz1dq7-source`

Add a :+1: reaction to issues you find important.

Does it work if you override heroic to add fluidsynth?
(heroic.override {
  extraLibraries = pkgs: [
    pkgs.fluidsynth
  ]
})

Unfortunately does not resolve it.

Maybe it's because of #224410?

Maybe it's because of #224410?

Sounds quite likely, but I have no way to say for sure.  Thanks for linking that, though.  I'll keep an eye on it.

Maybe it's because of #224410?

You were right! Working perfectly now after https://github.com/NixOS/nixpkgs/pull/286360 was merged.

How did you solve it? I have the same issue on Arch Linux

How did you solve it? I have the same issue on Arch Linux

If you're using the AUR version of Bottles, that could be why. Upstream only officially supports the flatpak version. Try on the flatpak.

How did you solve it? I have the same issue on Arch Linux

If you're using the AUR version of Bottles, that could be why. Upstream only officially supports the flatpak version. Try on the flatpak.

I'm using the Flatpak version. I tried a lot of things but nothing works


Changing picker to fuzzel not working

I have changed the picker using the env like this into my .bashrc
export BEMOJI_PICKER_CMD=fuzzel
But now when I try to execute bemoji, the emojis are not being displayed, instead the default fuzzel with the .desktop icons appears

You need to use BEMOJI_PICKER_CMD="fuzzel -d" if you're setting it manually.

Thank you @ismay for providing the answer already. Yes, fuzzel needs to be invoked in its 'dmenu-mode' to work correctly, you can see how we do it in the code itself here.
I will consider this closed for now but do let me know if there are additional issues @TheRialNiels!

Actually took this opportunity to slightly extend the README with just this example in ab10547


add user contributed examples

We could have a section of the book with user-contributed examples, and have a PR button for hax-playground

Still relevant


Add Future.success as shortcut for Future.now(Success( ))

Might also be thinking about naming here:

We can have Future.resolved(T), Future.rejected(Exception) and Future.completed == Future.now to be consistent with Future.withResolver
We can have Future.success(T) and Future.failure(Exception) to be fully similar to Future.now(Success(T)) and Future.now(Failure(Exception)).

Cool, But I have a question,it  will cause some inconvenient when user use gear's Future and the current Future in Scala's stdlib? What's the plan for this？

Cool, But I have a question,it will cause some inconvenient when user use gear's Future and the current Future in Scala's stdlib? What's the plan for this？

@He-Pin You can probably easily convert a Scala stdlib Future into a gears Future. Going the other way shouldn't be too difficult but I will have to look into it.

I have a slight personal preference for resolved/rejected because the participle indicates grammatically that an action from the lifecycle of a Future (to complete) is already taken. Either way, it's a nice thing to have.


Does not install on ubuntu 18.04

user@ubuntu:~$ sh get-docker.sh
Executing docker install script, commit: 36b78b2

sudo -E sh -c apt-get update -qq >/dev/null
sudo -E sh -c apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null
Warning: apt-key output should not be parsed (stdout is not a terminal)
sudo -E sh -c echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic edge" > /etc/apt/sources.list.d/docker.list
[ ubuntu = debian ]
sudo -E sh -c apt-get update -qq >/dev/null
sudo -E sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
E: Package 'docker-ce' has no installation candidate

18.05 will be the first release with Ubuntu Bionic support. The first rc was released yesterday so expect the full release to come in the upcoming weeks.

perhaps the '-bionic' lines should be removed from the script before support is available?

Perhaps, we're currently in the process of trying to deprecate the SUPPORT_MAP altogether and come up with a better more automated solution.

In the mean time, to use the script to install on Ubuntu Bionic I'd suggest:
curl -fsSL get.docker.com | CHANNEL=test sh

Thanks!

Closing this since packages are now available with:
curl -fsSL get.docker.com | sh


Preview/paulau

@loganloganlogan @bproffitt

Removed the link to the store from the main nav. The store no longer exists
Removed old apachecon page

Thanks @Paul-TT, looks good.


Diagonal tiles

Requires https://github.com/space-wizards/RobustToolbox/pull/2694
:cl:

add: Added fun!
remove: Removed fun!

Help wanted.
All of the hard work has been done in terms of engine code but still need bikeshedding on the implementation and sprites.

No images? 🥺

Too much work for me to update content on my own atm so will come back to this when I feel like it.


Attachment Size Limitations

How can I increase the file size limitation on attachments? I've already increased the upload limits in php.ini but anything more than a couple megabytes is still being rejected. Is there a framework related config I need to edit? Thanks in advance.

Hi @N3V3N, There's nothing at app or framework level that should limit upload size. Have you updated both post_max_size and upload_max_filesize variables in the php.ini file?
If so it could possibly be something at web-server level. Are you using Nginx, Apache or something else?

I'm using Nginx as installed by the installation script.

I figured it out, thank you for pointing me in the right direction Dan. I also appreciate all your hard work on developing this fantastic documentation solution.
For posterity, I edited /etc/nginx/nginx.conf and added the following line:
client_max_body_size 100m
After which I was able to successfully upload the files.

@N3V3N Awesome, I'm glad you found the fix.
I'll keep this issue open for now to remind me to add a page to the docs with details of changing attachment size limits.


💥 Is yahoo finance broken?

Describe bug
Since yesterday, Yahoo Finance has not been providing data for several stocks, making it impossible for me to download them using your software. For example, for Honeywell – a Nasdaq 100 stock (!!!) – Yahoo Finance states: "There are no [data] in the selected time period."
I understand that this is likely a Yahoo Finance issue, but your software becomes unusable if the platform behind it stops providing data. As far as I can tell, this issue has affected a wide range of stocks (some US, mostly European) since yesterday.
Are others experiencing this problem as well? Does this happen from time to time, or is it a sign of a bigger issue? Any suggestions? Will Yahoo fix this problem, or are they already aware of it? Is Yahoo discontinuing data support?
Simple code that reproduces your problem
No simple code, as I use your software within my own modules.
Debug log
see above
Bad data proof
see above
yfinance version
0.24.3
Python version
Python 3.11
Operating system
Linux Mint 21.3

Seems some Symbols are working, while some symbols are not working for yahoofinance since yesterday.
yfinance version: 0.2.43
python version: 3.10.12
Working Symbol: INDIGO.NS
import yfinance as yf
symbol = 'INDIGO.NS'
df = yf.download(symbol, start='2022-11-05', interval='1h')
df.head()
>>
Open | High | Low | Close | Adj Close
-- | -- | -- | -- | --

1774.849976 | 1817.699951 | 1774.849976 | 1801.349976 | 1801.349976
1800.599976 | 1802.000000 | 1769.050049 | 1777.800049 | 1777.800049
1778.050049 | 1788.000000 | 1774.150024 | 1778.050049 | 1778.050049
1784.849976 | 1784.849976 | 1676.300049 | 1683.650024 | 1683.650024
1683.400024 | 1721.000000 | 1680.150024 | 1720.000000 | 1720.000000

Non Working Symbol since Yesterday:
import yfinance as yf
symbol = 'TCS.NS'
df = yf.download(symbol, start='2022-11-05', interval='1h')
df.head()
>> ERROR:yfinance:Could not get exchangeTimezoneName for ticker 'TCS.NS' reason: 'chart'
[*********************100%***********************]  1 of 1 completed
ERROR:yfinance:
1 Failed download:
ERROR:yfinance:['TCS.NS']: YFTzMissingError('$%ticker%: possibly delisted; no timezone found')

Getting the same problem with a number of (but not all) .NZ tickers.
USF.NZ not working.
GNE.NZ working.

Seems 5 Days back User Faced same issue with Exact error, PR Already Opened: https://github.com/ranaroussi/yfinance/issues/2044

Getting the same problem with a number of (but not all) .NZ tickers.
USF.NZ not working. GNE.NZ working.

Replying to myself - https://finance.yahoo.com/quote/USF.NZ/history/ is empty which is probably the cause of the problem

It seems Yahoo Finance has fixed the issue (Honeywell)!?

For :
GetFacebookInformation: Unknown = yfinance.Ticker("META")
print(*values: GetFacebookInformation.info)
``
I get:

requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://query2.finance.yahoo.com/v6/finance/quoteSummary/META?modules=financialData&modules=quoteType&modules=defaultKeyStatistics&modules=assetProfile&modules=summaryDetail&ssl=true

conda list | grep finance
yfinance                  0.2.28             pyhd8ed1ab_0    conda-forge

For :
GetFacebookInformation = yfinance.Ticker("META")
print(*values: GetFacebookInformation.info)

I get:
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://query2.finance.yahoo.com/v6/finance/quoteSummary/META?modules=financialData&modules=quoteType&modules=defaultKeyStatistics&modules=assetProfile&modules=summaryDetail&ssl=true

conda list | grep finance
yfinance                  0.2.28             pyhd8ed1ab_0    conda-forge

P.S. Putting the above url into the browser produces:

Seems like it started to work today....

For :
GetFacebookInformation = yfinance.Ticker("META")
print(*values: GetFacebookInformation.info)

I get:
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://query2.finance.yahoo.com/v6/finance/quoteSummary/META?modules=financialData&modules=quoteType&modules=defaultKeyStatistics&modules=assetProfile&modules=summaryDetail&ssl=true

conda list | grep finance
yfinance                  0.2.28             pyhd8ed1ab_0    conda-forge

P.S. Putting the above url into the browser produces:

Seems like it started to work today....

I just wanted to add that I'm getting the same issue too. I hope there is a solution for this.
04 Client Error: Not Found for url: https://query2.finance.yahoo.com/v6/finance/quoteSummary/TSLA?modules=financialData&modules=quoteType&modules=defaultKeyStatistics&modules=assetProfile&modules=summaryDetail&ssl=true

yfinance                  0.2.28

The solution is updating.

yfinance                  0.2.28

The solution is updating.

yfinance                  0.2.43  -> Life improved. :)
Thank you @ValueRaider

Can someone please clarify: is this issue solved, and is it possible to use yfinance again?  Does yfinance 0.2.43 somehow solve the core issue with Yahoo changing their data availability?  Can't quite see if Yahoo has made the data unavailable how a software update would fix that.

Version 0.2.32 added cookie & crumb, it helped a lot. I'm not sure what the remaining issue is - spam? old cookie? Country-specific?
(deleted @az-z comments because using old version)

Thank you ValueRaider.  Does the cookie/crumb fully restore all prior functionality?  Again, my understanding is that YFinance had removed considerable functionality from their API whether you're auth'd or not, like detailed historical data, and having a cookie wouldn't solve that.  Am I miss-understanding? Thx again.

Yahoo had removed considerable functionality from their API

This would break their website so I don't believe this. You could just install yfinance use it.

Charging significantly more than competitors, and for lower quality data outside North America, seems suicidal.
Stats of tickers that needed prices repaired, by exchange:
       % bad     n
HKG  100.0 %    14
LSE   68.5 %  1062
GER   66.7 %   189
PAR   35.1 %    57
ISE   33.3 %    12
STO   12.5 %    48
...

they works now throw https://polygon.io/

Did this get resolved?  It wasn't about historical data.  I keep getting the notifications about my portfolio but they are always the opposite and completely inaccurate compared to what is on the site on if I am up or down.  Thanks!


Adds an experiment that allows opting into using Kafka SDF-wrapper

This fixes #22244

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

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

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

R: @johnjcasey

run Java precommit

Run Java PreCommit

Run Java PreCommit

Run Java PreCommit

Run Java Precommit


Terminology when merge conflict

When you merge stuff and there is a conflict, you can chose
"accept current" or "accept incomming"
Wouldn't it be more clear to tell the user "keep current" as if you chose "accept current" it's to keep the current version you have
Thanks o7

These appear to be the commonly used terms.

But is it really ok to say like "accept current" as you didn't make any change to the current ?
Like, the question isn't to "accept" the current but more likely to "keep" it

I agree with your observation. Also "current" and "incoming" can be misleading depending on whether you merge, cherry-pick or rebase.


Fix the map sticks to mouse problem #908

Congratulation! The first found bug in the new version. 2.0.1 is comming :D

@charlenni Not sure if this is meant as a criticism, but I made no illusions about this happening. This is the way things always go, and I don't think we should have shipped earlier. There is a distinction in bugs you can ship and bugs you can't ship. You can't ship crashes that happen at random moments that have no workaround and I think the iOS startup bug is not shippable https://github.com/Mapsui/Mapsui/issues/884.
btw, this bug was present for about a year and was never reported. Also, it was already the second bug. @tonyfonager found the first, it is more serious. https://github.com/Mapsui/Mapsui/pull/907.

@pauldendulk No, no, it was a funny comment. I know, that this is the way things always go. If you say, now we can ship it, than you find the next bug. It is the same when you write a paper: if you leave the copy shop, you find again a mistake :-)


Added feature toggle for HMC and unit test

Before creating a pull request make sure that:

[ ] commit messages are meaningful and follow good commit message guidelines
[ ] README and other documentation has been updated / added (if needed)
[ ] tests have been updated / new tests has been added (if needed)

Please remove this line and everything above and fill the following sections:
JIRA link (if applicable)
https://tools.hmcts.net/jira/browse/CIV-7162
Change description
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[ ] No

Issues in code need updated before another commit


Allow providing currency name/symbol in constructor for NumberFormat

 Issue by alan-knight
Originally opened as dart-lang/sdk#18499

Right now NumberFormat is hard-coded to write the currency symbol of the locale (number_format.dart:489,           affix.write(symbols.DEF_CURRENCY_CODE).  This makes it difficult to write amounts in one currency but using the formatting conventions of another, e.g. write EUR 1,000,000.00. So a Euro locale, but with US numeric conventions. This could be fairly easily addressed by letting the constructor of a number format take a currency and use that instead. This would also let people work around the lack of currency symbols currently. You could pass in e.g. '€'.

 Comment by alan-knight

Added Fixed label.


[6.6] Use production mode on admin and storefront npm installs

We can use --production on NPM of admin and storefront to download less files.

bun install --production crashes, therefore we don't run bun on those places


feat(MatSnackBar): Pause dismiss when hovering snackbar

Feature Description
When snackbar has some info that needs more time to process, would be nice that when hovering the snackbar it would not close despite the duration
Use Case
No response

If you have a snackbar that needs time to digest, perhaps adding a dismiss button would be better than expecting users to know about hovering


SDCard mount error;

Hi!
I tried to use your IDF version code and can't mount sd card
I (343) app: Starting up
I (343) app: Mounting SDCard on /sdcard
I (353) SDC: Initializing SD card
I (353) gpio: GPIO[5]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
E (403) sdmmc_sd: sdmmc_init_sd_if_cond: send_if_cond (1) returned 0x108
E (403) vfs_fat_sdmmc: sdmmc_card_init failed (0x108).
I (403) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
E (413) SDC: Failed to initialize the card (ESP_ERR_INVALID_RESPONSE). Make sure SD card lines have pull-up resistors in place.
I (423) app: Creating microphone
I've redefined sd card pins on config.h
#define PIN_NUM_MISO GPIO_NUM_19
#define PIN_NUM_MOSI GPIO_NUM_23
#define PIN_NUM_CLK GPIO_NUM_18
#define PIN_NUM_CS GPIO_NUM_5
and temporarily disable output logic and speaker pins...
maybe you can provide some help?
thanks

I had similar issues and for me it helped to pull up the SD card pins via code in main.cpp:
gpio_set_pull_mode(PIN_NUM_MOSI, GPIO_PULLUP_ONLY);
gpio_set_pull_mode(PIN_NUM_CLK, GPIO_PULLUP_ONLY);
gpio_set_pull_mode(PIN_NUM_MISO, GPIO_PULLUP_ONLY);
gpio_set_pull_mode(PIN_NUM_CS, GPIO_PULLUP_ONLY);
I add it here and it works, but i am no coder. So please advice if there is a better place for it:
  while (true)   {     // wait for the user to push and hold the button     wait_for_button_push();   gpio_set_pull_mode(PIN_NUM_MOSI, GPIO_PULLUP_ONLY);    gpio_set_pull_mode(PIN_NUM_CLK, GPIO_PULLUP_ONLY);   gpio_set_pull_mode(PIN_NUM_MISO, GPIO_PULLUP_ONLY);   gpio_set_pull_mode(PIN_NUM_CS, GPIO_PULLUP_ONLY);

Probably the best place would be in the SDCard initialisation code:
Line 19 of lib/sd_card/src/SDCard.cpp
SDCard::SDCard(const char *mount_point, gpio_num_t miso, gpio_num_t mosi, gpio_num_t clk, gpio_num_t cs){

But I'm wondering if external pull-ups would be better. I'll add a note to the README.md file about this.

30f087fcf7d094cd20b038bbf94332e9176a08d7


Add a Get Started section with create-react-app example

Is this issue for documentation only? How may I help?

@mgmgpyaesonewin Yes, I'm thinking about a short walkthrough with create-react-app. Similar to this: https://ant.design/docs/react/use-with-create-react-app


Allow to add FA icons to page_links

I would love to see that I could define icons for any button that is processed in page_links.html.
Today I need to make a copy of that file to add icons by myself which might not be as elegant as it could be.
Guess I am not the only person that would be interested to make the content more obvious to distinguish besides the text labels. :-)

This is already supported by the links option. By not using the automated linking features, all icons can be set with links. Also refer to #765 and similar issues.

I'd like you considering to reopen this request as links does not work for every use case.
For example, if you link to a project page using the project: YAML tree, the project page does not get any icon without modifying 'page_links.html`. It would be the same situation for other content types (e.g. slides).
Also, do you consider url_* to be deprecated because links was introduced? If that was the case, I suggest that the template file for the relevant content types is updated here. Most people (like me) will tend to stick to the url_* defaults as the comment indicates that links: shall only be used for custom links where there is no pre-defined content type available from the given list below.


Yf make shell replacement optional

@addnab sorry for the change of design. I think that this is better. by default, it now leaves the ENTRYPOINT alone and simply builds up a CMD using

sh (modifiable via shell)
-c (modifiable via script_prefix)
user input (as provided to script)

If the user really wants to remove their ENTRYPOINT they can do this via  options (by passing in --entrypoint=""), but I don't see why this would be normal practice.


bitcode problems

After Update project to Swift 5, I have had problems with bitcodes in Alamofire.
'~BuildProductsPath/Release-iphoneos/Alamofire/Alamofire.framework/Alamofire' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file '~/BuildProductsPath/Release-iphoneos/Alamofire/Alamofire.framework/Alamofire' for architecture arm64
Using Alamofire (5.0.0-beta.6)
Xcode Version 10.2.1 (10E1001)
Swift ver 5.0
iOS
macOS 10.14.5

Did you find a solution


update to v2.2.0

re-generated with grayskull
added myself as maintainer

closes #24
closes #25
closes #26
closes #27

Checklist

[x] Used a fork of the feedstock to propose changes
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

I believe this depends on https://github.com/conda-forge/pylint-plugin-utils-feedstock/pull/12

@conda-forge-admin, please restart ci

@conda-forge/pylint-django this is ready for review/merging

@conda-forge-admin, please rerender


[Codegen][GPU] Add pass to unroll to native mma widths

Left as TODO is to extend this pass to also unroll consumers/producers. To eventually connect everything we should add a pattern that unrolls iter args of scf.for loops.
Note that the unrolling pattern is already tested in its own test, so simply updating the pipeline test is fine here. Once extending this pass to do more unrolling a test can be added.

I only see the pipeline test. Where is the test for the pass? Can you add one?

I deduplicated the logic so now it is testing the same code that is already tested here: https://github.com/iree-org/iree/blob/main/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/unroll_multi_mma.mlir
And I didn't feel it was worth adding a test for pass boilerplate for now. If you want I can make a dummy test for the pass version based on this test.

I only see the pipeline test. Where is the test for the pass? Can you add one?

I deduplicated the logic so now it is testing the same code that is already tested here: https://github.com/iree-org/iree/blob/main/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/unroll_multi_mma.mlir
And I didn't feel it was worth adding a test for pass boilerplate for now. If you want I can make a dummy test for the pass version based on this test.

Ah I see, somehow I missed the changes IREEGPUExtensions.cpp. And it explains that why I'm feeling that I've seen these code somewhere. My conclusion was that is on other branch (not main).
Thanks thanks, LGTM


Attack style is incorrect when ranging

From discord:
[12:45 AM] Ace: attack style says ranging when not on longrange
[12:45 AM] Ace: doesn't say rapid or accurate

Looks like this is working like it is supposed to (indicator is displaying based on exp type).


API documentation for cxtmenu, changing css properties

Hi,
Is there any existing API documentation for the cxtmenu plugin that shows how to change its default css properties such as the size and type of the font for menuitem Text ?
Note: I read that it is possible to change font css for itemText by using the cxtmenu-content class but there are no available examples or ducmentation of the same.

Use whatever regular CSS you'd like, i.e. .cxtmenu-content { ... }

Thanks @maxkfranz


DOCS - Add changelog entry for 1.5.1 (#512)

Cherry picked from release/1.5

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 94.35%. Comparing base (19e0bcf) to head (68f4403).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #513   +/-   ##
=======================================
  Coverage   94.35%   94.35%
=======================================
  Files           7        7
  Lines         780      780
=======================================
  Hits          736      736
  Misses         44       44

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


SEP debugger - communication failure when trying to add a SEP

When trying to add an SEP, the UI briefly shows it's being added  in the list of SEPs but then it is immediately removed.
Error message shown:
EQAVS1010E Communication required by Service Entry Point function dropped. Service Entry Point(s) set by user HEYMCHR on server USALID06.INFOR.COM will be removed.
The Debug Service job is active and stays active throughout this.
I'm using a valid CA signed cert because when using the internally generated one, I get the 'self-signed certificate' error (which I can't figure out either why that's happening as it works just fine on several of our other partitions).
Debug Console shows:
From client: initialize({"clientID":"vscode","clientName":"Visual Studio Code","adapterID":"IBMiDebug","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en","supportsProgressReporting":true,"supportsInvalidatedEvent":true,"supportsMemoryReferences":true,"supportsArgsCanBeInterpretedByShell":true,"supportsMemoryEvent":true,"supportsStartDebuggingRequest":true,"supportsANSIStyling":true})
To client: {"seq":0,"type":"response","request_seq":1,"command":"initialize","success":true,"body":{"supportsEvaluateForHovers":true,"supportsSetVariable":true,"supportsValueFormattingOptions":true,"supportsModulesRequest":true,"supportTerminateDebuggee":true,"supportsFunctionBreakpoints":true,"supportsConfigurationDoneRequest":true}}
From client: launch({"type":"IBMiDebug","request":"launch","subType":"sep","action":"set","name":"Service Entry Point","user":"HEYMCHR","password":"xxxxxx","host":"USALID06.INFOR.COM","port":8005,"sepDaemonPort":8008,"secure":true,"ignoreCertificateErrors":false,"library":"HEYMCHR","program":"CHGDECFMT","programType":"*PGM","module":"*ALL","procedure":"*ALL","trace":true,"workbenchSettings":{"updateProductionFiles":false,"enableDebugTracing":false},"__sessionId":"7a7e14fd-214d-4c9d-9bbe-0d828908c398"})
To client: {"type":"event","seq":2,"event":"initialized"}
From client: setFunctionBreakpoints({"breakpoints":[]})
To client: {"type":"response","seq":0,"request_seq":3,"success":true,"command":"setFunctionBreakpoints","body":{"breakpoints":[]}}
From client: configurationDone(undefined)
To client: {"type":"response","seq":0,"request_seq":4,"success":true,"command":"configurationDone"}
From client: threads(undefined)
To client: {"type":"response","seq":0,"request_seq":5,"success":true,"command":"threads","body":{"threads":[]}}
To client: {"type":"event","seq":7,"event":"terminated"}
To client: {"type":"response","seq":0,"request_seq":2,"success":true,"command":"launch"}
To client: {"type":"response","seq":0,"request_seq":4,"success":false,"command":"configurationDone","body":{"error":{"id":"8999","format":"java.lang.NullPointerException\n\tat com.ibm.debug.pdt.daas.internal.dap.DAPSession.getVersionJSON(DAPSession.java:439)\n\tat com.ibm.debug.pdt.daas.internal.dap.events.DAPEvent.getEvent(DAPEvent.java:117)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPConfigurationDoneRequest.generateEvents(DAPConfigurationDoneRequest.java:123)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:139)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:97)\n\tat com.ibm.debug.pdt.daas.internal.dap.DAPRequestProcessor$1.run(DAPRequestProcessor.java:119)\n\tat org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)\n"}}}
From client: disconnect({"restart":false,"terminateDebuggee":false})

Context
Version

Code for IBM i version
2.13.5

Visual Studio Code version
1.94.2

Operating System
darwin_arm64

Active extensions
.NET Install Tool (vscode-dotnet-runtime): 2.2.1
CL (vscode-clle): 1.1.7
COBOL (cobol): 24.10.22
Code for IBM i Walkthroughs (vscode-ibmi-walkthroughs): 0.5.0
Configuration Editing (configuration-editing): 1.0.0
Db2 for IBM i (vscode-db2i): 1.6.1
Dev Containers (remote-containers): 0.388.0
Emmet (emmet): 1.0.0
Error Lens (errorlens): 3.20.0
Excel Viewer (gc-excelviewer): 4.2.62
Git (git): 1.0.0
Git Base (git-base): 1.0.0
GitHub (github): 0.0.1
IBM i Debug (ibmidebug): 2.0.1
JSON Language Features (json-language-features): 1.0.0
Merge Conflict (merge-conflict): 1.0.0
Node Debug Auto-attach (debug-auto-launch): 1.0.0
Overtype (overtype): 0.5.0
Prettier - Code formatter (prettier-vscode): 11.0.0
Print (vscode-print): 0.13.2
Server Ready Action (debug-server-ready): 1.0.0
TODO Highlight (vscode-todo-highlight): 1.0.5
TypeScript and JavaScript Language Features (typescript-language-features): 1.0.0
vscode-icons (vscode-icons): 12.9.0

Remote system

Setting
Value

IBM i OS
V7R4M0

Tech Refresh
10

CCSID Origin
65535

Runtime CCSID
65535

Default CCSID
37

SQL
Enabled

Source dates
Enabled

Enabled features

/QOpenSys/pkgs/bin
/usr/bin
/QSYS.lib/ILEDITOR.lib
/QSYS.LIB
/QIBM/ProdData/IBMiDebugService/bin
/QOpenSys/QIBM/ProdData/JavaVM/jdk80
/QOpenSys/QIBM/ProdData/JavaVM/jdk11

bash
attr
GETNEWLIBL.PGM
QZDFMDB2.PGM
startDebugService.sh
64bit
64bit

chsh
iconv

ls
setccsid

md5sum
tar

sort

stat

tn5250

Shell env
BUILDLIB=HEYMCHR
CURLIB=HEYMCHR
HOME=/home/HEYMCHR
HOST=usalid06.infor.com
LIBLS=HEYMCHR QTEMP QGPL
LOGIN=heymchr
LOGNAME=heymchr
MAIL=/var/spool/mail/heymchr
OLDPWD=/home/heymchr
PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin
PWD=/home/HEYMCHR
SHELL=/QOpenSys/pkgs/bin/bash
SHLVL=1
SSH_CLIENT=<IP_ADDRESS> 60045 22
SSH_CONNECTION=<IP_ADDRESS> 60045 <IP_ADDRESS> 22
TZ=<EST>5<EDT>,M3.2.0,M11.1.0
USER=heymchr
USERNAME=heymchr
WORKDIR=/home/HEYMCHR
_=/QOpenSys/pkgs/bin/env

Variants
{
  "american": "#@$",
  "local": "#@$"
}

Errors
[
  {
    "command": "/QOpenSys/usr/bin/qsh",
    "code": 1,
    "stderr": "CPF2111:  Library ILEDITOR already exists.",
    "cwd": "/home/HEYMCHR"
  }
]

This may be the same issue as https://github.com/codefori/vscode-ibmi/issues/2247 ?

@heymchri Please include the contents of the following files for further diagnosis:

/QIBM/UserData/IBMiDebugService/DebugService_log.txt
/QIBM/UserData/IBMiDebugService/startDebugService_workspace/.metadata/.log

Please note that the second file (.log) is a hidden file. We need to use "ls -a" to show the file in Unix file system.

@mkwan01 Tried to reproduce but couldn't due to 'Self signed certificate in certificate chain' error - see https://github.com/codefori/vscode-ibmi/issues/2320

@mkwan01 Not sure what changed now, but in any case, as I was testing CA signed vs. internal certs, I managed to get the CA cert installed without the 'Self signed certificate in certificate chain' error. When setting the SEP (with the CA signed cert in place), I get the following error message:

Log files show the following:
.log:
!ENTRY com.ibm.debug.pdt.daas.application 2 0 2024-11-25 10:16:33.275
!MESSAGE unable to configure termination, default termination used

!ENTRY com.ibm.debug.pdt.daas.application 4 0 2024-11-25 10:16:33.351
!MESSAGE NullPointerException
!STACK 0
java.lang.NullPointerException
        at com.ibm.debug.pdt.daas.internal.dap.DAPSession.getVersionJSON(DAPSession.java:439)
        at com.ibm.debug.pdt.daas.internal.dap.events.DAPEvent.getEvent(DAPEvent.java:117)
        at com.ibm.debug.pdt.daas.internal.dap.requests.DAPConfigurationDoneRequest.generateEvents(DAPConfigurationDoneRequest.java:123)
        at com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:139)
        at com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:97)
        at com.ibm.debug.pdt.daas.internal.dap.DAPRequestProcessor$1.run(DAPRequestProcessor.java:119)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

DebugService_log.txt:
DBGM0007I Created service entry point on AEALIB/CRTOBJEDN *PGM.
The following conflicting service entry point(s) are removed:
AEALIB/CRTOBJEDN/*ALL/*ALL

SEP daemon socket connection disconnected for user: null

Also note that regular 'Debug as Batch' debugging works OK with this same CA signed cert.

Hi @mkwan01 the communication drops consistently when setting a SEP. Nothing much is reported in the Debug Console (other than that NPE). I do have Debug Tracing turned on. Where should I see the Debug Adapter Protocol trace?
Not sure if this helps, but here's a link to a video where I'm trying to set the SEP twice - https://www.dropbox.com/scl/fi/0l36e3qakj61tr7mcabqm/SEP.mp4?rlkey=4bimbhhsckqai8ohrxuplhgxe&dl=0

@heymchri The text in the video is very small. I can hardly read any text there. I can see that you use the "Create Service Entry Point" toolbar action to create a SEP, but I cannot see the text you entered into the prompt. Please try to use the integrated action from the Object Browser view to set a SEP and report whether this action works for you.

Hi @mkwan01 I didn't even see that DAP trace message you pointed me to at all, until I disconnected from the system and reconnected. Even without me setting any kind of SEP at all, so just the mere fact of connecting to my system, spits out the entries shown below in the Debug Console. So to be clear, that's BEFORE I even attempt to set the SEP.
From client: initialize({"clientID":"vscode","clientName":"Visual Studio Code","adapterID":"IBMiDebug","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en","supportsProgressReporting":true,"supportsInvalidatedEvent":true,"supportsMemoryReferences":true,"supportsArgsCanBeInterpretedByShell":true,"supportsMemoryEvent":true,"supportsStartDebuggingRequest":true,"supportsANSIStyling":true})
To client: {"seq":0,"type":"response","request_seq":1,"command":"initialize","success":true,"body":{"supportsEvaluateForHovers":true,"supportsSetVariable":true,"supportsValueFormattingOptions":true,"supportsModulesRequest":true,"supportTerminateDebuggee":true,"supportsFunctionBreakpoints":true,"supportsConfigurationDoneRequest":true}}
From client: launch({"type":"IBMiDebug","request":"launch","subType":"sep","action":"get_list","name":"Service Entry Point","user":"heymchr","password":"xxxxxxxx","host":"usalid06.infor.com","port":8005,"secure":true,"ignoreCertificateErrors":false,"trace":true,"workbenchSettings":{"updateProductionFiles":false,"enableDebugTracing":false},"__sessionId":"6b1f8025-3f48-463f-b537-6c043b9c978b"})
To client: {"type":"event","seq":2,"event":"initialized"}
From client: setFunctionBreakpoints({"breakpoints":[]})
To client: {"type":"response","seq":0,"request_seq":3,"success":true,"command":"setFunctionBreakpoints","body":{"breakpoints":[]}}
From client: configurationDone(undefined)
To client: {"type":"response","seq":0,"request_seq":4,"success":true,"command":"configurationDone"}
From client: threads(undefined)
To client: {"type":"response","seq":0,"request_seq":5,"success":true,"command":"threads","body":{"threads":[]}}
From client: disconnect({"restart":false,"terminateDebuggee":false})
To client: {"type":"response","seq":0,"request_seq":4,"success":false,"command":"configurationDone","body":{"error":{"id":"8999","format":"java.lang.NullPointerException\n\tat com.ibm.debug.pdt.daas.internal.dap.DAPSession.getVersionJSON(DAPSession.java:439)\n\tat com.ibm.debug.pdt.daas.internal.dap.events.DAPEvent.getEvent(DAPEvent.java:117)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPConfigurationDoneRequest.generateEvents(DAPConfigurationDoneRequest.java:123)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:139)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:97)\n\tat com.ibm.debug.pdt.daas.internal.dap.DAPRequestProcessor$1.run(DAPRequestProcessor.java:119)\n\tat org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)\n"}}}

Then, when I set the SEP from the object browser like in your screenshot, it generates the following in the Debug console:
From client: initialize({"clientID":"vscode","clientName":"Visual Studio Code","adapterID":"IBMiDebug","pathFormat":"path","linesStartAt1":true,"columnsStartAt1":true,"supportsVariableType":true,"supportsVariablePaging":true,"supportsRunInTerminalRequest":true,"locale":"en","supportsProgressReporting":true,"supportsInvalidatedEvent":true,"supportsMemoryReferences":true,"supportsArgsCanBeInterpretedByShell":true,"supportsMemoryEvent":true,"supportsStartDebuggingRequest":true,"supportsANSIStyling":true})
To client: {"seq":0,"type":"response","request_seq":1,"command":"initialize","success":true,"body":{"supportsEvaluateForHovers":true,"supportsSetVariable":true,"supportsValueFormattingOptions":true,"supportsModulesRequest":true,"supportTerminateDebuggee":true,"supportsFunctionBreakpoints":true,"supportsConfigurationDoneRequest":true}}
From client: launch({"type":"IBMiDebug","request":"launch","subType":"sep","action":"set","name":"Service Entry Point","user":"HEYMCHR","password":"xxxxxxxx","host":"USALID06.INFOR.COM","port":8005,"sepDaemonPort":8008,"secure":true,"ignoreCertificateErrors":false,"library":"HEYMCHR","program":"CHGDECFMT","programType":"*PGM","module":"*ALL","procedure":"*ALL","trace":true,"workbenchSettings":{"updateProductionFiles":false,"enableDebugTracing":false},"__sessionId":"3c6780e5-ebfa-4ae6-9360-a12ecc025cb9"})
To client: {"type":"event","seq":2,"event":"initialized"}
From client: setFunctionBreakpoints({"breakpoints":[]})
To client: {"type":"response","seq":0,"request_seq":3,"success":true,"command":"setFunctionBreakpoints","body":{"breakpoints":[]}}
From client: configurationDone(undefined)
To client: {"type":"response","seq":0,"request_seq":4,"success":true,"command":"configurationDone"}
From client: threads(undefined)
To client: {"type":"response","seq":0,"request_seq":5,"success":true,"command":"threads","body":{"threads":[]}}
To client: {"type":"event","seq":7,"event":"terminated"}
To client: {"type":"response","seq":0,"request_seq":2,"success":true,"command":"launch"}
To client: {"type":"response","seq":0,"request_seq":4,"success":false,"command":"configurationDone","body":{"error":{"id":"8999","format":"java.lang.NullPointerException\n\tat com.ibm.debug.pdt.daas.internal.dap.DAPSession.getVersionJSON(DAPSession.java:439)\n\tat com.ibm.debug.pdt.daas.internal.dap.events.DAPEvent.getEvent(DAPEvent.java:117)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPConfigurationDoneRequest.generateEvents(DAPConfigurationDoneRequest.java:123)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:139)\n\tat com.ibm.debug.pdt.daas.internal.dap.requests.DAPRequest.process(DAPRequest.java:97)\n\tat com.ibm.debug.pdt.daas.internal.dap.DAPRequestProcessor$1.run(DAPRequestProcessor.java:119)\n\tat org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)\n"}}}
From client: disconnect({"restart":false,"terminateDebuggee":false})

If this doesn't show what you're looking for, maybe a screen share session might be useful?