Recursive <expr> mapping works for builtin mappings but not for custom ones

Steps to reproduce
I am not particularly sure that it is a bug, but at least this doesn't seem like a consistent behavior.
Steps:

Create the following config file (for example, call it 'init_expr-map.vim'):

function ReturnAc()
  return 'ac'
endfunction

function ReturnIw()
  return 'iw'
endfunction

xnoremap ac 3l
xmap <expr> a ReturnAc()
xmap <expr> A ReturnAc()
xmap <expr> i ReturnIw()

Start vim with vim -u init_expr-map.vim init_expr-map.vim.
From Normal mode type vi. It selects whole word, as expected because it should be equivalent to viw.
From Normal mode type vac (without big pause between a and c so that it is recognized from one mapping). It selects equivalent to v3l.
From Normal mode type vA. It selects like vac (and v3l).
From Normal mode type va. It doesn't react, however it might be reasonable to expect it to be equivalent to vac.

Here is a video demo:
https://user-images.githubusercontent.com/24854248/184499413-01c711a6-f392-4ea0-9c0e-4d215d3d3039.mp4
Expected behaviour
Typing va is identical to (quickly) typing vac, i.e. output of expression mapping is executed as if typed with zero delay between keystrokes.
Version of Vim
9.0.1-135
Environment
OS: EndeavourOS Linux x86_64 (5.18.16-arch1-1)
Terminal: xfce4-terminal 1.0.4 (Xfce 4.16)
$TERM: xterm-256color
shell: zsh 5.9 (x86_64-pc-linux-gnu)
Logs and stack traces
No response

When you type a in visual mode, Vim waits until the timeout to let you use the xnoremap ac 3l mapping.  That is, maybe you intend to type ac, and you've only pressed a:
vim9script
'some text'->setline(1)
&showcmd = true
xnoremap ac 3l
xmap a ac
feedkeys('va', 't')

Once the timeout occurs, a is replaced with ac in the typeahead buffer.  But then, ac is not replaced with 3l, because – inside the last used mapping – the RHS starts with the LHS.  That is, in the xmap a ac mapping, the RHS ac starts with the LHS a.  When that happens, Vim does not map the first key again:

If the {rhs} starts with {lhs}, the first character is not mapped again

See :help recursive_mapping.
So, out of the 2 characters a and c which are written in the typeahead buffer at that point, only c can be mapped again.  But you don't have any mapping starting with c, so as you said it:

It doesn't react

Thanks for the details! I've encountered this help page, but somehow missed this description, which helps to understand current behavior.
Unfortunately, I still feel that the point stands (maybe because of possibility of ambiguous interpretation). Even if first character is not mapped again, I don't see a reason why first two or three should not (apart from technical difficulties, of course). That is the case here: a is not re-mapped but ac might.
I understand that it is a weird edge case, but which proved to be a somewhat important one when trying to make custom mappings for a and i (basically: wait for user input and fall back to other mappings on improper input).

Even if first character is not mapped again, I don't see a reason why first two or three should not (apart from technical difficulties, of course). That is the case here: a is not re-mapped but ac might.

It depends on how you interpret "the first character is not mapped again".
It seems that for you, it just means that the key should not be replaced alone.
But for Vim, currently, it means that the key should not be replaced at all.
Once a character has been marked as not being re-mappable, it's over; Vim skips it inside the typeahead buffer.
Whether we could or should change this semantics now, I don't know; that's for the devs to decide.

You may try returning "\<Ignore>ac" instead.

You may try returning "\<Ignore>ac" instead.

Thanks for this! Although, something weird is going on: it works with "\<Ignore>ac", but hangs with 100% Neovim usage with "\<Ignore>iw" (I imagine in infinite recursion because 'maxmapdepth' doesn't catch it?). I would imagine those cases to be equivalent somehow.
Anyway, I remember trying it in my original use case in Neovim and it didn't work. Now after this suggestion I decided to retry and prepend with <Ignore> only user mappings (checked with maparg()) and it works! Thanks again!
My initial problem is solved, but I still somehow feel that behavior here should be similar for both user defined and builtin mappings. So, please, feel free to close the issue if that is not the case.

Do you mean 100% CPU usage? In this case #10652 may help avoid 100% CPU usage.

Do you mean 100% CPU usage? In this case #10652 may help avoid 100% CPU usage.

Yes, 100% usage of single CPU by vim (which can be stopped by <C-c>, so not completely hanging). In my case I need this behavior only as fall back, so checking with maparg() seems to work at the moment (for Neovim>=0.5, at least).


Fix overlapping carbs issue

Use a more coarse z-order to prevent overlapping meshes for carbs (and other data types)
Also update three.js dependency

See: https://trello.com/c/pip9oZHn

 RN Android Mobile - Some carb circles are not opaque, causing carb values to be difficult to read

@cbwebdevelopment I updated the PR to add the Travis CI build fix. Could you take another look? Just adds optimized images via expo publish, and now using locally installed dev dependency for expo-cli, rather than global


Ignore negative debts from the exit

this is wrong somehow, but I'm not sure how.

this is right it's the gateway client corner case that's unreliable/wrong


[DribbblishDynamic] Local Files break the theme

After playing a local song, the theme will be broken for following songs: the color will either not change or start randomly changing and the playing bar will show an incorrect album and "invalid date" @JulienMaille

I don't think we can extract colors from local media, can we @khanhas ?

@oscargb1 Can you confirm it is fixed?

Yeah, the issue is fixed now


Is there a way to run multiple queries in a file window?

If there are multiple queries, separated by semicolons, in a window is there a way to run them all serially or as a batch?  It seems if there are multiple queries in a file window the only way to run them is one at a time with either the 'SQLTools Run Current Query' or 'SQLTools Run Selected Query' commands?

Take a look at this post.
https://medium.com/snowflake/snowflake-vs-code-sql-tools-and-github-7eab915e10cb
Is this what you are talking about?

not possible at the moment, but the feature is in development states. Hopefully we'll see it soon. 🤞

Hi @koszti - just wondering if there is an update on when this enhancement might be developed and deployed? Thanks, Freddie


Autolabeler has stopped working in apache/spark and apache/iceberg repos.

Hi @mithro! Thank you so much for the wonderful PR autolabeler. 🙂
I work over on the Apache Iceberg project, and it appears that our autolabeler stopped working around 11 days ago. I checked the Apache Spark repo, which also uses this same autolabeler, and it looks as though the last time their autolabeler ran was about 10 days ago.
I admittedly don't have full access rights over there (the ASF infra team enabled it for us after we put in the config), so I tried opening a PR against my local fork where I do have full control and it also did not seem to run or generate any labels.
Here's the issue related to this in the Iceberg project.
Additionally, here's our config file in the official Apache Iceberg repo.
Finally, here's a link to the PR I opened in my own fork where I verified that the autolabeler did not run. The PR in question should have been labeled FLINK.
I will attach a screenshot of my forked repos configuration for this app to help debug.
We love having out PRs labeled, so any assistance or tips you could provide would be of great help. I'd be happy to also follow any troubleshooting steps in my local fork, where I have full permissions to adjust whatever I want, if you think that would help.
Thank you for the work you do on this project!

Here's a screenshot showing that the autolabeler is installed in my personal fork.

And here's a screenshot of the Probot Autolabeler configuration in my local fork. You can see it has all of the permissions that it needs.

@kbendick - I believe GitHub has depreciated the API uses by this Robot and I don't have any time to move it to the new API.

Ok. Thank you for your hard work @mithro!

Even updating to the last version of Probot version, this update doesn't seem to fix it. @mithro How can I help to debug/find issue in deployment environment?

Thanks to @Gabitchov's work the bot is back up and working now!


Float Right in CSS

IMO the float:right in .switch is not necessary...it even causes minor layout issues.

I've just published 2.1.3 which removes the float: right property from .switch.


omni_funded_send does not work? how  to solve?

omni_funded_send  "1KBZqsy22w8AJ2dPuYMc4W3hykosWey98R"  "16ovigXQdfPsbUCm9BYNGjFL31cNXTkduE" 31 0.6 "1MaLGJYdXSDva7zPkLaEBmugX7JSvjhXNT"
error code: -212
error message:
Error choosing inputs for the send transaction

please check if your feedaddress's BTC is enough

similar issue as https://github.com/OmniLayer/omnicore/issues/807, the error msg is the same. the sender has enough btc. @AllenYaoya can you explain why?

https://github.com/OmniLayer/omnicore/issues/760#issuecomment-434745561 <- likely this


Make RAINLINK runable

Newest RAINLINK code is integrated in #25.
It is however not clear now how to jump to it from the index notebook since there is no notebook for it. Maybe we can add a link to the list in the index notebook that opens the R script that has to be run. I do not know if and how a terminal with R interpreter in the correct directory can be opened by clicking on such a link.
I did some very quick test of using a jupyter notebook with R kernel. Just copy-pasting the first parts of Run.R worked. I could even place the notebook in the /notebook dir and use a relative path for source("../RAINLINK/Config.R")  . I did not go much further, but IMO that could be an easy way to present and run the code.
@overeem11 and colleagues: Maybe you try that out, or come up with other ways how to present and run the R code, see #29


Dev initial

Think we'll need a nuget.config file to set the repository path for the neo package (until the package is published to nuget proper), so that the build works on the server.

At some point, we'll need to log to app insights.
Don't think we need that immediately though.

Looks like the build's failing due to the sonar analyser:
WARNING: The following projects do not have a valid ProjectGuid and were not built using a valid solution (.sln) thus will be skipped from analysis...
F:\Build\_work\28\s\DFC.Api.Content\DFC.Api.Content.csproj
##[error]No analysable projects were found. SonarQube analysis will not be performed. Check the build summary report for details.
No analysable projects were found. SonarQube analysis will not be performed. Check the build summary report for details.

Perhaps it's something to do with VS creating projects with 1 guid, then switching it to a different one later?
It would be good to add the sonar analyser to the project, so that we don't have to wait for a build server build to see any errors. Although so far, our projects haven't had SonarQube enabled on the build server, so I'm not sure if there'll be any gotchas, e.g. if they'll have the same rule set or if the GlobalSuppression files get picked up on the build server. The snippet for the csproj is...
    <PackageReference Include="SonarAnalyzer.CSharp" Version="<IP_ADDRESS>97">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>

It'd also be good to add these to the project file...
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <Nullable>enable</Nullable>


Use SSH agent restriction instead of git overrides

Take a look at https://www.openssh.com/agent-restrict.html
This should enable more straightforward support for when multiple deploy keys are in use with docker.
All we have to do it seems is, really, just pass the host as a -h argument when invoking ssh-add.

Never mind, this doesn't allow discriminating by git path - only by the host path, so git overrides are will required. That said, maybe the keys can still be kept at the agent instead of creating files. This, together with git host overrides, might actually eliminate the need to copy actual keys into the container.


CS0246 - The type or namespace name 'INetFwRule3' could not be found

I tried to build this library using visual studio 2015 and 2017 but in booth cases i get an error it seams INetFwRule3 is unknown.
How can I fix the issue?

Which operating system are you building on?
I think you need to be running Windows 8 or higher.
I'm building on Windows 10 without issues.

Nice one @icnocop, INetFwRule3 build failure on Windows 7 resolved for me by building on a Windows 10 box.


Readme and Terraform 3rd-party plugin directory

Following the instructions in the Readme didn't work. I had to put this provider binary in the ~/.terraform.d/plugins/linux_amd64 directory. Note the linux_amd64 part.

This https://github.com/hashicorp/terraform/issues/15705 seems relevant though I confirmed that I had to put the binary in the OS_ARCH subdir.
Terraform v0.11.13
+ provider.ct (unversioned)
+ provider.google v2.3.0
+ provider.local v1.2.0
+ provider.null v1.0.0
+ provider.template v1.0.0
+ provider.tls v1.2.0

Terraform docs describe how to use ~/.terraform.d/plugins. They also allow subdirectories if needed:

If you use the same plugins directory on multiple systems, you can install plugins into subdirectories...

I've had no issues using the first approach (no arch subdirs). The docs align with Terraform's docs and its what I test against (I'm on Linux as well).
tree ~/.terraform.d/plugins/
/home/dghubble/.terraform.d/plugins/
├── terraform-provider-ct_v0.2.1
├── terraform-provider-ct_v0.3.0
├── terraform-provider-ct_v0.3.1
├── terraform-provider-matchbox_v0.2.2
└── terraform-provider-matchbox_v0.2.3

If you can't get the usual location to work on your system, you could file an issue with Terraform.

Yeah you were right. Looks like I can't even follow a correct readme.md file :p I am not used to having up-to-date and proper documentation ...


Run, test, and get started with Drupal site

💡 Description

[ ] Play around with new WST Drupal Site
[ ] Create sub-tasks for steps forward per #110

@sjoshi-jpl started to work on this. He will then analyses what's needed to integrate our code.

Status: Work and training ongoing.


About naming series

Bug report
System info: [InfluxDB version: 0.13.0, Ubuntu 16.04]
Steps to reproduce:

Write data into series device/led
Query data from that series

Expected behavior: [Can select data from the series]
Actual behavior: [Error in parsin query]

Use double quotes.
SELECT * FROM "device/led"

Single quotes are for strings while double quotes are for identifiers.

@jsternberg Thank you so much. You made my day.


Profile not set to Discord avatar type when avatar import is enabled during profile creation via Discord

Closed in https://github.com/asso-msn/msn-web/commit/42414df7a6bfa2abdc0c9216f07c4e0c5d60ed31


341 goal imp

Fixes https://github.com/PerfectFit-project/virtual-coach-issues/issues/341 using conditional response variations.

@bscheltinga Ah I see, that is not what we had in Beyza's dialog that was the basis of the dialog, so I did not even think that it would be an option. In that case conditional response variations won't work.

Yes, I figured out that a conditional response would not work. I think we have two options now:

Keep it as it is
Make the response generic

With generic response I mean the following, currently we have:

utter_ask_why_pa_goal_important_nuance:
- text: "Ik kan me voorstellen dat jouw {why_pa_goal_important_values} belangrijk voor je is/zijn. Kun je me iets
meer vertellen over waarom dit doel belangrijk is voor jouw {why_pa_goal_important_values}?"

We can change that into:

utter_ask_why_pa_goal_important_nuance:
- text: "Ik kan me voorstellen dat dit belangrijk voor je is. Kun je me vertellen waarom je dit hebt gekozen?"

@bscheltinga I was at a conference so just looked at it now. I think the actual problem is that the implementation assumes that people can type multiple numbers for their goal importance. But this is not the case - the user should just type one. The goal importance comes from Beyza's dialog, where people can only choose one. And the excel-file for the goal-setting dialog also does not say anything about being able to choose multiple answers.

@nelealbers I fixed the validation and added the sentence that they need to choose the option which is most important for them: "Kies de optie die voor jouw het belangrijkste is."

@nelealbers you're right. I retrained the model.

@bscheltinga Nice, I merged it!


Support gradle

Build and Publish without test with version(ex: 2.5.0-SNAPSHOT) in gradle.properties
$> ./gradlew clean build publishToMavenLocal -x test

Build and Publish for Pinpoint without test with version(ex: 2.5.0-SNAPSHOT) in gradle.properties and Gradle plugins with 2.5.0-SNAPSHOT
$> ./gradlew clean build publishToMavenLocal :gradle-plugins:publishToMavenLocal -Pversion=2.5.0-SNAPSHOT -x test

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Update the required licenses information

Hello team, this is Mauricio Oliveira, GBB for Customer Service.
We had an extensive internal conversation around the requirements to run PVA for customers that have Customer Service.
The Customer Service addons licenses give the customer allowances to leverage PA without the need to add the Tenant License (base license). Meaning, if the customer has:
Customer Service plus:
a. With the Chat addon they will get: 1k per tenant per month sessions
b. With the Voice addon they will get: 2K voice Bot mins/user/month and 6K call mins/user/month
c. With the Digital Messaging addon they will get: 1k per tenant per month sessions
d. With the Digital Messaging and Voice bundle addon they will get: 1k per tenant per month sessions for chat AND 2K voice Bot mins/user/month and 6K call mins/user/month for voice
Can we please update the document to reflect the allowances and explicit inform our customers about that?
Even the partners are referring to this document and asking us to add the tenant base PVA license.
If you need more clarification, please reach out to our PM Mai Nguyen
Thank you team.

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

ID: afd5c132-57b9-d038-7e20-8f9d94d53bd3
Version Independent ID: a436faf7-de5e-cfe5-34af-c8cc6e075cdd
Content: Assign user licenses and manage access - Power Virtual Agents
Content Source: power-virtual-agents/requirements-licensing.md
Service: power-virtual-agents
GitHub Login: @iaanw
Microsoft Alias: iawilt

Thanks for your comment, @moliveirapinto. This issue has been assigned to the doc author for review.


support: UDM 1.9.2 has no data in USG nor USW dashboards (InfluxDB)

First off - thank you!  What a great collection of tools.
One glitch I can't resolve is that 5 out of 6 dashboards are working, except the USG dashboard.  I have a UDM pro device acting as my security gateway.  Any tips on how to trouble shoot why no data is coming through?  FYI I'm on v6.1.70 of the controller and 1.9.2 of the UDM firmware.

Can you share a screenshot so I know what's missing and which dashboard (influx/prometheus) you're using?

Thanks!  Grafana 7.4.5, Influx 1.8.4, no prometheus, Unfi-poller 2.0.1-787.   Poller is running on a Raspberry Pi 4B, not in docker.  Controller is running on the UDM Pro.  The poller DOES NOT show the UDM stats or the UDM switch info on the USW dashboard.

Probably turn on debug and see if the logs print any info about the UDM...

Looks like it is picking up a UDM

Very strange.  Has this ever worked? Did upgrading to 1.9.2 break it? Another user opened an issue about 1.9.0, but I believe he got everything working. https://github.com/unifi-poller/unifi-poller/issues/315 - seems at least 1.9.0 is OK. I haven't had any other reports.
Do you have a USW? I forget if the counter (you posted a screenshot of) includes UDM in the USW tally. If you do, does the USW show up no the USW dashboard OK?

I just installed unifi-poller yesterday, so i dont know if 1.9.2 broke it.
I do have a USW and it is showing up correctly in the USW dashboard.

 If you send that to me I can do a deeper dive. It does contain mac addresses, IPs, serial numbers and device names. My email is david at sleepers dot pro.
I'm just not sure what's going on here. UDM has been working great for many folks. That output format may have changed in 1.9.2, or your setup may not be emitting metrics for the device. Seeing that output will let me figure that out.

I made a new release tonight. Maybe give that a shot. It doesn't have anything specific to this issue, but perhaps it has some magic.

Something else comes to mind: make sure the device (UDM) has a unique name and not a MAC address. I don't know if this can cause issues, but it may.

So... I rebooted my UDM and now the data is flowing to the USG dashboard and the UDM switch shows on the USG dashboard.  Odd!  FWIW, the UDM devices were showing up when i ran unifi-poller -j devices before the reboot.  I'll keep trouble shooting to see if there's something repeatable here.
Also, I noticed on the UAP dashboard that the "guests" count shows zero, while the "users" count is the sum of both "users" and "guests".  Currently I have 40 clients on the APs, 22 are users and 18 are guests (per Unifi's dashboard) but the UAP dashboard shows 40 users and 0 guests.

Also, I did upgrade to your newest version.  That by itself didn't get it to work.  Before upgrading, unifi-poller showed 1 USG/UDM but no data in the dashboard.  After the upgrade, unifi-poller showed 0 USG/UDM (and still no data in the dashboard).  After the reboot, unifi-poller picked up the UDM and the dashboards started to populate.

This is all great information. A stuck UDM had been reported before and it's good to know a reboot gets it going.
I appreciate the dashboard feedback. I'm working on updates to them now, so I'll make sure the user counts are corrected.
Thank you for the updates!

Just mentioning that there are beta releases of unifi controller for both UDM-Pro (like all the devices) but we also have that issue with the new UXG-Pro (Next-Gen Gateway Pro).  Much of this thread sounds similar to the other issue that you have been working on.  @davidnewhall - I'm still having an issue (even after installing all new unifi-poller instance today) with this device showing up under USG/UDM.  I'm still seeing a 0.  I would imagine that this would show USG/UDM/UXG as it's the replacement to the USG.  I don't want to redirect this thread by any means!  Simply saying that UDM and UXG still seem to have some reporting issues for itself.  Thank you for all the great work!!

Hey @absoluteg! The original issue here was resolved by rebooting the UDM. I think with the UXG I just have some more work to do to make it work. I was too optimistic and skipped some things, like output. (whoops) I'm leaving this task open to remind to:

Fix the user / guest counters on the UAP dashboard.

Hi folks, also running Controller Version 6.1.70 on UDMP version 1.9.2. Are you seeing issues on LAN counters on the USG page. I wondering if this is an open issue in the new version or if there is something else going on. I rebooted the USG a few times, still no LAN data.

Counters coming as 0 in influxDb.

Any ideas? Any help would be appreciated. Love the UnifiPoller. ❤
Cheers.

Run unifi-poller -j d and see if the data is in the API response.

Thanks @davidnewhall . I see the port_table under the USG in the data but it's not coming thru in the Influx. Are the below the fields you would expect.
 "port_table": [         {           "port_idx": 1,           "media": "GE",           "port_poe": false,           "speed_caps": 1048623,           "op_mode": "switch",           "portconf_id": "5e77d786d1dcea02e1b404cf",           "autoneg": true,           "enable": true,           "flowctrl_rx": false,           "flowctrl_tx": false,           "full_duplex": true,           "is_uplink": false,           "mac": "e0:63:da:88:57:1f",           "name": "LAN",           "num_port": 1,           "rx_broadcast": 7889,           "rx_bytes": 37989328,           "rx_dropped": 201,           "rx_errors": 0,           "rx_multicast": 7334,           "rx_packets": 231375,           "rx_rate": 51600,           "rx_rate-max": 396032,           "speed": 1000,           "tx_broadcast": 1441,           "tx_bytes": 468799892,           "tx_dropped": 0,           "tx_errors": 0,           "tx_multicast": 1815,           "tx_packets": 486276,           "tx_rate": 97800,           "tx_rate-max": 32908976,           "type": "ethernet",           "up": true,           "ifname": "eth0",           "ip": "<IP_ADDRESS>",           "netmask": "<IP_ADDRESS>",           "tx_bytes-r": 19496,           "rx_bytes-r": 3569,           "bytes-r": 23065,           "port_security_mac_address": [],           "network_name": "lan",           "masked": false,           "aggregated_by": false         },

But for some odd reason, the data is not making it in the tables.

Interestingly enough, the this data is being captured in the USW_ports table (UDMP as a switch) but not in the UDM table.

I believe you're graphing rx_bytes and tx_bytes. I don't believe I used any of the -r variables. Are those numbers changing? Your screenshot shows data on the graphs...

Sorry- correct. Looking at rx_bytes and tx_bytes. The numbers are changing in every API call I make.. But just not landing on Influx.
The screenshot shows data on the graph on the usw_ports measure. But the dashboard template for USG looks at the usg measure. Those stopped working sometime around 3/14 for me. I think that's when my controller updated to the latest version.

This is where the data comes in from the API: https://github.com/unifi-poller/unifi/blob/master/usg.go#L230-L233
This is where the data is written to InfluxDB: https://github.com/unifi-poller/influxunifi/blob/master/usg.go#L70-L75
You can see it's pretty much a 1:1 mapping. This is what it looks like in my unifi-poller -j d output:
      "stat": {
        "gw": {
          "site_id": "574e86994566ffb914a2683c",
          "o": "gw",
          "oid": "74:43:a2:1b:25:39",
          "gw": "74:43:a2:1b:25:39",
          "time":<PHONE_NUMBER>000,
          "datetime": "2021-03-26T12:10:00Z",
          "duration": 161603000,
          "lan-rx_packets": 150814690,
          "lan-rx_bytes":<PHONE_NUMBER>43,
          "lan-tx_packets": 125454796,
          "lan-tx_bytes":<PHONE_NUMBER>1,
          "wan-rx_packets": 125362274,
          "wan-rx_bytes":<PHONE_NUMBER>3,
          "wan-tx_packets": 149582953,
          "wan-tx_bytes":<PHONE_NUMBER>46,
          "wan-rx_dropped": 1431,
          "lan-rx_dropped": 39
        }
      },

Same question: Are your numbers changing? Did they move the data somewhere else? That stat json I pasted above should be on the same level as the USG device, kinda like you see below. If they moved it (which they've done before), it may throw it off and cause zeros. You're welcome to send me your entire json payload and I can check this: david at sleepers dot pro.
    {
      "_id": "5d5ba3168f038502155a1020",
      "ip": "67.xx1.x5.x20",
      "mac": "74:43:a2:1b:25:39",
      "model": "UGW4",
      "type": "ugw",
      "version": "<IP_ADDRESS>63507",
      ...
      "stat": { ..stuff.. },

I run the command like this to make it pretty:
unifi-poller -j d | grep wan | jq . > unifi-devices.json

The interface RX and TX numbers are changing under the port_table but it looks like UBNT is no longer aggregating those numbers under the GW (gateway) stat array 🙁  I'll send you a redacted JSON copy of the output in case you want to look at it. Thanks 😊
 "stat": {
        "gw": {
          "site_id": "5e77d783d1dcea02e1b404bb",
          "o": "gw",
          "oid": "e0:63:da:88:57:1f",
          "gw": "e0:63:da:88:57:1f",
          "time":<PHONE_NUMBER>000,
          "datetime": "2021-03-27T06:40:00Z",
          "duration": 151491000
        },

I'm running the first CloudKey with 6.1.71 and wanna try and help by bringing in some more JSON information.
My unifi-poller is running on docker. But since there's no "bash/sh" available: Is  there any way to post information from executing the "unifi-poller -j d" command?
By the way: My setup is showing the WAN throughput:

What version of Grafana?
7.4.5
What version of InfluxDB?
1.8.4
What version of unifi-poller?
Docker:latest
Where does poller run?
unRAID OS, on Docker environment
Where does your controller run?
UC-CK (CloudKey 1st Generation)
How many devices is poller collecting?
Devices: Not more than 10, Clients 60-100

You can do this on unRAID:
docker run --rm -it golift/unifi-poller -j d

Thanks for the help, with that it was quite easy to achieve, but for debugging purposes I would also suggest to run in on baremetal. Well, maybe I'll migrate to a Raspberry Pi 4 once you did the next major change.
Running it with "prep" didn't grep the right part, but I've sent you the complete JSON file.
unRAID:
docker run --rm -it -e 'UP_UNIFI_CONTROLLER_0_USER'='unifipoller' -e 'UP_UNIFI_CONTROLLER_0_PASS'='$password' -e 'UP_UNIFI_CONTROLLER_0_URL'='$ipaddress' golift/unifi-poller -j d | grep wan | jq > /mnt/user/isos/unifipoller.json

The grep is just to get rid of the stuff that's not json. The entire payload will contain all devices. A fancier jq command can select only specific ones, but sending me all the json is preferred, then I can check everything. Thank you for sending that!
re, bad format: use 3 ticks instead of 1, I edited your comment to fix it. Check it out!

closing in favor of #333 ^


Effects

This PR adds the concept of effects to Microcosm, a way to apply side-effects in a safe way. Whenever an action moves into a new state, it asks the history object to reconcile. After reconciliation, I've added an extra step for handling side effects. This should support a few use cases:

Side-effects in presenters that are the result of actions happening
Secondary data fetching

const repo = new Microcosm()

const Notifications = {
  notify (repo, params) {
    alert(params.name + ' was updated!')
  }

  register() {
    return {
      [createUser] : this.notify
    }
  }
}

repo.addEffect(Notifications)

repo.push(createUser, { name: 'Billy' })

These can be added to Presenters too, and localized to a particular fork. So side-effects can be managed more strategically than a simple register method:
class MyPresenter extends Presenter {
    setup (repo) {
        repo.addEffect(Effect, { options })
    }
}

I like it. I need to sit with the term Effect for a bit, but I think this is super helpful. Minor concerns/things to think about: Domains, Presenters, and Effects are all feel super similar in that they all have register methods and callbacks. A newbie might wonder why they can't just use domains for this purpose, since they look the same and work similarly. Maybe just an issue of documentation.

Coverage remained the same at 100.0% when pulling 72b7fc80a642e5b7088dbae54954ddff7adaae1d on effects into d4da2ccbf42e6b4f44963a38ab2fd471887095f0 on master.

This probably screws up a bunch of naming internals, but I almost think this would be nice:
class MyPresenter extends Presenter {
    setup (repo) {
        repo.register(Effects, { options })
    }
}

Coverage remained the same at 100.0% when pulling 62a113fcb1760c4470930a2f570c625c06302a6b on effects into d62f88879afc450635de8f5758259f303d3e0cc7 on master.

@greypants I hear you on the similarity. There's something there that I haven't figured out yet. I'm okay with it being a little confusing for the sake of consistency, but I agree that the documentation needs to be clearer.

Coverage remained the same at 100.0% when pulling 16c7388db518c814787f39b3fdfdffb18284df23 on effects into 36121a7bfc9f29b1e19a42a7d9f7fdd82e1520d9 on master.


Revert "increment umbrella chart minor version"

This reverts commit 67968f2b9893044b8806d89edf1e4d491054ca20.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


[flutter_tools] use a single fake implementation of HttpClient

Replace all Mock/Fake http clients with a single FakeHttpClient. This works similar to the fake process manager, except that it does not enforce a strict order.
example API:

var client = FakeHttpClient.any(); // Returns a 200 empty request for everything

// Responds to a get request to localhost:8181 with a 201 with 3 bytes, other requests return
// a StateError
var client2 = FakeHttpClient.list([
  FakeRequest(Uri.parse('localhost:8181'), response: FakeResponse(body: [1, 2, 3], statusCode: 201))),
]);

https://github.com/flutter/flutter/issues/71511

Is there any way to leverage MockClient instead of maintaining our own?

That is a mock of the package:http client, not the dart:io http client.


Skill Cape Glitches Some Hats/Head Slot Items

Please check if your issue is not a duplicate by searching existing issues
Describe the bug
Wearing certain skill capes causes glitches in some hats/head slot items
When wearing my Smithing or Runecrafting capes, my Red boater glitches.  If I switch to my agility cape the glitch disappears.
Same thing happens with a few other items I tried:
Santa Hat
Wizard Hats (Black/Blue) EDIT: Wizard hats are broken with any skill cape I wear
Desert Disguise
Mime mask
Camo Helmet
To Reproduce
Steps to reproduce the behavior:
Wear a red boater with runecrafting cape and the boater is glitched.

The bug does not appear when the HD mod is disabled.
Other players with the mod are able too see the glitch too.
EDIT: It looks like the wizard hats (Black&Blue) are also glitched with my agility cape

I only have three skill capes so I don't know if it affects other capes.
Team cape, God cape (+Imbued),  Fire cape work fine.
Expected behavior
No glitch when wearing other skill cape:

Screenshots
Same thing happens with Santa hat and other hats:

Environment (please complete the following information):

OS: Windows 10 Version 21H1

RuneLite version: 1.7.27

Launcher version: 2.1.7

Additional context
Add any other context about the problem here, e.g. logs. Your client logs can usually be found in
C:\Users\<your_user_name>\.runelite\logs on Windows and ~/.runelite/logs on Linux and macOS.
client.log
Mod settings:

I have the same issue with my untrimmed agility cape + partyhat & specs. cuts into the cape just like it does to yours. Also looking for a fix.

related to #209

An update was released today that should have fixed this. :)


Files not removed after page change in a single page application.

I am using lazyload to load js & css dynamically, which is loading very well.
But the thing is when i switched the page not removed, i can see the files there.
Here is the code snippet.
"when(objVariables.RouteURLs.ManageEmployees, {
templateUrl: objVariables.TemplateURLs.ManageEmployees,
controller: 'ManageEmployeeCtrl',
caseInsensitiveMatch: true,
resolve: {
deps: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([{
name: 'modelFile',
files: [
'http://localhost:59618/Content/Js/Settings/ManageEmployee.js',
'http://localhost:59618/Content/Js/bootstrap.min.js',
'http://localhost:59618/Content/Js/jquery.bootpag.min.js',
]
}]);
}]
}"

Once something is loaded into angular, you have to reload the page completely to unload it. There is no other way, sorry.


feat(rpc): implement MpoolSelect

Summary of changes

Changes introduced in this pull request:

Expose select_messages, which was hidden behind #[cfg(test)].
Test schema of MpoolSelect against Lotus.

Reference issue to close (if applicable)

Closes #4196
Other information and links

Change checklist

[x] I have performed a self-review of my own code,
[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 (if possible),
[x] I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

The newly exposed code could use a lot of love.


[BUG] Improve Image Download Handling

Describe the bug
Downloaded images can't be uploaded again
To Reproduce
Steps to reproduce the behavior:

Creating a virtual machine image with upload from local
Downloading the image just uploaded
Creating another virtual image by uploading the newly downloaded image
Virtual image creation failed with Upload failed: the uploaded file size 665368738 should be a multiple of 512 bytes since Longhorn uses directIO by default

Expected behavior
Successfully uploading an image which is originally downloaded from Harvester
Environment

Harvester ISO version: Harvester master-branch (commit 0861f5be4533418bbe148efc5f0bc32f07fe4220)

Additional context
After investigation, we found out LH changes the behavior to compress the downloaded image, in the current Harvester implementation, the downloaded image file will be named with .img suffix by default, however, this file is compressed by LH, if users want to upload the downloaded image, it should be decompressed first.
Harvester should change the attachment in the request header as LH to name the downloaded image with .gz suffix, which could avoid confusing, and a document updating is also required.
Workaround
Rename the downloaded image as .gz suffix, and decompress it with $ gzip -d <image name>, then the image file should be eligible to upload.

Hi, @WebberHuang1118 I'm noticing some issues with this still, but not sure if due to underlying configuration.
Validation Failed:
I'm still noticing the issue is present on:

Harvester ISO Version: v1.3.0-rc1
Rancher Dashboard Version: commit c3ae9bc14ad1a306025c0882eefde7baef3d046d ( containing commit 65366810efe83db05512194589771b8c3a0a0914 ) (has fix for volumes)
Underlying Infrastructure: qemu/kvm

Hi @irishgordo,
the related commit is https://github.com/harvester/harvester/commit/12d5e49354cdbdd9da88ffe46d452e55217cfee8,
which is not included in 1.3.0-rc1 history,
Can you verify with the master branch? Thanks.

Hi @WebberHuang1118  - thanks for that mention :smile:
Retested on:
NAME="SLE Micro"
VERSION="5.4"
VERSION_ID="5.4"
PRETTY_NAME="Harvester master"
ID="sle-micro-rancher"
ID_LIKE="suse"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sle-micro-rancher:5.4"
VARIANT="Harvester"
VARIANT_ID="Harvester-20240202-2d32319"
GRUB_ENTRY_NAME="Harvester master"

(  Version: master-a590f589-head  )
And this looks great :smile: :+1:
I'll go ahead and close this out


Request-Reply in Spring Cloud Stream

Does any capability of sending a request and receiving a reply exist in Spring Cloud Stream? Something that is similar to a Gateway in Spring Integration.
Or is Spring Cloud Stream just for one direction messaging?

Second this, can anyone who has done this provide a sample?

Currently, Spring Cloud Stream has no dedicated support for request/reply interaction. If necessary, this can be achieved by using a  Spring Integration Gateway.

There is already some community requirements and some ideas how to be on the matter: https://stackoverflow.com/questions/47800497/how-can-messaginggateway-be-configured-with-spring-cloud-stream-messagechannels.
I've cooked some simple PoC how it works without any modifications to the Framework:
@EnableBinding({ Processor.class, CloudStreamGatewayApplication.GatewayChannels.class })
@SpringBootApplication
public class CloudStreamGatewayApplication {

	interface GatewayChannels {

		String REQUEST = "request";

		@Output(REQUEST)
		MessageChannel request();

		String REPLY = "reply";

		@Input(REPLY)
		SubscribableChannel reply();
	}

	private static final String ENRICH = "enrich";

	@MessagingGateway
	public interface StreamGateway {

		@Gateway(requestChannel = ENRICH, replyChannel = GatewayChannels.REPLY)
		String process(String payload);

	}

	@Bean
	public IntegrationFlow headerEnricherFlow() {
		return IntegrationFlows.from(ENRICH)
				.enrichHeaders(HeaderEnricherSpec::headerChannelsToString)
				.channel(GatewayChannels.REQUEST)
				.get();
	}

	@StreamListener(Processor.INPUT)
	@SendTo(Processor.OUTPUT)
	public Message<?> process(Message<String> request) {
		return MessageBuilder.withPayload(request.getPayload().toUpperCase())
				.copyHeaders(request.getHeaders())
				.build();
	}

	public static void main(String[] args) {
		ConfigurableApplicationContext applicationContext =
				SpringApplication.run(CloudStreamGatewayApplication.class, args);

		StreamGateway gateway = applicationContext.getBean(StreamGateway.class);

		String result = gateway.process("foo");

		System.out.println(result);
	}

}

The application properties:
spring:
  cloud:
    stream:
      bindings:
        input:
          destination: requests
        output:
          destination: replies
        request:
          destination: requests
        reply:
          destination: replies

So, the idea is like to send a message into the bound destination from the @MessagingGateway and wait for the reply from another bound destination. Those two are simply INPUT and OUTPUT for the processor on the other side.
As for the out-of-the-box solution it seems just enough to include into some ChannelInterceptor for the outbound part the logic to convert TemporaryReplyChannel to the string representation over existing HeaderChannelRegistry. On the consumer side copy appropriate replyChannel and errorChannel from the request message to the reply message when we process @SendTo (@ServiceActivator does that already automatically).
Any other thoughts are welcome!

@artembilan
Does this example uses some kind of correlationId?
If not would would you suggest when dealing with multiple concurrent requests/responses?

The correlation is provided by this

.enrichHeaders(HeaderEnricherSpec::headerChannelsToString)

Each request gets a dedicated replyChannel which is stored in a header; the enricher stores the channel in a HeaderChannelRegistry and changes the header to a String value.
When the reply is received, the gateway resolves the string back to the actual reply channel for this request.
For this reason, the server side must echo back the replyChannel header.
Hence .copyHeaders(request.getHeaders()).
This works out-of-the-box with the Rabbit binder.
When using the Kafka binder, you must add the replyChannel to the binder's headers property (or use the kafka11 binder or 2.0.M4 which uses kafka 1.0.

I know this has been targeted as a possible future feature, but I have a question about Artem's solution in the meantime. In Artem's comments within the solution to my original post, he stated:

Only the problem here that your producer application must be as single consumer in the group for the AccountChannels.ACCOUNT_CREATED - we have to ensure that only one instance in the cloud is operating at a time. Just because only one instance has that TemporaryReplyChannel in its memory.

Any ideas on how this solution could possibly work in a clustered environment where more than one consumer in the group can exist? I am using NGINX to load balance across multiple servers, and ideally I'd like to have the consumer running on each server in a horizontal scaling configuration. True to Artem's comment, when I run the consumer on each server, my test cases fail. When I only run the consumer on one of the servers (and thusly only one is available within the cloud via Eureka), the test cases work. However, this isn't a resilient enough configuration considering server and/or microservice failures.

Hi,
I am using version 2.0.0.Release of binder kafka and streams like so:
plugins {
    id 'java'
}

group 'com.projectdrgn'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.springframework.boot:spring-boot-starter-webflux:2.0.1.RELEASE"
    compile "org.springframework.cloud:spring-cloud-stream-binder-kafka-streams:2.0.0.RELEASE"
    compile "org.springframework.cloud:spring-cloud-stream-binder-kafka:2.0.0.RELEASE"

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

I copied Artem's sample + application properties directly into my intellij. And it works with just one exception. Instead of FOO I receive a byte array encoded into a string saying 70,79,79. Anything I am missing?
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.Input;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Processor;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.integration.annotation.Gateway;
import org.springframework.integration.annotation.MessagingGateway;
import org.springframework.integration.dsl.HeaderEnricherSpec;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.SubscribableChannel;
import org.springframework.messaging.handler.annotation.SendTo;

@EnableBinding({ Processor.class, CloudStreamGatewayApplication.GatewayChannels.class })
@SpringBootApplication
public class CloudStreamGatewayApplication {
    interface GatewayChannels {

        String REQUEST = "request";

        @Output(REQUEST)
        MessageChannel request();

        String REPLY = "reply";

        @Input(REPLY)
        SubscribableChannel reply();
    }

    private static final String ENRICH = "enrich";

    @MessagingGateway
    public interface StreamGateway {

        @Gateway(requestChannel = ENRICH, replyChannel = GatewayChannels.REPLY)
        String process(String payload);

    }

    @Bean
    public IntegrationFlow headerEnricherFlow() {
        return IntegrationFlows.from(ENRICH)
                .enrichHeaders(HeaderEnricherSpec::headerChannelsToString)
                .channel(GatewayChannels.REQUEST)
                .get();
    }

    @StreamListener(Processor.INPUT)
    @SendTo(Processor.OUTPUT)
    public Message<?> process(Message<String> request) {
        return MessageBuilder.withPayload(request.getPayload().toUpperCase())
                .copyHeaders(request.getHeaders())
                .build();
    }

    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext applicationContext =
                SpringApplication.run(CloudStreamGatewayApplication.class, args);

        StreamGateway gateway = applicationContext.getBean(StreamGateway.class);

        Thread.sleep(5000);

        while (true) {
            String result = gateway.process("foo");

            System.out.println(result);
            Thread.sleep(1000);
        }
    }

}

Thanks,
Stefan

@stebart,
Please, follow this fix: https://github.com/titoc/rest-gateway/pull/1

@kabennett Sorry for the delay.

Any ideas on how this solution could possibly work in a clustered environment where more than one consumer in the group can exist?

It's not a problem on the consumer side; one of the instances will handle the request and send the reply. The issue is getting the reply back to the right client-side instance.
The simplest solution for that is to have a dedicated reply topic for each instance and use dynamic reply routing via a BinderAwareChannelResolver as is used in the router app.

Hi,
I am using version 2.0.0.Release of binder kafka and streams like so:
plugins {
    id 'java'
}

group 'com.projectdrgn'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.springframework.boot:spring-boot-starter-webflux:2.0.1.RELEASE"
    compile "org.springframework.cloud:spring-cloud-stream-binder-kafka-streams:2.0.0.RELEASE"
    compile "org.springframework.cloud:spring-cloud-stream-binder-kafka:2.0.0.RELEASE"

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

I copied Artem's sample + application properties directly into my intellij. And it works with just one exception. Instead of FOO I receive a byte array encoded into a string saying 70,79,79. Anything I am missing?
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.Input;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Processor;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.integration.annotation.Gateway;
import org.springframework.integration.annotation.MessagingGateway;
import org.springframework.integration.dsl.HeaderEnricherSpec;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.SubscribableChannel;
import org.springframework.messaging.handler.annotation.SendTo;

@EnableBinding({ Processor.class, CloudStreamGatewayApplication.GatewayChannels.class })
@SpringBootApplication
public class CloudStreamGatewayApplication {
    interface GatewayChannels {

        String REQUEST = "request";

        @Output(REQUEST)
        MessageChannel request();

        String REPLY = "reply";

        @Input(REPLY)
        SubscribableChannel reply();
    }

    private static final String ENRICH = "enrich";

    @MessagingGateway
    public interface StreamGateway {

        @Gateway(requestChannel = ENRICH, replyChannel = GatewayChannels.REPLY)
        String process(String payload);

    }

    @Bean
    public IntegrationFlow headerEnricherFlow() {
        return IntegrationFlows.from(ENRICH)
                .enrichHeaders(HeaderEnricherSpec::headerChannelsToString)
                .channel(GatewayChannels.REQUEST)
                .get();
    }

    @StreamListener(Processor.INPUT)
    @SendTo(Processor.OUTPUT)
    public Message<?> process(Message<String> request) {
        return MessageBuilder.withPayload(request.getPayload().toUpperCase())
                .copyHeaders(request.getHeaders())
                .build();
    }

    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext applicationContext =
                SpringApplication.run(CloudStreamGatewayApplication.class, args);

        StreamGateway gateway = applicationContext.getBean(StreamGateway.class);

        Thread.sleep(5000);

        while (true) {
            String result = gateway.process("foo");

            System.out.println(result);
            Thread.sleep(1000);
        }
    }

}

applications.yml
spring:
  cloud:
    stream:
      bindings:
        input:
          destination: requests
        output:
          destination: replies
        request:
          destination: requests
        reply:
          destination: replies

Thanks,
Stefan

Having the same problem

As I said in the mentioned PR:
You need to have this in the gateway configuration:
@ServiceActivator(inputChannel = GatewayChannels.TO_UPPERCASE_REPLY)
public MyMessage getReply(MyMessage myMessage) {
    return myMessage;
}

The gateway interface must be declared without replyChannel:
@MessagingGateway
public interface StreamGateway {

	@Gateway(requestChannel = ENRICH)
	String process(String payload);
}

This way Spring Cloud Stream will perform its content negotiation logic and convert an incoming bytes to the expected type with built-in message converters.
Since the service activator is configured without an outputChennel, the replyChannel header is going to be selected and the gateway will receive a desired reply.

@garyrussell

It's not a problem on the consumer side; one of the instances will handle the request and send the reply. The issue is getting the reply back to the right client-side instance.
The simplest solution for that is to have a dedicated reply topic for each instance and use dynamic reply routing via a BinderAwareChannelResolver as is used in the router app.

Anything in the Greenwich release that assists in implementing this?

Greenwich? That is spring-cloud. I think you meant Fishtown. Outside of what's available in SI, no there is nothing in Fishtown

Hi, I was trying to accomplish something similar, although it is HTTP specific and not a generic request/reply mechanism out of the box.

I used AsyncContext from Servlet 3.1

AsyncContext returned from every request is stored in a ConcurrentMap with a key that is calculated from System.identityHashCode(request) where request is HttpServletRequest which will become a correlationId that needs to be stored in the header part of a Message<?>
and it is the responsibility of the Message<?> receiving component that it puts the same id back in the Messaeg<?> that it sends back to the origin.

As it uses the AsyncContext, the thread which handled the request does not block. Thread is reattached when AsyncContextServletMessagingGateway retrieves  a returned message from  replyChanneland finds aAsyncContextwith thecorrelationIdand callsdispatch()` on it.

The original idea came from jetty's Continuations which has been deprecated in replace for native AsyncContext use. Therefore, it is nothing new and has been used in all kinds of projects including CometD
Here is the entire code so far I am using for my PoC. I hope this will give some hint to someone who is thinking of doing request/reply pattern using Spring Cloud Stream.
https://gist.github.com/hanishi/e2f2e83a168e192f681f3a85379019d6

@kabennett Sorry for the delay.

Any ideas on how this solution could possibly work in a clustered environment where more than one consumer in the group can exist?

It's not a problem on the consumer side; one of the instances will handle the request and send the reply. The issue is getting the reply back to the right client-side instance.
The simplest solution for that is to have a dedicated reply topic for each instance and use dynamic reply routing via a BinderAwareChannelResolver as is used in the router app.

Hi do you know if there is any solution for this issue now? Thanks.

@kabennett Sorry for the delay.

Any ideas on how this solution could possibly work in a clustered environment where more than one consumer in the group can exist?

It's not a problem on the consumer side; one of the instances will handle the request and send the reply. The issue is getting the reply back to the right client-side instance.
The simplest solution for that is to have a dedicated reply topic for each instance and use dynamic reply routing via a BinderAwareChannelResolver as is used in the router app.

Hi do you know if there is any solution for this issue now? Thanks.

An alternative to Garry's solution. I'm using filtering mechanism. For example
@MessagingGateway
public interface StreamGateway {

  String ENRICH = "enrich";
  String FILTER = "filter";

  @Gateway(requestChannel = ENRICH, replyChannel = FILTER)
  Mono<byte[]> sendAndReceive(Message<String> message);
  //or byte[] sendSynchronousEvent(Message<String> message);
}

@Configuration
public class BeanContainer {

  public static final UUID instanceUUID = UUID.randomUUID();

  @Bean
  public IntegrationFlow headerEnricherFlow() {
    return IntegrationFlows.from(EventListenerGateway.ENRICH)
        .enrichHeaders(HeaderEnricherSpec::headerChannelsToString)
        .enrichHeaders(headerEnricherSpec -> headerEnricherSpec.header("instanceId",instanceUUID))
        .channel(Source.OUTPUT)
        .get();
  }

  @Bean
  public IntegrationFlow replyFiltererFlow() {
    return IntegrationFlows.from(Sink.INPUT)
        .filter(Message.class, message -> instanceUUID.equals(message.getHeaders().get("instanceId")))
        .channel(EventListenerGateway.FILTER)
        .get();
  }
}

It's getting warning. Maybe it's not best practice but work for multiple producer instance.
Explanation:
When consumer reply-back to producer and there is a multiple producer, each producer will collect to reply-message. This is a problem and I am using this code block to solve this problem. If you set dedicated instance id to message header, you can filter reply-message by instance id.

@kabennett Sorry for the delay.

Any ideas on how this solution could possibly work in a clustered environment where more than one consumer in the group can exist?

It's not a problem on the consumer side; one of the instances will handle the request and send the reply. The issue is getting the reply back to the right client-side instance.
The simplest solution for that is to have a dedicated reply topic for each instance and use dynamic reply routing via a BinderAwareChannelResolver as is used in the router app.

Hi do you know if there is any solution for this issue now? Thanks.

An alternative to Garry's solution. I'm using filtering mechanism. For example
@MessagingGateway
public interface StreamGateway {

  String ENRICH = "enrich";
  String FILTER = "filter";

  @Gateway(requestChannel = ENRICH, replyChannel = FILTER)
  Mono<byte[]> sendAndReceive(Message<String> message);
  //or byte[] sendSynchronousEvent(Message<String> message);
}

@Configuration
public class BeanContainer {

  public static final UUID instanceUUID = UUID.randomUUID();

  @Bean
  public IntegrationFlow headerEnricherFlow() {
    return IntegrationFlows.from(EventListenerGateway.ENRICH)
        .enrichHeaders(HeaderEnricherSpec::headerChannelsToString)
        .enrichHeaders(headerEnricherSpec -> headerEnricherSpec.header("instanceId",instanceUUID))
        .channel(Source.OUTPUT)
        .get();
  }

  @Bean
  public IntegrationFlow replyFiltererFlow() {
    return IntegrationFlows.from(Sink.INPUT)
        .filter(Message.class, message -> instanceUUID.equals(message.getHeaders().get("instanceId")))
        .channel(EventListenerGateway.FILTER)
        .get();
  }
}

It's getting warning. Maybe it's not best practice but work for multiple producer instance.
Explanation:
When consumer reply-back to producer and there is a multiple producer, each producer will collect to reply-message. This is a problem and I am using this code block to solve this problem. If you set dedicated instance id to message header, you can filter reply-message by instance id.

Hi, @burakhelvaci I have made a sample project using your approach and seems to work well. see https://github.com/cjrequena/spring-integration-gateway-kafka-sample

IntegrationFlows.from(streamName)
...
.channel(streamName)

You make a trap for yourself. So, essentially you loop messages from the channel to itself.
It might work some time in your target solution, and sometime doesn't. Just because such a channel declaration brings for us a DirectChannel instance with a UnicastingDispatcher. If there are several subscribers to such a channel, the messages are going to be handed to them in round-robin manner.
I'm not sure what is your logic, but gateway's input must be a different one from the output for target binding, so you won't loop accidentally.
Also you need to keep in mind that filter by instance id works, but this is not an efficient solution since all your instances are going to consume the same message from Kafka topic. However it is going to work only when all your instances have different groups to achieve a true publish-subscriber for reply delivery.
I don't have a perfect answer how it should be, so that might be a reason why we still don't have a reqest-reply as an out-of-the-box solution.

IntegrationFlows.from(streamName)
...
.channel(streamName)

You make a trap for yourself. So, essentially you loop messages from the channel to itself.
It might work some time in your target solution, and sometime doesn't. Just because such a channel declaration brings for us a DirectChannel instance with a UnicastingDispatcher. If there are several subscribers to such a channel, the messages are going to be handed to them in round-robin manner.
I'm not sure what is your logic, but gateway's input must be a different one from the output for target binding, so you won't loop accidentally.
Also you need to keep in mind that filter by instance id works, but this is not an efficient solution since all your instances are going to consume the same message from Kafka topic. However it is going to work only when all your instances have different groups to achieve a true publish-subscriber for reply delivery.
I don't have a perfect answer how it should be, so that might be a reason why we still don't have a reqest-reply as an out-of-the-box solution.

Thanks for your comments, I see your point about that is not the best solution in terms of efficiency.

This will be an exciting feature, do we know what is planned

Thanks @cjrequena and @artembilan I implemented something similar for RabbitMq with mix of s-c-stream and integration. It has got two producers and a consumer. It is working fine. Here is the sample:
https://github.com/5aab/request-reply-pattern

here is a full working example to do request-reply with Spring CLoud Stream & Spring Integration.

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.function.Function;

@RequestMapping(path = "/api", produces = MediaType.TEXT_PLAIN_VALUE)
@RestController
@Slf4j
public class ClientController {

    @Autowired
    private Function<String, String> send;

    @Operation(summary = "do request-reply", description = "send message to ", tags = {"SCS"})
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "successful operation")
    })
    @PostMapping(value = "/sendToRabbit", consumes = MediaType.TEXT_PLAIN_VALUE)
    ResponseEntity<String> sendToRabbit(@RequestBody String message) {
        try {
            String response = send.apply(message);
            log.info("response : " + response);
            return new ResponseEntity(response, HttpStatus.OK);
        } catch (Exception exception) {
            log.error(exception.getMessage());
            return new ResponseEntity(exception.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
}

//
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.amqp.outbound.AmqpOutboundEndpoint;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHandler;

import java.util.function.Consumer;

@Configuration
public class ResponseConfiguration {

    @Bean
    public Consumer<Message<String>> respond(MessageHandler amqpOutboundEndpoint) {
        return amqpOutboundEndpoint::handleMessage;
    }

    @Bean
    public MessageHandler amqpOutboundEndpoint(AmqpTemplate amqpTemplate) {
        AmqpOutboundEndpoint amqpOutboundEndpoint = new AmqpOutboundEndpoint(amqpTemplate);
        amqpOutboundEndpoint.setRoutingKeyExpressionString("headers['" + AmqpHeaders.REPLY_TO + "']");
        return amqpOutboundEndpoint;
    }
}

//
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.function.Function;

@Configuration
public class ServerConfiguration {

    @Bean
    public Function<String, String> uppercase() {
        return message -> message.toUpperCase();
    }
}

//
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.integration.amqp.dsl.Amqp;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;

import java.util.function.Function;

@Configuration
public class ClientConfiguration {

    private static final String EXCHANGE_NAME = "EXCHANGE_NAME";

    private String DEFAULT_EXCHANGE_NAME = "example.request-reply";

    @Bean
    @DependsOn("amqpOutbound")
    public Function<String, String> send(Function<Message<String>, String> sendToRabbitFunction) {
        return message -> {
            Message<String> msg = MessageBuilder.withPayload(message)
                    .setHeader(EXCHANGE_NAME, DEFAULT_EXCHANGE_NAME)
                    .build();
            return sendToRabbitFunction.apply(msg);
        };
    }

    @Bean
    public IntegrationFlow amqpOutbound(AmqpTemplate amqpTemplate) {
        return IntegrationFlows.from(Function.class, gateway -> gateway.beanName("sendToRabbitFunction"))
                .handle(Amqp.outboundGateway(amqpTemplate)
                        .exchangeNameExpression("headers['" + EXCHANGE_NAME + "']"))
                .get();
    }
}

//yml config
spring:
  cloud:
    stream:
      function:
        definition: uppercase|respond
      rabbit:
        bindings:
          uppercaserespond-in-0:
            consumer:
              queueNameGroupOnly: true
              exchangeType: topic
              autoBindDlq: true
      bindings:
        uppercaserespond-in-0:
          group: uppercase
          destination: request-reply

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <artifactId>spring-cloud-stream-request-reply</artifactId>
    <groupId>demo</groupId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <spring-cloud.version>2020.0.1</spring-cloud.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- OpenAPI-->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.4.8</version>
        </dependency>
        <!--  workaround openapi-core-->
        <dependency>
            <groupId>io.github.classgraph</groupId>
            <artifactId>classgraph</artifactId>
            <version>4.8.44</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

`

Hi.
Any update about this feature?
Is @Hassen-BENNOUR 's example heading towards the good direction to implement this?
Thanks

Thank you for the interest!
We doubt it would make sense to have this in the framework as first class citizen.
Please, see that pattern implementation here: https://github.com/artembilan/microservices-patterns-spring-integration/tree/main/mrpc

OK, thanks.
So this issue could be closed, right?

Yes, we can resolve it as won't fix.
Let me elaborate a bit. . .
Streaming is generally a one-way concept. .  at least spring-cloud-stream was designed with that in mind. And all the hooks and features in it are tailored to provide fast and reliable connectivity to variety of messaging system to stream data from it and to it.
For traditional request/reply we already have frameworks such as spring-integration and spring-messaging, so trying to introduce it into spring-cloud-stream would not make much sense and would certainly go against core principals behind the framework design.


[🐛 Bug]: Cloudflare Pages invoking functions on request to static assets in Next.js

next-on-pages environment related information
No response
Description
I have deployed a fully static next.js website (pages directory of next.js) to cloudflare pages and I have added _routes.json file to root of my project excluding static assets from function invocation.
But still my Dashboard is showing the requests made , but it is a fully static site.
Is functions directory creating cumpalsory since all my website is static. Here is my github repo - https://github.com/divrawat/One-Blog
Reproduction
No response
Pages Deployment Method
None
Pages Deployment ID
No response
Additional Information
No response
Would you like to help?

[ ] Would you like to help fixing this bug?

can u share your logs? i might have same issue 🤔

can u share your logs? i might have same issue 🤔

How to view logs, I am not able to find where to see them

Ok, I came to know that by default cloudflare pages route every request to pages or functions despite being static so creating _routes.json is compalsory and including exclude routes will work. I deleted previous deploys or build and added _routes.json and this time my _routes.json was picked up.


fix(lint/noUnreachableSuper): handle complex CFG

Summary
Fix rome#4616.
I take the opportunity to fix an unnoticed bug: the rule assimilated super calls such as super.method() to a super call super().
I think that the new implementation is simpler and more robust.
i discovered some cases statically undecidable. For instance the following example:
class A {
    constructor(a) {
        if (a) { throw new Error(); }
    }
}

class B extends A {
    constructor() {
        try {
            super(true);
            f();
        } catch { super(false); }
    }
}

As a workaround, I decided to assume that the try block has both a super() call and no super() call when an exception is caught. Thus, the rule reports duplicate super() in the previous example.
We could also ignore catch blocks. Any thought?
EDIT: TypeScript uses the same workaround.

Note: I have just noticed that I had a wrong assumption about throw expressions. Biome CFG wrapped every throw expression in a return instruction, including throw in a try catch block. I expected a jump for this special case... Not sure if this should be fixed in the rule implementation or on the CFG?
I think this issue requires more thoughts and should be fixed in another PR.
Test Plan
New tests included.

noUnreachableSuper and noInvalidConstructorSuper have covering cases. They both report classes that should call super(). One difference is that noInvalidConstructorSUper also checks  that a class which extends a non-constructor should not call super().
To avoid double reports, I suggest removing the common check from noUnreachableSuper. Another solution is merging the two rules into noUnreachableSuper.

Note: I have just noticed that I had a wrong assumption about throw expressions. Biome CFG wrapped every throw expression in a return instruction, including throw in a try catch block. I expected a jump for this special case... Not sure if this should be fixed in the rule implementation or on the CFG?

It's possible it's a bug

@ematipico
Have you some thoughts about my remark

noUnreachableSuper and noInvalidConstructorSuper have covering cases. They both report classes that should call super(). One difference is that noInvalidConstructorSUper also checks that a class which extends a non-constructor should not call super().
To avoid double reports, I suggest removing the common check from noUnreachableSuper. Another solution is merging the two rules into noUnreachableSuper.

I believe they should be two different rules, they have clearly two different purposes and they don't necessarily overlap. It's totally reasonable to have two rules that report on the same TextRange.


chore(main): release docs-site 1.21.0

:robot: I have created a release beep boop
1.21.0 (2024-12-23)
Features

docs-site: add doc for SGX Verifier. (#18579) (08b2c49)

Chores

docs-site: fix broken link  (#18585) (38bbb55)
docs-site: fix typos in node operator guides (#18586) (b4bd23c)
docs-site: update proof tier graphic (#18617) (becffb7)

Build

deps: bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#18539) (79f3fab)
deps: bump golang.org/x/sync from 0.9.0 to 0.10.0 (#18560) (3d51970)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

docs-site-v1.21.0
:sunflower:


EE tests are failing consistently

What happened:
Out e2e tests have been failing for a while: https://github.com/rancher-sandbox/cluster-api-provider-rke2/actions/workflows/e2e.yml
Initial thinking was that it was caused by #146. However, they are still failing.
What did you expect to happen:
How to reproduce it:
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]
Environment:

rke provider version:
OS (e.g. from /etc/os-release):

This really needs to be looked at.


🐞 vCenter correctly displays IP address of VMs

This bug only affected VMs which run containers, for example Kubernetes worker nodes and Cloud Foundry Diego cells. The bug would manifest as an empty IP address on the vCenter UI in the VM's Summary page next to the "IP Addresses" field.
The cause appears to be the containers' network interfaces confusing toolsd, the executable of the "open-vm-tools" package which relays information about the VM to the vCenter.
This commit remedies this problem by directing toolsd to ignore specific patterns of ethernet NICs when searching for the IP address of the VM; it does so by blacklisting NICs in the /etc/vmware-tools/tools.conf configuration file.
Thi is the list of NIC patterns we ignore. The first bullet is the default pattern
list:

veth*,docker*,virbr* (default)
silk-vtep,s-* (Silk: Cloud Foundry container overlay network)
ovs*,erspan*,nsx-container (NCP: NSX-T Container Plug-in and Open vSwitch)
antrea* (NEW: another overlay network for containers)
??????????????? (NEW: ignore all max-length interface names)

Note: eth0 is typically the NIC which contains the correct IP address of the VM; all other NICs are suspect.
The maximum length of a network interface name is 15 bytes (with the null terminator bringing it to 16)
[I was not able to run tests; I got ERROR [ 2/11] RUN groupadd -g 20 ubuntu && useradd -u 501 -g 20 -m ubuntu   && echo 'ubuntu ALL=NOPASSWD:ALL' >> /etc/sudoers when I tried run os-image-stemcell-builder]

Merging, and hoping that CI doesn't run into the same error. (Surely it won't! (Surely))


Adds 'lib' reference directives

This change adds support for a /// <reference lib="name" /> directive, allowing a file to explicitly include an existing built-in lib file.

When a built-in lib is referenced via the lib reference directive, any no-default-lib reference directive in the lib file is ignored. This is so that a lib reference in an imported package won't cause your current project to lose its default lib if you haven't specified one.
Built-in lib files are referenced in the same fashion as the "lib" compiler option in tsconfig.json (e.g. use lib="es2015" and not lib="lib.es2015.d.ts", etc.).

In the long term this can help polyfill/shim packages like core-js or es6-shim.
NOTE: Apparently we were very close to running out of heap memory when running gulp tests after running gulp clean as gulp is holding onto too much memory. Individually each task is fine, but in concert they add up to a large amount of uncollected memory. To address this, I've added a script to run some of our builds out-of-process. This is not an issue in the jake builds.
Fixes #15732.
Supersedes #15780

Will this allow fixing #16077 ?

Goto def should work on the new lib references like it does on /// <reference path="..." />. take a look at https://github.com/Microsoft/TypeScript/blob/master/src/services/goToDefinition.ts#L136, we will need another check for lib references..
For find-all-refs, i think we can say it does not work on this feature..

I can add "Go To Definition" support, but that requires a number of changes to our Fourslash test harness, as it is currently designed to only use a single lib file.

Great job with this PR!
The diff won't load for me so I'll just ask here 🤔 ...
Does this PR actually implement <reference lib> in such a way to make the TS engine smaller? Or is this PR just implementing the feature itself and the usage will be implemented in a different PR?
For more context see: https://github.com/Microsoft/TypeScript/issues/23339#issuecomment-380632662
Thanks! 👍

lib folder should go down by 4 MB or so.

@mhegazy @rbuckton  This is going to be a big break to API consumers loading just lib.d.ts from the TS and expecting things to work - what's the mitigation here for APIs loading e.g. a fixed set of files from the network on load?

You could always just use an older copy of the lib, if you're one of those API consumers. We ship the latest one with the latest features for consumers, but if you have constraints that force you to, usually you can just include an older copy of the lib in your project - a bunch of our older RWC tests do that.

Will it add the library to the entire program or only from the reference point and downward?

not sure i understand the question. the only difference is instead of on file lib.d.ts you will have a set of them in your program.

Looks like we need to ignore noResolve when we are resolving lib files as well.. we already have a ignoreNoDefaultLib flag, so we can extend this to mean resolvingLibReference and ignore noResolve as well as noDefaultLib

--disableIgnoreSkipNoResolve

I'll take a look. Lib refs are supposed to ignore noResolve.

This had nothing to do with noResolve and more to do with buildProtocol.ts looking only ignoring "lib.d.ts". It also looks like its already fixed in master.


Install kubectl in the Spinnaker instance.

I am not sure whether the kubectl binary is strictly required for the kubernetes provider in Spinnaker to work, but it is at least very helpful in debugging spinnaker <-> k8n authnz.

Thanks @pawelz! And apologies for the unreasonable delay.


ERROR Getting object {sha} failed: object not found

❯ git push --quiet keybase master
Initializing Keybase... done.
Tip: this repo could be sped up with some garbage collection. Run this command:
        keybase git gc idrepo

❯ keybase git gc idrepo
This may take several minutes...
▶ ERROR Getting object 9ec64d62e728245a80d3c060d883442085cb40ad failed: object not found

my log id: 96633ee53e70e6f905b95d1c

Thanks for the report.  Hmm that's strange.  I assume repeated attempts give the same error?  Does a fresh clone/checkout of the repo seem to work ok still?  And when you use the repo, does it still recommend a gc?

Initializing Keybase... done.
Tip: this repo could be sped up with some garbage collection. Run this command:
        keybase git gc idrepo

❯ keybase git gc idrepo
This may take several minutes...
▶ ERROR Getting object 9ec64d62e728245a80d3c060d883442085cb40ad failed: object not found

❯ git ls-remote keybase://private/kourier/idrepo
Initializing Keybase... done.
Syncing with Keybase... done.
70f40a429026c087e3844c6be028a0bad91b5638        refs/heads/master
70f40a429026c087e3844c6be028a0bad91b5638        HEAD

❯ git ls-remote file:///tmp/idrepo
70f40a429026c087e3844c6be028a0bad91b5638        HEAD
70f40a429026c087e3844c6be028a0bad91b5638        refs/heads/master
70f40a429026c087e3844c6be028a0bad91b5638        refs/remotes/origin/HEAD
70f40a429026c087e3844c6be028a0bad91b5638        refs/remotes/origin/master

@qrkourier does the repo include git submodules by any chance?
Also, what does this show within the repo?  Anything?
git ls-tree 70f40a429026c087e3844c6be028a0bad91b5638 | grep 9ec64d62e728245a80d3c060d883442085cb40ad

Anything?

❯ git remote -v show keybase
Initializing Keybase... done.

Syncing with Keybase... done.
From keybase://private/kourier/idrepo
 * branch            master     -> FETCH_HEAD
Already up to date.

❯ git ls-tree 70f40a429026c087e3844c6be028a0bad91b5638 | grep 9ec64d62e728245a80d3c060d883442085cb40ad

❯ git submodule status --recursive

Hi @strib - just writing to add that I have the exact same issue described here. Happy to run any diagnostic commands if you like; it's been happening for me for many months, though usage of the repo on several machines is totally normal.

I got the same thing. Then ... it magically disappeared upon subsequent runs.
Note, I am usually on a very high latency network (Satellite, though the fastest money can buy for a civilian) and sometimes kbfs will do odd things and I have had git get hung at times.
Anyway. I hope those anecdotal datapoints add something.

I've been having this issue for a couple of years. I'm just not getting around to looking into it because so far it's shown itself to be completely harmless. I just have to run keybase git gc $repo an extra time (even that probably isn't needed).
For what it's worth, I make heavy use of submodules.
Also, like taw00, sometimes I have issues and pushes and pulls get interrupted. Sometimes it was due to visiting my father who had satellite internet, and sometimes it's just my android tablet (I use Termux) acting up.
I am the sole committer to these repos.
The repos don't start off acting this way, but at some point, something causes this to happen. Once it starts, the only way to fix it is recreate the repo. So far, I haven't attempted to recreate a repo's full history, I merely make copy the heads of branches into branches in the new repo along with the branching and merge points.
This effects multiple repos of mine and in each, as has been mentioned, the object doesn't exist anywhere.


Support Altitude/Z in ES 8

Is your feature request related to a problem? Please describe.
In the ES 7 NEST Client we could create a GeoCoordinate including a Z/altitude. This currently is not possible in the ES8 client natively.
Describe the solution you'd like
Support for altitude/Z in the geo objects, for example in the LatLonGeoLocation.
Describe alternatives you've considered
I am considering to write something up to make my code compatible, but I am not sure if that is possible at the time of writing this issue. Will update this issue if I have found something.

Hi,
just to clarify: Are you talking about the ability to store an optional altitude (which is not indexed) like mentioned in the description of the ignore_z_value parameter?
https://www.elastic.co/guide/en/elasticsearch/reference/8.8/geo-point.html
If I understood you correctly, you used the NEST client to hand-craft a payload that included this value and now with the v8 client there currently is no way to achieve the same, right?

Hi, yes I am talking about that particular feature. However, with the NEST client we had a GeoCoordinate object which took an optional z value, which is now missing. The LatLonCoordinate object (or how it actually is called with the current client) does not allow for this optional argument.

@EngineerCoding I'm currently checking, if the LatLonGeoLocation should have a nullable z field and I'll update you with the outcome of my research when I'm done.
For the time being, you could use the
public static GeoLocation Coordinates(double[] coordinates)

factory method to create a GeoLocation union from an array. This overload accepts an optional z coordinate as the third element in the array.
Order of elements:  [lon, lat, alt/z]

I confirmed that LatLonGeoLocation is not supposed to support a nullable z field. Closing this issue for now.


strings: Disallow nicknames that mess with the protocol in bad ways

These nicknames are quite bad and break the protocol in interesting ways. Disallowing them is a good thing to do. It also disallows silly things like fullwidth commas (，) that get converted into , natively because of the name normalisation.

Good catch, thank you.


Unable to install on kubuntu 19.04 (same issue on kde neon)

Please describe the issue in as much detail as possible, including any errors and traces
Trying to install howdy following Readme, but recieve this error:
Traceback (most recent call last):
  File "/var/lib/dpkg/tmp.ci/preinst", line 54, in <module>
    devices = os.listdir("/dev/v4l/by-path")
FileNotFoundError: [Errno 2] No such file or directory: '/dev/v4l/by-path'
dpkg: error processing archive /var/cache/apt/archives/howdy_2.5.1_all.deb (--unpack):
 new howdy package pre-installation script subprocess returned error exit status 1
An error occured during the processing of:
 /var/cache/apt/archives/howdy_2.5.1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

I've searched for similar issues already, and my issue has not been reported yet.
Linux distribution (if applicable):
Kubuntu 19.04
KDE Neon (latest)
Howdy version:
2.5.1

Do you have V4L2 installed? You don't seem to have the /dev/v4l/by-path folder, which i have never seen before

Seems to be the same issue as: https://github.com/boltgolt/howdy/issues/137
I also have a surface book, so probably won't work then.

I just got the same problem.....It was working a couple days for me and now it stopped working. After trying to reinstall I get this error...Im on Pop OS latest version 19.10.


Flutter-module

Can I work on Flutter model templates?

Can you please add the screenshot of the page which you want to develop.

How many screens am I allowed to work on? and need to design only the UI or a backend too?

Only one screen is allowed per contributor. Auth screens are already assigned. The main priority is  UI but if you want you can work on backend but its not necessary.

Okay, assign me this screen.

Okay, you are good to go. Kindly rename your issue as Flutter module -> homepage

Thankyou so much


chore: update travis for node 5

With frameworks and libraries moving to give only node 5 support and npm3, I prefer to bump travis as well to avoid surprises.
Also I think that all those extra options are not needed. Let say what travis has to say about this.

Works for me, but the extra options should go back
Starting with io.js 3 and Node.js 4, building native extensions requires C++11-compatible compiler, which seems unavailable on this VM. Please read https://docs.travis-ci.com/user/languages/javascript-with-nodejs#Node.js-v4-(or-io.js-v3)-compiler-requirements.

It is not compiling node but getting a binary.

LGTM


Helped offline.

Helped offline.

Hi Jasonjoh,
I am facing the similar issue where its working in the outlook web and desktop version but mobile app shows error for the adaptive cards.
Can you please let me know the resolution provided for the issue?
Thanks in advance.
Originally posted by @thousifpathan in https://github.com/OfficeDev/outlook-dev-docs/issues/702#issuecomment-549719792

I’m having the same problem. Version 1.0 adaptive card works fine in Outlook desktop but no longer works on mobile. More specifically, I have an http response action that refreshes the card’s body, and that refreshed version of the card is the one that’s blank on the phone. Any ideas why this might be happening? Thanks!


Migrate CI from Travis to GitHub Actions

Since June 2021, the building on travis-ci.org has been disabled.
This commit replaces the Travis CI script with a GitHub Action workflow.
I have tested these changes in https://github.com/rst0git/p4-spec/tree/gh-pages

cc: @jnfoster @jafingerhut

More proof of my ignorance when it comes to Github actions: Is there a way to tell this is working before we merge it in?
What evidence/logs are left when these Github actions are merged in, so we can see if they are working as expected?

Is there a way to tell this is working before we merge it in?

Yes, I tested this in my fork: https://github.com/rst0git/p4-spec/tree/gh-pages/docs

What evidence/logs are left when these Github actions are merged in, so we can see if they are working as expected?

The logs are available here: https://github.com/rst0git/p4-spec/runs/5383622687

@jnfoster OK with you to merge this in and see if it gets us closer to the goal?

Let's do it!


latest should point to Java 8

It's surprising to me that latest is Java 7. I'd expect it to be Java 8. Oracle has discontinued support for Java 7 and several prominent Java projects such as Play Framework and Akka have dropped support for Java 7 and this has led people using java:latest with those projects to encounter trouble. E.g. see https://groups.google.com/forum/#!topic/play-framework/ImpZ1TX_K6w

Before https://github.com/docker-library/java/pull/40, the java:8 image was based on Debian Sid (unstable), so I think it made sense then to leave latest pointing at java:7. Now that java:8 is based on debian:jessie, however, I think you're right that latest can be updated to point to java:8.

+1 what @md5 said :+1:

:+1:

:+1:  I just hit this today using the sbt-native-packager and play 2.4.x

cf. #44 and https://github.com/docker-library/official-images/pull/850

Fixed in #44 :+1:


Fix linters to make use of the new python code execution framework

Fixes #351

Refactored linter code to make use of new execution framework
Reverted to two output windows with hardcoded names

@brettcannon fixed. Will start replacing .split(\r\nr...) as i go along.


Move stylelint config to separate file

Moves the stylint configuration object to a .stylelintrc json file similar to how eslint is currently set up. More details on the stylelint site

Deploy preview for gestalt ready!
Built with commit 3ca76cfa54d9fbe2d5c14f7ba52a86b5c937bab1
https://deploy-preview-206--gestalt.netlify.com

Deploy preview for gestalt ready!
Built with commit 4fbc4556f77201e28bf29d10ba2312cc7478976a
https://deploy-preview-206--gestalt.netlify.com

Codecov Report

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

@@           Coverage Diff           @@
##           master     #206   +/-   ##
=======================================
  Coverage   61.67%   61.67%
=======================================
  Files          40       40
  Lines         788      788
  Branches      183      183
=======================================
  Hits          486      486
  Misses        214      214
  Partials       88       88

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 89b4933...4fbc455. Read the comment docs.


SAK-44150: samigo > add button to copy published assessment url to clipboard (a11y)

https://jira.sakaiproject.org/browse/SAK-44150
Keyboard users are unable to select this text for copy/paste. Suggestion from accessibility expert is to add a copy to clipboard button.

This depends on #8350


Code: Add error handling function

Currently, model2data sources the response from API and moves on. There could be error codes that are not intuitive for the users. Therefore, have an error handler function that translates the codes into meaningful messages with some added actions. For example, 401 could say that if the issue persists, please raise a ticket on GitHub repo and provide a link to this repo.

Done. Only two errors are added as of now 401 and 500. More will be added in future versions.


Crash On Application Launch

Step 0: Are you in the right place?

For issues or feature requests related to the code in this repository
file a Github issue.

If this is a feature request please use the Feature Request template.

For general technical questions, post a question on StackOverflow
with the firebase tag.
For general (non-iOS) Firebase discussion, use the firebase-talk
google group.
For backend issues, console issues, and other non-SDK help that does not fall under one
of the above categories, reach out to
Firebase Support.
Once you've read this section and determined that your issue is appropriate for
this repository, please delete this section.

[REQUIRED] Step 1: Describe your environment

Xcode version: 13.3
Firebase SDK version: 7.8.1
Installation method: CocoaPods | Carthage | Zip file | Swift Package Manager (select one)
Firebase Component: Core (Auth, Core, Database, Firestore, Messaging, Storage, etc)
Target platform(s): All | iOS | Catalyst | macOS | tvOS | watchOS

[REQUIRED] Step 2: Describe the problem
Steps to reproduce:
What happened? How can we make the problem occur?
This could be a description, log/console output, etc.
If you have a downloadable sample project that reproduces the bug you're reporting, you will
likely receive a faster response on your issue.
Relevant Code:

Application crashing on launch intermittently:

Crash Logs:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Last Exception Backtrace:
0   CoreFoundation                	0x1814c6d3c __exceptionPreprocess + 216 (NSException.m:200)
1   libobjc.A.dylib               	0x1988406a8 objc_exception_throw + 56 (objc-exception.mm:565)
2   CoreFoundation                	0x181596768 -[NSObject(NSObject) doesNotRecognizeSelector:] + 140 (NSObject.m:147)
3   CoreFoundation                	0x181460f6c ___forwarding___ + 1440 (NSForwarding.m:3577)
4   CoreFoundation                	0x1814601dc _CF_forwarding_prep_0 + 92
5   Cisco UDN                     	0x1028128f0 +[FIRMessagingTokenOperation HTTPAuthHeaderFromCheckin:] + 36 (FIRMessagingTokenOperation.m:223)
6   Cisco UDN                     	0x102812598 -[FIRMessagingTokenOperation tokenRequest] + 60 (FIRMessagingTokenOperation.m:163)
7   Cisco UDN                     	0x10280e2b0 -[FIRMessagingTokenFetchOperation performTokenOperation] + 48 (FIRMessagingTokenFetchOperation.m:55)
8   Cisco UDN                     	0x1027dd390 __55-[FIRInstallations authTokenForcingRefresh:completion:]_block_invoke_2 + 24 (FIRInstallations.m:232)
9   Cisco UDN                     	0x10285c24c 0x102760000 + 1032780
10  libdispatch.dylib             	0x1811921a4 _dispatch_call_block_and_release + 24 (init.c:1517)
11  libdispatch.dylib             	0x1811931a8 _dispatch_client_callout + 16 (object.m:560)
12  libdispatch.dylib             	0x181174508 _dispatch_main_queue_callback_4CF$VARIANT$armv81 + 988 (inline_internal.h:2587)
13  CoreFoundation                	0x181482888 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12 (CFRunLoop.c:1795)
14  CoreFoundation                	0x181440188 __CFRunLoopRun + 2528 (CFRunLoop.c:3144)
15  CoreFoundation                	0x181452e1c CFRunLoopRunSpecific + 572 (CFRunLoop.c:3268)
16  GraphicsServices              	0x1a17f59a0 GSEventRunModal + 160 (GSEvent.c:2200)
17  UIKitCore                     	0x183c86b90 -[UIApplication _run] + 1080 (UIApplication.m:3493)
18  UIKitCore                     	0x183a1c16c UIApplicationMain + 332 (UIApplication.m:5047)
19  Cisco UDN                     	0x102769c6c main + 148 (main.m:41)
20  dyld                          	0x103d64250 start + 444 (dyldMain.cpp:879)

Hi @niljaisw, is the issue reproducible using the latest version? Also, it would be helpful for investigation if you could provide the detailed steps or reproducible sample app. Thanks.

I will try to reproduce on latest version, this issue is intermittent issue not frequently reproducible. This happens as soon as you launch the application.

Frame 2 of the stack trace indicates it's in unrecognized selector crash, which is extremely strange since this method has always been defined in the class implementation itself (not an extension) and should always be available at runtime.

Hello,
No, I am not doing any dynamic class/method modification.

Got it, let us know if you can reproduce the crash and we'll continue investigation from there.


Implement saving already existing Charges

Hello, I've implemented mock updating charges. I've tested it with the "live" server (very handy!). I'm open to suggestions for improvement.

I updated the circle ci testing, please rebase with master.

I rebased with master-- it looks like the same build failure is happening.

Come on, travis...

Can you try closing this PR and creating a new one? I think that might make TravisCI happy.

To be clear, I mean recreate this PR with the same commits.

closing this one


cannot optimized

sudo bash zImageOptimizer.sh -p /home/pi/xulyanh/
Optimizing...
[1/1] /home/pi/xulyanh/799795.jpg... stat: cannot read file system information for '%Lp': No such file or directory
chmod: invalid mode: ‘File:’
Try 'chmod --help' for more information.
[NOT OPTIMIZED] 984.9Kb

What operating system are you running the script on?


Standardize multiplication involving string column

Proposal
Multiplication involves a string column can only be applied to an int column or literal; otherwise, a TypeError should be raised.

@ueshin Thank you! Merged.