UTF-8 character encoding issue persists with v0.6.5

Hello!
I was among the people having utf-8 encode issues with mailcatcher. After upgrading to mailcatcher 0.6.5., the issue still persists:
==> SMTP: Received message from<EMAIL_ADDRESS>size=1631' (1712 bytes)
2016-10-04 15:39:44 - Encoding::UndefinedConversionError - "\xC5" from ASCII-8BIT to UTF-8:
    /usr/lib/ruby/2.3.0/json/common.rb:224:in `encode'
    /usr/lib/ruby/2.3.0/json/common.rb:224:in `generate'
    /usr/lib/ruby/2.3.0/json/common.rb:224:in `generate'
    /var/lib/gems/2.3.0/gems/mailcatcher-0.6.5/lib/mail_catcher/web/application.rb:94:in `block in <class:Application>'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `call'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `block in compile!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (3 levels) in route!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:994:in `route_eval'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (2 levels) in route!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1015:in `block in process_route'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `catch'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `process_route'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:973:in `block in route!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `each'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `route!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1085:in `block in dispatch!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1082:in `dispatch!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `block in call!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `call!'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:895:in `call'
    /var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
    /var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
    /var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
    /var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
    /var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
    /var/lib/gems/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
    /var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/nulllogger.rb:9:in `call'
    /var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:in `call'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:in `call'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `block in call'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1787:in `synchronize'
    /var/lib/gems/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `call'
    /var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb:66:in `block in call'
    /var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `each'
    /var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `call'
    /var/lib/gems/2.3.0/gems/rack-1.6.4/lib/rack/builder.rb:153:in `call'
    /var/lib/gems/2.3.0/gems/mailcatcher-0.6.5/lib/mail_catcher/web.rb:19:in `call'
    /var/lib/gems/2.3.0/gems/thin-1.5.1/lib/thin/connection.rb:81:in `block in pre_process'
    /var/lib/gems/2.3.0/gems/thin-1.5.1/lib/thin/connection.rb:79:in `catch'
    /var/lib/gems/2.3.0/gems/thin-1.5.1/lib/thin/connection.rb:79:in `pre_process'
    /var/lib/gems/2.3.0/gems/thin-1.5.1/lib/thin/connection.rb:54:in `process'
    /var/lib/gems/2.3.0/gems/thin-1.5.1/lib/thin/connection.rb:39:in `receive_data'
    /var/lib/gems/2.3.0/gems/eventmachine-<IP_ADDRESS>/lib/eventmachine.rb:193:in `run_machine'
    /var/lib/gems/2.3.0/gems/eventmachine-<IP_ADDRESS>/lib/eventmachine.rb:193:in `run'
    /var/lib/gems/2.3.0/gems/mailcatcher-0.6.5/lib/mail_catcher.rb:173:in `run!'
    /var/lib/gems/2.3.0/gems/mailcatcher-0.6.5/bin/mailcatcher:5:in `<top (required)>'
    /usr/local/bin/mailcatcher:23:in `load'
    /usr/local/bin/mailcatcher:23:in `<main>'

Hi, I can confirm this issue still persists in 0.6.5.

Exception: "\xC3" from ASCII-8BIT to UTF-8
    Backtrace:
       /usr/lib/ruby/2.1.0/json/common.rb:223:in `encode'
       /usr/lib/ruby/2.1.0/json/common.rb:223:in `generate'
       /usr/lib/ruby/2.1.0/json/common.rb:223:in `generate'
       mailcatcher (0.6.5) lib/mail_catcher/web/application.rb:69:in `block (3 levels) in <class:Application>'
       eventmachine (<IP_ADDRESS>) lib/em/channel.rb:43:in `call'
       eventmachine (<IP_ADDRESS>) lib/em/channel.rb:43:in `block (3 levels) in push'
       eventmachine (<IP_ADDRESS>) lib/em/channel.rb:43:in `each'
       eventmachine (<IP_ADDRESS>) lib/em/channel.rb:43:in `block (2 levels) in push'
       eventmachine (<IP_ADDRESS>) lib/em/channel.rb:43:in `each'
       eventmachine (<IP_ADDRESS>) lib/em/channel.rb:43:in `block in push'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:256:in `call'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:256:in `schedule'
       eventmachine (<IP_ADDRESS>) lib/em/channel.rb:43:in `push'
       mailcatcher (0.6.5) lib/mail_catcher/mail.rb:57:in `block in add_message'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:981:in `call'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:981:in `block in run_deferred_callbacks'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:978:in `times'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:978:in `run_deferred_callbacks'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:193:in `run_machine'
       eventmachine (<IP_ADDRESS>) lib/eventmachine.rb:193:in `run'
       mailcatcher (0.6.5) lib/mail_catcher.rb:173:in `run!'
       mailcatcher (0.6.5) bin/mailcatcher:5:in `<top (required)>'
       /usr/local/bin/mailcatcher:23:in `load'
       /usr/local/bin/mailcatcher:23:in `<main>'

The problem persists when send special characters, but the application don't crash/stop more...

Anybody affected by this issue: could you please upload a message body which triggers this error so I can reproduce and perhaps fix this issue.

@sj26 The error happens when the message body has special characters like "á"

I'm sorry it's not working for you, but it works fine for me:

Could you please provide an example message which doesn't work?
Note that valid email message bodies don't have utf-8 in the middle of a message body unencoded, you must encode it suitably. Most libraries for sending email should handle this for you pretty sensibly. Here's the example I tried using Ruby's mail gem, which is how mailcatcher reads email:
$ ruby --require mail
irb> Mail.defaults { delivery_method :smtp, address: "localhost", port: 1025 }
irb> Mail.new(to<EMAIL_ADDRESS>from<EMAIL_ADDRESS>subject: "Héllo", body: "Héllo").deliver
Non US-ASCII detected and no charset defined.
Defaulting to UTF-8, set your own if this is incorrect.
=> #<Mail::Message:70286438842840, Multipart: false, Headers: <Date: Sat, 10 Dec 2016 22:03:55 +1100>, <From<EMAIL_ADDRESS><To<EMAIL_ADDRESS><Message-ID<EMAIL_ADDRESS><Subject: Héllo>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <Content-Transfer-Encoding: base64>>

And the message body it sent:
Date: Sat, 10 Dec 2016 22:03:55 +1100
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>Subject: =?UTF-8?Q?H=C3=A9llo?=
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: base64

SMOpbGxv

I'm going to close this for now. If somebody has an issue with character encodings in mailcatcher please provide the full message body (with headers and mime) along with the errors it is triggering as a new issue.


Button startIcon fontSize issue

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
Hi,
I'm using Button with startIcon prop but and I'm trying to change the icon size (fontSize), but I couldn't do it with the fontSize prop
it stuck on fontSize of 18px from the base theme
.css-cstir9-MuiButton-startIcon>*:nth-of-type(1) {     font-size: 18px;}
code:
             <Button                 size="small"                 variant="text"                 onClick={...}                 startIcon={<EditIcon fontSize={"small"} />} // small/medium doesn't effect the size               >                 {edit}               </Button>
"@mui/icons-material": "^5.6.2",
"@mui/lab": "~5.0.0-alpha.81",
"@mui/material": "~5.7.0",
"@mui/styles": "~5.7.0",

Expected behavior 🤔
When changing the fontSize of the icon it will actually effect the icon size

Please provide a CodeSandbox (https://mui.com/r/issue-template or https://mui.com/r/ts-issue-template), a link to a repository on GitHub, or provide a minimal code example that reproduces the problem.
Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve


native: automatically save input drafts

fixes LAND-1837

Seeing this when starting a new thread and typing a message. The draft does still seem to get stored though if I navigate away and then back again.


Would vscode support multilineTokenSupport since LSP introduced it in 3.16?

LSP protocol now supports multiline tokens, here:
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens
/**
 * Whether the client supports tokens that can span multiple lines.
*/
multilineTokenSupport?: boolean;

Is it planned for vscode to support multiline tokens to follow the latest lsp protocol?

Ping @alexdima in relation to your 2020 comment: https://github.com/microsoft/vscode/issues/86415#issuecomment-587327402


operator kubeturbo-certified (8.12.20-beta.1)

kubeturbo-certified-8.12.20 bundle

@jfrancin - May I know what's happening with this PR? The PR has hosted-pipeline status success but didn't get merged and publish to index

@SumanthKodali999 I had to hand-trigger the release pipeline for this PR.  I'll be asking Engineering about this.

Seems there was a GitHub-wide API outage: https://www.githubstatus.com/incidents/7txcg0j03kkg.
This one was affected by it.


if not on master, e2e failure is unstable but gogogo

@mikeln the last CI run had a failed e2e run, the build was marked as UNSTABLE but I haven't been able to find a way for github to mark that as anything but a failing check.  Ideas?  I would like there to be some indication that e2e failed.

The issue is github only allowing pass/fail statuses?
What about adding a 2nd PR check (that isn't required).
So:

take out e2e in the "Required" check
add a second "non required" check that just runs e2e/conformance.

So the question becomes, how to do that without completely spinning up a new cluster for the 2nd step...or maybe we don't care how many we run?

correct.  github only allows pass/fail.
I wonder if its possible to manually report just the status of e2e, make it show up as its own check.  if that seems like less a few hours of work I'll do it.
I'd prefer not spinning up a second cluster mostly because that's so unreliable it would probably make things worse, not better.

funny, you beat me to it...edited my response with the same idea.

failing of no helm version supported.  perhaps due to this recent merge k2-tools 102?

yep, working on a k2 fix.

unable to send messages back to github from the slave as the credentials for github aren't being auto-loaded in.  need to figure out how to get the credentials into the call and then how to get the credentials onto the slave pod.

attempted to run the notify step on master in the hopes that would allow the class to find the credentials, no dice.
going to try this plugin now:  https://plugins.jenkins.io/pipeline-githubnotify-step

The listed plugin does what I want.  Need to tweak the overall pipeline to report success no matter the e2e status.

keeps coming back unstable.  huh.

the junit plugin will always set the build status to UNSTABLE if one or more tests have failed.  the healthScaleFactor deals with the overall health of the build, which is the health of the job over the last several runs.
the github notification from jenkins is only for the last run of the job, which is UNSTABLE which github considers to be a failure.  the job being set to UNSTABLE occurs here.  There doesn't seem to be a way to override this via configuration.
I believe the way forward for this is:

compute our own overall build health and make it required
make the default notification not required
make the e2e notification not required

Are there any e2e tests we do want to fail on?  We could separate out the critical ones and fail on them.

@oneilcin we haven't spent any time going through the e2e conformance tests to determine if that's the case.  right now its a black box of tests.


[BEAM-10494] PubsubSchemaCapableIOProvider config inner class rather than row

Used Schema inference to shift config values to an inferred object rather than a Row object within PubsubSchemaCapableIOProvider. The SchemaIO logic now interacts with the inferred object rather than the row.

Will merge after all tests pass.


Sorensen gambit issue #200

What

PR to address open issue by adding Milner Barry Gambit, Sorenson Gambit to Openings

Sources

#200
John Watson's Play the French
Moskalenko's The Even More Flexible French

Thanks!


Configure Story Map

Hi guys i have problems to configure my story map when i try to open it in the browser it is not working.
I already tryed many tutorials but it is still not working.
Here is my code:

	<meta name="apple-mobile-web-app-capable" content="yes">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

	<link type="image/ico" rel="shortcut icon" href="//resources.esri.com/favicon.ico">
	<link type="image/ico" rel="icon"  href="//resources.esri.com/favicon.ico">

	<!--
		To correctly reference your Map Tour in search engine:
		 - create and fill out extensively an ArcGIS.com item that link to your final application
		 - edit the following four tags as well as the upper title tag on line 4
	-->
	<meta name="description" content="This story map was created with the Esri Map Tour application in ArcGIS Online.">

	<!-- Facebook sharing -->
	<meta property="og:type" content="article"/>
	<meta property="og:title" content="Story Map Tour"/>
	<meta property="og:description" content="This story map was created with the Esri Map Tour application in ArcGIS Online."/>
	<meta property="og:image" content="resources/icons/esri-globe.png"/>

	<!--
		This template is released under the Apache License V2.0 by Esri http://www.esri.com/
		Checkout the project repository on GitHub to access source code, latest revision, developer documentation, FAQ and tips
		https://github.com/Esri/map-tour-storytelling-template-js
	-->

	<script type="text/javascript">
		//----------------------------------------------------
		//     Template configuration (ignored on Portal)
		//----------------------------------------------------
		configOptions = {
			// Enter either a web map ID or a web application ID
			// - Using a Map Tour application ID created through the interactive builder in ArcGIS.com allow to reuse
			//   the settings like the header configuration without having to edit any configuration here
			// - Web map and application can be dynamically specified through url parameters (webmap and appid)
			//   if the authorizedOwners property is specified (see below)
			// - If an application id is specified, the webmap configuration isn't used
			webmap: "",
			appid: "10129a28a5644de18c2a1559df60612e",
			// Optional list of authorized application or web map owners
			// Has to be specified when using appid or webmap url parameters (e.g. ["user1"], ["user1", "user2"])
			authorizedOwners: ["Betzen"],
			// Select the application layout between "three-panel" and "integrated"
			layout: "three-panel",
			// The application header title, if no title is specified, the webmap's title is used
			title: "FH Map",
			// The application header subtitle, if not specified the ArcGIS.com web map's summary is used
			subtitle: "Students internships",
			// Optionally force a web map layer to be used as the tour points data source (can be overridden through URL)
			// Otherwise the upper visible point layer is used (excluding map notes)
			sourceLayerTitle: "Points",
			// Use the first data record as an introduction instead of a point (can be overridden through URL)
			firstRecordAsIntro: true,
			// Optional zoom level to be applied for the story points following introduction (can be overridden through URL) (e.g: 0 to 16 for Gray Canvas, 0 to 19 for Street Map, -1 to disable)
			zoomLevel: -1
		};
		// Optionally sharing and proxy URLs can be configured in app/maptour-config.js. This is only required
		//  when the webmap is not hosted on ArcGIS Online or a Portal for ArcGIS instance and the template isn't deployed as /home/MapTour/ or /apps/MapTour/.
		// Optionally Bing Maps key, Geometry and Geocode service's URLs can be configured in app/commonConfig.js. This is only required
		//  if the Organization or Portal for ArcGIS instance default configuration has to be overwritten. If the application is deployed
		//  on Portal for ArcGIS as /home/MapTour/ or /apps/MapTour/, that configuration is available in ../commonConfig.js
	</script>

Hi,
You have two issue:

the id that you have entered is a webmap not a web mapping application id
your webmap does not contains a valid Map Tour layer.

I suggest that you start building your maptour using the builder www.arcgis.com/apps/MapTour/index.html?fromScratch
From the advanced options on the first screen, you will be able to download a CSV template, if you copy back your data in it, it will have the required format.
Then follow instructions here https://github.com/Esri/map-tour-storytelling-template-js#how-to-deploy-a-map-tour (To build a Map Tour using the interactive viewer)


Option to not connect to ext services

also close arango client properly

The codecov UI has really become unreliable, it's a different problem almost every time I go there

Since you approved I'm going to go ahead and merge, but we can continue with the conversations and I'll make any changes coming out of that in a later PR

Oop, you beat me to it :P


Support Capacitor 6 SPM-Setup

Would be great to use this with Capacitor's Swift Package Manager setup.
Reference: https://capacitorjs.com/docs/ios/spm#converting-existing-plugins-to-spm

👀 We've just linked this issue to our internal tracker and notified the team. Thank you for reporting, we're checking this out!

Hi @abegehr, thanks for letting us know! We'll look into it and prioritize it accordingly.


instrumentation review

refactor(instrumentation): decouple from full config
feat(instrumentation): wrap returned error with context
refactor(instrumentation): rename initOTelServer to initPrometheusInstrumentation
fix(instrumentation): missing arg on cfgprotocol
refactor(instrumentation): decouple noop measure fn from server
refactor(instrumentation): rename opentelemetry package & Exporter iface to i/Intrumentation
refactor(instrumentation): rename constructors and ifaces to idomatic Go

@rubenruizdegauna
A) renamed OTel/exporter mentions to "instruments", I believe it makes more sense than using the same name as the interface it implements
B) having a generic instrumentation.NoopMeasure var ready to be used saves you from:

having to depend on the composed interface
having to instantiate the composed object only to use the noop function

// before declared as package global for every test suite/usage
var fakeOtelServer = instrumentation.NewNoopServer()
// current usage
fakeOtelServer.Measure

@brushknight  I verified some stats show up on the exposed endpoint, but I don't know what this should be reporting.
If we want to verify further we add proper automated testing.


test the all-in-one quickstart

I moved this from read to draft because I found a problem with the default router entity name convention and an opportunity to simplify.

I'm diagnosing the failed check.


Return the dockspace ID from dockspace_over_main_viewport

When creating a dockspace over a main viewport, you need the resulting id in order to use the DockManager* APIs (for instance to programmatically layout a bunch of windows).

Thank you for the PR!


Add s? to cachkey capture prefix so it will capture both http and https in to http keys

For issue https://github.com/apache/trafficcontrol/issues/2589
The ignore and pass up has a hardcoded cachekey, currently it is hardcoded to http. So if the set key uses https it gets thrown away. Adding s? to the key so both http and https will end up cached in the http key
This still needs to be tested but putting the PR out there

Can one of the admins verify this patch?


Panorama

Added Panorama Functionality before this just worked with an individual firewall.  Now it will work with either a firewall or Panorama.  Also, added commit functionality that was not there before so the orchestrator will save and commit as opposed to just saving changes to the firewall or panorama.

superseded by pr#6, moving to 2.0 release branch


[Bug] Some response codes are duplicated

Before Creating the Bug Report

[X] I found a bug, not just asking a question, which should be created in GitHub Discussions.

[X] I have searched the GitHub Issues and GitHub Discussions  of this repository and believe that this is not a duplicate.

[X] I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ.

Runtime platform environment
All
RocketMQ version
5.x
JDK Version
Any
Describe the Bug
as below in  https://github.com/apache/rocketmq/blob/6024db77f59aa5810d47914edea9b8f0ae68b693/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/ResponseCode.java#L75
the codes with 209,210,211 are the same for different means.
public static final int UPDATE_AND_CREATE_ACL_CONFIG_FAILED = 209;

    public static final int DELETE_ACL_CONFIG_FAILED = 210;

    public static final int UPDATE_GLOBAL_WHITE_ADDRS_CONFIG_FAILED = 211;

    public static final int POLLING_FULL = 209;

    public static final int POLLING_TIMEOUT = 210;

    public static final int BROKER_NOT_EXIST = 211;

Steps to Reproduce
no need
What Did You Expect to See?
response code should be unique by mean.
What Did You See Instead?
response code is used several times.
Additional Context
No response

历史问题，在不同的 rpc 所以功能上不影响，修改的话要注意兼容性


Better GDPR data export

Questions
Answers

Description?
There are two places where we retrieve the subscriber list, but the code inside hookActionExportGDPRData is too basic and doesn't handle all cases. As a result, we get inconsistent data — on the subscribers page in the BO, we see that a user has subscribed to the newsletter, but when downloading personal information via the psgdpr module (which uses hookActionExportGDPRData), some data are missing. It's also problematic to have two blocks of code doing the same thing.

Type?
bug fix

BC breaks?
no

Deprecations?
no

Fixed ticket?
none

How to test?
Change the newsletter setting on the customer page in the BO, and then download the personal data using the psgdpr module. With the old code, it will not retrieve any results related to the newsletter, even though the module's BO page shows the user as a subscriber.

Hello @pszostok!
This is your first pull request on ps_emailsubscription repository of the PrestaShop project.
Thank you, and welcome to this Open Source community!


[refactor] Benchmark scripts

Currently, the way a task is added to a benchmark is bottom-up; an individual task can be assigned to a group. This can be used for a task collection like SuperGLUE or MMLU. But there can be cases where new benchmarks are introduced that can be a collection of many different tasks, such as Pythia's evaluation that consists of a few different tasks. An alternative approach would be a top-down approach which is a single yaml file that lists each task. This would allow users to add their benchmarks and or use their own outside of Lm-Eval without needing to modify each individual task config (it also saves users from having to type in each task name in --tasks).

[x] Add T0-Eval as example of building benchmark from promptsource
[x] process_results can now be overridden for special cases
[x] Add Pythia's Benchmark as another example
[x] Proposed process to read pythia.yaml as a benchmark ini tasks/__init__.py
[ ] In the case of promptsource, a method that loads the config on the fly rather than saving configs to disk.

@haileyschoelkopf made a draft for now.

@haileyschoelkopf is this the kind of aggregation you had in mind?
|     Task     |Version|Filter|    Metric     | Value |   |Stderr|
|--------------|-------|------|---------------|------:|---|-----:|
|arc_challenge |Yaml   |none  |acc            | 0.1903|±  |0.0115|
|              |       |none  |acc_norm       | 0.2270|±  |0.0122|
|arc_easy      |Yaml   |none  |acc            | 0.4381|±  |0.0102|
|              |       |none  |acc_norm       | 0.3948|±  |0.0100|
|lambada_openai|Yaml   |none  |perplexity     |40.0554|±  |1.4841|
|              |       |none  |acc            | 0.3256|±  |0.0065|
|piqa          |Yaml   |none  |acc            | 0.6289|±  |0.0113|
|              |       |none  |acc_norm       | 0.6251|±  |0.0113|
|sciq          |Yaml   |none  |acc            | 0.7520|±  |0.0137|
|              |       |none  |acc_norm       | 0.6440|±  |0.0151|
|wikitext      |Yaml   |none  |word_perplexity|71.7454|   |      |
|              |       |none  |byte_perplexity| 2.0227|   |      |
|              |       |none  |bits_per_byte  | 1.0163|   |      |
|winogrande    |Yaml   |none  |acc            | 0.5162|±  |0.0140|
|wsc           |Yaml   |none  |acc            | 0.4327|±  |0.0488|
|Aggregate     |N/A    |      |acc            | 0.4691|   |      |
|              |       |      |acc_norm       | 0.4727|   |      |
|              |       |      |perplexity     |40.0554|   |      |
|              |       |      |word_perplexity|71.7454|   |      |
|              |       |      |byte_perplexity| 2.0227|   |      |
|              |       |      |bits_per_byte  | 1.0163|   |      |

Modified to
|     Task     |Version|Filter|    Metric     | Value |   |Stderr|
|--------------|-------|------|---------------|------:|---|-----:|
|arc_challenge |Yaml   |none  |acc            | 0.1903|±  |0.0115|
|              |       |none  |acc_norm       | 0.2270|±  |0.0122|
|arc_easy      |Yaml   |none  |acc            | 0.4381|±  |0.0102|
|              |       |none  |acc_norm       | 0.3948|±  |0.0100|
|lambada_openai|Yaml   |none  |perplexity     |40.0554|±  |1.4841|
|              |       |none  |acc            | 0.3256|±  |0.0065|
|piqa          |Yaml   |none  |acc            | 0.6289|±  |0.0113|
|              |       |none  |acc_norm       | 0.6251|±  |0.0113|
|sciq          |Yaml   |none  |acc            | 0.7520|±  |0.0137|
|              |       |none  |acc_norm       | 0.6440|±  |0.0151|
|wikitext      |Yaml   |none  |word_perplexity|71.7454|   |      |
|              |       |none  |byte_perplexity| 2.0227|   |      |
|              |       |none  |bits_per_byte  | 1.0163|   |      |
|winogrande    |Yaml   |none  |acc            | 0.5162|±  |0.0140|
|wsc           |Yaml   |none  |acc            | 0.4327|±  |0.0488|

| Task |Version|Filter|    Metric     | Value |   |Stderr|
|------|-------|------|---------------|------:|---|------|
|pythia|N/A    |      |acc            | 0.4691|   |      |
|      |       |      |acc_norm       | 0.4727|   |      |
|      |       |      |perplexity     |40.0554|   |      |
|      |       |      |word_perplexity|71.7454|   |      |
|      |       |      |byte_perplexity| 2.0227|   |      |
|      |       |      |bits_per_byte  | 1.0163|   |      |


Fix: Slack reminders text should link to PR thread

Investigate if this can be done without losing the link to GitHub.
Current:

Proposed:

@zakmandhro @amna-pullflow thoughts on the Discuss link for Slack thread?

The [Discuss] looks off because it is not a Slack convention. Perhaps we can make it more obvious using plain links.

🔄 Pull request 21: Update requirements.txt. View in GitHub. Discuss on Slack.

Do we really need the View in GitHub? the PR is linked anyway - similar to how we show it everywhere else in PF (dashboard, channel, etc)

The fix is on core side; tracking the issue here.


(maint) Add powershell support to inventory tests

We unnecessarily limited remote target and localhost testing to hosts
with bash. This adds support for those tests on systems with powershell
as well.

CLA signed by all contributors.


Create a tool that audits our repositories for labels

What happened (or feature request):
In our community documentation we outline a strategy for how labels should be used across our repositories.  Manually creating those labels is a tedious process that can quickly become prone to human error.  Please create a tool that can manage labels in accordance with our guidelines.
What you expected to happen:

Create a tool that accepts an owner/organization and a reference repository.
The tool will scan both public and private repositories of the owner and apply labels and colors as they exist in the reference repository.
The tool should output a report as it processes so that the user can see the results.
The tool should have a test mode so that the changes can be viewed before executing.
The tool should be made available to the public under our open source policies.
Testing coverage should exist for the tool.
Ensure that our community documentation for labels matches what exists in the community documentation so that the labels being applied by this tool are understood.

Related source links or issues:

https://github.com/drud/ghlabel - this is an unfinished, but functional attempt at creating this tool.

Updating this to remove jenkins integration as that is now documented at https://github.com/drud/aws-infra/issues/58

@cyberswat To be clear, does this mean we can close this issue and follow along in the drud/aws-infra#58?

Just as soon as we hear back from @nmccrory that the items listed here have been addressed.  There is a documentation component in addition to the issue that was merged.

Sorry for overlooking the docs on this one! @cyberswat

Docs were taken care of in PR #15. Let's go ahead and close this.

@nmccrory https://github.com/drud/community/pull/15 isn't merged yet.  We can close this out once that is completed.


add icid & aux_ins

adding instrument configuration id and aux_ins path in manifest attrs

did a test for a lot of files

i removed it

This Can be closed and released


Hadoop state non-functional

It looks like the HadoopEngine isn't currently in an executable state. There are references to settings that have been removed fairly recently. Is the implementation here something that could be made to work?

@gregory-marton question for you :)

Sounds like you've done some investigation already. Can you share the details? In what way did it not work, which settings did you find, etc.?

Oh, I thought it was intentional.
https://github.com/probcomp/crosscat/blob/d7765df463e79055e5a9cf0031367c32e4a768d7/src/HadoopEngine.py#L27
There appears to not be a crosscat.settings since v0.1.25
The change that has broken seems sensible and straightforward but I would ask if the implementation, if fixed, would still be functional in the current version.

I'm actually not sure of the history. I came onboard around v0.1.40, and this was not on my radar. :-)
@riastradh-probcomp if you have time, can you give more context?
@kadwanev, pull requests are always welcome!

Nobody has touched the Hadoop code in years, and it apparently requires various moving parts that were customized for one developer's setup years ago, with some private network layout and Amazon S3 account and local Hadoop installation &c.
I expect it would be easier to start from scratch than to try to revive what's there.

Given that context, I expect the appropriate "fix" would be to remove HadoopEngine. @kadwanev, if you want to take this on instead, we would absolutely welcome it. If interested, let me know a time frame to check back with you?

Understood. Thanks for the responses.
Just want to ask:
Is the distribution technique still sound?
Did it ever work?
I ask this because the only reducer reference I see is /bin/cat, which leads me to question if it collected results back into a single response.
I want to know if the current implementation is a good starting point or not.

There is no 'reduce' step because Crosscat's job is just to apply a transition operator to each of a number of independent states -- it's all 'map', and it is embarrassingly parallelizable, so any parallelism you throw at it should stick, no matter how trivial.
The MultiprocessingEngine is just LocalEngine with Python map replaced by multiprocessing.pool().map to transition the states in separate processes.  Doing the same on different computers will certainly work just fine.

Thanks. That definitely answers my question. I'll be looking to contribute some code as soon as possible.


Documentation incorrect

Docs state
import AmazonDaxClient from "amazon-dax-client";
However, this is incorrect and should be
import AmazonDaxClient from 'amazon-dax-client-sdkv3';

Oops good point, fixed that thanks for noticing <3


prskr.git-age: v0.1.1

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Automated with GoReleaser
Microsoft Reviewers: Open in CodeFlow

@microsoft-github-policy-service agree


Update IoT QoS and send interval

When publishing MQTT topics messages, include quality of service parameter = 1 (at least once) allowing for consistent message delivery.  More reading on topic here:
https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels/
Change SEND_INTERVAL to 1 second, this allows sensor messages to be sent from the hub every second which is the desired interval for use in classrooms (we were using 2 seconds to cut back on message traffic during initial testing, but we're at the phase of the project where we need to be using and testing the interval which is required for actual classroom use).

Does this require updates to sensaurus software? Are we using QoS 1 on Sensaurus? Given that the devices do not depend on the client, they will start sending before this code changes the format.
Agree it will be useful to know how well the devices cope with the extra load, though we will be sending this data up to a server that doesn't do anything to process it yet. Is there a way to change this setting per device? If I want one device for testing to send with a different interval, will that be possible or will this override all other values? Since we don't yet have anything on the server to process these messages, I would like a lighter load for development - if I can get one device working on a different timer just for a couple of days that would be useful. I can set it on the device configuration, but it looks like as soon as it comes online, anyone running this branch will change the settings I choose.

The long term goal is to use a unified 1 second send rate for all devices (as we attempt to make things work like DF 2).  Note that you can always ignore the send_interval command message on a local device by commenting out the line that changes it from an incoming command message in either the hub or simulator code if this is something that is required for testing.

And, yes, every browser instance will send a command message requesting to set the send_interval and start sending messages.  I agree that this feels a bit redundant.  We can certainly work with Peter to determine if there is a better way to do this.


"Functions should do one thing" typo

Regarding the  "Good" solution for "Functions should do one thing". IsClientActive() takes a string, but is passed a string[].

@mikehixson Thank you for your correction. Could you please make a PR so that we can recognize you as a contributor of this repo?


Current treatment of casts is not specified and inconsistent

Returning a value that can be cast will apply the cast. Otherwise, implicit casts are not done.
Fix or document this inconsistency.
Side note: inconsistently with the java language, a long can be implicitly cast to an int.

Actually, readme says "Implicit numeric conversions for primitives are supported", which is mostly not true now.


GDAX FIX API Issue

Hello, this isn't an issue with this specific repo but I am encountering something that I'd like to reach the developers.
I'm working on adding the FIX API to gdax-node which I am using for a trading bot. My bot places limit orders and cancels them as soon as the best bid/ask changes, in order to prevent the order from slipping down or up in the orderbook and taking forever to be filled.
Often times after canceling an order, I get an "Insufficient funds" error in the ExecutionReport when trying to place an order.
For example:

Place buy order at 5000 (current best bid) for 0.01 coins
Price gap opens
Cancel order at 5000 (and wait for canceled message in the execution report)
Place new order at 5000.01 for 0.01 coins
New order is rejected for insufficient funds

It seems that I am getting the cancelled response message before the balance is actually adjusted, so I often have to try another time, or even 2-3 more times to place the orders. I'd like to be able to send my NewSingleOrder message as soon as the previous one is cancelled, but I'm likely adding extra latency by retrying the order multiple times as I always wait for a response to see if it was successful.

Thanks for reaching out @Cyral!
Currently, balances are updated asynchronously through our clearing process which is separate from our FIX API. I agree this is a pain point for FIX API users who expect holds to be released immediately upon cancel acknowledgement. We have plans to address this issue which will transparently un-hold funds for FIX API users.
I am going to close this issue but if you experience any issues integrating the FIX API with the project feel free to reach out again. Thanks!

Hello! I was just wondering if there's any update on this since it's been 5 months or so.
What's the recommend way to deal with this from our side? Continue to resubmit orders until they go through?


Adding GitHub Homepage Clone

Idea
Add a Github homepage clone
Motivation
The project demonstrates the capabilities of flex property in CSS, in addition to a good explanation about how GitHub's frontend is built

@Rayman-Sodhi can you please calrify what you mean by a working link? I will add the index.html file, or you mean that you want it deployed on Github Pages?


[FormsyText] not showing default value

Hi, I'm trying to show a default value on FormsyText.
I have tried with value prop & with defaultValue prop
this is example of my render method:
`render: function () {
var firstName = "John";
 return(
   <Formsy.Form id="form-register-pa-1" ref="myForm"
                         onValidSubmit={this._handleValidSubmit}
                         onValid={this.enableSubmitButton}
                         onInvalid={this.disableSubmitButton}>

      <FormsyText
               name="inputFirst"
               id="inputFirst"
               defaultValue={firstName}
               floatingLabelText="First Name"
               required
               />
   </Formsy.Form>
)

}`

Can you try with master?

I tried both with master.. still not working

@0xori - could you copy & paste the propTypes block from node_modules/formsy-material-ui/lib/FormsyText?

  propTypes: {     name: _react2.default.PropTypes.string.isRequired,     value: _react2.default.PropTypes.any,     onFocus: _react2.default.PropTypes.func,     onBlur: _react2.default.PropTypes.func   },

@0xori - thanks, that isn't master in that case.

0.4.2 released. Please reopen if that doesn't fix your issue after updating.


Error trying to install the package through go get

user@FRODO /d/goworkspace/bin
$ go get github.com/kellydunn/golang-geo
# cd D:\goworkspace\src\github.com\kylelemons\go-gypsy; git pull --ff-only
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> master

package github.com/kylelemons/go-gypsy/yaml: exit status 1

Interesting; using go get github.com/kellydunn/golang-geo works as expected for me on OSX and linux, just tested it.
I don't currently have access to a Windows VM or windows machine at the moment, but it seems odd to me that the go get tool wouldn't be working as expected here.
What version of go are you using?

thx for responding.. using go1.5.1 (with git 1.9.5 also installed on the maschine) - the most recent available windows binary

Super odd.  I'm also running go 1.5.1:
$ go version
go version go1.5.1 darwin/amd64

Could it be related to git?  I'm using git version 2.4.6
$ git --version
git version 2.4.6

Not sure if this helps, but it looks like some other windows gophers were experiencing this issue earlier this year:
https://groups.google.com/forum/#!topic/skicka-users/dF-tWNommEo

@guile any luck?  I suspect it might have to deal with your underlying git installation.

posted about the issue on other boards, but no reply this far. am manually creating the folder structure and copy-pasting go files for needed libraries. :(

@guile I know it's been a while, but was there any updates on this issue?  Are you able to install golang-geo through the go get tool on your system?  Can you install other libs?

@kellydunn good to see you are still around and concerned.
just tried a fresh install and it worked without issues. haven't been able to figure out why i was getting this earlier error. but as long as it works at my end, i will consider it solved :)
Present config: Git 2.7.1 / go1.5.3

@guile thanks for updating!


Docker rules engine 116

see #116
prior work #194

I had to use amd64 instead of arm64 due to a bug like this "@rollup/rollup-linux-arm64-gnu. npm has a bug related to optional dependencies" on npm run build no matter what I did. But otherwise it worked great! We made a fresh branch 116_after_python_folder and will add you as a co-author, Ethan. Thanks so much!
docker run  --platform linux/amd64  -p 8081:8081   -it 396e0a0a4e93 bash
SESSION_SECRET="asd" HONEYPOT_SECRET="asdfasdfasdf" npm run start

TODO: create readme and update as we go so people can run it locally or on github actions.

TODO fix fly deploy --local-only
home-energy-analysis-tool/heat-stack on  116_after_python_folder [⇡] via ⬢ v20.11.0
➜ fly deploy --local-only
==> Verifying app config
Validating /Users/thadk/gitrepos/home-energy-analysis-tool/heat-stack/fly.toml
✓ Configuration is valid
--> Verified app config
==> Building image
==> Building image with Docker
--> docker host: 24.0.6 linux aarch64
[+] Building 0.9s (37/37) FINISHED
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 3.47kB                                                                                0.0s
 => [internal] load metadata for docker.io/flyio/litefs:0.5.11                                                                                0.5s
 => [internal] load metadata for docker.io/library/node:20-bookworm-slim                                                                                0.5s
 => [internal] load metadata for docker.io/library/python:3.12.3-slim-bookworm                                                                                0.8s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => FROM docker.io/flyio/litefs:0.5.11@sha256:d899d275c61ba876f54f6b76ceeadb586e829f6728465cb8ee2434d34ac5054a                                                                             0.0s
 => [rules-build 1/4] FROM docker.io/library/python:3.12.3-slim-bookworm@sha256:afc139a0a640942491ec481ad8dda10f2c5b753f5c969393b12480155fe15a63                                           0.0s
 => [base 1/2] FROM docker.io/library/node:20-bookworm-slim@sha256:ec35a66c9a0a275b027debde05247c081f8b2f0c43d7399d3a6ad5660cee2f6a                                                        0.0s
 => CACHED [base 2/2] RUN apt-get update && apt-get install -y fuse3 openssl sqlite3 ca-certificates                                                                                0.0s
 => CACHED [stage-5  1/16] RUN echo "#!/bin/sh\nset -x\nsqlite3 $DATABASE_URL" > /usr/local/bin/database-cli && chmod +x /usr/local/bin/database-cli                                       0.0s
 => CACHED [stage-5  2/16] WORKDIR /myapp/heat-stack                                                                                0.0s
 => CACHED [stage-5  3/16] RUN INTERNAL_COMMAND_TOKEN=$(openssl rand -hex 32) &&   echo "INTERNAL_COMMAND_TOKEN=$INTERNAL_COMMAND_TOKEN" > .env                                            0.0s
 => CACHED [production-deps 1/4] WORKDIR /myapp/heat-stack                                                                                0.0s
 => ERROR [deps 2/3] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./                                                                                0.0s
 => CACHED [deps 3/3] RUN npm install --include=dev                                                                                0.0s
 => CACHED [production-deps 2/4] COPY --from=deps /myapp/heat-stack/node_modules /myapp/heat-stack/node_modules                                                                            0.0s
 => ERROR [production-deps 3/4] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./                                                                              0.0s
 => CACHED [production-deps 4/4] RUN npm prune --omit=dev                                                                                0.0s
 => CACHED [stage-5  4/16] COPY --from=production-deps /myapp/heat-stack/node_modules /myapp/heat-stack/node_modules                                                                       0.0s
 => ERROR [heat-build 3/4] ADD heat-stack/. .                                                                                0.0s
 => CACHED [heat-build 4/4] RUN npm run build                                                                                0.0s
 => CACHED [stage-5  5/16] COPY --from=heat-build /myapp/heat-stack/node_modules/.prisma /myapp/heat-stack/node_modules/.prisma                                                            0.0s
 => CACHED [stage-5  6/16] COPY --from=heat-build /myapp/heat-stack/server-build /myapp/heat-stack/server-build                                                                            0.0s
 => CACHED [stage-5  7/16] COPY --from=heat-build /myapp/heat-stack/build /myapp/heat-stack/build                                                                                0.0s
 => CACHED [stage-5  8/16] COPY --from=heat-build /myapp/heat-stack/public /myapp/heat-stack/public                                                                                0.0s
 => CACHED [stage-5  9/16] COPY --from=heat-build /myapp/heat-stack/package.json /myapp/heat-stack/package.json                                                                            0.0s
 => CACHED [stage-5 10/16] COPY --from=heat-build /myapp/heat-stack/prisma /myapp/heat-stack/prisma                                                                                0.0s
 => CACHED [stage-5 11/16] COPY --from=heat-build /myapp/heat-stack/app/components/ui/icons /myapp/heat-stack/app/components/ui/icons                                                      0.0s
 => CACHED [rules-build 2/4] WORKDIR /myapp                                                                                0.0s
 => ERROR [rules-build 3/4] ADD python/. .                                                                                0.0s
 => CACHED [rules-build 4/4] RUN bash -c "source setup-wheel.sh"                                                                                0.0s
 => CACHED [stage-5 12/16] COPY --from=rules-build /myapp/dist/*.whl /myapp/heat-stack/public/pyodide-env/                                                                                0.0s
 => CACHED [stage-5 13/16] COPY --from=flyio/litefs:0.5.11 /usr/local/bin/litefs /usr/local/bin/litefs                                                                                0.0s
 => ERROR [stage-5 14/16] ADD heat-stack/other/litefs.yml /etc/litefs.yml                                                                                0.0s
 => CACHED [stage-5 15/16] RUN mkdir -p /data /litefs/data                                                                                0.0s
 => ERROR [stage-5 16/16] ADD heat-stack/. .                                                                                0.0s
------
 > [deps 2/3] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./:
------
------
 > [production-deps 3/4] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./:
------
------
 > [heat-build 3/4] ADD heat-stack/. .:
------
------
 > [rules-build 3/4] ADD python/. .:
------
------
 > [stage-5 14/16] ADD heat-stack/other/litefs.yml /etc/litefs.yml:
------
------
 > [stage-5 16/16] ADD heat-stack/. .:
------
==> Building image
==> Building image with Docker
--> docker host: 24.0.6 linux aarch64
[+] Building 0.1s (37/37) FINISHED
 => [internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 3.47kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for docker.io/flyio/litefs:0.5.11                                                                                0.1s
 => [internal] load metadata for docker.io/library/node:20-bookworm-slim                                                                                0.1s
 => [internal] load metadata for docker.io/library/python:3.12.3-slim-bookworm                                                                                0.1s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [base 1/2] FROM docker.io/library/node:20-bookworm-slim@sha256:ec35a66c9a0a275b027debde05247c081f8b2f0c43d7399d3a6ad5660cee2f6a                                                        0.0s
 => [rules-build 1/4] FROM docker.io/library/python:3.12.3-slim-bookworm@sha256:afc139a0a640942491ec481ad8dda10f2c5b753f5c969393b12480155fe15a63                                           0.0s
 => FROM docker.io/flyio/litefs:0.5.11@sha256:d899d275c61ba876f54f6b76ceeadb586e829f6728465cb8ee2434d34ac5054a                                                                             0.0s
 => CACHED [base 2/2] RUN apt-get update && apt-get install -y fuse3 openssl sqlite3 ca-certificates                                                                                0.0s
 => CACHED [production-deps 1/4] WORKDIR /myapp/heat-stack                                                                                0.0s
 => ERROR [deps 2/3] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./                                                                                0.0s
 => CACHED [deps 3/3] RUN npm install --include=dev                                                                                0.0s
 => CACHED [production-deps 2/4] COPY --from=deps /myapp/heat-stack/node_modules /myapp/heat-stack/node_modules                                                                            0.0s
 => ERROR [heat-build 3/4] ADD heat-stack/. .                                                                                0.0s
 => CACHED [stage-5  1/16] RUN echo "#!/bin/sh\nset -x\nsqlite3 $DATABASE_URL" > /usr/local/bin/database-cli && chmod +x /usr/local/bin/database-cli                                       0.0s
 => CACHED [stage-5  2/16] WORKDIR /myapp/heat-stack                                                                                0.0s
 => CACHED [stage-5  3/16] RUN INTERNAL_COMMAND_TOKEN=$(openssl rand -hex 32) &&   echo "INTERNAL_COMMAND_TOKEN=$INTERNAL_COMMAND_TOKEN" > .env                                            0.0s
 => ERROR [production-deps 3/4] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./                                                                              0.0s
 => CACHED [production-deps 4/4] RUN npm prune --omit=dev                                                                                0.0s
 => CACHED [stage-5  4/16] COPY --from=production-deps /myapp/heat-stack/node_modules /myapp/heat-stack/node_modules                                                                       0.0s
 => CACHED [heat-build 4/4] RUN npm run build                                                                                0.0s
 => CACHED [stage-5  5/16] COPY --from=heat-build /myapp/heat-stack/node_modules/.prisma /myapp/heat-stack/node_modules/.prisma                                                            0.0s
 => CACHED [stage-5  6/16] COPY --from=heat-build /myapp/heat-stack/server-build /myapp/heat-stack/server-build                                                                            0.0s
 => CACHED [stage-5  7/16] COPY --from=heat-build /myapp/heat-stack/build /myapp/heat-stack/build                                                                                0.0s
 => CACHED [stage-5  8/16] COPY --from=heat-build /myapp/heat-stack/public /myapp/heat-stack/public                                                                                0.0s
 => CACHED [stage-5  9/16] COPY --from=heat-build /myapp/heat-stack/package.json /myapp/heat-stack/package.json                                                                            0.0s
 => CACHED [stage-5 10/16] COPY --from=heat-build /myapp/heat-stack/prisma /myapp/heat-stack/prisma                                                                                0.0s
 => CACHED [stage-5 11/16] COPY --from=heat-build /myapp/heat-stack/app/components/ui/icons /myapp/heat-stack/app/components/ui/icons                                                      0.0s
 => CACHED [rules-build 2/4] WORKDIR /myapp                                                                                0.0s
 => ERROR [rules-build 3/4] ADD python/. .                                                                                0.0s
 => CACHED [rules-build 4/4] RUN bash -c "source setup-wheel.sh"                                                                                0.0s
 => CACHED [stage-5 12/16] COPY --from=rules-build /myapp/dist/*.whl /myapp/heat-stack/public/pyodide-env/                                                                                0.0s
 => CACHED [stage-5 13/16] COPY --from=flyio/litefs:0.5.11 /usr/local/bin/litefs /usr/local/bin/litefs                                                                                0.0s
 => ERROR [stage-5 14/16] ADD heat-stack/other/litefs.yml /etc/litefs.yml                                                                                0.0s
 => CACHED [stage-5 15/16] RUN mkdir -p /data /litefs/data                                                                                0.0s
 => ERROR [stage-5 16/16] ADD heat-stack/. .                                                                                0.0s
------
 > [deps 2/3] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./:
------
------
 > [heat-build 3/4] ADD heat-stack/. .:
------
------
 > [production-deps 3/4] ADD heat-stack/package.json heat-stack/package-lock.json heat-stack/.npmrc ./:
------
------
 > [rules-build 3/4] ADD python/. .:
------
------
 > [stage-5 14/16] ADD heat-stack/other/litefs.yml /etc/litefs.yml:
------
------
 > [stage-5 16/16] ADD heat-stack/. .:
------
Error: failed to fetch an image or build from source: error building: failed to solve: failed to compute cache key: failed to calculate checksum of ref 74185b9f-de0b-47fc-b53a-48054ae8fc34::yjqnbfn59qs26krwt9pubyaht: "/heat-stack": not found


Error after update: "compiler error: Expanded null selector", on run ios-device

The app runs fine on localhost, but when I do a "run ios-device", it actually starts, and then gives me the following error. Downgrading to 3.3.3_3 fixed the problem.
=> Started app on iOS Device.
=> Errors prevented startup:

   While processing files with fourseven:scss (for target web.browser):
   /packages/poetic_materialize-scss/bower_components/materialize/sass/materialize.scss: Scss compiler error: Expanded null selector

   /responsive.scss: Scss compiler error: Expanded null selector

   /style.scss: Scss compiler error: Expanded null selector

   /lib/main.scss: Scss compiler error: Expanded null selector

   While processing files with fourseven:scss (for target web.cordova):
   /packages/poetic_materialize-scss/bower_components/materialize/sass/materialize.scss: Scss compiler error: Expanded null selector

   /responsive.scss: Scss compiler error: Expanded null selector

   /style.scss: Scss compiler error: Expanded null selector

   /lib/main.scss: Scss compiler error: Expanded null selector

=> Your application has errors. Waiting for file change.

Did you try the just released version 3.4.1?

I just saw the same thing on my local machine. Restarting the app made the errors disappear though.

+1 to @SachaG's comment. Restarting the app fixes this.

Okay, since I think the sass compiler is deterministic, this was probably something with the cached files from 3.4.0-beta1 and 3.4.1 not being compatible?


priyanshnama-bio updated

Closing this, can you make a new pr to check if it gets auto merged or not?


Update syscalls

This PR updates most of the syzkaller syscalls definitions for Fuchsia.

Codecov Report

Merging #1116 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1116   +/-   ##
=======================================
  Coverage   67.28%   67.28%
=======================================
  Files         119      119
  Lines       20627    20627
=======================================
  Hits        13879    13879
  Misses       6086     6086
  Partials      662      662

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 995065f...5cce035. Read the comment docs.


sw-precache don't work with css

Hi
The Gulp script is working correctly for me, except for a main.css file.
The project is generated with IONIC 3
sw-precache --root=www --static-file-globs='www/build/main.css'
Skipping static resource "www/build/main.css" (2.3 MB) - max size is 2.1 MB
Total precache size is about 0 B for 0 resources.
www/service-worker.js has been generated with the service worker contents.
Thanks

I'm not sure if I properly understand @irpena, sw-precache is skipping your main.css file because it's too big and that's your problem? If I'm right, then you can change max size for files by maximumFileSizeToCacheInBytes param (in console probably it's maximum-file-size-to-cache-in-bytes).


Crash when you die in xia dimension

https://gist.github.com/Phizzhead/c8a202828effd496293eccd9ff31cca1

whatever mod this is caused the issue, not mine.
xaero.common.settings.ModSettings.getWaypointsFile


Support extending globalWhitelist in vue compiler

What problem does this feature solve?
Vue compiler prefixes all identifiers used in template syntax with this or _ctx except these:
https://github.com/vuejs/vue-next/blob/master/packages/shared/src/globalsWhitelist.ts
Is there a way that we can add some custom globals like window , or __MY_GLOBAL_CONSTANT__ to globals?
If we could, then we can use env variables (or ...) directly and it makes tree-shaking works inside render-tree.
I encountered this problem here
https://github.com/SasanFarrokh/vite-plugin-multi-device#caveats
What does the proposed API look like?
inside vueCompilerOptions add another field to extend the globalsWhitelist like
vueCompilerOptions: {
   globalsWhitelist: ['window', '__DEVICE__']
}

I ran into this trying to use console.log() inside a template. You get an absolutely bizarre-sounding error:
Uncaught TypeError: Cannot read properties of undefined (reading 'log')

Unless you think to disable sourcemap support, you have no idea that it's rewriting console.log to _ctx.console.log, and even then it's not easy to find this issue.


How do I turn on the input length validation

I started using the llama-7b-hf model
 text-generation-launcher --model-id /model --max-concurrent-requests 2000
2023-11-01T13:37:03.610908Z  INFO text_generation_launcher: Args { model_id: "/model", revision: None, validation_workers: 2, sharded: None, num_shard: None, quantize: None, dtype: None, trust_remote_code: false, max_concurrent_requests: 2000, max_best_of: 2, max_stop_sequences: 4, max_top_n_tokens: 5, max_input_length: 1024, max_total_tokens: 2048, waiting_served_ratio: 1.2, max_batch_prefill_tokens: 4096, max_batch_total_tokens: None, max_waiting_tokens: 20, hostname: "d78d81d5e3d3", port: 80, shard_uds_path: "/tmp/text-generation-server", master_addr: "localhost", master_port: 29500, huggingface_hub_cache: Some("/data"), weights_cache_override: None, disable_custom_kernels: false, cuda_memory_fraction: 1.0, rope_scaling: None, rope_factor: None, json_output: false, otlp_endpoint: None, cors_allow_origin: [], watermark_gamma: None, watermark_delta: None, ngrok: false, ngrok_authtoken: None, ngrok_edge: None, env: false }
2023-11-01T13:37:03.611032Z  INFO download: text_generation_launcher: Starting download process.
2023-11-01T13:37:06.118807Z  INFO text_generation_launcher: Files are already present on the host. Skipping download.

2023-11-01T13:37:06.513295Z  INFO download: text_generation_launcher: Successfully downloaded weights.
2023-11-01T13:37:06.513508Z  INFO shard-manager: text_generation_launcher: Starting shard rank=0
2023-11-01T13:37:16.520478Z  INFO shard-manager: text_generation_launcher: Waiting for shard to be ready... rank=0
2023-11-01T13:37:20.835083Z  INFO text_generation_launcher: Server started at unix:///tmp/text-generation-server-0

2023-11-01T13:37:20.923390Z  INFO shard-manager: text_generation_launcher: Shard ready in 14.409453753s rank=0
2023-11-01T13:37:21.021808Z  INFO text_generation_launcher: Starting Webserver
2023-11-01T13:37:21.031369Z  WARN text_generation_router: router/src/main.rs:166: Could not find a fast tokenizer implementation for /model
2023-11-01T13:37:21.031391Z  WARN text_generation_router: router/src/main.rs:169: Rust input length validation and truncation is disabled
2023-11-01T13:37:21.031395Z  WARN text_generation_router: router/src/main.rs:194: no pipeline tag found for model /model
2023-11-01T13:37:21.035113Z  INFO text_generation_router: router/src/main.rs:213: Warming up model
2023-11-01T13:37:23.106609Z  INFO text_generation_router: router/src/main.rs:246: Setting max batch total tokens to 131008
2023-11-01T13:37:23.106625Z  INFO text_generation_router: router/src/main.rs:247: Connected
2023-11-01T13:37:23.106630Z  WARN text_generation_router: router/src/main.rs:252: Invalid hostname, defaulting to <IP_ADDRESS>
2023-11-01T13:37:29.485254Z ERROR generate{parameters=GenerateParameters { best_of: None, temperature: None, repetition_penalty: None, top_k: None, top_p: None, typical_p: None, do_sample: false, max_new_tokens: 1025, return_full_text: None, stop: [], truncate: None, watermark: false, details: false, decoder_input_details: false, seed: None, top_n_tokens: None }}:generate{request=GenerateRequest { inputs: "What is Deep Learning?", parameters: GenerateParameters { best_of: None, temperature: None, repetition_penalty: None, top_k: None, top_p: None, typical_p: None, do_sample: false, max_new_tokens: 1025, return_full_text: None, stop: [], truncate: None, watermark: false, details: false, decoder_input_details: false, seed: None, top_n_tokens: None } }}:generate_stream{request=GenerateRequest { inputs: "What is Deep Learning?", parameters: GenerateParameters { best_of: None, temperature: None, repetition_penalty: None, top_k: None, top_p: None, typical_p: None, do_sample: false, max_new_tokens: 1025, return_full_text: None, stop: [], truncate: None, watermark: false, details: false, decoder_input_details: false, seed: None, top_n_tokens: None } }}: text_generation_router::infer: router/src/infer.rs:111: `max_new_tokens` must be <= 1024. Given: 1025

I'm sure llama has a fast word tokenizer, but I don't know where to turn it on to enable this feature in rust

I fixed it because my pre-trained model was missing the tokenizer.json file and I regenerated it


Upgrading V1 to V2

Hey Richard,
Quick question - can I safely update my project (live) from V1 to V2?
I wouldn't like users to loose all their data.
I reviewed the code and it seems good to go, just wanted to double check this with you.
Thanks for your work.
Cheers
Mike

sorry for the (checks watch 6 months later) late reply!
This should be fine, but if it was my game i would test it anyway


Tulsi for Bazel is no longer maintained and Crashes on start

OS Platform and Distribution
MacOS 13.2.1
Compiler version
No response
Programming Language and version
Python 3.7.9
Installed using virtualenv? pip? Conda?(if python)
pip
MediaPipe version
No response
Bazel version
No response
XCode and Tulsi versions (if iOS)
Xcode 14.3
Android SDK and NDK versions (if android)
No response
Android AAR (if android)
None
OpenCV version (if running on desktop)
No response
Describe the problem
For IOS on a MacOS 13.2.1.
Followed the installation steps to the letter.
Tulsi crashes on start.
Can't create the Xcode project.

Tulsi for Bazel is no longer maintained.
How to use rules_xcodeproj instead?

Complete Logs
After opening tulsi by double clicking on MediaPipe.tulsiproj. The compile button was disabled.
After this, tulsi doesn't even start anymore, crashes immediately.

Hello @SergioRUP,
Please modify the all files under "buildTargets" of MediaPipe.tulsigen of folder MediaPipe.tulsiproj as below:
 "buildTargets" : [
    "@//mediapipe/examples/ios/facedetectioncpu:FaceDetectionCpuApp",
    "@//mediapipe/examples/ios/facedetectiongpu:FaceDetectionGpuApp",
    "@//mediapipe/examples/ios/faceeffect:FaceEffectApp",
    "@//mediapipe/examples/ios/facemeshgpu:FaceMeshGpuApp",
    "@//mediapipe/examples/ios/handdetectiongpu:HandDetectionGpuApp",
    "@//mediapipe/examples/ios/handtrackinggpu:HandTrackingGpuApp",
    "@//mediapipe/examples/ios/helloworld:HelloWorldApp",
    "@//mediapipe/examples/ios/holistictrackinggpu:HolisticTrackingGpuApp",
    "@//mediapipe/examples/ios/iristrackinggpu:IrisTrackingGpuApp",
    "@//mediapipe/examples/ios/objectdetectioncpu:ObjectDetectionCpuApp",
    "@//mediapipe/examples/ios/objectdetectiongpu:ObjectDetectionGpuApp",
    "@//mediapipe/examples/ios/objectdetectiontrackinggpu:ObjectDetectionTrackingGpuApp",
    "//mediapipe/examples/ios/posetrackinggpu:PoseTrackingGpuApp",
    "//mediapipe/examples/ios/selfiesegmentationgpu:SelfieSegmentationGpuApp",
    "//mediapipe/objc:mediapipe_framework_ios"
 ],

This can be issue with Bazel v6, Please let us know if this resolves the issue from your end.

Hello @kuaashish ,
After i add the @ in buildTargets. But tulsi still crashes immediately.
Any other suggestions? Thank you.
My enviroment -
Mac mini M1
MacOS 12.6.3
bazel v6.1.1
Xcode 13.4.1
python 3.7.16

In my case Tulsi's crash was my fault.
In the "Configs" tab the "Generate" button was disabled, I then double clicked on the MediaPipe row and an Open File popup showed up.
Here is where i messed up, I didn't notice this popup was asking for the Bazel binary file, so I opened the MediaPipe.tulsiproj file instead.
After this Tulsi will always crash on launch.
If someone else also made the same mistake, here is how to fix it.

Rename the file MediaPipe.tulsiproj to something else, so Tulsi can't find it.
Run Tulsi, it won't crash anymore.
Open the renamed MediaPipe.tulsiproj file and on the tab "Configs" double click "MediaPipe" again and this time make sure to open the Bazel binary.
(for me it was here "/usr/local/Cellar/bazelisk/1.16.0/bin/bazel", but could also be at "/usr/local/Cellar/bazel/6.1.1/bin/bazel" depending on what was installed)
After this, the Generate button will become enabled

Also, I had to add the "@" like @kuaashish recommended, or it doesn't work.
Still can not compile for IOS though, keep getting errors like "... is unavailable: introduced in iOS 12.0"
Tried several branches, all with similar errors but on different lines of code.
On the branch "Release" this is the error:
`
ERROR: /private/var/tmp/_bazel_sergio/e7e92dbfd0437d119ecd9c8f9cf7a748/external/org_tensorflow/tensorflow/lite/delegates/gpu/common/transformations/BUILD:185:11: Compiling tensorflow/lite/delegates/gpu/common/transformations/make_padding.cc failed: (Exit 1): wrapped_clang_pp failed: error executing command (from target @org_tensorflow//tensorflow/lite/delegates/gpu/common/transformations:make_padding) external/local_config_cc/wrapped_clang_pp '-D_FORTIFY_SOURCE=1' -fstack-protector -fcolor-diagnostics -Wall -Wthread-safety -Wself-assign -fno-omit-frame-pointer -g0 -O2 -DNDEBUG ... (remaining 37 arguments skipped)
Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
external/org_tensorflow/tensorflow/lite/delegates/gpu/common/transformations/make_padding.cc:41:13: error: 'any_cast<const tflite::gpu::ConstTensorAttributesBasetflite::gpu::DataType::FLOAT32 &>' is unavailable: introduced in iOS 12.0
absl::any_cast<const ConstTensorAttributes&>(node.operation.attributes);
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/usr/include/c++/v1/any:607:12: note: 'any_cast<const tflite::gpu::ConstTensorAttributesBasetflite::gpu::DataType::FLOAT32 &>' has been explicitly marked unavailable here
_ValueType any_cast(any const & __v)
^
external/org_tensorflow/tensorflow/lite/delegates/gpu/common/transformations/make_padding.cc:66:19: error: 'any_cast<const tflite::gpu::ConcatAttributes &>' is unavailable: introduced in iOS 12.0
absl::any_cast<const ConcatAttributes&>(node->operation.attributes);
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.4.sdk/usr/include/c++/v1/any:622:12: note: 'any_cast<const tflite::gpu::ConcatAttributes &>' has been explicitly marked unavailable here
_ValueType any_cast(any & __v)
^
2 errors generated.
Error in child process '/usr/bin/xcrun'. 1
Target //mediapipe/examples/ios/handtrackinggpu:HandTrackingGpuApp failed to build
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 8.174s, Critical Path: 3.90s
INFO: 167 processes: 133 internal, 34 darwin-sandbox.
FAILED: Build did NOT complete successfully
`
But this is another issue.
I think this can be closed.
Thanks


API V2 Support

Checklist before merging

[X] I added an appropriate entry to CHANGELOG.md

Closes #426
Closes #427
Closes #429
Closes #430
Closes #431
Closes #432

In single-task creation of a non-parallel task, I see the following error if I include the non-parallel meta JSON file:

Maybe a leftover meta property in the payload, which should rather be meta_non_parallel?

In the single-task addition, let's name the task types as "Non parallel", "Parallel", "Compound" (without "Standalone"):

In the tasks v2 page, how are tasks sorted? It seems to be neither by ID nor by name.

I propose we proceed as for V1 (https://github.com/fractal-analytics-platform/fractal-web/issues/149#issue-1713800874):

Change order of tasks in the /tasks page. Sorting should be according to task.owner (first the ones with null, then the others), then task.name

Job submission endpoint path was changed from
/api/v2/project/1/workflow/1/apply/?dataset_id=1

to
/api/v2/project/1/job/submit?dataset_id=1&workflow_id=1
``

I forgot that the admin-area pages also require the /admin/v2/project/ endpoint, which was recently removed from v2 - and this is what I see now:
INFO:     <IP_ADDRESS>:49048 - "GET /admin/v2/project/ HTTP/1.1" 404 Not Found

We will re-enable it in fractal-server asap.

In the tasks v2 page, how are tasks sorted? It seems to be neither by ID nor by name.

The sorting function was the same as v1. The issue was that by default sorting is case sensitive and uppercase letters are before the lowercase ones, so "MIP" is before "apply" in case sensitive comparison. Made case insensitive both for v1 ans v2.

Within the single-task-creation page, could we forbid providing the same input-type key twice?

(and the same holds for output-type)

A minor glitch while handing an edge case in the single-task-creation page.

Fill the form for a e.g. parallel task, and add a meta file.
Remove the file from disk
Click "Create"

Nothing happens, but the browser console has this error

Again in the single-task-creation page, the keys for the input/output types should never be empty strings.
This is something we will also validate backend-side (ref https://github.com/fractal-analytics-platform/fractal-server/issues/1354), but it doesn't hurt to make it impossible already within the frontend.

In the task-info modal, let's include also meta_parallel and meta_non_parallel - which are currently not shown:

In the dataset/images page, we will frequently hit very long paths. Let's review whether on or both of the behaviors below can be improved (e.g. by wrapping?)

The error in meta when the browser can't read the selected file:

The wrapped text in modal:


About page of Management console of APIM 3.2.0 product is showing APIM 2.6.0 details

Description:
When clicking the "About" page of Management console of APIM 3.2.0, it will show APIM 2.6.0 details as in the screenshot.

I hope this is reproducing other APIM 3.x products.
Steps to reproduce:
Start APIM 3.2.0 pack and log to the management console of APIM. Click "About" page.
Affected Product Version:

APIM 3.2.0
Environment details (with versions):

OS:
Client:
Env (Docker/K8s):

Optional Fields
Related Issues:

Suggested Labels:

Suggested Assignees:

https://github.com/wso2/product-apim/pull/9575


Counters sharable across threads

Currently counters used in memory are non thread safe and rely on the coarse lock at the "root" level of the store.
I don't think we need this to be the case. It'd require a few other changes, but introducing a a new counter would be step one in providing more parallelism to Limitador.
Non Blocking Counter using Atomic operations on u64.
I think we can build a counter that increments a AtomicU64, and uses an expiry date as the "marker" for what thread gets to reset the counter (e.g. CASing the new expiry in place) when its expired.
Some example implementation of this:

const ORDERING: Ordering = Ordering::SeqCst; // This might be overly conservative

pub struct NonBlockingCounter {
    value: AtomicU64,
    expires_at: AtomicU64,
    duration: u64,
}

impl NonBlockingCounter {

    // moved the notion of clock outside, the limit can hold that logic, or we add a `next(&self) -> u64`
    pub fn next_at(&self, at: u64) -> u64 {
        let expiry = self.expires_at.load(ORDERING);
        if at >= expiry {
            // counter expired, resetting
            if self.expires_at.compare_exchange(expiry, at + self.duration, ORDERING, ORDERING).is_ok() {
                // we won resetting the expiry, so now resetting actual counter
                self.value.store(1, ORDERING);
                // return 1 as the new value right away
                return 1;
            }
            // if on the other hand we lost the race resetting the expiry, we just go on to read the counter as if it didn't expire
        }
        // store and return the incremented value
        let previous = self.value.fetch_add(1, ORDERING);
        if previous == u64::MAX {
            // we're rolling over!
        }
        previous + 1
    }
}

Notes on my quick thinking about Ordering: expiry_at accesses should be fine with Ordering::AcqRel (Relaxed on failure), so the resetting of the value. .fetch_add would be fine with Relaxed. Until proven wrong 🤣 That being said, Relaxed is AcqRel on the platforms we're targeting (all strongly-ordered platforms) if I'm not mistaken.

So... building on this, I realize that sometimes you want to decrement the counter. Eg. there are 2 counters for different durations (per second limit and one per minute), so if we evaluate the per minute first and that passes, but the per second fails, we should decrement the former...
So I came up with some logic to do that, that return the expiry of the counter that got incremented and returns the tuple back, so you can "revert" the call with return_to

pub struct ConcurrentCounter {
    value: AtomicU64,
    expires_at: AtomicU64,
    duration: u64,
}

impl ConcurrentCounter {
    pub fn next_at(&self, at: u64, delta: u64) -> (u64, u64) {
        let mut expiry = self.expires_at.load(Ordering::Acquire);
        if at >= expiry {
            let cas = self
                .expires_at
                .compare_exchange(
                    expiry,
                    at + self.duration,
                    Ordering::Release,
                    Ordering::Relaxed,
                );
            if cas.is_ok() {
                self.value.store(delta, Ordering::Release);
                return (delta, cas.ok().unwrap());
            } else {
                expiry = cas.err().unwrap();
            }
        }
        (self.value.fetch_add(delta, Ordering::Relaxed) + delta, expiry)
    }

    pub fn return_to(&self, at: u64, delta: u64) -> bool {
        let nuclear = Ordering::SeqCst;
        // are we still in time to return?
        while at == self.expires_at.load(nuclear) {
            // we are, load the value
            let current = self.value.load(nuclear);
            // can we even subtract that value without rolling over?
            if current > delta {
                // ok, let's try
                if self.value.compare_exchange(current, current - delta, nuclear, nuclear).is_ok() {
                    return true;
                }
                // otherwise... spin. Tho this could spin until the counter expires!
                // might want to just tableflip after a few tries
            } else {
                return false;
            }
        }
        false
    }
}

I think if we order the counters by observed expiry before we increment them tho, we can actually ignore giving the delta back. As the counter that was incremented, will expire (and as such be rest) before the counter that tripped. That being said, by the time we increment the counter, it might have been reset (by some other thread) and might now expire after the counter that tripped. All that to say that some logic on the callsite can decide to not return_to if the expiry returned at next_at invoke is earlier than the one of the counter that tripped at next_at as well.

Seems the concern about counting down (undoing an increment) is related to the first "hit" that crosses a threshold and gets limited, so ensuring that the count never exceed the limit and as it is being denied that it doesn't count against other limits on other time periods, right?
Maybe Egus can confirm how apisonator does it, but I think it might be a transaction on a set of counters (one for each time granularity) if they are all within limits, if not they will all be left as they are?

A related question is the granularity of locks for atomic counting. IMO this might be a tricky one to get "perfect" requiring load tests with specific profiles of traffic stressing many threads, as contention on the locks is what will slow some of them down.
if there is a lock on every counter, and each hit requires incrementing many of them (one for each time period at least? so maybe 7 or more) there will be a lot more unlocking being done that the global one (one per hit?), but much higher parallelism possible if all hits not all hitting the same counters.... so depends on total load, number of cores, number of threads and traffic profile (all same methods, paths and limit being hit, or spread out?) that leads to the level of contention for a given atomic counter.
There maybe optimal "compromise" solutions, with a lock per REST operation that causes updates to a number of different counters.
I think a bench mark (a rust bench, but maybe also a system level benchmark) to know you are actually improving things would be required.....

A more radical solution (that I can't resist commenting) is about the level of consistency we guarantee in the counters and hence the precision of the limits (e.g. in apisonator we have multiple workers in background with eventual consistency and limits can be exceeded by a small amount in some cases before they are updated...vs. 100% precision in enforcing limits via atomic updates)....
If consistency (and hence limit accuracy) could be relaxed you could avoid atomicity altogether and use other methods, including CRDTs that can combine the results of counter modifications happening in parallel.

if there is a lock on every counter, and each hit requires incrementing many of them (one for each time period at least? so maybe 7 or more) there will be a lot more unlocking being done that the global one (one per hit?), but much higher parallelism possible if all hits not all hitting the same counters....

@andrewdavidmackenzie  Are you meaning to say "as compared to today's single lock"? Yes, there is more locking/unlocking going on indeed. but with the proposal above mostly only read locks right? So that's "yet another counter increment", i.e. there is no serializations, these "read" (that do increment the counter) are all in parallel. Only when the expiry hits, some coordination being required because of this whole "giving the increment back"-business and not exposing weird expiry/value pairs. That latter part tho, I think we might be able to get rid of in the "client code" (i.e. not in the counter itself, but in the Limit that checks whether counter.next() > self.threshold). If that's the case then I think we can support "consistency" fairly well… tho there still might be some "races" around limit overlapping not perfectly and counters expiry. But I think no one could ever "prove" those from the outside. What I mean by this, is it would be impossible for someone to actually prove this request wasn't limited because of the "per minute counter" not having yet reset, while underneath it did, but you hit an overlapping "per second" limit.

If consistency (and hence limit accuracy) could be relaxed you could avoid atomicity altogether and use other methods, including CRDTs that can combine the results of counter modifications happening in parallel.

If the previous section turns out to be not entirely wrong, then I think "only paying the price" of eventual consistency when distributed across process is possibly "nicer"? But yeah, having CRDTs that are replicated per thread (whether on a single machine or across the globe) would be another way… and merely changes how eventual things are. I just don't know how the domain is applicable to this all.

I'd need to study the code, and not sure how "sets" of counters (across different time periods) are organized or gathered into sets for incrementing...but here's some rambling thoughts... (this is probably all "premature optimization" BTW).
Wouldn't the optimal be to have a lock on the set of counters associated with a particular operation, say the 8 counters that need to be incremented when a hit matches that operation) (say: second, minute, hour, day, week, month, year, eternity)?
That would be the minimum number of locks/unlocks per hit (1) but allow parallel lock/unlock across operations and hence be better than 1 global lock.
It would require something like:

a set of counters per operation/limit defined
constantly resetting the counters to 0 when they expire.
locking the set to increment them all, unlock without write if overlimits, write and unlock if within limits
e.g. each second the second counter resets to 0.
A "reset timer" every second? Maybe the reset operation could be done without a lock (atomic write of 0 in one machine word)?

In the limit, you could have two requests that both read the counters within limits (-1), and decide to go ahead and increment...one gets a lock the other blocks on it, then first writes and unlocks, then second gets lock and writes?

@andrewdavidmackenzie no, this isn't a read-modify-store issue. The counters use atomic operations. Leaving aside how that's implemented on different architecture… Now it does become a read-modify-store issue on returning the value. While we can make it so the counter remains consistent at all time, there is a chance for someone to use the incremented value before it was returned indeed. Now we're talking at worst one second before it expires and how that interact with other counters, well is up for definition… which leads to the next part:

Wouldn't the optimal be to have a lock on the set of counters associated with a particular operation, say the 8 counters that need to be incremented when a hit matches that operation) (say: second, minute, hour, day, week, month, year, eternity)?

Yes… that's optimal indeed. There a few things that we could infer from that. If we say that a minute counter always perfectly aligns with the equivalent per second counter, then we don't ever need to give the value back to a monotonically incrementing counter. But does not need to be the case sadly...
So ideally we'd synchronize access around the set of limits applicable to a request… now I think that becomes hard to know (eventually impossible maybe even, P vs NP), because of the conditions I think. There could be complex enough cases where we can't possibly predict all sets and as such "create" the right set of RwLock to use. Now there would not need to perfect… just complete. And so that there is never a request using some unrelated Lock while another do. Tho even there again, if all is implemented to be thread safe irrespectively of the lock, but the lock "only" enabling the coordination when "returning" a value to the counter we might be good?!

See #37

Marking as closed, as bunch of that work happened... and while we can probably take this a lot lot further, I think we can safely park that work for now and come back with something more concrete later


Provide unlimited abstract length option

It is useful to provide an option for users who want to publish the whole article, to be read directly on rss readers.

Set default option for abstract_chars_count to None
Returns full text when abstract_chars_count is None
Change on_page_markdown to on_page_content to retrieve final html content for rss description

Thanks for your proposal.

It is useful to provide an option for users who want to publish the whole article, to be read directly on rss readers.

Agreed!

Set default option for abstract_chars_count to None

I prefer to keep it as an option to avoid a breaking change for existing installations.

Returns full text when abstract_chars_count is None

Good move. Maybe when abstract_chars_count==-1, also to avoid a breaking change for existing installations.

Change on_page_markdown to on_page_content to retrieve final html content for rss description

Are you totally sure thath it's not breaking something? If you take the full content, it's ok and easy-to-go. But if you specify a length, you'll need to manage a valid truncated HTML and it's not so simple.
Regarding failing tests, it's on mkdocs-minify-plugin --> jsmin side. I'm monitoring the upstream PR.

Maybe when abstract_chars_count==-1, also to avoid a breaking change for existing installations.

Agreed. I will update shortly.

But if you specify a length, you'll need to manage a valid truncated HTML and it's not so simple.

In my pr, if the length is specified, the Markdown string, instead of HTML, will be used (which is the same as before, as on_page_markdown will not provide html string at all), so it should be fine.

In my pr, if the length is specified, the Markdown string, instead of HTML, will be used (which is the same as before, as on_page_markdown will not provide html string at all), so it should be fine.

Great. I'll give it a closer look in the next days.
In the meanwhile, could you include the documentation update please?
And check if you follow the contributing guidelines. Thanks!

The docs have been updated.

Hi @liang2kl,
I've just reviewed it deeper and I've got two concerns:

the output HTML should be included into a CDATA section since HTML into XML is not a straight forward thing (see: https://www.w3schools.com/XML/dom_cdatasection.asp), no?
the embedded HTML is not valid because main tags are missing: . Is that the behavior you want?

I don't have much understanding about the standards, but it seems that in your previous implementation, you deal it with the same way, generating html content without head tag, etc. and just embedding the html into xml?

Now deployed as part of the version 0.18.0:

release: https://github.com/Guts/mkdocs-rss-plugin/releases/tag/0.18.0
changelog: https://github.com/Guts/mkdocs-rss-plugin/blob/main/CHANGELOG.md#0180---2021-09-20


reset

hi. i would like reset clear but i have bug. i try it.
compartments is array with all ids
compartments.forEach(function(element) {
$(input[data-id="${element}"]).prop('checked',false);
});
compartments = new Array();
$('#form_compartments').val('');
bug keep in memory the choice
thanks

Select All and Deselect All functions will be added, soon.

You can user clearSelection method. Thanks...


develop: Rare I get a Fatal Error on Login

I got this on the first attempt to login. A repeated Login succeeded.
In this case I had the credentials not for the server stored.
But I can't reproduce this.
Fatal error in MSS 8.3.0 on Linux-6.2.0-10018-tuxedo-x86_64-with-glibc2.35
Python 3.10.8 | packaged by conda-forge | (main, Nov 22 2022, 08:23:14) [GCC 10.4.0]

Please report bugs in MSS to https://github.com/Open-MSS/MSS

Information about the fatal error:

Traceback (most recent call last):
  File "/home/reimar/MAIN/MSS/mslib/msui/mscolab.py", line 326, in login_handler
    self.save_user_credentials_to_config_file(data["email"], data["password"])
  File "/home/reimar/MAIN/MSS/mslib/msui/mscolab.py", line 331, in save_user_credentials_to_config_file
    save_password_to_keyring(service_name=self.mscolab_server_url, username=emailid, password=password)
  File "/home/reimar/MAIN/MSS/mslib/utils/auth.py", line 89, in save_password_to_keyring
    keyring.set_password(service_name=service_name, username=username, password=password)
  File "/home/reimar/mambaforge/envs/mssdev/lib/python3.10/site-packages/keyring/core.py", line 61, in set_password
    get_keyring().set_password(service_name, username, password)
  File "/home/reimar/mambaforge/envs/mssdev/lib/python3.10/site-packages/keyring/backends/SecretService.py", line 91, in set_password
    collection.create_item(label, attributes, password, replace=True)
  File "/home/reimar/mambaforge/envs/mssdev/lib/python3.10/site-packages/secretstorage/collection.py", line 118, in create_item
    self.session = open_session(self.connection)
  File "/home/reimar/mambaforge/envs/mssdev/lib/python3.10/site-packages/secretstorage/util.py", line 80, in open_session
    output, result = service.call(
  File "/home/reimar/mambaforge/envs/mssdev/lib/python3.10/site-packages/secretstorage/util.py", line 63, in call
    return self.send_and_get_reply(msg)
  File "/home/reimar/mambaforge/envs/mssdev/lib/python3.10/site-packages/secretstorage/util.py", line 48, in send_and_get_reply
    raise DBusErrorResponse(resp_msg)
jeepney.wrappers.DBusErrorResponse: [org.freedesktop.DBus.Error.InvalidArgs] ('Client public key size is invalid',)

solved in 9.0

Duplicate of #1946


[WIP] Dev

[ ] AT
[ ] Upload newest maven to all platforms

Error on ATs when buildworker uses this buildpack version:
⇒ python tests.py -v2 tests.test_buildpacks.JavaJettyTestCase.test_deploy_app_java6
...
       [INFO] ------------------------------------------------------------------------
       [INFO] BUILD FAILURE
       [INFO] ------------------------------------------------------------------------
       [INFO] Total time: 33.470 s
       [INFO] Finished at: 2015-03-06T11:41:08+00:00
       [INFO] Final Memory: 16M/56M
       [INFO] ------------------------------------------------------------------------
       [ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.4:copy-dependencies (copy-dependencies) on project jetty-maven: Execution copy-dependencies of goal org.apache.maven.plugins:maven-dependency-plugin:2.4:copy-dependencies failed: Plugin org.apache.maven.plugins:maven-dependency-plugin:2.4 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-dependency-plugin:jar:2.4 -> org.codehaus.plexus:plexus-io:jar:2.0.1: Failed to read artifact descriptor for org.codehaus.plexus:plexus-io:jar:2.0.1: Could not transfer artifact org.codehaus.plexus:plexus-io:pom:2.0.1 from/to central (https://repo.maven.apache.org/maven2): Bad address -> [Help 1]
       [ERROR]
       [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
       [ERROR] Re-run Maven using the -X switch to enable full debug logging.
       [ERROR]
       [ERROR] For more information about the errors and possible solutions, please read the following articles:
       [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
 !     Failed to build app with Maven
 !     cloudControl push rejected, failed to compile java app
 !
remote: checking user permission for testdeployappjava694319855 default ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9pZj+tAnlTDB3A5DYsF+rRhPmTN2Y9qnqrZVC988OvOt5LuXabBqDZ6s6bQrIjJcdcVJTF6jG13ZTrcQlz4yVCYt0V/hlRA4d5+spULjcY7wufwpo6gRxgNmqelqnHcO7L9ittAFhheCwtCEhgzTuj+4msAa/Xifzel0i4F/6q//oNLJ1NMKCdPbtOQVPrRFj+eu98CNmI+6uJQu3tRNnS4gvJMC45zDmFbv4tKkT2HT+mCAkqaXGPBDcwjJwGd0rJa0NzS8QXxu2P27fQFwH8gmStFxQU2sIKNcktmL+R06Kw+KVusz4e3wRaI6kt2mBO9ROcA2V2vS+SpcgMziF
remote: error: hook declined to update refs/heads/master
To<EMAIL_ADDRESS> ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to<EMAIL_ADDRESS>

@fern4lvarez yes, looks like some incompatibility between maven 3.2.5 and java1.6


@conda-forge-admin, please add user @username

Additional comment:
Maintainer seems unresponsive, see https://github.com/conda-forge/cif2cell-feedstock/pull/7

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I added user @username in conda-forge/cif2cell-feedstock#9.


possible memory leak in the future if we switch to a multithreaded ztpd

I noticed that if ztpd_run() returns a negative error code then nothing will be deinitialized before the main() function exits. Currently ztpd is all single-threaded, so this isn't an issue, as when the process exits all memory the process used will be released by the kernel. However, if in the future someone decides to add multi-threaded or multi-process capabilities to ztpd this will result in a possible memory leak. I thought I'd make note of this here just in case that happens.

Good find. It looks like the fix should be pretty easy: remove the return statement and perhaps cache the ztpd_run() return value to be returned from main().