Define HOST_NAME_MAX if needed

Origin sources:

https://github.com/openbgpd-portable/openbgpd-portable/blob/master/configure.ac
https://github.com/openbgpd-portable/openbgpd-portable/blob/master/include/unistd.h

Fixes https://github.com/rpki-client/rpki-client-portable/issues/84 (hopefully).

Copied those changes over and tested locally and it seems to have built cleanly on macOS 13.2.1 Ventura with MacPorts.
Thank you for the quick fix! (11 minutes from the time I opened an issue? Wow!)
Admittedly, when I run
% rpki-client -V

It returns:
rpki-client: no _rpki-client user to revoke to
Instead of a version, but I think 8.2 was doing that as well, so that's a completely different ball of wax to worry about. :)

As an update (and some trial and error on my part) it seems as if this PR is now passing the MacPorts CI build bot checks:
https://github.com/macports/macports-ports/pull/18035
Basically, I added the diffs proposed in this since and tweaked the Portfile a little bit so that MacPorts can get 8.3 sooner than waiting on upstream to release a new version. No guarantees it does much more than build successfully, since I am certainly not running OpenBGPD on macOS (I did a preliminary eyeball at porting it after I updated rpki-client to 8.2 but then got distracted with other things and have not revisited it yet).

As an update (and some trial and error on my part) it seems as if this PR is now passing the MacPorts CI build bot checks: macports/macports-ports#18035

GitHub also provides macOS CI, which could be used here if desired.

GitHub also provides macOS CI, which could be used here if desired.

https://github.com/rpki-client/rpki-client-portable/pull/86 is my attempt to do so (I'm not used to macOS at all, thus I had to figure out this by trial and error).


NoMethodError: undefined method `/' for "235,12235,12235,12235,12":String

Check full details on Airbrake: #1554446778179761310
Backtrace:
[PROJECT_ROOT]/app/models/installed_technology.rb:222:in component_factor
[PROJECT_ROOT]/app/models/installed_technology.rb:211:in block in profile_curves
[PROJECT_ROOT]/app/models/curve_collection.rb:32:in block in each_curve
[PROJECT_ROOT]/app/models/curve_collection.rb:15:in block in each
[PROJECT_ROOT]/app/models/curve_collection.rb:14:in each
[PROJECT_ROOT]/app/models/curve_collection.rb:14:in each
[PROJECT_ROOT]/app/models/curve_collection.rb:27:in each_curve
[PROJECT_ROOT]/app/models/installed_technology.rb:210:in each
[PROJECT_ROOT]/app/models/installed_technology.rb:210:in map
[PROJECT_ROOT]/app/models/installed_technology.rb:210:in profile_curves
[PROJECT_ROOT]/app/models/installed_technology.rb:172:in profile_curve
[PROJECT_ROOT]/app/models/calculation/context.rb:42:in block in length
[PROJECT_ROOT]/app/models/calculation/context.rb:41:in map
[PROJECT_ROOT]/app/models/calculation/context.rb:41:in length
[PROJECT_ROOT]/app/models/calculation/technology_load.rb:12:in run
[PROJECT_ROOT]/app/models/calculation/technology_load.rb:4:in call
[PROJECT_ROOT]/app/models/testing_ground.rb:53:in block in to_calculated_graph
[PROJECT_ROOT]/app/models/testing_ground.rb:52:in each
[PROJECT_ROOT]/app/models/testing_ground.rb:52:in reduce
[PROJECT_ROOT]/app/models/testing_ground.rb:52:in to_calculated_graph
[PROJECT_ROOT]/app/services/finance/business_case_calculator.rb:57:in network
[PROJECT_ROOT]/app/services/finance/business_case_calculator.rb:22:in topology_stakeholders
[PROJECT_ROOT]/app/services/finance/business_case_calculator.rb:15:in stakeholders
[PROJECT_ROOT]/app/services/finance/business_case_calculator.rb:9:in rows
[PROJECT_ROOT]/app/services/finance/business_case_creator.rb:16:in financials
[PROJECT_ROOT]/app/services/finance/business_case_creator.rb:10:in calculate
[PROJECT_ROOT]/app/jobs/business_case_calculator_job.rb:12:in perform
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/backend/base.rb:94:in block in invoke_job
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in block in initialize
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in execute
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in run_callbacks
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/backend/base.rb:91:in invoke_job
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:204:in block (2 levels) in run
/home/ubuntu/.rbenv/versions/2.1.1/lib/ruby/2.1.0/timeout.rb:91:in block in timeout
/home/ubuntu/.rbenv/versions/2.1.1/lib/ruby/2.1.0/timeout.rb:101:in call
/home/ubuntu/.rbenv/versions/2.1.1/lib/ruby/2.1.0/timeout.rb:101:in timeout
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:204:in block in run
/home/ubuntu/.rbenv/versions/2.1.1/lib/ruby/2.1.0/benchmark.rb:294:in realtime
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:203:in run
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:280:in block in reserve_and_run_one_job
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in block in initialize
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in execute
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in run_callbacks
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:280:in reserve_and_run_one_job
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:187:in block in work_off
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:186:in times
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:186:in work_off
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:150:in block (4 levels) in start
/home/ubuntu/.rbenv/versions/2.1.1/lib/ruby/2.1.0/benchmark.rb:294:in realtime
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:149:in block (3 levels) in start
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in block in initialize
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in execute
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in run_callbacks
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:148:in block (2 levels) in start
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:147:in loop
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:147:in block in start
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/plugins/clear_locks.rb:7:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/plugins/clear_locks.rb:7:in block (2 levels) in <class:ClearLocks>
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in block (2 levels) in add
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in block in initialize
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in block in add
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in call
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in execute
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in run_callbacks
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/worker.rb:146:in start
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/command.rb:124:in run
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/command.rb:112:in block in run_process
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application.rb:265:in call
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application.rb:265:in block in start_proc
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/daemonize.rb:84:in call
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/daemonize.rb:84:in call_as_daemon
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application.rb:269:in start_proc
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application.rb:295:in start
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application_group.rb:151:in block (2 levels) in start_all
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application_group.rb:150:in fork
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application_group.rb:150:in block in start_all
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application_group.rb:149:in each
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/application_group.rb:149:in start_all
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/controller.rb:66:in run
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons.rb:193:in block in run_proc
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/cmdline.rb:88:in call
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons/cmdline.rb:88:in catch_exceptions
[GEM_ROOT]/gems/daemons-1.2.2/lib/daemons.rb:192:in run_proc
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/command.rb:110:in run_process
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/command.rb:91:in block in daemonize
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/command.rb:89:in times
[GEM_ROOT]/gems/delayed_job-4.0.6/lib/delayed/command.rb:89:in daemonize
bin/delayed_job:5:in <main>

This is a rather weird problem.
Contents of line 222:
...
  multiplier = (demand && demand * curve.frames_per_hour) || 1.0
...
multiplier / performance_coefficient * units

The multiplier is the culprit. The demand is set as a string value as '"235.12"' (notice the double quotes) and the frames_per_hour is 4. This makes the typecasting to a float impossible which results in this error. I can only imagine that a CSV upload might do this. Or explicitly typing the quotes in the technologies matrix. I'll have to check which.

I fixed the double quotes problem by removing them when the input field is changed.
I also found out that there were two change handlers to the input, which I also fixed.
https://github.com/quintel/etmoses/commit/ab136123d76e67675335b5d5db4d36da1ae866c7


CUAV GPS V5 mag not detected

Describe the bug
The CUAV GPS V5 magnetometer connected to a Drotek Pixhawk 3 Pro or a Pixracer does not seem to get detected.
To Reproduce

Connect GPS/mag to a Pixracer.
Check listener sensor_mag to check if the device shows up.

Log Files and Screenshots
[boot] Fault Log info File No 4 Length 3177 flags:0x01 state:1
[boot] Fault Log is Armed
sercon: Registering CDC/ACM serial driver
sercon: Successfully registered the CDC/ACM serial driver
HW arch: PX4_FMU_V4
FW git-hash: a6a88774637c745ee069c6482a79b7d4b3cc8b12
FW version: 1.10.0 80 (17432704)
FW git-branch: master
OS: NuttX
OS version: Release 7.29.0 (119341311)
OS git-hash: d8da511082646d83a54c6905daca13f0a1a609f0
Build datetime: Oct 31 2019 10:59:45
Build uri: localhost
Toolchain: GNU GCC, 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
PX4GUID:<PHONE_NUMBER>00303833363335510d00300041
MCU: STM32F42x, rev. 3
nsh: mount: mount failed: No such device
nsh: mkfatfs: mkfatfs failed: No such device
INFO  [param] selected parameter default file /fs/mtd_params
INFO  [tune_control] Publishing standard tune 16
Board defaults: /etc/init.d/rc.board_defaults
WARN  [safety_button] disabled by CBRK_IO_SAFETY, exiting
ERROR [safety_button] Task start failed (-1)
WARN  [dataman] Could not open data manager file /fs/microsd/dataman
ERROR [dataman] dataman start failed
WARN  [rgbled] no RGB led on bus #1
WARN  [rgbled_ncp5623c] no RGB led on bus #1
nsh: rgbled_pwm: command not found
Board sensors: /etc/init.d/rc.board_sensors
reset done, 50 ms
WARN  [hmc5883] no device on bus 1 (type: 2)
WARN  [lis3mdl] no device on bus 2
INFO  [ist8310] no device on bus 1
BMP280_I2C on I2C bus 1 at 0x76 (bus: 100 KHz, max: 100 KHz)
WARN  [bmp280] id of your baro is not: 0x58
WARN  [bmp280] bus option number is 2
ERROR [bmp280] driver start failed
WARN  [qmc5883] no device on bus 1 (type: 2)
BMM150 on I2C bus 1 at 0x10 (bus: 100 KHz, max: 100 KHz)
WARN  [bmm150] id of magnetometer is not: 0x32
ERROR [bmm150] driver start failed
MS5611_SPI on SPI bus 2 at 3 (20000 KHz)
HMC5883_SPI on SPI bus 1 at 5 (11000 KHz)
WARN  [hmc5883] no device on bus 1 (type: 3)
WARN  [lis3mdl] no device on bus 2
LIS3MDL_SPI on SPI bus 1 at 7 (11000 KHz)
WARN  [lis3mdl] no device on bus 3
WARN  [bmi055] No BMI055 gyro found
WARN  [mpu6000] no device on bus #3 (SPI1)
WARN  [mpu6000] no device on bus #3 (SPI1)
WARN  [bmi055] No BMI055 accel found
INFO  [mpu9250] Bus probed: 3
MPU9250 on SPI bus 1 at 4 (1000 KHz)
ERROR [battery_status] no ADC found: /dev/adc0 (2)
Board extras: /etc/init.d/rc.board_mavlink
INFO  [mavlink] mode: Config, data rate: 800000 B/s on /dev/ttyACM0 @ 57600B
ERROR [mavlink] DM_KEY_MISSION_STATE lock failed
ERROR [mavlink] offboard mission init failed (-1)
INFO  [mavlink] mode: Normal, data rate: 20000 B/s on /dev/ttyS0 @ 921600B
WARN  [mavlink] hardware flow control not supported
Starting MAVLink on /dev/ttyS1
INFO  [mavlink] mode: Normal, data rate: 1200 B/s on /dev/ttyS1 @ 57600B
INFO  [init] Mixer: /etc/mixers/quad_x.main.mix on /dev/pwm_output0
Board extras: /etc/init.d/rc.board_extras
INFO  [logger] logger started (mode=all)
INFO  [logger] log root dir created: /fs/microsd/log

NuttShell (NSH)
nsh> INFO  [ecl/EKF] EKF aligned, (pressure height, IMU buf: 22, OBS buf: 14)
INFO  [frsky_telemetry] Scanning timeout: exiting

nsh> listener sensor_mag

TOPIC: sensor_mag
 sensor_mag_s
        timestamp: 264700518  (0.000555 seconds ago)
        error_count: 0
        device_id: 263178 (Type: 0x04, SPI:1 (0x04))
        x: 0.3280
        y: 0.3280
        z: 0.2557
        temperature: 45.1921
        scaling: 0.0015
        x_raw: 186
        y_raw: -186
        z_raw: 150
        is_external: False

PX4 version: a6a88774637c745ee069c6482a79b7d4b3cc8b12

It's also not working with v1.9.2, and I could not find docs about what device to expect on I2C.

Have you tested this compass with CUAV V5+？

Does neo gps work for rgb? I can't find these two flight controllers in China, but I tested the pixhawk series flight control with no compatibility issues. For the fmu v4 firmware, I tested the pixhack nano (isn't v5 nano; it has been discontinued; it belongs to fmu v4) It can support ist8310 (neo gps compass); so I think the connection may be wrong.

I tried i2cdetect and nothing showed up. Also, the GPS doesn't seem to be working either.

Have you tested this compass with CUAV V5+？

I have not yet.

Can you provide me with a connection picture? I will check it.

@cuhome can you provide me the pinout of the CUAV V5 GPS/Compass? Is it not compatible with Pixracer?

http://doc.cuav.net/flight-controller/v5-autopilot/en/v5+.html#connection；This is the complete v5 definition, you need to look at the GPS&safety interface; it should not be incompatible with pixracer.

@julianoes Your pinouts order is wrong. This picture is the correct guide. Please follow it to fix it.

I will add pinouts information for V5+

@julianoes Has this problem been solved? If yes, please help me close it.

@cuhome so I am supposed to use the colors like you suggest? I don't understand this because I don't have blue and grey but I have orange and yello. So what should I do?

Oh, NO, you are using m8n GPS instead of neo GPS, you can modify it according to the following picture;

Aha, why is this not like the reference standard but different? :astonished: Are the future products properly compatible at least?

Ok, the GPS works again but the mag does not answer on I2C. Presumably it is destroyed because 5v was applied to SCL or SDA.

@Tony3dr @dannyfpv can you check that the wiring on your CUAV GPS is correct?

@julianoes Because it is used in the pixhack series, for some reason, the CUAV Pixhack series of flight control does not use the Pixhawk standard pin. What you need to know is that the CUAV M8N GPS will be discontinued. We recommend using neo GPS.

Ok, understood, so this is fixed for future products which is good!


There is no known Ledger app available for this chain

Is Ledger for Statemint/Polkadot Asset Hub supported?
Why am I getting this error?

@rvalle I am closing this issue, as the repo will be from now archived, in favor of the new ledger polkadot generic app. You can check the readme for more info!


 In the case where the radix is 3 (the worst case scenario), the number of multiplications required to create an AnyRadixUIntRoot instance is reduced from 40 to 11 on 64-bit machines. Similarly, this number goes from 19 to 9 when the radix is 10. So, that's nice.

This method requires that the radix is not a power of two, but that's fine because those have trivial solutions anyway.

Hm. It should also be possible to merge the exponents using bitwise AND rather than addition. Since it's a bunch of consecutive squares, the exponents must all unique powers of two, meaning that there's nothing to carry. That's quite neat, to be honest.

You can also halve the cache's memory footprint by omitting the exponent, but that turned out to be slower.

Hm. It's quite flat, plus-minus 2 elements, so wonder if skipping control-flow is better?

Cool research on speeding up string conversions.  And yes, sometimes benchmarks tell you a different story from what you might think.  Binary shifts are not necessarily faster than multiplication and, as you found, bitwise ORs may not be faster than addition.

I've poured a lot of effort into it, but I've had the most success decoding.
UInt256 micro-benchmarks

Test
NBK (main)
ANK (v2.2.0)
Ratio

D10
16 ms
80 ms
5.0x

D16
16 ms
78 ms
4.9x

E10
53 ms
68 ms
1.3x

E16
25 ms
26 ms
1.0x


Error: walletconnect standalone

@walletconnect/client v1 and v2 have the same problem below...

The problem is similar to issue#3


[CERT-TEST-FAILURE] - TC-RVCOPSTATE-2.1 - Test failed

Feature Area
Area:RobotVacuums
Test Case
TC-RVCOPSTATE-2.1
Summary
All-clusters-app has to be enabled with below mentioned Attributes :

[ ]  phase-list
[ ]   current-phase
[ ]   countdown-time
[ ]   operational-state-list
[ ]   operational-state
[ ]   operational-error

Bug prevalence
Everytime
GitHub hash of the SDK that was being used
d55f68526864b2986404d1da9c2ccd8b64735b6e - master
Platform
raspi
Platform Version(s)
RPI4 8GB RAM
Anything else?
No response

Attributes and commands are implemented in latest TOT


Huge Energy Usage

I'm seeing Radiant Player eat up energy like it's nobody's business and it's not even streaming anything right now.

Please let me know if there's any more info you need.
I'm running OSX 10.10.5

During normal use, I'm seeing (what I think is) normal energy impact, around 10-15.
If Radiant is jumping this high with no user activity, can you add screenshots of the app info panel from the activity monitor? Memory, statistics, and open files and ports. Since you censored your username in the last screenshot, you'll want to censor your username and hostname in these screenshots too.

Are you still experiencing this issue?

Hi @jacobwgillespie sorry for the delay in replying. I don't know because I stopped using Radiant when it kept breaking every other week :(

No problem!  There's been a LOT of fixes on our end and Google's since you reported this, so if you ever give Radiant a try again and experience this, let me know.  For now, I'm closing this issue.


node GLIBC_2.28 error when running pyright on Ubuntu 18.04.6 LTS

Hi, I'm getting the following error when running pyright on Ubuntu 18:
node: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.28' not found (required by node)`
What is the correct solution to fix this?

Sorry, duplicate


Don't manually replace whitespace during render

For historical reasons Gitea manually alters the urlPrefix and replaces a whitespace with a +. This Works for URLs, but we're also passing urlPrefix to git calls and adding the + is breaking the tree path.
Goldmark will automatically convert a white space to the proper %20, so we should leave the string as is which lets us pass it to git unmodified and then let Goldmark fix any whitespaces when rendering. This keeps treePath and the generated link working. See #10156 for more details.
Also fixed separate bug in URLJoin I noticed while testing where it will silently discard sections of a path that have # in them (possibly others). We should just escape it first.
Fixes #10156
Here is example of broken + behavior that is fixed:
https://try.gitea.io/mrsdizzie/testcase/src/branch/master/test a
Here is broken URLJoin example that is fixed:
https://try.gitea.io/mrsdizzie/testcase/src/branch/master/%231
Both those examples have automatically generated links that are wrong and lead to a 404

Hmm will need more though on escaping elems here

@guillep2k had to revert escaping the elements because it breaks valid fragment links like mypage#section1 and would involve more logic rewriting in general. I notice a few other bugs with filenames that have a pound sign/how we handle what we think are anchors in markdown and I think all of that logic needs to be looked into in a separate PR.
This PR will still fix issues mentioned above with regards to folder names and filenames with white spaces with just a few lines.

This PR will still fix issues mentioned above with regards to folder names and filenames with white spaces with just a few lines.

OK. Please send an empty commit to restart CI.

I've been reading the code, and now I'm not so sure about URLJoin escaping the base parameter. The function is used everywhere, and some places might have the base already escaped (e.g. what happens with utf-8 domain names? Or a Gitea URL that has a relative path?). Perhaps it's a better idea to have a GitPathToHttpUrl() function, and it when necessary, leaving URLJoin to do only one job.

I've been reading the code, and now I'm not so sure about URLJoin escaping the base parameter. The function is used everywhere, and some places might have the base already escaped (e.g. what happens with utf-8 domain names? Or a Gitea URL that has a relative path?). Perhaps it's a better idea to have a GitPathToHttpUrl() function, and it when necessary, leaving URLJoin to do only one job.

You're right, anything that needs to should be escaped before being passed to that function or needs more thought anyways.
I've just remove that change from this PR as it should be part of another refactor that addresses #10300 better (which is how I came across it). Updated PR description as well.

Codecov Report

Merging #10291 into master will increase coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #10291      +/-   ##
==========================================
+ Coverage   43.68%   43.69%   +0.01%
==========================================
  Files         585      585
  Lines       81010    81015       +5
==========================================
+ Hits        35390    35402      +12
+ Misses      41238    41226      -12
- Partials     4382     4387       +5

Impacted Files
Coverage Δ

modules/markup/markup.go
76.81% <ø> (-0.34%)
:arrow_down:

modules/markup/markdown/goldmark.go
66.07% <ø> (-0.31%)
:arrow_down:

modules/indexer/stats/queue.go
62.5% <0%> (-18.75%)
:arrow_down:

modules/indexer/stats/db.go
40.62% <0%> (-18.75%)
:arrow_down:

modules/git/utils.go
65.67% <0%> (-4.48%)
:arrow_down:

modules/notification/ui/ui.go
70.37% <0%> (-4.1%)
:arrow_down:

services/pull/temp_repo.go
29.05% <0%> (-2.57%)
:arrow_down:

services/pull/patch.go
60.37% <0%> (-2.52%)
:arrow_down:

models/unit.go
37.03% <0%> (-2.47%)
:arrow_down:

modules/git/repo.go
46.78% <0%> (-0.92%)
:arrow_down:

... and 7 more

Continue to review full report at Codecov.

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


[Release] sdk/resourcemanager/hybridcompute/armhybridcompute/2.1.0-beta.1

https://github.com/Azure/sdk-release-request/issues/5633

@microsoft-github-policy-service agree


Update latest release version in upgrade e2e tests

Description
As we don't fetch the latest release version automatically yet, it has to be updated manually.
How can this be tested?
Run make test/e2e/cloudnative/upgrade
Checklist

[x] Unit tests have been updated/added
[x] PR is labeled accordingly with a single label
[x] I have read and understood the contribution guidelines

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

Comparison is base (ffe83c8) 64.79% compared to head (558753b) 64.79%.

:exclamation: Current head 558753b differs from pull request most recent head f4b38e3. Consider uploading reports for the commit f4b38e3 to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2568   +/-   ##
=======================================
  Coverage   64.79%   64.79%
=======================================
  Files         249      249
  Lines       16352    16352
=======================================
  Hits        10596    10596
  Misses       4948     4948
  Partials      808      808

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


Go To All does not work.

Describe the bug

Steps to Reproduce

Create Python Application and type code.

def hello():
    pass

Edit->Go to->Go To All, type 'hello'.

Additional context and screenshots
Can't find the hello.

duplicate of #7022, seems still waiting for upstream to fix: https://dev.azure.com/devdiv/DevDiv/_workitems/edit/1549408.


Google 1st hits are very old Bootstrap versions

Prerequisites

[X] I have searched for duplicate or closed issues
[X] I have validated any HTML to avoid common problems
[X] I have read the contributing guidelines

Describe the issue
When I Google Twitter Bootstrap, the first several pages listed in the results page are very old versions of the framework. It might be SEO or popularity, but v5 looks so much better
Reduced test cases
Just Google :-)
What operating system(s) are you seeing the problem on?
macOS
What browser(s) are you seeing the problem on?
No response
What version of Bootstrap are you using?
5

Searching for "twitter bootstrap" vs "bootstrap" is likely yielding different results. I do know we have some more work to do on downplaying older versions, but it seems there's not really a great way to do this in Google Search Console (at least in a bulk management way). Would love it if folks have suggestions!

@mdo I think the simplest change would be to put "You're looking at old documentation. Newer version is HERE" warnings in the 1.x-4.x docs. I suspect adding redirects is hard.


Option to Choose From Photo Gallery

Is there anyway to add an option to choose and crop an image from the photo library ?

Sorry to have taken so long for this reply, but this is beyond the scope of this library.


[Net] Fix ENetMultiplayerPeer status during connection.

While the client emitting "peer_connect" for the server, the status was
still set to CONNECTION_CONNECTING, causing bugs in the upper layer.

Thanks!


contracts: L2xDomainMessenger API compat

Description
Ensure to have the l1CrossDomainMessenger getter on the
L2CrossDomainMessenger to guarantee backwards compatibility
with existing contracts that may be integrated with the
L2CrossDomainMessenger.

Codecov Report

Merging #442 (fc05e75) into main (92fccc2) will increase coverage by 0.19%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #442      +/-   ##
==========================================
+ Coverage   51.50%   51.70%   +0.19%
==========================================
  Files          70       70
  Lines        7582     7582
==========================================
+ Hits         3905     3920      +15
+ Misses       3154     3143      -11
+ Partials      523      519       -4

Impacted Files
Coverage Δ

opnode/node/api.go
60.74% <0.00%> (+1.48%)
:arrow_up:

opnode/l2/source.go
52.00% <0.00%> (+1.77%)
:arrow_up:

l2os/txmgr/txmgr.go
95.65% <0.00%> (+1.86%)
:arrow_up:

bss/sequencer/driver.go
77.20% <0.00%> (+2.20%)
:arrow_up:

l2os/service.go
94.73% <0.00%> (+3.94%)
:arrow_up:

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 92fccc2...fc05e75. Read the comment docs.

Closing this in favor of https://github.com/ethereum-optimism/optimism/pull/2567


Velocity interpolation and small changes

Biggest change is using "velocity interpolation" to remove jerk at end of trajectories as described in https://github.com/ros-industrial/staubli_val3_driver/issues/2
Small changes such as replacing magic numbers (https://github.com/ros-industrial/staubli_val3_driver/issues/7) and check for VAL 3 version (https://github.com/ros-industrial/staubli_val3_driver/issues/5)
Some edits to closer reflect official Staubli terminology

@gavanderhoorn just to make sure, should I go ahead and split this into 2 PRs?

@gavanderhoorn just to make sure, should I go ahead and split this into 2 PRs?

I don't believe that would be needed.
It won't make it really easier for others to test those changes, and we already have everything in separate commits.

To clarify: @marshallpowell97: in order to merge this PR we'd need to address some of my outstanding comments/questions (see the review comments).
Additionally it would be great if someone from the community (ie: @gonzalocasas or perhaps @nilsmelchert) could test it out.

If you tell me exactly what you want me to test, I'll be happy to do it.
What kind of trajectory should I use to show the improvement?

I would say any normal trajectory, as you would normally execute.
The idea of these changes are that they make regular use of the robots better, due to better processing of trajectories.
I'm expecting the changes @marshallpowell97 introduces here together with reducing joint velocity limits to the Nominal ones (#2) to significantly improve the (perceived) quality of trajectory execution.

@gavanderhoorn I am testing this changes now, and I don't seen a big difference, so either I'm looking at the wrong trajectory, or the effect is rather small. I would agree with @nilsmelchert that a reference trajectory to test on would be of help.

Thanks for testing.
Have you also updated the velocity limits of your model(s) to the Nominal values, instead of the maximum ones?
I would expect the biggest differences at the end of the trajectory.

Nope, I haven't. I'm running them with a minimal load (I haven't weighed it, but it's a very light end-effector that is not picking up anything), and if I understand correctly, that fits right in the definition of what "max" is for according to https://github.com/ros-industrial/staubli_val3_driver/issues/2#issuecomment-563387912

I tested a bit more, with a larger set of trajectories; and I think I saw the effect at the end of some. Not a very scientific observation thou ;)

Back on this after being MIA. @gonzalocasas The only difference that you should notice is at the very end of the trajectory. When using the maximum joint velocity limits, there is a "spike" in velocity on the very last point sent. It seems to be that the default velocity for industrial_robot_client is 0.1 when the planned velocity (for the last waypoint) is 0 (I'm not super familiar with the terminology, please correct me if I'm wrong).

Per #2, if you use the nominal values for the joint velocity limits, it doesn't seem to have much of an effect (if any), because the robot will have reached its destination by the time the last waypoint is received.

To give an example of the effect of the 'velocity interpolation', I took recordings of the trajectory with and without it enabled:
Disabled:

Enabled:

This was done with a "real-time" simulation, so it won't be exactly the same as a real robot, but it should get the idea across.

@marshallpowell97: it'd be really great if we could move the velocity averaging to a more appropriate place, as that is about the only thing keeping this PR from being merged.

@gavanderhoorn anything else that needs to be fixed before merging?

Hold on, I may have done this wrong. Did I need to make a new commit or 'review changes' on the previous one? My apologies, still learning Git...

Hold on, I may have done this wrong. @gavanderhoorn Did I need to make a new commit or 'review changes' on the previous one?

To fix the identifier length limit problem you needed to commit. With the way the repository is configured right now, this leads to you dismissing the review. That was expected.
As this is your own PR, you cannot review it.

@marshallpowell97: if you could verify everything still works (I don't have easy access to SRS here).

I can confirm that this does still work.

GH merge button was set to rebase and merge, instead of regular merge.
Manually fixed this by force-pushing to master.

Thanks for iterating @marshallpowell97 :+1:
and thanks again for the PR.


Fix #1538 (local disabling is ignored).

I recently see the same problem as #1538 .
I push a test to reproduce #1538 and see CI, then push the fix commit later.

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

Comparison is base (9cb4509) 92.95% compared to head (221c78d) 92.95%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2069      +/-   ##
==========================================
- Coverage   92.95%   92.95%   -0.01%
==========================================
  Files         358      358
  Lines       26446    26443       -3
==========================================
- Hits        24582    24579       -3
  Misses       1864     1864

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

docs/readthedocs.org:verible is failing in other PRs too. I expect changes in this PR is irrelevant to the failure.


how do i use the app? i dont know where to find the directory

if anyone can help me it would be appreciated. how do i install it and get it to work???

It worked for me. I did the default Minecraft Java Edition install with the launcher but I imagine if you installed to a non-standard directory it might not be able to find it.

There's a CLI arg --path where you can specify the path to a world save file (?) but yeah the GUI doesn't really make that clear.


JDP.Remediation.Console - Included New Components

Hi Team,
We have included following  components to the JDP.Remediation.Console remedy tool .Please review and merge.
1)Delete Workflow Associations
2)Generate List Template Report with FTC Analysis
3)Generate Site Template Report with FTC Analysis
4)Delete All List Template based on Pre-Scan OR Discovery Output OR Output generated by Option 8 above

Hi @HariprasadInfy, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla.microsoft.com.

TTYL, MSBOT;

@HariprasadInfy, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, MSBOT;

Thx Hari!


Parse TemporalAmounts besides Duration

The config currently has a handy method getDuration which parses readable strings like "5 minutes" into a java.time.Duration.
It would be nice if there was also a way to parse other TemporalAmounts such as Period ("2 years").

If this supports the same units as duration (maybe adds months?) I think it would be pretty straightforward to add a getPeriod method, and I don't see a reason not to do so. The approach I'd take would be to find everywhere that has duration now and add this along the same pattern. If there are any new units added, HOCON.md would need to be updated to reflect that.
Thanks!

@havocp it would add days, weeks, months, and years. If you have any pointers for places to start I can look into throwing together a PR.

I'd essentially look at getDuration and copy that; it should have unit tests to copy also. This is a fairly "surface level" feature of the library (conversion from string or number to duration/period is late-binding when someone calls getDuration) so you wouldn't need to touch the parser or other lower level stuff afaik.

@havocp is there a reason the compiler targets java 6 source even though java 8 classes like Duration are already being used? (I was looking to use default methods in interfaces and string switches)

I don't remember why that is; suggest digging up the PR discussion when we switched to java 8.

Implemented in #478


Deploy 65 - Upgrade FraxETH strategy

Contract
Address

FraxETHStrategy
0x5061cde874f75d119de3b07e191644097343ab9e

Proposal ID: 53

If you made a contract change, make sure to complete the checklist below before merging it in master.
Refer to our documentation for more details about contract security best practices.
Contract change checklist:

[ ] Code reviewed by 2 reviewers.
[ ] Copy & paste code review security checklist below this checklist.
[ ] Unit tests pass
[ ] Slither tests pass with no warning
[ ] Echidna tests pass if PR includes changes to OUSD contract (not automated, run manually on local)

Checklist:

[x] All deployed contracts are listed in the deploy PR's description
[ ] Deployed contract's verified code (and all dependencies) match the code in master
[ ] The transactions that interacted with the newly deployed contract match the deploy script.
[ ] Governance proposal matches the deploy script
[ ] Smoke tests pass after fork test execution of the governance proposal


limit minZoom

Hi
I'm trying to dispose minZoom and maxZoom but I think the launcher doesn't take these parameters.
So I tried to patch setZoom in the PluginMap Class. But it doesn't work as this class is indicated "unused".
I tried as well to patch getTile() from the class PluginTileProvider, but it didn;t work as well.
I want to force the zoom >10 because I dont want the software to download all marker coordinates for the whole world.
What did I miss?
Thanks !
S.L.

Well, you are trying a hard challenge ( I think ), but check this page:
http://stackoverflow.com/questions/14977078/limit-scrolling-and-zooming-google-maps-android-api-v2

Hi @itAsia : I know its been a while, but did you ever solve this? I'm just getting started on solving the problem you described (not loading all markers across the whole world), and what I am doing is if they are at the min zoom level (seeing the entire world), I only load the most recent markers.
Then as the camera changes, I detect if the zoom has changed. If it is still the min zoom level, I don't get any more markers.
But as the user zooms in, I get the bounding box radius (haven't solved that one yet, but should be easy and I'll update once I do) and use that to query markers in the area.
If the user moves around the camera, and isn't at the min zoom, I continue to get the bounding box radius, and use that to query any additional markers.
While I haven't fully implemented this, I believe it should work and I'll let you know once I finish it (hopefully tonight).

Hi Danny
We reversed to the web based version... :(
Good luck on your side !
++
Stéphane
On 09/22/2016 12:35 AM, Danny Francken wrote:

Hi @itAsia https://github.com/itAsia : I know its been a while, but
did you ever solve this? I'm just getting started on solving the problem
you described (not loading all markers across the whole world), and what
I am doing is if they are at the min zoom level (seeing the entire
world), I only load the most recent markers.
Then as the camera changes, I detect if the zoom has changed. If it is
still the min zoom level, I don't get any more markers.
But as the user zooms in, I get the bounding box radius (haven't solved
that one yet, but should be easy and I'll update once I do) and use that
to query markers in the area.
If the user moves around the camera, and isn't at the min zoom, I
continue to get the bounding box radius, and use that to query any
additional markers.
While I haven't fully implemented this, I believe it should work and
I'll let you know once I finish it (hopefully tonight).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/884#issuecomment-248762690,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFZkFT_oN-HHSiG8HoPN7zX8Oa94h2pfks5qsbE-gaJpZM4HuF5F.


Methods should not be executed more than once

Vue.js version
2.1.10
Reproduction Link
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>

      {{getData()}}

      <input type="text" v-model="key">

Steps to reproduce

Modify the value of input
View console panel

What is Expected?
The getData method will be repeated, although there is no data dependency,
but the 1.0.28 is normal.only be executed once
What is actually happening?
The getData method will be executed once.
Although the use of  computed can be solved, when I feel that should not be executed multiple times

In 2.x templates are compiled into render functions, and the entire function will be called whenever the component updates. This means your templates should never contain side effects. Put it in lifecycle hooks instead.


build: update to latest sass version

Bumps to the latest version of Sass and fixes up our custom patch so that it accounts for some changes in the published files.

@crisbeto needs rebase

Rebased.


Search Satellite Imagery

You are applying for validated OSS program

[X] My project is OSS licensed and open to public. (Must have LICENSE file)
[X] My project is has more than 5 ⭐stars on Github, which is the required for this program.

Repository URL to your project
https://github.com/Iconem/search-satellite-imagery/
URL to your website
https://iconem.com
Expected Quota of usage
max 10000
Details
- Category: Earth Observation
- License: MIT
- Date of release: 01/01/2023

Anything else?
No response

Hi. Please send me an email with CORS.SH #49. Let me give you an api key and instructions from there :)

Thanks I did just that.
Best,

Hi. Is it ok for me to close this thread?

yes sure sorry


Adding Request & Response example

I would like to add an array of example requests and corresponding responses for my API. Swagger provides a way to add those examples as defined in the link below.
Adding Examples -Swagger
But I couldn't figure out how the same can be achieved in grape-swagger

Can this one be achieved or not? I could see regular updates in the repo but this issue being ignored. I would love to have this feature for our documentation purposes.

@jdmurphy I'm on … sometimes I have to work 😉

@jdmurphy Thanks a lot for the update buddy and also many thanks to  @LeFnord for this awesome library.
I have a quick question, am using grape-rabl for rendering the JSON instead of grape-entity. Is there any way that I could be able to include grape-rabl into the example description instead of grape-entity? Because there is a lot of rewrite to migrate to grape-entity and also I could see some performance issues as well.


Experiment and document how to use cookies vs headers for JWT tokens

FastAPI-JWT docs would suggest that you are able to use cookies or headers for authentication.
This is partially being raised because I am unable to get the OTC client to pass headers properly which got me to trying to use cookies instead.
This didn't seem to work (I can see that the client is passing the cookie back and forth).
The preference would be to use headers but it will be worthwhile documenting being able to use cookies as part of FastAPI.

Switching to cookies involves these steps note the use of
  Authorize.set_access_cookies(access_token)
  Authorize.set_refresh_cookies(refresh_token)

to set the cookies and
Authorize.unset_jwt_cookies()

to unset (logout) the cookie

This particular portion has to do with the client side code, the OTC api clients can be configured to send headers in the following way.
Moving away from using cookies will allow us to restore CSRF protection in a uniform way (both things being handled by headers)

OpenAPI.HEADERS = async() => {
  return {};
}

const appContext: AppContextInterface = {
  apiClient: new AcaciaApiClient(OpenAPI),
  isLoggedIn: false,
  isAdmin: false,
  isStaff: false
};

there is merit to documenting both approaches and we should weigh up pros and cons for both.


Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.

[Enter feedback here]

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

ID: 355fba0e-958e-f572-18c2-892c91d20b13
Version Independent ID: 7fe76247-c969-2068-2c3c-bf327fbbe39e
Content: Quickstart - Run a Spark job on Azure Databricks Workspace using Azure portal
Content Source: databricks/scenarios/quickstart-create-databricks-workspace-portal.md
Service: azure-databricks
GitHub Login: @mamccrea
Microsoft Alias: mamccrea

Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.

Thank you for your detailed feedback.  We are looking into the issue, and we will respond when we have more information.

We will now proceed to close this thread as we have not heard back from you. If there are further questions regarding this matter, please tag me in your reply and reopen the issue. We will gladly continue the discussion.


Allow deduping of returned routes for non-transit route requests

Background
https://replicahq.atlassian.net/browse/RAD-6557
Adds new logic to allow the filtering out of duplicate routes for non-transit route requests. Relies on a new flag include_duplicate_routes added for these requests that indicates whether duplicates should be included or not (based on how proto messages work, this will default to false - don't include duplicates - if not specified).
The new feature is based off of some simple hashing logic @rregue implemented in his client-side version of this deduping logic; I hashed together the same details to form a "path ID" used to check for path uniqueness when filtering out dupes, with the only differences being that I didn't include start time or mode in the calculations. Keeping otherwise identical routes just because their start time differs didn't make sense to me given the features of routes we care about in our modeling, and mode seemed unnecessary to include because all deduping is happening within the context of a single mode being requested.
Testing
Nothing aside from unit tests; added 2 tests, one that covers the overall server logic + behavior of the new flag, and one that tests the underlying path ID generation hash that's used in the deduping logic.

Some background on why I added the start time and mode. In the client side, we do two things to routes: copy them to other modes (eg. private auto is copied to on_demand) and time shift the routes to handle congestion. Then, we have some loops that rely on the index of the list to know which route you want, and instead of doing this, I wanted to just have a lookup based on a route.id.  Adding the start_time and mode, made the route.path_id a unique identifier for the routes.


Add Terraform validate test

Add Terraform validation test. This test will scan the entire repo for Terraform modules and run terraform init and terraform validate on each.

This example repo contains Terragrunt, not Terraform modules, so this PR doesn't really apply here.


package.json version should update to 0.2.2

Git tag: 0.2.2
package.json 0.2.1

Ah, good catch! I've updated the package.json and remade the v0.2.2 tag, hopefully that fixes the OpenUPM build 🤞

Looks good now, thanks for the help!

Yes, retag will trigger failed build to rerun. Looks good now.


How to create custom shapes?

I need to create 3 custom shapes: Ellipse, Hippodrome and Octagon using Geoman.
Thanks!

Did you found out how to create an ellipse in the end?


Cognito IDP - user not found after being created

I have a Flask app that renders HTML templates using jinja2.
I am creating a end to end test with Playwright that will try to make the user login.
The code is using AWS cognito to manage the user's credentials and in the test we are using moto to mock the AWS cognito.
In the test setup we create a user pool and a user inside this pool. After creating the user, executing the list_users methods returns the inserted user.
When our test hits the flask api that was started by pytest flask and we try to execute the same list_users. we got an empty array as response, as the pool has no users.
here is the code:
@pytest.yield_fixture(scope="function", autouse=True)
    def cognito_client(self):
        idp = mock_cognitoidp()
        idp.start()

        cognito_client = boto3.client('cognito-idp',
                                      region_name=get_key('AWS_REGION'),
                                      aws_access_key_id=get_key('AWS_ACCESS_KEY_ID'),
                                      aws_secret_access_key=get_key('AWS_SECRET_ACCESS_KEY'),
                                      aws_session_token=get_key('AWS_SESSION_TOKEN'))

        # configure default users pool
        user_pool = cognito_client.create_user_pool(PoolName='users')
        os.environ['COGNITO_USER_POOL_ID'] = user_pool['UserPool']['Id']
        user_pool_client = cognito_client.create_user_pool_client(UserPoolId=user_pool['UserPool']['Id'],
                                                                  ClientName='test')
        os.environ['COGNITO_CLIENT_ID'] = user_pool_client['UserPoolClient']['ClientId']

        yield cognito_client

        del os.environ['COGNITO_USER_POOL_ID']
        del os.environ['COGNITO_CLIENT_ID']
        idp.stop()

@fixture(scope="function", autouse=True)
    def logged_user(self, cognito_util, logged_user_password, cognito_client):
        user = UserTableFactory.create().to_domain()
        cognito_util.create_confirmed_user(user.email, logged_user_password)
        # here we got a the user that was just inserted to the pool
        cognito_client.list_users(
            UserPoolId=get_key('cognito_user_pool_id'),
            Limit=123,
        )
        return user

def test_should_sign_in(self, logged_user, logged_user_password, page, cognito_client):
        page.goto(url_for('main.load_sign_in', _external=True))
        page.get_by_label("Email").click()
        page.get_by_label("Email").fill(logged_user.email)
        page.get_by_label("Password").click()
        page.get_by_label("Password").fill(logged_user_password)
        # here we call the flask API - and the user pool is found but it returns an empty array when calling list_users
        page.get_by_role("button", name="Sign In").click()
        expect(page.get_by_role("heading", name="Recipes", exact=True)).to_be_visible()

inspecting the user pool I saw that the it looks like the user pool object used in the test and in the flask app code are the same (same object identifier 0x1073add90), but the flask app has an empty users attribute:
user pool in the test context
result = {CognitoIdpUserPool} <moto.cognitoidp.models.CognitoIdpUserPool object at 0x1073add90>
 MAX_ID_LENGTH = {int} 55
....
 users = {OrderedDict: 1}<EMAIL_ADDRESS><moto.cognitoidp.models.CognitoIdpUser object at 0x107af8070>)])

user pool in the flask app
result = {CognitoIdpUserPool} <moto.cognitoidp.models.CognitoIdpUserPool object at 0x1073add90>
 MAX_ID_LENGTH = {int} 55
....
 users = {OrderedDict: 0} OrderedDict()

Since the test runs in a thread/process and the flask app runs in another thread/process - is it possible that the user pool is found but the pool's users are stored in some kind of thread local storage?

Hi @nykolaslima, both UserPools and Users are stored in the global scope. So i don't quite understand what is going wrong in your example.
Are you able to provide a full reproducible test, in a standalone repo for example?

Hi @bblommers , thanks for helping.
I found the problem. I am using pytest flask in order to start the flask app that is going to be tested. So I have two fixture, on fixture to create the user in the cognito pool and other fixture to start create the flask app.
@fixture
def logged_user(self, cognito_client, cognito_util, logged_user_password):
  user = UserTableFactory.create().to_domain()
  cognito_util.create_confirmed_user(user.email, logged_user_password)
  return user

@fixture
def app(self, cognito_client):
  os.environ['no_proxy'] = '*'
  app = create_app()
  app.config['SERVER_NAME'] = 'localhost'
  return app

With this code I do not guarantee that the logged_user will run before the app fixture. And what was happening is that the app was created first, and then the logged_user is created.
Looks like somehow the state that is used by the flask app is "copied" when the app is created, as the moto objects were used by value and not by reference - and in the moment that the app was created there were not users in the cognito pool.
to solve this, add the logged_user fixture as a dependency of app fixture we guarantee that the user will be created in the pool before the flask app - and then it works.
working code:
@fixture
def logged_user(self, cognito_client, cognito_util, logged_user_password):
  user = UserTableFactory.create().to_domain()
  cognito_util.create_confirmed_user(user.email, logged_user_password)
  return user

@fixture
def app(self, logged_user):
  os.environ['no_proxy'] = '*'
  app = create_app()
  app.config['SERVER_NAME'] = 'localhost'
  return app

Anyways it looks like a strange behavior since we supposed to share the same object, and if we are changing the users list inside of it, it should reflect in the flask app in the runtime, doesn't it?

Looks like somehow the state that is used by the flask app is "copied" when the app is created

Based on that description, I think it is a multi-threading problem actually.
If you start a new thread, Python will copy everything in the global context to the new thread - which includes the UserPool (and now User).
Any future actions in a thread will only impact the state/global context in that thread, and resources created/updated by Flask (in the Flask-thread) will not show up in the main thread. So this setup really only works for read-only tests.
You might want to have a look at the Moto server. If all threads send their boto3-calls to a shared server, they're guaranteed to share state.
https://docs.getmoto.org/en/latest/docs/server_mode.html

makes totally sense, thanks very much for the explanation.
actually in my context it would be ok to keep the read-only approach since I am creating the setup and doing some "black box" testing that doesn't really dig in the details of the mutate state.
I believe we can close the issue since it's not a bug but a multi thread behavior.
Do you believe it worth to mention about it somewhere in the docs?

Happy to help @nykolaslima!
There is a note in the FAQ that multi-threading in general is not supported. I'll see if I can extend that with this use case as an example.
I'll close this then, but let us know if you run into any other issues.

may I open a PR with this improvement?
I could create it if you help me to figure out where is the best place to put it.

Sounds good to me!
I was planning on extending the second question here:
https://github.com/getmoto/moto/blob/master/docs%2Fdocs%2Ffaq.rst
Which would show up here:
https://docs.getmoto.org/en/latest/docs/faq.html

Awesome. will work on some draft here and send you a PR


Incorrect Code sample: DefaultChallengeScheme Mismatch

At Authenticate with an OpenID Connect or OAuth 2.0 Identity provider, the code sample says options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; but uses AddOpenIdConnect. I believe the DefaultChallengeScheme line should look like: options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;

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

ID: d926868f-5446-63c6-75c0-ba879879f4b5
Version Independent ID: ff9b78ce-a923-e763-08d5-c31cbb6a1f0e
Content: Securing .NET Microservices and Web Applications
Content Source: docs/architecture/microservices/secure-net-microservices-web-applications/index.md
Product: dotnet-architecture
Technology: microservices
GitHub Login: @mjrousos
Microsoft Alias: nanil

Hi @Seeker9889, thank you for reaching out.
If you see the actual reference application eShopOnContainers, you will notice that there are multiple authentication schemes have been defined in the middleware. But the actual authentication scheme gets defined by an [Authorize] attribute in different controllers.  For e.g : [Authorize(AuthenticationSchemes = OpenIdConnectDefaults.AuthenticationScheme)] in AccountController.cs
OpenIdConnect has been configured for the SignInScheme with Cookie but it also has Bearer token specific authentication for subsequent rest API calls.
You can use multiple authentication schemes together. For further reference you could also explore Authorize with a specific scheme in ASP.NET Core
Hope this helps !

Yes, that definitely helps. Thank you


Fix/change create event to event

What kind of change does this PR introduce? (check at least one)

[ ] Bugfix
[ ] Feature
[ ] Code style update
[ ] Refactor
[ ] Build-related changes
[x] Other, please describe:

Does this PR introduce a breaking change? (check one)

[ ] Yes
[x] No

If yes, please describe the impact and migration path for existing applications:
The PR fulfills these requirements:

[ ] It's submitted to the dev branch for v2.x (or to a previous version branch), not the master branch
[ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[ ] All tests are passing: https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#development-setup
[ ] New/updated tests are included

If adding a new feature, the PR's description includes:

[ ] A convincing reason for adding this feature (to avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it)

Other information:
Document.createEvent has been deprecated, it is recommended to use CustomEvent instead.
https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createEvent
close #11953

Thank you for your contribution! But it seems that the CustomEvent constructor doesn't work in IE:
https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent

Hi, @Justineo .details are not used, is it possible to use Event instead.
https://developer.mozilla.org/en-US/docs/Web/API/Event

Though it's marked as deprecated, createEvent won't be removed and will continue to be supported by browsers. IMO we get little benefit from replacing it with the proposed implementation as currently it has been working fine for a long time.

Thinks but we need IE support


Segfaults and memory access violations on CI services

The builds on travis-CI sometimes fail with a segfault, even after all tests have passed. This happens for 3.4 and 3.5, but only sporadically. This could be caused by MKL, pytest or travis. A quick google-search shows that some interaction between pytest and MKL's memory management might cause this.
A similar thing appens on appveyor, where the exit code -1073741819 also seems to be connected to MKL's memory management.
In one case there are also memory access violations, where only some of the tests fail.
Possibly this could be fixed by releasing the memory of the solver with PyPardisoSolver.set_phase(-1), but there might be a more serious underlying problem in the wrapper.

After more than two weeks of bug-hunting I have finally managed to fix this issue. I guess this is what can happen when people who have no experience whatsoever with manual memory management start to work with C-code. I'll write up a short summary of what I did for future reference for myself (and maybe people that stumple upon this while googling segfaults and python wrappers).
The first approach was to find a case, where the segfault is reproducible. I found some ways that appeared to increase the likelihood of a segfault:

more calls to the solver
changing the format of matrix A often (eg. from csc to csr etc.)
freeing the solver's memory and manual garbage collection with gc.collect()

Nevertheless the segfault only appeared sporadically and I couldn't find a case to always reproduce it. The error also happed way more often on the CI services than on my machine, which made it even more difficult. On osx and linux it mostly crashed after the tests have run and on windows often at the beginning or in between. I suspected that there might even be two different causes for the segfault. These two types of segfaults are also what @cardosan described in #5.
I then set up gdb on linux to track down the reason for the segfaults.
Typical ouput of gdb looked like this: gdb pypardiso
Bottom line of all of the gdb output was that the segfault happens with the garbage collector. But neither more garbage collection, nor deactivating the cyclic collection made the segfaults go away.  This idea led me down a rabbit hole of reading everything I could about malloc and free  in C and garbage collection and reference counting in CPython. This then led to looking through the numpy, scipy and ctypes source code to find the place in my code where something would be garbage collected, because it only uses a weakref for example or no reference is kept to an object that is still in use.
When randomly following every hint in the gdb output didn't bring any success, @thomasst advised me to use valgrind. I had failed before to get valgrind working with python, but I gave it another go and this was the outcome of running a minimal example of the wrapper with valgrind: linux full valgrind output

==2106== LEAK SUMMARY:
==2106==    definitely lost: 162,732 bytes in 85 blocks
==2106==    indirectly lost: 0 bytes in 0 blocks
==2106==      possibly lost: 536,540 bytes in 223 blocks
==2106==    still reachable: 1,741,984 bytes in 3,622 blocks

Turns out that i have a memory leak in my program. While some of this is due to valgrind's inability to deal with the python memory management (or my inability to properly set up valgrind with python), I found out the the memory allocated by MKL is also leaked. I then focused more on the code directly connected to the mkl pardiso function.
It turns out that the official Intel MKL documentation played a trick on me:
Here it is written that the pt input parameter for pardiso can be an array of:

INTEGER for 32-bit or 64-bit architectures
INTEGER*8 for 64-bit architectures

where INTEGER is a fortran 32bit int and INTEGER*8 is a fortran 64bit int. Pypardiso is supposed to work on 32-bit and 64-bit architectures and therefore I used 32-bit ints. I assumed that other people used 64bit, because they only develop for 64-bit architectures. MKL uses the pt-array to store internal memory addresses. I guess there are cases where the memory address on a 64-bit architecture can become larger than a 32-bit int, which leads to a segfault because the pt-array can't hold this address. The chances for this probably increase the longer you use the solver and also differs between operating systems, which explains why it was impossible to reproduce and why it only happend sometimes.
In hindsight I assume this would have been obvious from the beginning if I had any experience with memory management. It makes a lot of sense that 64-bit operating systems needs 64-bit memory addresses. It's just really unfortunate for me, that the operating system seemed to be perfectly happy with small numbers as memory addresses that fit into 32-bit most of the time.
This is now fixed in v0.2.0

Some more discussion with @thomasst revealed that I haven't interpreted the reason for the segfaults correctly. Below is an example of the behaviour of the pt-array after the fix (ie. as a 64bit int array):
>>> import numpy as np
>>> import scipy.sparse as sp
>>> import ctypes
>>> import pypardiso
>>> ps = pypardiso.scipy_aliases.pypardiso_solver
>>> ps.pt
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> ps.solve(sp.eye(1, format='csr'), np.ones(1))
array([ 1.])
>>> ps.pt
array([         1,<PHONE_NUMBER>,          0,<PHONE_NUMBER>,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,          0,          0,
                0,          0,          0,<PHONE_NUMBER>])
>>> ps.pt.dtype
dtype('int64')

If I do the same in pypardiso v0.1.0, the pt-array it looks like this:
>>> ps.pt
array([      1,       0, 8738432,       1,       0,       0, 4894592,
             1,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0], dtype=int32)

Using some black magic by @thomasst, I can access the memory location of the pt-array beyond the boundaries of the 32-bit int array und load it as a 64-bit int array:
>>> def array_memory_address(a):
...     obj = ctypes.py_object(a.data)
...     address = ctypes.c_void_p()
...     length = ctypes.c_ssize_t()
...     ctypes.pythonapi.PyObject_AsReadBuffer(obj, ctypes.byref(address), ctypes.byref(length))
...     return address
...
>>> address = array_memory_address(ps.pt)
>>> np.frombuffer(ctypes.string_at(address, 64*8), np.int64)
array([           1,<PHONE_NUMBER>,            0,<PHONE_NUMBER>,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
<PHONE_NUMBER>,            1,            0,            0,
<PHONE_NUMBER>8,            1,            1,<PHONE_NUMBER>77,
<PHONE_NUMBER>,            0,            0,            0,
                  0,            0,            0,            0,
        -4294967296,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
<PHONE_NUMBER>,            0,<PHONE_NUMBER>69,<PHONE_NUMBER>])

This demonstrates how the Pardiso library writes to the same places in memory (ie. pt[0], pt[1], pt[3] and pt[63]) as in the fixed version above. What is really interesting is what happens when we load the same block of memory as np.int32:
>>> np.frombuffer(ctypes.string_at(address, 64*8), np.int32)
array([      1,       0, 8738432,       1,       0,       0, 4894592,
             1,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       1,       2,       1,       0,       0,       0,
             0,       0,       0,      13,       1,       0,       1,
             0,     141,     141,       0,       2,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,      -1,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,      -1,       0,       0,       0,     141,     143,
            23,       1], dtype=int32)

Now it becomes clear that the second half is actually the iparm array. The python memory manager apparently stores these two arrays adjacent to each other in memory, because they are both of the same size and type (this is not the case in the new version of pypardiso):
>>> ps.iparm
array([  1,   2,   1,   0,   0,   0,   0,   0,   0,  13,   1,   0,   1,
         0, 141, 141,   0,   2,   0,   0,   0,   0,   0,   0,   0,   0,
         0,   0,   0,   0,   0,   0,   0,  -1,   0,   0,   0,   0,   0,
         0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
         0,   0,   0,   0,  -1,   0,   0,   0, 141, 143,  23,   1], dtype=int32)
>>> array_memory_address(ps.pt)
c_void_p(4466231120)
>>> array_memory_address(ps.iparm)
c_void_p(4466231376)

It turns out that it only looked like the last element of the pseudo-int64 array was a valid memory address:
>>> np.frombuffer(ctypes.string_at(address, 64*8), np.int64)
array([           1,<PHONE_NUMBER>,            0,<PHONE_NUMBER>,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
<PHONE_NUMBER>,            1,            0,            0,
<PHONE_NUMBER>8,            1,            1,<PHONE_NUMBER>78,
<PHONE_NUMBER>,            0,            0,            0,
                  0,            0,            0,            0,
        -4294967296,            0,            0,            0,
                  0,            0,            0,            0,
                  0,            0,            0,            0,
<PHONE_NUMBER>,            0,<PHONE_NUMBER>70,<PHONE_NUMBER>])
>>> last_one = np.frombuffer(ctypes.string_at(address, 64*8), np.int64)[-1]
>>> last_one
4294967319
>>> np.frombuffer(ctypes.string_at(array_memory_address(last_one), 8), np.int32)
array([23,  1], dtype=int32)

After a lot of reverse engineering, I think I finally kind of understand what happened:
The desired layout in memory for the pt- and the iparm-array looks like this (one - symbolizes is 8 bytes, which means one int64 or two int32):
----------------------------------------------------------------
--------------------------------

What really happend in the old version of pypardiso is this:
--------------------------------================================

Because the pt-array was passed as 32bit-array instead of 64bit, the second half is overwritten by the iparm array. The pardiso solver uses these 0,1,3 and 63-element of the pt-array to store information like this:
xx-x-----------------------------------------------------------X
xx-x----------------------------oooooooooooooooooooooooooooooooo <- second half overwritten by iparm

As shown in the comment above, elements 1,3 and 63 contain memory addresses. Reading these memory locations into numpy-arrays revealed the following:
>>> ps.pt
array([         1,<PHONE_NUMBER>,          0,<PHONE_NUMBER>,          0,
                ...
                0,          0,          0,<PHONE_NUMBER>])

pt[1] and pt[3] are the pointers to MKL's internal memory management (more pointers and evenutally things like A.indices, A.indptr etc.)
pt[63] only contains zeros. It turns out that the memory at pt[63] is only used for the OOC (out-of-core) solving method of Pardiso, which is not yet implemented in pypardiso

Because pt[1] and pt[3] are in the first half of pt, they were safe from being overwritten, pt[63] is never used by the solver and because of this the solver worked without any problem. However one thing is a really unlucky coincidence: the 64bit pt[63]is overwritten by the two 32bit ints iparm[62]and iparm[63].
                                                               ↓
xx-x----------------------------oooooooooooooooooooooooooooooooX

Iparm[62] is the

Size of the minimum OOC memory for numerical factorization and solution. This parameter provides the size in kilobytes of the minimum memory required by OOC Intel MKL PARDISO for internal floating point arrays. This parameter is computed in phase 1.

and iparm[63] is a reserved parameter that is set to zero. When the solver interprets these two 32bit ints as the 64bit pt[63] this yields a valid memory address most of the time:
>>> iparm62and63 = ps.iparm[62:]
>>> iparm62and63
array([23,  1], dtype=int32)
>>> wrong_address = np.frombuffer(ctypes.string_at(array_memory_address(iparm62and63), 8), np.int64)
>>> wrong_address
array([4294967319])
>>> int(wrong_address) - 2**32
23
>>> np.frombuffer(ctypes.string_at(ctypes.c_void_p(int(wrong_address)), 8*10), np.int64)
array([              34048,<PHONE_NUMBER>6272,<PHONE_NUMBER>653423360,
                   5198405,                   0,<PHONE_NUMBER>776,
                         0,                   0,                   0,
                         0])

pt[63] is now a pointer to a random memory location, which varies depending on the value of iparm[62], but somehow seems to produce a valid address most of the time. Because pt[63] isn't actively used this seems to be ignored until the solver tries to shutdown. Pardiso expects that pt[63] points to a memory location that was allocated by the solver and now needs to be freed. I don't fully understand how memory is freed on the C-level, but I assume that now it depends on where the random address created by iparm[62]and iparm[63] points to. The solver will now try to free things at this memory location and depending on what is there, this will lead to a segmentation fault.
This memory location varies depending on the size of matrix A and b (this changes iparm[62]) and whatever is present at the wrong pt[63]-address is bound to be different between the operating systems. These weird interactions created a bug that was almost impossible to track down, I'm really happy that this is finally solved.
@cardosan and @cmutel: I'm not sure how easy it is to follow my ramblings, but I think it is safe to say that the results of pypardiso-v0.1.0 were correct, despite this obscure bug and the occasional segfaults.


Simple / admin breadcrumbs

POC implementation of https://github.com/wagtail/wagtail/issues/8767 to get feedback
Note: please ignore the icon fix & page_perm removal - that is some other breadcrumbs clean up work

Questions

Name breadcrumbs_admin ?
API - providing just one URL / label enough for now?
Padding - needed for the header expanded one but may be too much when added to the chooser usage
Name of 'admin' home as "Home"? instead of "Root" for when used as a page tree
Do we want an icon here also to visually differentiate it from the page tree breadcrumbs usage
Is this too 'hacky' in the way it is integrated with the existing template

@laymonage  @thibaudcolas  - please can I get some feedback on the proposed simple / admin breadcrumbs implementation.
This can be used for the snippets work Sage is working on + see https://github.com/wagtail/wagtail/issues/8767 for other use cases.

Will close this now based on discussion above - it seems as though a simple breadcrumbs usage is not what we want.
Will go back to the drawing board if I get the chance. Or maybe this can be added to the scope for GSoC Unification if time allows.


Error in /

Error in funailog
Error in /
Minified React error #423; visit https://reactjs.org/docs/error-decoder.html?invariant=423 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
View on Bugsnag
Stacktrace
node_modules/react-dom/cjs/react-dom.production.min.js:293 - Wk

View full stacktrace
Created automatically via Bugsnag

Wait and see, so I temporary close tickets
Comment added in Bugsnag by Ryota Ikezawa
Error in /

An error linked to this issue has been marked as fixed in Bugsnag
Error in /

An error linked to this issue has been reopened in Bugsnag
Error in /


Bugfix discovery (delete/mqtt) call for Hass.io

Description:
Fix a json parser of delete message

Was it intended to change the configuration variable from broker to host?


tools/nuttx-gdbinit/armv7-a: add fpu support

Summary
tools/nuttx-gdbinit/armv7-a: add fpu support
Signed-off-by: chao an<EMAIL_ADDRESS>Impact
N/A
Testing
sabre-6quad:nsh

@anchao will it work even when FPU support is not enabled in the menuconfig?

please add a commit message describing the change

Done

@anchao will it work even when FPU support is not enabled in the menuconfig?

Yes this PR works as expected with or without the FPU


Create zh_cn.json

and,
ExNaturae  means Extra nature's tools   or    Ex Nihilo: Nature ?
Extra nature's tools 额外的自然工具
Ex Nihilo: Nature 无中生有：自然

It means "from nature"
Ex Nihilo means "out of nothing" and that’s why this is from nature.


Add "Discard draft" and "Cancel" options to Collection Edit page

wireframes: https://projects.invisionapp.com/share/EQXC9CLKCR2#/screens/420930437
design doc: https://docs.google.com/document/d/1fcr2DYo7OrX-qTdeUOTWKSS1rlq_47sehESmbvgUsrk/edit#heading=h.z1sansuktydz

@amyehodge the design doc describes this a "Discard draft" should we use that text or "Discard"?  Presumably this only appears if it is a draft and has already been saved because otherwise "Cancel" would have the same effect.

@amyehodge the design doc describes this a "Discard draft" should we use that text or "Discard"?  Presumably this only appears if it is a draft and has already been saved because otherwise "Cancel" would have the same effect.

I've updated this to "Discard draft" as specified in the design doc.
And, yes, that makes sense that it's only there if it's an already saved draft.

I've updated this to "Discard draft" as specified in the design doc.
And, yes, that makes sense that it's only there if it's an already saved draft.

I am seeing the "Discard Draft" button on the Collection Edit page (I remember adding this last year).  It only appears for draft collections (not deposited).  So, is this about adding the cancel button, which goes back to the dashboard?

I am seeing the "Discard Draft" button on the Collection Edit page (I remember adding this last year).  It only appears for draft collections (not deposited).  So, is this about adding the cancel button, which goes back to the dashboard?

@peetucket This is a confusing topic.
TL;DR
Both buttons are needed except in the case where the item has never been saved at all, i.e. user has clicked on "Create new collection" but never saved the form.
All the details:
The "Cancel" button

cancels out of the data entry form without saving anything

if the item had never been saved, then nothing is saved here either, ie. there is no item listed in tables on the dashboard or elsewhere and no trace of it should remain.

if the item had previously been saved, then the item returns to the last saved state and none of the data that was entered into the form (if any) is saved.

in either case, returns the user to the collection view page

The "Discard draft" button

deletes the entire draft, meaning

if the item had never been deposited, then the draft will no longer appear on the dashboard

if the item had been deposited and this is a VERSION draft, then the item reverts back to the last version deposited, and is listed as "Deposited" in the tables. This includes removing any changes that had been made to the item when it was saved as a draft previously.

clicking this will bring up a pop up that asks “Are you sure you want to delete this draft? You cannot undo this action.”

in either case, returns the user to the collection view page

This leaves one overlapping scenario, which is that for items that have never been saved, that means they have also never been deposited, so for these "Cancel" button and the "Discard draft" button do the same thing, as Justin noted above.
So, both buttons are needed except in the case where the item has never been saved at all, i.e. user has clicked on "Create new collection" but never saved the form.
(God, I hope I got this all straight.)

@peetucket This is a confusing topic.
TL;DR
Both buttons are needed except in the case where the item has never been saved at all, i.e. user has clicked on "Create new collection" but never saved the form.
All the details:
The "Cancel" button

cancels out of the data entry form without saving anything

if the item had never been saved, then nothing is saved here either, ie. there is no item listed in tables on the dashboard or elsewhere and no trace of it should remain.

if the item had previously been saved, then the item returns to the last saved state and none of the data that was entered into the form (if any) is saved.

in either case, returns the user to the collection view page

The "Discard draft" button

deletes the entire draft, meaning

if the item had never been deposited, then the draft will no longer appear on the dashboard

if the item had been deposited and this is a VERSION draft, then the item reverts back to the last version deposited, and is listed as "Deposited" in the tables. This includes removing any changes that had been made to the item when it was saved as a draft previously.

clicking this will bring up a pop up that asks “Are you sure you want to delete this draft? You cannot undo this action.”

in either case, returns the user to the collection view page

This leaves one overlapping scenario, which is that for items that have never been saved, that means they have also never been deposited, so for these "Cancel" button and the "Discard draft" button do the same thing, as Justin noted above.
So, both buttons are needed except in the case where the item has never been saved at all, i.e. user has clicked on "Create new collection" but never saved the form.
(God, I hope I got this all straight.)

Ok, I think I understand.  We currently have implemented "Discard Draft" for both Works and Collections, but it only works on the first draft, before deposit.  It just deletes the entire work or collection, making it disappear from the dashboard/listings.
Adding a cancel button (in all cases) that acts like a browser back button seems like it will fulfill the "cancel" requirements. Basically, back out of the form without saving changes to the previous state.  That is easy.
Allowing the discarding of previously saved second drafts of works and collections may be trickier - may need to consult with Mike and Justin about how this would work.

Ok, I think I understand.  We currently have implemented "Discard Draft" for both Works and Collections, but it only works on the first draft, before deposit.  It just deletes the entire work or collection, making it disappear from the dashboard/listings.
Adding a cancel button (in all cases) that acts like a browser back button seems like it will fulfill the "cancel" requirements. Basically, back out of the form without saving changes to the previous state.  That is easy.
Allowing the discarding of previously saved second drafts of works and collections may be trickier - may need to consult with Mike and Justin about how this would work.

I think we all need to discuss about if the "revert to previously published version".  That is quite challenging, has particular problems with collections (where the set defaults may already be used by items in that collection), and I don't believe is something that Hydrus currently does.

I think we all need to discuss about if the "revert to previously published version".  That is quite challenging, has particular problems with collections (where the set defaults may already be used by items in that collection), and I don't believe is something that Hydrus currently does.

Hydrus doesn't do this currently, and it makes things very confusing for users at times. This was an effort to correct this problem.
I think we need to review which collection are changes taking effect when. As I'm thinking on this, it's complicated, because there are definitely changes that I don't think should be being used by collection items until the collection is redeposited.

Hydrus doesn't do this currently, and it makes things very confusing for users at times. This was an effort to correct this problem.
I think we need to review which collection are changes taking effect when. As I'm thinking on this, it's complicated, because there are definitely changes that I don't think should be being used by collection items until the collection is redeposited.

Update: taking cancel button to #857, updating this to reflect discard option only

Update: taking cancel button to #857, updating this to reflect discard option only

Also see #894 for works

Also see #894 for works

Related to #1055, #1110, #1112

Just verifying that I see we have not yet addressed the use case with versions described above. That is, once the collection has been deposited, a user does not see a "discard draft" button and therefore can't revert to the previous saved version.

@amyehodge I see a "discard draft" button on the "collection details" edit page after you save a draft of a new version. Is this ticket complete?

This does seem to be working now.


Artwork scraper not scraping

Version: 2.9.13
Build: 2018-07-23 18:42
OS: Linux 4.15.0-32-generic
JDK: 1.8.0_181 amd64 Oracle Corporation
What is the actual behaviour?
The artwork scraper seems unable to connect with the artwork provider.
What is the expected behaviour?
Artwork being found and scraped ath the provider.
Steps to reproduce:

Right-click select movies without artwork
Chose "Download missing artwork..." (in English, I'm Dutch)
Scraping fails after apr. 100ms with the the attached log failure messages

Additional
Have you attached the logfile from the day it happened?
[tmm_logs_NO_PW.zip]

fanart.tv responds with a 404 Not Found - so there is probably nothing for the movie you want to scrape OR there is a temp. network failure at fanart.tv..

Do you think it's feasible to create a feature that retries for that image for x seconds (maybe a parameter in tinyMediaManager configuration)?

a retry is already implemented in v3 https://github.com/tinyMediaManager/tinyMediaManager/blob/2ec6613e4d4abb529227678497c26ff5166bb4f0/src/main/java/org/tinymediamanager/core/tasks/MediaEntityImageFetcherTask.java#L134
an option is not planned, since we want to make tmm easy/small - and we're against having too much settings

a retry will be in v2 in the next release


[PR] The proj files have been updated to enable SourceLink

CSProj files have been updated to enable SourceLink in your nuget
[This pull request was created with an automated workflow]
I noticed that your repository and Nuget package are important for our .NET community, but you still haven't enabled SourceLink.
We have to take 2 steps:

Please approve this pull request and make .NET a better place for .NET developers and their debugging.
Then just upload the .snupkg file to https://www.nuget.org/ (now you can find the snupkg file along with the .nuget file)

You can find more information about SourceLine at the following links
https://github.com/dotnet/sourcelink
https://www.hanselman.com/blog/ExploringNETCoresSourceLinkSteppingIntoTheSourceCodeOfNuGetPackagesYouDontOwn.aspx
If you are interesting about this automated workflow and how it works
https://github.com/JTOne123/GitHubMassUpdater
If you notice any flaws, please comment and I will try to make fixes manually

Hi @JTOne123
Could you instruct me on how to create or find the .snupkg file? I have not touched this project in a long time, so I am not familiar with these new features.

just look into your release/bin
https://www.meziantou.net/how-to-debug-nuget-packages-using-sourcelink.htm


[Gluten-Core][draft] Prevent executor core dump while tring to kill speculative tasks

What changes were proposed in this pull request?
When speculation is turned on, in some cases, the executor will core dump due to speculative task kill, which is very dangerous for those applications that do not have a shuffle service.
How was this patch tested?
unit tests

@zhztheplayer what happens to the memory pool if a task is killed? Will the memory pool free all the memory of this task thread?

@zhztheplayer what happens to the memory pool if a task is killed? Will the memory pool free all the memory of this task thread?

It seems like a ClosedByInterruptException will be thrown from Task's Java side to C++ side. Usually the exception should be caught and wrapped as a C++ exception, then wrapped again as a Java exception to return to Java code, during which no memory leak will happen.
So it's unexpected to cause a crash. Maybe it's related to something wrong with C++ stack unwinding.
I just make my assumption by going through the PR's code. @jackylee-ch If you have any comment with this.

Usually the exception should be caught and wrapped as a C++ exception, then wrapped again as a Java exception to return to Java code, during which no memory leak will happen.

@FelixYBW @zhztheplayer We did encounter the memory leak problem after turning on speculation, and it seems that the memory was not cleared in some cases. We need recheck the code and try to catch the exception, and finally return to Java side. I will create an issue about these problem and one of my peer will keep workding on this.


[SPARK-15395][Core]Use getHostString to create RpcAddress (backport for 1.6)

What changes were proposed in this pull request?
Backport #13185 to branch 1.6.
How was this patch tested?
Jenkins unit tests.

Test build #58879 has started for PR 13196 at commit 4e58119.

Test build #58879 has finished for PR 13196 at commit 4e58119.

This patch fails from timeout after a configured wait of `250m`.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/58879/
Test FAILed.

Merged build finished. Test FAILed.

retest this please

Test build #2994 has started for PR 13196 at commit 4e58119.

Test build #2994 has finished for PR 13196 at commit 4e58119.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merging to1.6


Pudibei NR series (750, 850, 950) radiation monitor support

Hello
Your RadPro software mentions that it should support a NR-950 geiger counter.
Does it extend to other NR series devices?
I'm most interested about NR-750 radiation monitor, as this is the one I planned on reprogramming.
This model uses a MSP430F147 microcontroller.
If the software is compatible, will I be able to use an ST-link for programming, like with FS-2011?
Finally, could You help me with locating reprogramming pins on the board, if I provide detailed photos of it?
Thank you, and wish you luck with this project!

Thanks for pointing out an error. Indeed, Rad Pro does not support the NR series devices.
Let me also point to this issue, which explains why: https://github.com/Gissio/radpro/issues/5


Try building macOS with vendored LLVM

After review, this is ready to be squashed and then merged.


Link type of storage accounts information

@adrianwells : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@tamram - Could you review this proposed update to your article and enter #sign-off in a comment if it's approved for merge?
Thanks!
#label:"aq-pr-triaged"

#sign-off


Fix Windows storage qos hostconfig names

These host config parameters are not currently used. This PR names them more correctly, as they are not exactly Block IO.
It also removes the SandboxSize option which was unused, as it fits better in the recently added StorageOpts[].
Signed-off-by: Darren Stahl<EMAIL_ADDRESS>

LGTM

LGTM 🐰


Add sub interfaces to denote brave/otel based BuildingBulocks

While testing failed observation case with SampleTestRunner, Brave and OTel have different error handling for spans.
To verify the spans in test, I need to differentiate the check for Brave and OTel based test run.
To detect the current test run, whether Brave or OTel, I need to have if check like this:
protected boolean isBrave(BuildingBlocks bb) {
	return bb instanceof InMemoryBraveSetup.Builder.BraveBuildingBlocks
			|| bb instanceof ZipkinBraveSetup.Builder.BraveBuildingBlocks
			|| bb instanceof WavefrontBraveSetup.Builder.BraveBuildingBlocks;
}

This PR adds a marker/sub interface to indicate the BuildingBlocks implementation is based on the Brave or OTel.
With the change, the above isBrave method can be written as:
protected boolean isBrave(BuildingBlocks bb) {
	return bb instanceof BuildingBlocks.BraveBuildingBlocks;
}

Recommendation is not to validate implementation details - the difference of brave and otel spans.
Rather, it should verify the error object passed to Span#error.
SpanAssert.assertThat(span).assertThatThrowable()...

This verifies the micrometer Span which is the abstraction on top of brave/otel impl details.


Allow booleans as conditionals in the tokens helper

Often times I need to conditionally add classes based on a boolean value, and wrapping them in a Proc adds a bit of overhead. I hope it makes sense to allow raw booleans too.
I added a sus test to keep them in line with the other tests for tokens. Let me know if I should move it to quickdraw instead.

Hey, thanks for the PR. Unfortunately because Hash keys need to be unique, this won’t work.
Let’s say I have the following variables:
foo = true
bar = true
baz = false
bing = false

And I use them like this:
div(
  **classes(
    foo => "foo",
    bar => "bar",
    baz => "baz",
    bing => "bing"
  )
)

Because keys are unique, the classes method will only receive the arguments:
(true => "bar", false => "bing")

So the output would be:

Instead of the expected:

Using Procs means each key is unique so it works as expected:
div(
  **classes(
    -> { foo } => "foo",
    -> { bar } => "bar",
    -> { baz } => "baz",
    -> { bing } => "bing"
  )
)

Another way you could do this is with parentheses and regular conditionals:
div(
  class: [
    ("foo" if foo),
    ("bar" if bar),
    ("baz" if baz),
    ("bing" if bing),
  ]
)

Ah of course, that was a bit of a brain fart. Thanks for taking the time to write out that massive response.


EFS DependsOn Ref to String fix

Closes low hanging fruit #709
As part of this change, I removed the title usage in favor of the positional argument for naming a resource. Using the positional seems to be the defacto standard looking at other examples and code within Troposphere.

Hey @bmurtagh - I updated your example to use a new method of referring to DependsOn that is more pythonic (and was just accepted into troposphere).  Let me know if you have any issue with it - @markpeek letting you know too.

Thanks!


Use constant instead of static in a couple places

This keeps symbols for these from accidently being exported as easily.

Well, a -0 vs 0 serialization difference on nightly that doesn't reproduce for me locally is something I don't want to think about too hard to start a weekend. I will hopefully dig into this soon.

"This keeps symbols for these from accidently being exported as easily." -- kulakowski
Is this PR trying to avoid an anti-pattern? (I don't think I'm familiar with it.) @kulakowski Could you explain a little more?

toml-rs has moved to https://github.com/toml-rs/toml_edit.  Feel free to rebase your PR against that repo and open a new issue there.