[Re-Design Amqp Connection Recovery] 'ReactorConnectionCache' replacement for 'AmqpChannelProcessor'

Introducing  a new type 'ReactorConnectionCache' to simplify the "Connection" recovery design in messaging libraries. Currently, an "in-house built Reactor operator", "AmqpChannelProcessor" (ACP), is responsible for connection recovery. An alternate design is proposed to replace "AmqpChannelProcessor".
The reason for us rolling out ACP was - there wasn't an equivalent standard Reactor operator back in 2020. In mid-2021, Reactor added the new 'cacheInvalidate*' operator(s), and the new design takes advantage of this operator.
The write-up gives an overview of the existing "AmqpChannelProcessor" design with an example to demonstrate current challenges and how the new design addresses those.
The recovery design in AmqpChannelProcessor (Old)
Below is a snapshot of the system when "AmqpChannelProcessor" currently holds a ReactorConnection "C1". The system is already in a state where C1 has a Session "session1", and there is a link "s1_link1" in that session.
We're interested in the signal flow associated with the closure of the current connection (i.e., C1) and how the various components react to it.
The numbered green circles shows in what order the signals flow and hence in what order the components react.
Let's assume there is no thread-hopping anywhere in the signal flow, I.e., We're assuming the signal flow is serial. (In reality, thread-hopping is there. We'll talk about it in a short).

In the diagram, there are two subscriptions (CES1, CES2) to the connection's (C1) state (Flux<CEndpointState>).
Upon the closure of C1, the first subscription CES1 runs, leading to the closing of each session and links under sessions.
Focusing on one link s1_link1 - When the associated "AmqpReceiveLinkProcessor" (ARLP) sees this link as completed, ARLP attempts to obtain a new link (under a new session), which leads to flow number 3 - going back to the "AmqpChannelProcessor" to acquire a connection to host new link. As we can see, the cache still has C1 (in the closed state). The cache refresh happens once the subscription  CES2 runs (flow number 5), but CES1 needs to complete for the next subscription CES2 to run; the stack trace is still nested under CES1 execution.
With C1 being the current connection, there will be an attempt to create a new link on C1. Since C1 is already in a shutdown state, the shutdown-signal replays and the new session/link object are locally disposed of immediately. If ARLP retries, the same cycle repeats (C1-shutdown-replay -> session/link disposal). The details of "C1-shutdown-replay -> session/link disposal" is involved, if you are interested, expand below "shutdown-replay" section.

shutdown-replay

The connection C1 has the terminal shutdown-signal cached, which immediately notifies the terminal state to any future subscriber(s).
When ARLP runs flow number 3, it gets the cached C1 (in the closed state).
Execution attempt to create a new Amqp Link by invoking createReceiveLink(..) on C1.
The createReceiveLink(..) attempts to obtain a session by calling createSession(..) on C1.
The createSession(..) API proceeds to create a ReactorSession object, say session_x.
The createSession(..) attaches a subscriber to session_x's endpoint states and awaits for it to active.
Inside the constructor of the session_x, C1's shutdown-signal replays, calling this.closeAsync(..) [i.e., session_x.closeAsync(..)], which marks session_x as closed and closes the session handler.
The closing of the session handler emits terminal completion to session_x's endpoint states.
Due to step 8, the subscriber in step 6 completes.
The closed session, session_x, resumes the createReceiveLink(..) in step 3.
Next, createConsumer(..) is invoked on session_x. Since session_x is in closed state the invocation emits the AmqpException(true, "Cannot create receive link from a closed session")
ARLP gets this retriable AmqpException and retries.

Now the question is how CES2 in ACP currently manages to run so that ARLP eventually gets a working link on the new connection, say on C2? the answer is - there is a thread switch in ARLP (see the circle with T); causing CES1 to return and CES2 to run. Meaning CES2 runs on the original thread, while the recovery attempt in ARLP runs in a different thread (bounded-elastic).
The problems

We can see that we are relying on thread switching and hoping that at one point, the execution of CES2 will complete and obtain a new connection (C2). The repeated link recovery attempt eventually gets C2 to host a new link, which is a waste of CPU cycles. We create Session, SessionHandler, and other POJO types just to dispose of them immediately (allocation). The logs can get noisey.

The flow gets more complex when there are multiple links (s1_link1, s1_link2, etc.) with associated ARLPs, all trying to recover concurrently. The ACP must manage all those concurrent subscriptions and use "synchronized" (locks) blocks. It has to hold the lock when calling into external codes to deliver the connection to subscribers. Though we haven't seen any issues yet, the pattern of holding-lock-when-calling-external-code is not recommended. Additionally, Lock based synchronization is needed in multiple places - onNext, onError, onComplete.

Another (known) issue is the ACP emits a connection without waiting for it to become active, which means subscribers get a connection that is yet to be active or useful.

The recovery design in ReactorConnectionCache (New)
The new type replacing "AmqpChannelProcessor" ("in-house built Reactor operator") is named "ReactorConnectionCache".
This version uses a "standard Reactor Operator" called "CacheInvalidateIf"; it has an internal cache. Invalidating its cache is accomplished by providing a predicate.
Today, when a connection is closed, we first mark itself as closed, then broadcast the shutdown signal for sessions (and links). The "ReactorConnectionCache" uses the "CacheInvalidateIf" with an invalidate condition that checks if the close flag of the connection is set. It means when ARLP reaches out to "ReactorConnectionCache" with a subscription for the connection, the predicate runs and sees the current connection as closed, which leads to obtaining a new connection.
The snapshot of the system with the new type looks like below. Unlike the earlier snapshot diagram, we can see there is no longer CES2.
Note: In the below image, 'RecoverableReactorConnection' type is the same as the 'ReactorConnectionCache' type; it was the initial name for the cache.

We can also see how this apporach avoid the need for different thread based retries to recover the link.
The "CacheInvalidateIf" operator also has to manage subscribers underneath; but unlike ACP, the operator won't use locks but uses a lock-less CAS loop to manage subscribers, so no locks are held when emitting the connection to external code (downstream).
Suppose the cache is invalid and multiple subscribers (each requesting Connection) arrive concurrently, in that case, the operator guarantees those concurrent Connection requests are translated to a single Connection request to the connection supplier. Once it receives a Connection and is "active", the (concurrent) subscribers (on the waitlist) are notified of that Connection.
The "AmqpChannelProcessor" does retry directly using Mono.delay operator, so ACP has to manage the timer subscription. The "ReactorConnectionCache" uses the "RetryWhen" operator, so timer subscription management is delegated to the Reactor library.
Lastly, while "AmqpChannelProcessor" uses a Flux-based upstream connection provider (Flux<ReactorConnection>), "ReactorConnectionCache" uses a Supplier<ReactorConnection> based Mono as the connection provider, so less allocation.

Released beta for all messaging libs using the commits in the linked pr implementing the design described in this ticket
azure-core-amqp-2.9.0-beta.1
azure-messaging-eventhubs-5.16.0-beta.1
azure-messaging-eventhubs-checkpointstore-blob-1.17.0-beta.1
azure-messaging-servicebus-7.14.0-beta.1


'QCoreApplication' has not been declared

Hi tetsurom.
I'm trying to use rxqt for my plain widget UI Qt project.
I wrote the code like below that and I got error like subject.
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <rxqt.hpp>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    rxqt::run_loop rxqt_run_loop;
    w.show();

    return a.exec();
}

mainwindow.cpp
...
#include <rxqt.hpp>

using namespace std::chrono;

namespace Rx {
    using namespace rxcpp;
    using namespace rxcpp::sources;
    using namespace rxcpp::operators;
    using namespace rxcpp::util;
}
...

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ...
    auto scene = new BlueprintScene(ui->graphicsView);
    ui->graphicsView->setScene(scene);
}

blueprintscene.cpp
...
#include <rxqt.hpp>

I compiled it with only headers in blueprintscene.cpp and got the following error message:

In file included from ..\rxqt\include/rxqt.hpp:7:0,
from ..\blueprintscene.cpp:8:
In member function 'void rxqt::run_loop::on_earlier_wakeup(int)'
C:\workspace\ocube\ComponentStudio\rxqt\include\rxqt_run_loop.hpp:73: error: 'QCoreApplication' has not been declared
QCoreApplication::postEvent(this, new on_earlier_wakeup_event(this, msec));
^~~~~~~~~~~~~~~~

And if I add #include <QApplication> to blueprintscene.cpp than problem is solved.
Is it normal?
Thank you for the your great library ;D

Hi @kehyoung
Thank you for reporting, it is probably caused by lack of include.
I have added one include c80519a1d5bb4a39b0bf7e640cefb696f2212179 so could you please check it?

It works like a charm!
Thank you!! 😄


Updated keybindings: they are now changeable.

I tried to imitate this:
https://dota2.fandom.com/wiki/Hotkeys?file=Settings_hotkeys_basic_blank.png
The user can now change the keybindings at runtime.
When the key is already used, the user will receive an exeption text.
I don't know for sure, but to my knowledge, we don't have a preferences file, to safe the changed keys, so the changes only last for a session.

@lilSander Please review my changes.

Because I made so many changes as a reviewer, it would be good if someone else (maybe @falko17) could take a fresh look, to make sure my changes are reviewed by an indendent reviewer, too.

The replacement as a record for KeyActionDescriptor does not work. Keyboard input is ignored. Visual Studio complains that parameter/record field KeyCode is unused.

Alright, I'll try out later what's going wrong here locally. To not hold up the merge any longer, we should just merge with the original class version, I think.


Upgrade Zookeeper Operator default version to 0.2.5

Describe your changes
Making the version of the example zookeeper operator and the default zookeeper version the same.

@timterle is there anywhere else we need to update?

@HoustonPutman There is a dependency in go.mod and go.sum on v0.2.5-rc0, maybe that should be changed as well? Otherwise I think this is enough, although I haven't built and tested this to confirm.
I have tested changing from emccorp/zookeeper to pravega/zookeeper by overriding the image in the config and it works when I run a simple deployment in Amazon EKS. But when I try a simple example in "Docker for Mac" this change causes the second zookeeper pod never to come up successfully. It exits with an error "java.lang.RuntimeException: My id 2 not in the peer list"

Definitely need this. We ran into a lot of issues HA testing out zk-operator with emccorp/zookeeper only to then find out it shouldn't be used according to reading through issue tracker on pravega/zookeeper-operator

I'm going to do some testing with this tomorrow, and see if I can get this merged.

Looks like v0.2.6, which uses gomodules. Might as well see if that one works too, keep this as up to date as possible.

@timterle as a bonus with v0.2.6, you will be able to use the ExternalDNS with your zookeeper ensemble as well. https://github.com/pravega/zookeeper-operator/releases/tag/v0.2.6-rc0

@timterle I have tested this on docker-for-mac and it works well for me, including scaling up and down the zookeeper cluster through the solrcloud CRD


Anonymous text nodes are missing after changing innerHTML of a node with a ref

Do you want to request a feature or report a bug?
bug
What is the current behaviour?
I'm trying to manually change innerHTML of a node with ref. The new html contains anonymous text nodes. And after rerender, the nodes are missing in the new DOM tree.
If the current behaviour is a bug, please provide the steps to reproduce.
See an example https://jsfiddle.net/7v9nr23q/6 (click on the button).
The example works fine in React.
What is the expected behaviour?
The nodes should be in the new DOM tree.
Please mention other relevant information.

Preact version: 8.3.0
Operating system: Mac OS 11
Browser: any

Seems like the bug is caused by the lines https://github.com/developit/preact/blob/master/src/vdom/diff.js#L263-L266
If I add a check for filtering out text nodes (nodeType == 3) all work as expected.

If you do want to control the innerHTML outside of (p)react it's probably not a good idea to abuse ref's for that. They are meant to be used for readonly access like measuring with getBoundingClientRect. The property dangerouslySetInnerHTML is what you are looking for to manually mutate the DOM. This has the benefit that you don't have to do change detection yourself.
With that in mind your fiddle can be rewritten and shortened to:
/* @jsx h */
const { Component, h, render } = preact

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      content: null
    }
    this.changeContent = this.changeContent.bind(this)
  }

  changeContent() {
    this.setState({
      content: 'test1
test2
test3'
    })
  }

  render() {
    return (

        <button onClick={this.changeContent}>Change content</button>

    );
  }
}

render(<App />, document.querySelector("#app"))

I know about dangerouslySetInnerHTML. But I specifically want to use the described method for performance reasons (dangerouslySetInnerHTML will set innerHTML on each props or state change of the component even if the html was not changed). And this method works in React but not in Preact (even with preact-compat). So I think this is a bug.

@Panya if your main goal is performance you can skip the setState call via a simple if-statement. See this codesandbox: https://codesandbox.io/s/0vl6y67xv
const next = "test1
test2
test3";

// Check if state has changed
if (this.state.content !== next) {
  this.setState({ content: next });
}

Note we currently do not support returning null from setState like react does.

Yep, but I have a lot another props and state that changes in the component too. I could use shouldComponentUpdate but the check inside the method will be more complex, so I prefer updating the html in componentWillUpdate. It's sad that preact with preact-compat doesn't match react behaviour in this case.

To be honest I think it's more of a bug on react's side that they allow this. Their docs actively discourage doing heavy things via refs https://reactjs.org/docs/refs-and-the-dom.html .
Perhaps a more cleaner way would be to abstract the innerHTML stuff into a custom components that does the change detection of it's prop changes

@Panya you can avoid preact setting innerHTML on every render by reusing the same object:
render(props, state) {
  if (!this.html || this.html.__html !== state.html) {
    // this lets us pass the same object to dangerouslySetInnerHTML when HTML hasn't changed:
    this.html = { __html: state.html };
  }
  return

}

@developit yep, I've managed to do exactly the same. Thanks for taking your time on the issue. I love Preact :)


Add a way to select the network interface to be used by a pot

Currently, all the pots are using/referring the network interface defined in the configuration file for the whole framework. It would be nice to have a way to specify different interfaces, in case a pot has to work only on specific vlan, for instance
It could be possible to have an additional option to specify a network card that's different from the default one.

Implemented in release 0.11.0


Regroup "similar" flags/options in the help prompt

 Issue by MrrRaph
Thursday Aug 26, 2021 at 12:49 GMT
Originally opened as https://github.com/clap-rs/clap/issues/2739

Please complete the following tasks

[X] I have searched the discussions
[X] I have searched the existing issues

Clap Version
3.0.0-beta.2
Describe your use case
Hi everyone,
I just suggest to add a simple feature about the display of the help prompt to regroup flags/options that seem to us "similar" and to simplify the help prompt in order to reduce its length and be more compact.
The function should regroup args and be visualized:
Like this:
--PS/PA/PU/PY <portlist>: help message

Instead of:
--PS <portlist> : same help message
--PA <portlist> : same help message
--PU <portlist> : same help message
--PY <portlist>  : same help message

Describe the solution you'd like
It could be nice to have a function like this:
impl<'help> App<'help>
pub fn help_regroup<T: Key>(mut self, arg_id: T, args: &[T], help_message: &str) -> Self

And be used like this:
app
     .arg(Arg::new("PA"))
     .arg(Arg::new("PU"))
     .arg(Arg::new("PY"))
     ...
     .help_regroup("PA", &["PU", "PY"], "Unique Help Message")

OUTPUT:
PA/PU/PY <value_name>: unique_help_message

### Alternatives, if applicable

_No response_

### Additional Context

_No response_

 Comment by epage
Thursday Aug 26, 2021 at 13:40 GMT

To help understand the use case, how are the flags different if they have the same help message?  Or is the flag name meant to be context enough to clarify, like a command dealing with semver versions have --major, --minor, --patch` flags?

 Comment by MrrRaph
Thursday Aug 26, 2021 at 13:42 GMT

I mean by the same/unique help message including "or ..." in it like:
... : "Major or Minor or Patch.."
I'm building an app with Clap and I'm facing with this kind of "help duplicates" that could be nicer if more compact:
HOST DISCOVERY:
        --sL                                 List Scan - simply list targets to scan
        --sn                                 Ping Scan - disable port scan
        --Pn                                 Treat all hosts as online -- skip host discovery
        --PS <portlist>                      TCP SYN discovery to given ports
        --PA <portlist>                      TCP ACK discovery to given ports
        --PU <portlist>                      UDP discovery to given ports
        --PY <portlist>                      SCTP discovery to given ports

What It Should Be:
HOST DISCOVERY:
        --sL                                 List Scan - simply list targets to scan
        --sn                                 Ping Scan - disable port scan
        --Pn                                 Treat all hosts as online -- skip host discovery
        --PS/PA/PU/PY <portlist>             TCP SYN/ACK, UDP and SCTP discovery to given ports


analytics: label geolocation events with region type

Trello - Labels the click events on GeoCards by region type instead of by region name to make it easier to compare county vs. metro areas.

 Track clicks on geolocated county vs geolocated metro on homepage to gauge metro interest.

 Add 'receive alerts' button events on location pages


Scan which of GBSB domains are protected by Cloudflare.

I found at least 2 Russian sites that have Performance & security provided by Cloudflare.
How easy will be to scan domain list sites to check which of them are protected by Cloudflare or any other non-Russian security companies?
It will be good  to start a campaign requesting Cloudflare to  stop supporting particular sites. It will be good to convince them to block more sites or prove that target  sites are tied to sanctions, including those related to Russian financial institutions or Russian influence companies.
Their current policy of  Cloudflare is to comply with official government sanctions.
https://blog.cloudflare.com/steps-taken-around-cloudflares-services-in-ukraine-belarus-and-russia/
The particular sites that I found are https://nangs.org/directory/oil-and-gas-companies
and http://kraskript.com/ ( both were considered as valid targets by IT Army of Ukraine)

Scanning for Cloudflare protected sites is an Easy Task, but for other Anti-DDOS platforms... It may be impossible without the use of specialized tools. And by "Easy Task," I mean simple but time-consuming, because we typically use Full-report data gathering tools when determining whether a website is using Cloudflare (Basically means that we are gathering much information than we should, individually.). I have a developer friend who can make us a nice Bulk Cloudflare (or other DDOS Protection service) checker, but I'm not sure if he'll be able to help us right now. Or we can just take the BASIC SCAN code from the REDHAWK repository (MIT License BTW) and try to make a decent bulk Cloudflare checker.
It would be extremely helpful if you knew someone who could create or have a quick checker to see if a website uses Cloudflare. Thank you for the suggestion @MNF !

Might this help?
https://checkforcloudflare.selesti.com/

Another cloudflare protected site is  https://yuginform.online/ created for Russian occupation of Ukraine.
Mentioned on https://www.bbc.com/russian/features-61257099, confirmed by https://checkforcloudflare.selesti.com/.
I’ve twitted “Shame on you” to @cloudflare

Yes, my bad for late actions.  Nonetheless, we will continue the development as soon as we can...
Update: We recently discovered [ Thanks to IO ] that determining which sites are protected by Cloudflare is as simple as querying the host and seeing if they return IP addresses similar to this LIST. Compiling the list as soon as we can.

I can write an utility to match target domain list against Cloudflare IP ranges LIST.

That would be greatly appreciated, my bad for late reply.... We are fixing each of our Mail servers and opening new Projects against the Kremlin censorship. Looking forward on maintaining this repository again soon!

Automatically Closed, see Archival Notice.


feat(tailscale): custom admin console url

Description

Fix #12048
adds a preference to set a custom admin console url for people who use a self-hosted tailscale, eg headscale
Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Thanks a lot @erics118  !!!


excel generation is slow

Many steps are slow when we include all checklost/extension combinations in the schema, but the excel generation is probably the worst.
I am limiting the number of combinations with the --combo-environments and --combo-checklists flags on write-mixs-linkml in the project.Makefile
I think omitting any --combo-environments or --combo-checklists  options constructs combination from all extensions
We should be able to generate sheets for all checklists, extensions and combinations in at most the 6 hours allocated for a GH action job. Preferably in less than an hour so that people can run it locally.
Note that a gen-excel step is included in the project.Makefile but is not included in make-all at this time

see also

https://github.com/linkml/linkml/issues/1090

may be faster now due to one-workbook per class. keep monitoring.


Minor license fixes

No JIRA required

@darranl These are commits from a downstream prod branch to sync the repositories. To be completely honest I just don't want more paperwork, but if it's required we can do it.

@jamezp @darranl I'm ok with letting these changes go without a JIRA issue as they deal with cleanup of licenses (removing some, adding others, sorting them) and do no touch codebase.


Upgrade the Composer Version

We're currently using version 1.9.0 of composer. We should upgrade to at least 1.9.3 to avoid deprecation warnings sent by Github:
https://github.com/composer/composer/releases/tag/1.9.3
It looks like we have until November 13, 2020 to make the upgrade:
https://developer.github.com/changes/2020-02-10-deprecating-auth-through-query-param/

@lmakarov will it be part of 1.4?

Updated in #181


GoogleDrive 404

Hello,
unfortunately the Google Drive with the Training Checkpoints isnt available anymore. Could you please reup or update the link?
Thank you very much

The Google Drive (G Suite) account I used to store data was disabled by Google. I'm trying to restore the account, otherwise, I will re-upload the data again to a new Google Drive within a few days.

@Skyy93 The Google Drive account is back online and working now.


luci-mod-network: Add more comprehensive help text for odhcpd IPv6 parameters, plus introduced RA + NDP options to GUI.

For discussion, refer to forum thread
Also added some RA parameters for increased GUI based configuration flexibility and help-text.
Until now, some of the IPv6 settings are mysterious or cryptic. They are now
clarified, having referred to odhcpd README and source.
The information is accessible to IPv6 beginners.
Signed-off-by: Paul Dee<EMAIL_ADDRESS>

Core changes in file:
modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
Hope I got everything right. I think I ran these correctly after edits, according to the instructions:
./build/mkbasepot.sh
./build/i18n-update.pl

Hope I got everything right.

Some of the translation refreshes seem strange.
For example,  thousands of double-// are added for some reason, like here:
- #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:29
+ #: modules/luci-mod-system//htdocs/luci-static/resources/view/system/crontab.js:29

Core changes in file:

Might be better, if

there is one commit about your actual changes, and
you do not do the translations updates at all, if you are only trying to do the automatic refresh/sync without correcting the existing translations that you break.

The PR and commit title is wrong, as you are actually

adding/exposing lots of IPv6 related options to LuCI
changing existing options' explanations

It might be even more clear, if you do two separate commits about those two things.  (and do not touch the translations at all)

Hope I got everything right.

Some of the translation refreshes seem strange.
For example, thousands of double-// are added for some reason, like here:
- #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:29
+ #: modules/luci-mod-system//htdocs/luci-static/resources/view/system/crontab.js:29

I agree, I thought the path thing strange also - I ran the scripts on macOS - and with or without parameters, it adds the double /

Those erroneous strings will be removed in the update.
Better if you leave the translations to .pot and .po  aside.

OK - cleaned it up - but I don't think it is worth it to make separate PRs. Does this look better?

Ah, sorry, commits - I read that as PR 😆 I'll see what I can wrestle out of git....

Please change all
 to
 to make the translation strings XHTML compliant.

Please change all
 to
 to make the translation strings XHTML compliant.
Another remark:
Instead of formatting the text with
 Elements, it might make sense to use actual
 Lists for enumerations of select box choice descriptions.

Good tip.
OK - all clear, I think.

Also split into 2 commits - one adding help-text to present options, one adding new options with help-text.

For the record, and those interested - looks roughly like this:

It is ok to have those new detailed options there, but the page looks somewhat cluttered. The important main options are now scattered among the minor options that the user usually does not need to touch.
It might be better to group the (old) main options to the top, and then place the RA detail options and NDP detail options etc. to the bottom of the page.
Ps. you should also edit the commit titles. Now there is only the "luci-mod-network:" on both commits without any other content except the module name.
Commits might be "luci-mod-network: add new IPv6 options"  and "luci-mod-network: clarify IPv6 option explanations", or something like that.

It is ok to have those new detailed options there, but the page looks somewhat cluttered. The important main options are now scattered among the minor options that the user usually does not need to touch.
It might be better to group the (old) main options to the top, and then place the RA detail options and NDP detail options etc. to the bottom of the page.

I tried it that way - and the 'grouping' disappears. Grouping helps provide strong cohesion and context. Scattering options lower down which appear only when an option higher up is selected makes for confusing options.
The beginner will find this grouping less intimidating, and the advanced IPv6 user will understand what changed.

Ps. you should also edit the commit titles. Now there is only the "luci-mod-network:" on both commits without any other content except the module name.
Commits might be "luci-mod-network: add new IPv6 options" and "luci-mod-network: clarify IPv6 option explanations", or something like that.

Agreed - I'll try and fix those.

Slightly re-ordered. See updated screens above.

Will we merge in time for 21.02 ?

21.02 has been branched off from master already in mid-February...
(it might be backported, but by default, no it is not going to hit 21.02)

I still think that the not-usual RA details are too prominent.
But we can merge this now to master, and tweak it later.

OK!

(it might be backported, but by default, no it is not going to hit 21.02)

I think it'd be helpful for many were it back-ported/picked, and not miss another generation of releases. 😢

I still think that the not-usual RA details are too prominent.
But we can merge this now to master, and tweak it later.

Perhaps for your case - but RA details were added to odhcpd because they were deemed necessary. I guess it's a matter of opinion and necessity for those who need to tweak them, so when they are grouped, they are relevant.
Well, it's been a learning curve 😄


Fuzzer: Make the logs more readable

Commit Message: Transform stream state enums to string and provide direction (request / response) so fuzz logs are more readable.
Additional Description:
Risk Level: low
Testing:
Docs Changes: na
Release Notes: na
Platform Specific Features: na

/assign @adisuissa


Problems with CheckBox

Describe the bug
I'm having two issues with CheckBox.

The checked icon doesn't appear when the checkbox is checked.
The checkbox has an outline around it - I see it's coming from your accessibility CSS but I'd like to turn it off - that's how your documentation example works.

To Reproduce
Steps to reproduce the behavior:
<CheckBox>Test</CheckBox>

Screenshots

@BryanHunt Please add <Accessibility @isFocusOnTabs={{true}} />   to your main template.hbs and I will update it in next version.


Extra (HAP) Characteristics

Hi!
Thanks for your great work! Recently i've started working with library for my custom HomeKit (and Eve) devices. As I've seen HomeKit data type is coming to this project too as mentioned in #451 😄 Eve has a tons of data/TLV types and without these the Eve app doesnt shows most of the "fake" Eve accessories as it should so so I've appreciate your work!
What i'm thinking of for easier development is creating a custom header for the custom Characteristics/Services outside HomeSpans's main Span.h header. It would be much easier to update this file instead of messing with Span.h OR declaring every custom CH in Sketch. Currently I have 50+ custom CH and 15+ custom Services, mostly used by Eve 😄
Also an another important thing with the custom CH is the ability to set them (on declaration) the value ranges and valid values. I've came from esp-homekit, this works very well using that library. For example, Eve Motion's Sensitivity has a minValue of 0, maxValue of 7 but the valid values are only 0,4,7 and values other than these messes up Eve😅
#define HOMEKIT_CHARACTERISTIC_SENSITIVITY HOMEKIT_CUSTOM_UUID("E863F120") //Sensitivity.HIGH = 0  Sensitivity.MEDIUM = 4   Sensitivity.LOW = 7
#define HOMEKIT_DECLARE_CHARACTERISTIC_SENSITIVITY(_value, ...) \
    .type = HOMEKIT_CHARACTERISTIC_SENSITIVITY, \
    .description = "Sensitivity", \
    .format = homekit_format_uint8, \
    .permissions = homekit_permissions_paired_read \
    | homekit_permissions_paired_write \
    | homekit_permissions_notify, \
    .min_value = (float[]) {0}, \
    .max_value = (float[]) {7}, \
    .valid_values = { \
    .count = 3, \
    .values = (uint8_t[]) {0, 4, 7}, \
    }, \
    .value = HOMEKIT_UINT8_(_value), \
    ##__VA_ARGS__

Have you read api?

As noted above, this functionality has been part of HomeSpan for quite a while.  See the API Reference.  Note HomeSpan also has Custom Services in addition to Custom Characteristics.

Also, the DATA type (but not the TLV type) has recently been added to the next release of HomeSpan.  However, you can use it now if you want by installing the  "dev" branch of the library and reviewing that branch's version of the API.

Have you read api?

Yes, I've read the API. Yes, i know about the functions i need (setUnit,setValidValues, setDescription) are existing but my main question about simplifying the already existing way: instead of calling these functions each time, wouldn't be easier to declare these data when you declaring the custom (Eve) Characteristics?

Also, the DATA type (but not the TLV type) has recently been added to the next release of HomeSpan. However, you can use it now if you want by installing the "dev" branch of the library and reviewing that branch's version of the API.

Yep, i've seen the in issue #451 . TLV data also required for Eve history, but first i'll try out the dev branch.
I already have success with Eve history, running on ESP8266 using esp-homekit.

Your way( Max Kulkin’s lib) is C-way. HS is C++ …

There is MACRO inside
`
#define CUSTOM_CHAR(NAME,UUID,PERMISISONS,FORMAT,DEFVAL,MINVAL,MAXVAL,STATIC_RANGE)
HapChar CUSTOM##NAME {#UUID,#NAME,(PERMS)(PERMISISONS),FORMAT,STATIC_RANGE};
namespace Characteristic { struct NAME : SpanCharacteristic { NAME(FORMAT##_t val=DEFVAL, boolean nvsStore=false) : SpanCharacteristic {&CUSTOM##NAME,true} { init(val,nvsStore,(FORMAT##_t)MINVAL,(FORMAT##_t)MAXVAL); } }; }
`

Setting the description and units is only needed if you define Characteristic that is NOT known by Eve. Why would you do this? Because Eve has an additional feature that generically renders Characteristics it does not natively support.

Eve only renders the standard Eve Characteristics, but supports a lot of custom thinks which needs at least the units value to render it properly. Like in my example, without defining the units for wind speed/rain etc, Eve renders the icon corretly, but the units are missing, so i need to define them one-by-one. BTW on the other hand  its useful too, because i can change the units from metric to imperial (based on DisplayUnits value) on runtime 🙃
But setting the units value (string) for  at least CUSTOM_CHARs still would be useful 🙃

The problem is that things like Runtime information, etc. (even the Television Service), are not part of HAP-R2 non-commercial version.  Apple released this in 2019 and has not updated since (nor have they updated the HomeKit Accessory Simulator).  In fact, Apple seemed to have pulled the HAP-R2 document itself - I can no longer find it on any Apple Web site.  The commercial version, MiFi, is of course presumably updated, but this seems to only be available to commercial license users under NDA.
My guess is that even though confidential, the MiFi document managed to get circulated and that's how some of the newer services and characteristics made their way into some of the other open-source HomeKit projects.  I've been hesitant to add these into HomeSpan because there are no descriptions of how these work and it takes a lot of experimenting to be able to figure out exactly what they do.
However, as noted above, HomeSpan allows for Custom Services and Custom Characteristics, with the exception of TLV-based Characteristics.  This means you can add in any Service or Characteristic provided you can find the UUID and other relevant specs.   For example, one HomeSpan user provided details for the Television Service, tested some of the features within HomeSpan, and created a pull request.   I then spent a few weeks doing further experiments to determine how each Characteristic interacted with the others, wrote up detailed specs and a tutorial example, and then integrated formally into the HomeSpan library.
Some of my assumptions above may be incorrect.  If you can find a place where Apple provides a new version of non-commercial HAP containing the latest Services and Characteristics, please let me know (even a link to the original HAP-R2 document on an Apple-hosted web site would be useful).  Alternatively, please try experimenting with Custom Services and Characteristics.  I'd be happy to integrate them into HomeSpan based on results of your testing.

Actually a lot of CHs was part of the HAP R1 release and these are still works as it should be 🤓
BTW I've defined the Characteristics what i need as CUSTOM_CHAR, but theres a new problem what I'm facing now 😄
SpanCharacteristic *setValidValues(int n, ...);   // sets a list of 'n' valid values allowed for a Characteristic and returns pointer to self.  Only applicable if format=uint8
Theres a few HomeKit (and also Eve) Characteristics which are Uint16_t or Uint32_t. The limitation to set valid values only for uint8_t causes  problems. Like time based CHs (which has uint32_t values) and making a custom valid values are essential for these 🤓 Like the Eve Aqua uses custom valid values for setting the Valve duration for predefined values:
 ->setValidValues(18,   5, 10, 20, 30, 60, 120, 180, 300, 600, 1200, 1800, 3600, 7200, 10800, 18000, 36000, 43200, 54000);
Setting only the range is not acceptable, because theres a lot of values between e.g.: 500 and 600 seconds 😄  As you can see setting the time value without valid values are pretty difficult  😅

I can make this change.  Can you think of any cases that would require setting valid values for unit64_t characteristic?  If so, I'll need to convert setValidValues() to a template function (with a default of uint_8).  If not, then I just need to make small adjustments to the current setValidValues() code and remove the restriction that limits the function to uint8_t only.

Maybe the best solution is to implement eve chars section as a part of HomeSpan because only eve app can works with them.

I can make this change. Can you think of any cases that would require setting valid values for unit64_t characteristic?

Actually never seen a Uint64 value within HomeKit, but Eve works a lot with Uint32 values, so removing the restrictions and allowing uint32 instead of uint8 is fairly enough 😄

I've updated setValidValues() to allow for INT, UINT8, UINT16, and UINT32 Characteristics.  The function will translate any inputs into uint8_t, uint16_t, uint32_t, and int, corresponding to the format of the Characteristic.  This means if you set 257 as a valid value for a UINT8 Characteristics, it will be converted to a value of 1.  This should prevent inadvertent overflows that will cause HomeKit to complain and/or freeze.
If you try to use setValidValues() with a FLOAT, DATA, BOOL, STRING, and UINT64 Characteristic, the command is ignored and HomeSpan will throw a Warning message at boot time.
Code is now part of dev branch.  Please feel free to give it a try.

Regarding what to do the Eve Characteristics in general, I agree the best thing to do is create a header file with all of the Characteristics pre-defined.   You can then simply include this file whenever needed.  If you have a well-tested set of Characteristics, I'd be happy to add a link to your header file from the HomeSpan page so others can use as well.

If you have a well-tested set of Characteristics, I'd be happy to add a link to your header file from the HomeSpan page so others can use as well.

I have a few tested ones, but Eve only renders some CHs when you get the right Service/Characteristics sequence. Like for the Pressure you need to add one more CH (Elevation), and this will only show up in the Eve app when you add DisplayUnits to the Temperature Sensor Service 😄
BTW my main suggestion was solved, so closing this issue 😄

BTW my main suggestion was solved, so closing this issue 😄

Hello) can you publish your eve log part?


🐛 [firebase_core] Issues when updated from 1.18 to 1.19 on iOS

Bug report
Describe the bug
This is happening only on iOS.
Upgraded firebase_core on pubspec.yaml from 1.18.0 to 1.19.x and my app launched then the screen was blank.
The debugger printed this:
[VERBOSE-2:ui_dart_state.cc(198)] Unhandled Exception: MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core)

Even when added
 # Override Firebase SDK Version
$FirebaseSDKVersion = '8.15.0'

to my podfile it didnt work, same error, after pod updating.
Using flutter version 3.0.4 and now 3.0.5 happened the same thing.
So when I changed back to firebase_core: 1.18.0 (without the caret), it worked.
Steps to reproduce
just changed package version

Flutter doctor
Run flutter doctor and paste the output below:
Click To Expand
[✓] Flutter (Channel stable, 3.0.5, on macOS 12.4 21F79 darwin-arm, locale pt-BR)
    • Flutter version 3.0.5 at /Users/fernandorocha/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f1875d570e (25 hours ago), 2022-07-13 11:24:16 -0700
    • Engine revision e85ea0e79c
    • Dart version 2.17.6
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/fernandorocha/Library/Android/sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] VS Code (version 1.69.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.44.0

[✓] Connected device (3 available)
    • iPhone 11 (mobile) • DD7EA6B7-F804-4D92-99EE-EAE47DEAFC53 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-15-5 (simulator)
    • macOS (desktop)    • macos                                • darwin-arm64   • macOS 12.4 21F79 darwin-arm
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 103.0.5060.114

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Flutter dependencies
Run flutter pub deps -- --style=compact and paste the output below:
Click To Expand
Dart SDK 2.17.6
Flutter SDK 3.0.5
f****** 0.0.1+14

dependencies:
- amplify_auth_cognito 0.6.1 [amplify_auth_cognito_android amplify_auth_cognito_ios amplify_core aws_common collection flutter meta plugin_platform_interface]
- amplify_flutter 0.6.1 [amplify_core amplify_datastore_plugin_interface amplify_flutter_android amplify_flutter_ios aws_common collection flutter meta plugin_platform_interface]
- async 2.9.0 [collection meta]
- brasil_fields 1.4.5 [flutter intl]
- camera 0.10.0 [camera_android camera_avfoundation camera_platform_interface camera_web flutter flutter_plugin_android_lifecycle quiver]
- cloud_functions 3.3.0 [cloud_functions_platform_interface cloud_functions_web firebase_core firebase_core_platform_interface flutter]
- cupertino_icons 1.0.5
- currency_text_input_formatter 2.1.7 [flutter intl]
- datetime_picker_formfield 2.0.0 [flutter intl]
- dropdown_plus 0.0.9 [flutter]
- file_picker 4.6.1 [flutter flutter_web_plugins flutter_plugin_android_lifecycle plugin_platform_interface ffi path win32]
- firebase_analytics 9.1.10 [firebase_analytics_platform_interface firebase_analytics_web firebase_core firebase_core_platform_interface flutter]
- firebase_core 1.18.0 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_crashlytics 2.8.2 [firebase_core firebase_core_platform_interface firebase_crashlytics_platform_interface flutter stack_trace]
- firebase_performance 0.8.0+14 [firebase_core firebase_core_platform_interface firebase_performance_platform_interface firebase_performance_web flutter]
- firebase_remote_config 2.0.10 [firebase_core firebase_core_platform_interface firebase_remote_config_platform_interface firebase_remote_config_web flutter]
- flutter 0.0.0 [characters collection material_color_utilities meta vector_math sky_engine]
- flutter_credit_card 3.0.1 [flutter]
- flutter_localizations 0.0.0 [flutter intl characters clock collection material_color_utilities meta path vector_math]
- flutter_pdfview 1.2.2 [flutter]
- flutter_speed_dial 6.0.0 [flutter]
- flutter_statusbarcolor_ns 0.4.0 [flutter]
- fluttertoast 8.0.9 [flutter flutter_web_plugins]
- http 0.13.4 [async http_parser meta path]
- http_parser 4.0.1 [collection source_span string_scanner typed_data]
- intl 0.17.0 [clock path]
- launch_review 3.0.1 [flutter]
- open_file 3.2.1 [flutter ffi]
- package_info_plus 1.4.2 [flutter package_info_plus_platform_interface package_info_plus_linux package_info_plus_macos package_info_plus_windows package_info_plus_web]
- path 1.8.1
- path_provider 2.0.11 [flutter path_provider_android path_provider_ios path_provider_linux path_provider_macos path_provider_platform_interface path_provider_windows]
- share_plus 4.0.10 [meta mime flutter share_plus_platform_interface share_plus_linux share_plus_macos share_plus_windows share_plus_web]
- url_launcher 6.1.5 [flutter url_launcher_android url_launcher_ios url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_web url_launcher_windows]

dev dependencies:
- flutter_launcher_icons 0.9.3 [args image path yaml]
- flutter_lints 2.0.1 [lints]

transitive dependencies:
- amplify_auth_cognito_android 0.6.1 [flutter]
- amplify_auth_cognito_ios 0.6.1 [amplify_core flutter]
- amplify_core 0.6.1 [aws_common collection flutter intl json_annotation meta plugin_platform_interface uuid]
- amplify_datastore_plugin_interface 0.6.1 [amplify_core collection flutter meta]
- amplify_flutter_android 0.6.1 [flutter]
- amplify_flutter_ios 0.6.1 [amplify_core flutter]
- archive 3.3.0 [crypto path]
- args 2.3.1
- aws_common 0.1.1 [async collection http meta stream_transform uuid]
- camera_android 0.10.0 [camera_platform_interface flutter flutter_plugin_android_lifecycle stream_transform]
- camera_avfoundation 0.9.8+2 [camera_platform_interface flutter stream_transform]
- camera_platform_interface 2.2.0 [cross_file flutter plugin_platform_interface stream_transform]
- camera_web 0.3.0 [camera_platform_interface flutter flutter_web_plugins stream_transform]
- characters 1.2.0
- clock 1.1.0
- cloud_functions_platform_interface 5.1.10 [firebase_core flutter meta plugin_platform_interface]
- cloud_functions_web 4.2.17 [cloud_functions_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- collection 1.16.0
- cross_file 0.3.3+1 [js meta]
- crypto 3.0.2 [typed_data]
- ffi 1.2.1
- file 6.1.2 [meta path]
- firebase 9.0.3 [http http_parser js]
- firebase_analytics_platform_interface 3.1.10 [firebase_core flutter meta plugin_platform_interface]
- firebase_analytics_web 0.4.0+16 [firebase_analytics_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- firebase_core_platform_interface 4.4.1 [collection flutter meta plugin_platform_interface]
- firebase_core_web 1.6.5 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- firebase_crashlytics_platform_interface 3.2.10 [collection firebase_core flutter meta plugin_platform_interface]
- firebase_performance_platform_interface 0.1.1+10 [firebase_core flutter plugin_platform_interface]
- firebase_performance_web 0.1.0+15 [firebase firebase_core firebase_core_web firebase_performance_platform_interface flutter flutter_web_plugins js]
- firebase_remote_config_platform_interface 1.1.10 [firebase_core flutter meta plugin_platform_interface]
- firebase_remote_config_web 1.0.15 [firebase_core firebase_core_web firebase_remote_config_platform_interface flutter flutter_web_plugins js]
- flutter_plugin_android_lifecycle 2.0.6 [flutter]
- flutter_web_plugins 0.0.0 [flutter js characters collection material_color_utilities meta vector_math]
- image 3.2.0 [archive meta xml]
- js 0.6.4
- json_annotation 4.6.0 [meta]
- lints 2.0.0
- matcher 0.12.11 [stack_trace]
- material_color_utilities 0.1.4
- meta 1.7.0
- mime 1.0.2
- package_info_plus_linux 1.0.5 [package_info_plus_platform_interface flutter path]
- package_info_plus_macos 1.3.0 [flutter]
- package_info_plus_platform_interface 1.0.2 [flutter meta plugin_platform_interface]
- package_info_plus_web 1.0.5 [flutter flutter_web_plugins http meta package_info_plus_platform_interface]
- package_info_plus_windows 1.0.5 [package_info_plus_platform_interface ffi flutter win32]
- path_provider_android 2.0.16 [flutter path_provider_platform_interface]
- path_provider_ios 2.0.10 [flutter path_provider_platform_interface]
- path_provider_linux 2.1.7 [ffi flutter path path_provider_platform_interface xdg_directories]
- path_provider_macos 2.0.6 [flutter path_provider_platform_interface]
- path_provider_platform_interface 2.0.4 [flutter platform plugin_platform_interface]
- path_provider_windows 2.0.7 [ffi flutter path path_provider_platform_interface win32]
- petitparser 5.0.0 [meta]
- platform 3.1.0
- plugin_platform_interface 2.1.2 [meta]
- process 4.2.4 [file path platform]
- quiver 3.1.0 [matcher]
- share_plus_linux 3.0.0 [share_plus_platform_interface file flutter meta url_launcher]
- share_plus_macos 3.0.1 [share_plus_platform_interface flutter]
- share_plus_platform_interface 3.0.3 [flutter meta mime plugin_platform_interface]
- share_plus_web 3.0.1 [share_plus_platform_interface url_launcher flutter flutter_web_plugins meta]
- share_plus_windows 3.0.1 [share_plus_platform_interface flutter meta url_launcher]
- sky_engine 0.0.99
- source_span 1.9.0 [collection path term_glyph]
- stack_trace 1.10.0 [path]
- stream_transform 2.0.0
- string_scanner 1.1.1 [source_span]
- term_glyph 1.2.0
- typed_data 1.3.1 [collection]
- url_launcher_android 6.0.17 [flutter url_launcher_platform_interface]
- url_launcher_ios 6.0.17 [flutter url_launcher_platform_interface]
- url_launcher_linux 3.0.1 [flutter url_launcher_platform_interface]
- url_launcher_macos 3.0.1 [flutter url_launcher_platform_interface]
- url_launcher_platform_interface 2.1.0 [flutter plugin_platform_interface]
- url_launcher_web 2.0.12 [flutter flutter_web_plugins url_launcher_platform_interface]
- url_launcher_windows 3.0.1 [flutter url_launcher_platform_interface]
- uuid 3.0.6 [crypto]
- vector_math 2.1.2
- win32 2.6.1 [ffi]
- xdg_directories 0.2.0+1 [meta path process]
- xml 6.1.0 [collection meta petitparser]
- yaml 3.1.1 [collection source_span string_scanner]

Thanks for the report @Fernandomr88
in podfile, can you add below line and see if it works ?
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git[](https://github.com/invertase/firestore-ios-sdk-frameworks.git)', :branch => 'main'
also, try running below commands and confirm:
rm -Rf ios/Pods
rm -Rf ios/.symlink
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
rm -rf ios/Podfile.lock
rm -rf ~/Library/Developer/Xcode/DerivedData/* -y
rm -rf pubspec.lock
flutter clean
flutter packages get
cd ios
pod install
pod update

That repository you suggested is from a random user in github, why would I use that? is it safe?
My intention with this issue was that this package (firebase_core) needs fixing, in the meantime i'm using firebase_core 1.18.0

That repository you suggested is from a random user in github, why would I use that? is it safe?

Thanks for feedback. It is actually not a random user's github, but of invertase org who is developing and maintaining flutterfire plugins.

My intention with this issue was that this package (firebase_core) needs fixing, in the meantime i'm using firebase_core 1.18.0

I tried running the firebase_core plugin example on iOS with latest version (plugin) but it didn't give me the reported error.
Can you provide us the complete error log ? Do you have any other third party plugin which could be conflicting with firebase_core ?

fixed with version 1.20


Node.js Foundation Community Committee (CommComm) Meeting 2017-07-06

Node.js Foundation Community Committee (CommComm) Meeting 2017-07-06
Time
UTC Thu 06-Jul-2017 20:30 (08:30 PM):

Timezone
Date/Time

US / Pacific
Thu 06-Jul-2017 13:30 (01:30 PM)

US / Mountain
Thu 06-Jul-2017 14:30 (02:30 PM)

US / Central
Thu 06-Jul-2017 15:30 (03:30 PM)

US / Eastern
Thu 06-Jul-2017 16:30 (04:30 PM)

Amsterdam
Thu 06-Jul-2017 22:30 (10:30 PM)

Moscow
Thu 06-Jul-2017 23:30 (11:30 PM)

Chennai
Fri 07-Jul-2017 02:00 (02:00 AM)

Tokyo
Fri 07-Jul-2017 05:30 (05:30 AM)

Sydney
Fri 07-Jul-2017 06:30 (06:30 AM)

Or in your local time:

http://www.timeanddate.com/worldclock/fixedtime.html?msg=Node.js+Foundation+Community Committee (CommComm)+Meeting+2017-07-06&iso=20170706T20
or http://www.wolframalpha.com/input/?i=8pm+UTC%2C+Jul+06%2C+2017+in+local+time

Links

Minutes Google Doc: https://docs.google.com/document/d/1utEp06Pyk0uwJn77TWdxIpwuoiFRjHvKinSdbY1BwNk/
Previous Minutes Google Doc: https://docs.google.com/document/d/1GXbfPhfbLTr7g9Hp7YP-M60ux_Ua2z8XRXg__me4u4k/

Agenda
Extracted from cc-agenda labelled issues and pull requests from the nodejs org prior to the meeting.
nodejs/TSC

Candidate "areas" for TSC and Community Committee  #278
meta: moderation policy updates #276

nodejs/community-committee

Adding Jenn, Tierney, Michael, Olivia, and Richard as members #77

Invited

Ashley Williams @ashleygwilliams (CommComm)
Bryan Hughes @nebrius (CommComm)
Emily Rose @emilyrose (CommComm)
Gregor Martynus @gr2m (CommComm)
Jenn Turner @renrutnnej (observer)
Joe Sepi @joesepi (observer)
JP Wesselink @jpwesselink (CommComm)
Myles Borins @MylesBorins (CommComm)
Olivia Hugger @pup (observer)
Rachel White @rachelnicole (CommComm)
Richard Littauer @RichardLitt (observer)
Rod Vagg @rvagg (CommComm)
Tierney Cyren @bnb (observer, note taker)
Tracy Hinds @hackygolucky (CommComm)
William Kapke @williamkapke (CommComm)

Notes
The agenda comes from issues labelled with cc-agenda across all of the repositories in the nodejs org. Please label any additional issues that should be on the agenda before the meeting starts.
Joining the meeting
Google Hangouts; link will be posted here shortly before the meeting starts.
A standing invitation exists for all @nodejs/TSC members who are not also CommComm members to attend in observer capacity.
Public participation
We stream our conference call straight to YouTube so anyone can listen to it live, it should start playing at https://www.youtube.com/c/nodejs+foundation/live when we turn it on. There's usually a short cat-herding time at the start of the meeting and then occasionally we have some quick private business to attend to before we can start recording & streaming. So be patient and it should show up.

got my name wrong again! 😉

Sorry to drive it further, but mine as well for the issue title (Adding Jenn, Tierny, Michael, Olivia, and Richard as members #77) 😅

Sorry about that everyone, names should be fixed now.

Add this issue? I'd like to discuss what next steps are to get it moved + next steps in the CommComm are 😄
https://github.com/nodejs/community-committee/issues/86

Add this issue? I'd like to discuss what next steps are to get it moved + next steps in the CommComm are.

Let's wait on this. The next step is for the CTC to sign off on the move. We're effectively blocked until they sign off, but hopefully we'll have sign off by the 7/20 meeting, and we can put it on the agenda then.

Live stream: https://www.youtube.com/watch?v=04JNTd_UXZw
Participant link: https://hangouts.google.com/hangouts/_/ytl/7oHxSZSrem6IIFcNv-j2IyR2h2Av2AvjHj0ZNwW5kOU=

I'm getting a you are not authorized to start this video call. Is it just me ?

We decided to cancel re: #91 but we probably should have closed this issue too to notify. Oops!

This is the 7-6 meeting 🤔
There doesn't seem to be one for this week?

@williamkapke See: https://github.com/nodejs/community-committee/issues/91 (which Jen linked above)

this should be closed anyways since the meeting notes are merged in


Refactor

This Pull request makes the code smaller, but the difference is not visible! Less Code!!

Ah thank you! I will check it!

Great! I will start work on a setup script to build an msi!

should be finished in a few minutes

@HuyHung1408 what will be the next version?

You mean like the version number?

We didnt even have 1.1 yet!

Btw i just realized that i dont have time to do the setup thing rn so it will take a bit

ah ok lol 😂

Btw i just realized that i dont have time to do the setup thing rn so it will take a bit

dw, that's ok, I also studying for exams rn

@HuyHung1408 The next time you merge a pr, select Squash and Merge :)


Mousewheel is not working with the latest main.c

It seems the input device mousewheel in function hal_init is not working, since it's not in the default group.

True! I've just fixed it.


File name too long

Describe the bug
To Reproduce
Select a picture with a long file name

Both iOS and Android have this problem.

Logs?

Logs?
[iOS platform]
File name is difference with file name from Photos app.

assetEntity.originFile.path = "/private/var/mobile/Containers/Data/Application/BB35B521-8965-47D3-B3B3-4B4A0D203903/tmp/.image/1665504477.520537_o_IMG_3244.HEIC"
file name from Photos app is : IMG_3244.HEIC
Attach image is example


[BUG] Website MUST have Incubation disclaimer on all pages

Problem Type (问题类型)
lack info (文档描述缺失)
Your Question (问题描述)
Website MUST have Incubation disclaimer on all pages.
The disclaimer is currently only on the home page as far as I can tell.
That is not sufficient, all public facing documentation should include the disclaimer

Problem Type (问题类型)
lack info (文档描述缺失)
Your Question (问题描述)
Website MUST have Incubation disclaimer on all pages.
The disclaimer is currently only on the home page as far as I can tell.
That is not sufficient, all public facing documentation should include the disclaimer

thanks for the reminder, we'll add it soon

Hi, @sebbASF, we have add Incubation disclaimer on all pages by #360, plz take a look.


Moar tests

I thought a couple of tests with level-sublevel would be nice to have, at least to show some kind of usage with it and to confirm that basic functionality is working.

I have more stuff coming so if no one objects I will give each PR 24 hours. There's no new functionality coming just yet, merely tweaks and improvement of tests.

My primary intentions are to get rid of the shaky tests and I'm basically done with that work and after that make sure that there is a version of level-spaces that will work with this module. Will also add tests for that particular use case, similar to level-sublevel.


Spec what headers need to be what for federated calls (including the media repo)

It seems as though the Host should at least be set to the target server, with port(?). Eg: Host: matrix.org:8443 despite the SRV returning matrix.org.cdn.cloudflare.net:8443.

So I think the way this works is that you put the hostname you were intending to talk to in the Host header of the request.  So, if you had looked up the SRV of matrix.org, you'd put Host: matrix.org (with no port) in the HTTP request header.  You do not put the hostname:port of the resolved SRV request (e.g. matrix.org.cdn.cloudflare.net:8443).  I think this makes some level of sense, as the target server cares about how the general public thinks of it (i.e. its server_name aka domain of its matrix IDs), rather than the random internalish host:port that the SRV record happens to point to.  And the client should reflect the intent of who it was trying to connect to.
The end result should look like this:
$ SRV_RESULT=`dig +short -t SRV _matrix._tcp.matrix.org | perl -ne '/.* (\d+) (.*)\.$/ && print "$2:$1"'`
$ echo $SRV_RESULT
matrix.org.cdn.cloudflare.net:8443
$ openssl s_client -connect $SRV_RESULT -quiet
GET /_matrix/federation/v1/version HTTP/1.1
Host: matrix.org

HTTP/1.1 200 OK
Date: Sun, 18 Mar 2018 14:26:32 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=d401dd2ef877cb6aafb7c74a71be89ce71521383191; expires=Mon, 18-Mar-19 14:26:31 GMT; path=/; domain=.matrix.org; HttpOnly
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 3fd85fe1ffa906ee-LHR

34
{"server": {"version": "0.26.0", "name": "Synapse"}}
0

Ah, the impl specific variant of this is https://github.com/matrix-org/synapse/issues/2525


Burgers example outdated

Hi, thanks for open-sourcing your code! 😄
The code in burgers.py seems outdated and when running python burgers.py, I get several issues. For example, the module NN.RL.core does not exist anymore. Other issues include arguments being passed, even though the keyword has likely been changed (for example "actor_critic" as opposed to "Actor").
I've checked my installation and could successfully execute the Kuramoto-Sivashinsky example.
Thanks!

Thanks for pointing this out. I made a quick fix for this issue.
The Burgers case may be removed in the future and you are highly discouraged to work on it since Reinforcement learning is not the best choice for this kind of problems (matching reference trajectories). We use this Burgers environment in our paper just to demonstrate the feasibility of using PIMBRL in such environments, but supervised learning or traditional control algorithms are good enough in such cases.

Thanks a lot!


White squares instead of UI elements when using LÖVE 11.1

I tried running the example provided in both LÖVE 10.2 and 11.1
This is the result (as expected) when using 10.2:

This is the result when using 11.1:

build dll from master branch can resolve this problem

I'm having trouble compiling from master, is it possible to have up-to-date binaries hosted? The latest release's binaries are not compatible with the latest version of LOVE.

The color changes have been bundled into release v1.3, thanks for the issue.


Event Request Codeunit 63 Sales-Explode BOM

Please Insert a publisher in OnRun Function
OnAfterTransferFromBOMComponent

The event already exists. Please use bcsandbox-master images.


Add mailto link in footer and correct hover effect on help button

Add mailto link to the email.
Remove the underline when hovering on the help desk button.
Apply the same hovering on the email button as in the hep desk button.
Also, add a similar hover effect on the toll-free button.
Make sure all the three buttons call, email, and the help desk should be of the same size.

Can I work on this?

May I work under this issue please?

Can I work on this?

@IwonaBaran and @RiyaGupta89
@nagbnc have already made PR for this.
I have assigned you other issues already, resolve those first.

I want to work on this issue @QAZIMAAZARSHAD . I will give a mailto in the footer and improve the hover effect on help button.

I want to work on this issue @QAZIMAAZARSHAD . I will give a mailto in the footer and improve the hover effect on help button.

Solve other issues first.


Feature: Attachments

Hello Feuerhamster, greetings from Sammatz in Northern Germany :)
I'm planning to use your mailform service for our new website. And I need the feature for having attachments.
I've implemented the feature using formidable as parser and I tried to adapt to your style of code.
I'm looking forward to your feedback.
Best Regards,
Micha

I've tested the code changes manually by using Postman. I've used form-data (with and without attachments) and x-www-form-urlencoded in my tests. It worked for me.

Thank you :)


nodezoo-npm does not respect update=true

When using the query param to force update a modules info, npm does not invalidate.

fixed in tms branch


Feature/dota plus

DOTA PLUS
Description
Add dota plus analog for in game real time win probability tracker

Issue Number: [Issue #]
Description of changes: Explain the code, algorithms, or models modified/added.

Type of Change
Please delete options that are not relevant:

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update
[ ] Code refactor
[ ] Performance improvement

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Include any relevant details for configuration.

Unit Tests Added: [Yes/No]

If yes, describe the tests and if they were successful.

Model Accuracy Improvement: [Yes/No]

If yes, provide before and after metrics of the prediction model accuracy (e.g., accuracy, precision, recall, etc.)

Test Configuration:

Python version: [e.g., 3.9.19]
ML Framework/Library: [e.g., XGBoost]
Dataset: [e.g., all_data.csv]

Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

Additional Context or Screenshots (if applicable)
Include any additional context or relevant screenshots related to the prediction models or new features. If the change impacts the Dota 2 match prediction outcomes, provide graphs or results showing the impact.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 86.93467% with 26 lines in your changes missing coverage. Please review.

Files with missing lines
Patch %
Lines

structure/struct.py
76.78%
26 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.

Flag
Coverage Δ

unittests
89.36% <86.93%> (+0.40%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines
Coverage Δ

tests/test_db.py
100.00% <100.00%> (ø)

tests/test_struct.py
97.78% <100.00%> (+0.20%)
:arrow_up:

structure/struct.py
77.00% <76.78%> (-0.08%)
:arrow_down:

... and 1 file with indirect coverage changes


Add eBird API

Insert URLs to the project here: https://github.com/ProjectBabbler/ebird-api

[x] The projects is active, documented, open source licensed, shows usage from external parties and is directly targeting environmental sustainability. Find more details in the Contribution Guide.

All issues labeled as Good First Issue of the project listed on OpenSustain.tech will be visible on ClimateTriage.com. This is a great way to welcome new community members to your project.
All new projects listed will be posted on our Mastodon channel.

@StuartMacKay


Fix multi-payload enums with Class Existential payloads on 32-bit targets

Class existentials expose spare bits from all of the pointers, not just the first one. Due to a bad bug here, we were properly exposing spare bits from the first pointer, but then claiming that all bits of subsequent pointers were spare. This accidentally resulted in the correct operation on 64-bit targets (it picked the highest-order spare bit, which happened to be spare in both the broken mask and the correct mask).  But on 32-bit targets, this exposed the high-order bits of pointers, which is incorrect.
Expand the test a bit while we're here as well.
Resolves rdar://132715829

@swift-ci Please test

@swift-ci Please test macOS Platform

@swift-ci Please test macOS Platform

@swift-ci Please test

@swift-ci Please test


NetworkPartition_notworking

When grid2demand is imported, there is no function called 'NetworkPartition' which mentioned in the readme file, I tried 'PartitionGrid' and which seems to work similarly as the NetworkPartition function implies. I think the name of the function is wrong.

The latest version <IP_ADDRESS> has resolved this issue. thanks,

The latest version <IP_ADDRESS> has resolved this issue. thanks,


Fixes that should make the benchmark work

Here are the modifications I did:

I added opencv in the webots container as it is the one used on the simulation server, which will run the default controller locally so it need its dependencies (I should explain it better in the instructions)
the supervisor must print the score in the "performance:SCORE" format to tell the automated script that the benchmark finished correctly
it's better if the robot is set as not synchronized in the world file just in case the participant's controller never calls robot.step() and would stall evaluation (I didn't find any elegant solution to remedy this, I should think about it more)
I use a regex to fetch the link in the README badge to get the link to the leaderboard and I didn't expect it to be multiline which is a correct markdown syntax. I'll see if I can fix the regex

+ I added the other regex fix to ignore .git if it is at the end of the registration link
+ removed the robotbenchmark functions

Thank you!

I added opencv in the webots container as it is the one used on the simulation server, which will run the default controller locally so it need its dependencies (I should explain it better in the instructions)

Does this mean that if a user wants for example to use tensorflow python module in its controller, the organizer needs to add tensorflow library in the Webots Dockerfile of the benchmark?

Does this mean that if a user wants for example to use tensorflow python module in its controller, the organizer needs to add tensorflow library in the Webots Dockerfile of the benchmark?

No, but that bring up something I am not really sure how to handle: Currently there are two dockerfiles, one for the webots simulation and one for the competitor controller. The thing is that the Webots container is currently used in the evaluation CI and on the simulation server for the online testing.
Technically is would be better to have three dockerfiles:

one for the online testing where Webots launches the default controller locally to get the stdout of the controller, so it would need the dependencies for Webots and the default controller
two dockerfiles for the GitHub CI testing where Webots and the controllers have their separate containers and their separate dependencies.

But we do this, the organizer would need to manage three different dockers which isn't practical, but would be more logical.
What do you think would be the best way to handle this?

What do you mean by "default controller" launched by Webots?
The benchmark supervisor?
There are already three Dockerfiles:

2 in the organizer repo (this):

Dockerfile for the dependencies of Webots, supervisor controllers etc.
controller_Dockerfile for the dependencies of the default controller

1 in the user repo:

controller_Dockerfile for the dependencies of the user controller


Adds a phonetic reading to the Japanese parser

Hi Jeff!
This PR introduces an automated completion of the phonetic reading field for Japanese (in katakana), using MeCab capabilities. I used it extensively as it makes Japanese language learning much easier, I have seen no issue as far as I can tell.
When a user clicks a Japanese term, the server loads the term form with the "romanization" field completed. It minimal but it's a great deal for Japanese learners.

I hope I got you convinced!

Hi @HugoFara - this would be v useful for Japanese learners, great idea. Cheers!
There are a few architectural things that I think should be resolved before merging, I'll add comments to the code.

Hi @HugoFara , I pulled your branch into this repo and rebased it further, then did some tweaks on it to get existing tests to pass and to add some other quick tests, and refactored.  Branch in this repo: feature/japan-phonetic
Check out the tests in tests/src/Domain/JapaneseParser_Test.php, make sure that's the behaviour you want. :-)
You can reset your branch to this repo's branch and continue working on it if you'd like:
git remote add upstream git@github.com:jzohrab/lute.git
git fetch upstream
git reset --hard upstream/feature/japan-phonetic

Hi Jeff! I've pulled and tested your changes, by hand and using unit tests. As far as I can tell, I feel satisfied with the way things work and saw no issue (on Ubuntu). It's all green lights for me, I let the rest to you!
P. S.: as a side note, phonetic help isn't relevant in most cases when the word in is kana (hiragana/katakana) or already in roumaji. But as the overhead to the database of such words is very small, I don't feel it's a priority.

Some final questions in Discord before this gets merged in (or rather, before the rebased branch gets pulled in :-) ).

Notes from Discord chat for posterity :-)
I wonder if the readings should be in hiragana, instead of katakana.  Most of the books and newspapers I'd read in JP had readings in hiragana.  Any reason for choosing katakana?
Yeah re words already being in hiragana or roumaji -- I can amend the branch to not put any reading if the result is the same as the initial word (e.g., "NHK" would be blank, so would "dochira" (in hiragana)).  NP for that.
I think my pref is for hiragana readings.  Objections? 😛
jz — Yesterday at 9:52 PM
(If you do object, katakana it is 🙂 )

hugofara — Yesterday at 9:54 PM
Well, hiragana/katakana are two of the same kind, but traditionally in Japanese reading (yomikata 読み方) is always in katakana
I'm not sure why it is so, maybe that avoids confusions with words (usually written in hiragana)

jz — Yesterday at 10:26 PM
Oh I think I’m thinking of furigana
Which are usually hiragana IIRC. I don’t know why but I always found hiragana easier to read than katakana.

hugofara — Yesterday at 11:22 PM
Hiragana are most common that katakana, as you use them in most situations. Katakana are mainly used for animal names, foreign words and ... word reading
Honestly, it's just another character set, so it's not harder than hiragana once you get used to it. And if we use it for readings in LUTE, users will be highly exposed to katakana so after a few days it won't feel any different

I've merged in the code in the updated branch in this repo.  Closing this PR.  It will get launched with 2.0.1.
Looks great!

And with hira-only (eg "みんな") it doesn't bother giving a reading.


Consumer is not receiving message by using ConsumerGroup when default port broker is down

Set-up:
3 brokers are running on 9092, 9093, 9094. Topic with replication factor as 3 and number of partitions as 3.
Using HighLevelProducer to produce the message and ConsumerGroup to consume the message. If broker running on 9092 port is down then message getting produced successfully but not getting consumed.
But if HighLevelConsumer is used instead of ConsumerGroup then it's working fine. But HighLevelConsumer is not recommended.
All the broker's configuration is passed in the options in kafkaHost (localhost:9092,localhost:9093,localhost:9094)

Kafka version: Tested with <IP_ADDRESS>, <IP_ADDRESS>

For specific cases also provide

Number of Brokers: 3
Number partitions for topic: 3
Replication Factor: 3

Is this issue isolated to the new KafkaClient? What if you pass a zookeeper host into ConsumerGroup ?

I have passed both Zookeeper host and Broker's Host, but it was not working.


Wrong reduction result on AMD GPU

https://github.com/ye-luo/openmp-target/tree/master/hands-on/gemv/4-gemv-omp-target-reduction
AMD GPU:
/opt/rocm/aomp/bin/clang++ -std=c++11 -Drestrict=__restrict__ -g -O3 -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 -o gemv-omp-target-reduction.x -I ../../common gemv-omp-target-reduction.cpp

prints
Vout[0] != 8192, wrong value is 0

Nvidia GPU runs well.
/opt/rocm/aomp/bin/clang++ -std=c++11 -Drestrict=__restrict__ -g -O3 -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda -Xopenmp-target=nvptx64-nvidia-cuda -march=sm_61 -nocudalib -o gemv-omp-target-reduction.x -I ../../common gemv-omp-target-reduction.cpp

Is it because reduction has not been implemented?

Reproducer
/opt/rocm/aomp/bin/clang -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 reduction.c
#include <stdio.h>

#define N   1000000ll
#define SUM (N * (N-1)/2)

int main (void)
{

  #pragma omp target
  {
    long long a, i;
    a = 0;

    #pragma omp parallel for reduction(+:a)
    for (i = 0; i < N; i++) {
        a += i;
    }

    // The Sum shall be sum:[0:N]
    {
      if (a != SUM)
        printf ("Incorrect result = %lld, expected = %lld!\n", a, SUM);
      else
        printf ("The result is correct = %lld!\n", a);
    }
  }

  return 0;
}

Thank you for the defect report. Reduction is implemented for the gpu, however ,you appear to have discovered an issue with our generated code. We need to debug it.
The 'c' test case compiles for me. Regarding the 'c++' test case, are there some additional package dependencies for this one ?     in particular, what is in this directory ?    -I ../../common

I used to checkout the whole git repo instead of a single source code and ../../common supplies my timer code. There is no dependency beyond this repo.

Thanks, I was able to download repo, and easily build the c++ reproducer.

The reduction variable "a" needs to be on the host after the reduction.  You can't check the result on the device because it has not been reduced yet.   The following code works.   I need to check the spec to see what it says about using a local reduction value.
#define N   1000000ll
#define SUM (N * (N-1)/2)
int main (void)
{
long long a;
#pragma omp target
{
long long i;
a = 0;
#pragma omp parallel for reduction(+:a)
for (i = 0; i < N; i++) {
    a += i;
}

}
// The Sum shall be sum:[0:N]
{
if (a != SUM)
printf ("Incorrect result = %lld, expected = %lld!\n", a, SUM);
else
printf ("The result is correct = %lld!\n", a);
}
return 0;
}

I didn't put the more complicated case. I need per team reduction instead of global one.

I can reproduce. Passing on sm_50, failing on gfx906. Looking into this now, thanks.

Narrowed down somewhat, using a replacement gemv function. teams distribute can be dropped from the first clause.
extern "C" void gemv(int n, float alpha, const float *restrict A,
                     const float *restrict V, float *restrict Vout) {
  int max_threads = 4 * omp_get_max_threads();

  float acc[max_threads];
  for (unsigned i = 0; i < max_threads; i++) {
    acc[i] = 0;
  }

#pragma omp target map(to : A[:n * n], V[:n]) map(from : Vout[:n])
  for (int row = 0; row < n; row++) {

    for (unsigned i = 0; i < max_threads; i++) {
      acc[i] = 0;
    }

    float sum = float(0);
    float asum = float(0);
    const float *restrict A_row = A + row * n;

#pragma omp parallel for reduction(+ : sum)
    for (int col = 0; col < n; col++) {
      int id = omp_get_thread_num();
      //sum += A_row[col] * V[col];
      acc[id] += A_row[col] * V[col];
    }

    for (int i = 0; i < max_threads; i++) {
      asum += acc[i];
    }

    Vout[row] = asum * alpha;
  }
}

#pragma omp parallel for reduction(+ : sum) will trigger the failure, even if sum is not used within the loop. The (a?) minimal change needed for the test case to pass is to remove the call to named_sync(L1_BARRIER, threads) in sync.cu: __kmpc_barrier. named_sync resolves to amdgcn.s.barrier.
I can't yet see why removing it would change the behaviour of the code.

A fix has been implemented and will be in the AOMP 0.7-2 release early next week.

AOMP 0.7-2 has been released.

@estewart08 The above reproducer can run now. However, if I change
#pragma omp target to #pragma omp target teams
namely each team do replicated work. I still get wrong results. For this reason, my original gemv test case still fails.

@ye-luo can you add the 'distribute' clause so that
#pragma omp target becomes #pragma omp target teams
`curious if hat helps ...

@ronlieb To use distribute, I need a loop and after using the following
  #pragma omp target teams distribute
  for(int j=0; j<64; j++)
  {
    long long a, i;

I still got wrong results.

@ye-luo thanks for following up, we will look into the issue.

It seems if you add #pragma omp target teams thread_limit(64) the result is correct, which shows there may be an issue between the wavefronts.

So far,
1 team, pass.
multiple teams, fail
multiple teams + thread_limite(64), pass

Ye-luo,   Thank you so much for your patience on this issue.   We finally got to the root cause and fixed this in 0.7-3.   Please try 0.7-3 and if you agree the reductions work, please close this issue.
The root cause was a problem with a full barrier used by reductions.  It caused the master warp to release from its full barrier.  On nvidia, they used a partial barrier.  The fix was to make the coordination of master and worker warps be tolerant of a full barrier anywhere in the generated worker warp.

Pass my original GEMV case 4.


Fix a crash on Linux if a ShutdownRequest was sent without params

Workaround for SR-16097 to avoid hitting SR-16095: VSCode will send shutdown requests without a 'params' key. On macOS getting the superDecoder for a non-existent container returns an empty decoder, on Linux it throws DecodingError.keyNotFound, causing a crash.
Perform a targeted fix: If we don't have 'params' and the request is a ShutdownRequest, manually create a ShutdownRequest without any parameters.
rdar://91288093

@swift-ci Please test

@swift-ci Please test


Need a few documentation to start with existing schema

Hello,
First, many thanks to give us the opportunity to work with Hasura and Symfony.
I have an existing GRAPHQL schema build on top of Postgres with Hasura.
I look at the source, i understand that we can generate some code with hasura:sailor:command  but it is not clear for me if the Hasura directory contains the same data generated by hasura and if this command use the data inside the Hasura directory.
Many thanks in advance,
i wish you a nice day
Eric

Hi @rccc, Sailor is type safe graphql client generator it help you generate PHP code from your graphql query.

@vuongxuongminh,
Hi, manu thanks for response and advice.
I wish you a nice day.