postIpamFailure  range is full when spawning more than 250 pods

Bug report
I'm trying to spawn more than 250 pods on a single node and I'm getting:
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "4bb3d166d60c422be07170acc2ff881035c5feb198eddc8f39c8337d44fc511b" network for pod "nginx-deployment-68c767dd76-x9rvg": networkPlugin cni failed to set up pod "nginx-deployment-68c767dd76-x9rvg_test" network: unable to allocate IP via local cilium agent: [POST /ipam][502] postIpamFailure  range is full

General Information

Cilium version: 1.8 (also tested this with 1.9)
Kernel version: Linux dco2-prep 5.4.0-1042-gcp #45~18.04.1-Ubuntu SMP Tue Apr 13 18:51:16 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

How to reproduce the issue
Install Kubernetes with kubeadm. Make sure you set your network big enough to hold more than 256 IP addresses:
controllerManager:
  extraArgs:
    allocate-node-cidrs: "true"
    node-cidr-mask-size: "16"
networking:
  podSubnet: <IP_ADDRESS>/16

Also make sure the pod limit is higher than 110:
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 1000

Adjust the cilium manifest with the same values:
  cluster-pool-ipv4-cidr: "<IP_ADDRESS>/16"
  cluster-pool-ipv4-mask-size: "16"

Create a deployment and set its replicas to 500. After 250 pods have been spawned, you will get the following error when doing kubectl describe pod <pod name>:
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "4bb3d166d60c422be07170acc2ff881035c5feb198eddc8f39c8337d44fc511b" network for pod "nginx-deployment-68c767dd76-x9rvg": networkPlugin cni failed to set up pod "nginx-deployment-68c767dd76-x9rvg_test" network: unable to allocate IP via local cilium agent: [POST /ipam][502] postIpamFailure  range is full

Also kubectl describe nodes shows me the following entry in its annotations:
Annotations:        io.cilium.network.ipv4-cilium-host: <IP_ADDRESS>
                    io.cilium.network.ipv4-health-ip: <IP_ADDRESS>
                    io.cilium.network.ipv4-pod-cidr: <IP_ADDRESS>/24
                    kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true

I seem to have the same issue +1

can you provide a cilium sysdump? did you check cilium-operator logs to see if there were any warnings present in the logs?

There was nothing weird inside the cilium logs.
Last time I installed Cilium 1.8 and switched to 1.9. Now I installed 1.9 from a fresh Kubernetes install and it works. I'm currently running 600 pods on 1 node!
I'm going to try to investigate a little further if upgrading is possible, if not I'll have to reinstall Kubernetes

Ok, I tried upgrading from cilium 1.8 to 1.9 by first doing a
kubectl delete -f cilium1.8.yaml

and then installing it with
kubectl apply -f cilium1.9.yaml

But the pods kept getting IP's from the <IP_ADDRESS>/24 range.
Also the node annotations stayed at io.cilium.network.ipv4-pod-cidr: <IP_ADDRESS>/24
Only when I reinstalled kubernetes with kubeadm reset / kubeadm init and installed cilium 1.9, the pods were getting IP's from my new <IP_ADDRESS>/19 range. Also the annotations of the node now state
io.cilium.network.ipv4-pod-cidr: <IP_ADDRESS>/19

Do these annatations have any meaning? Are they used in any way?

@SamDecrock Cilium will fetch the pod CIDR from the CiliumNode resource if IPAM mode is cluster-pool or from the K8s node resource if any another IPAM mode. That would explain why when you upgraded Cilium by deleting and re-applying, Cilium 1.9 used the existing pod CIDR from the resources and then when you reinstalled K8s with kubeadm, Cilium picked up the new pod CIDR range.

Hmm. There's a CiliumNode I didn't know that. Do you mean the CiliumNode stayed alive when I upgraded from 1.8 to 1.9 and see the pod CIDR range was kept?

Yes, the CiliumNode CRD is persisted over upgrades.

Thanks, that explains it.


Alert State check

Init draft to provide alert on state, add a state definition in policy metadata.

Move input/output stream into definition
Assume the intermediate stream defined in system stream definition
Chain the siddhi definition, use index to identify the next handler.

This is wrong pr, should to develop not master.
Closed


Add release notes for v20.2.13

Fixes #10705

This change is

Avoiding the last minute rush next Monday :-)


Problem when creating tenant

Hi,
I want to integrate hyn with my project so every users have their own site and database. My assumption is when user is register at main website, hyn will automatically create sub domain and database for that user. User will redirect to his sub domain to login. So, I have 2 user table at system database and also in tenant database. Now my problem is when user register at main website, website and host name is created but that user is not store in user table either in system database or tenant database. How can I solve my problem?How can I connect between user in system and user in tenant?Btw I'm student and this is my first multi tenant project.

You can find an example Tenant helper class in this article by Alex Elkins which discusses the multitenant implementation quite well IMO.
(article was apparently inspired from various sources, including an older series of articles where parts 1 and 5 talk about the concepts of the tenant helper class, written for an older version)
Additionally, this older article for an older version discusses a few concepts for accessing data between system/tenant, which may or may not be relevant to your needs (and might need updating).

I believe this case can be closed now.


Fix Readme example

Example given in the readme is missing an import
Given example
const { openBrowser, goto, write, click } = require('taiko'); // missing closeBrowser
(async () => {
try {
await openBrowser();
await goto("google.com");
await write("taiko test automation");
await click("Google Search");
} catch (e) {
console.error(e);
} finally {
closeBrowser();
}
})();
Error: closeBrowser is not defined.
Steps to reproduce
1.Copy the example to file index.js
2.run using node ./index.js
3. running with taiko ./index.js won't give the error.
Versions
node: v10.14.2
taiko: 0.6.0

fix done via #471.

Read me file has been rectified correctly.


Update version to 1.23.0

Description
Update version to 1.23.0
Documentation
Does this require changes to the WorkOS Docs? E.g. the API Reference or code snippets need updates.
[ ] Yes

If yes, link a related docs PR and add a docs maintainer as a reviewer. Their approval is required.

Codecov Report

Merging #172 (2ab4141) into main (f7b560a) will not change coverage.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@           Coverage Diff           @@
##             main     #172   +/-   ##
=======================================
  Coverage   87.28%   87.28%
=======================================
  Files          27       27
  Lines         944      944
=======================================
  Hits          824      824
  Misses        120      120

Impacted Files
Coverage Δ

workos/__about__.py
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Evaluation of BDD100K MOTS

When I run the script for MOTS as in TEST.md with
# convert to BDD100K format (bitmask)
python3 tools_bin/to_bdd100k.py --res outputs/${EXP_NAME}/inference/instances_predictions_init_0.40_obj_0.30.pkl --task seg_track --bdd-dir . --nproc 32
# evaluate
bash tools_bin/eval_bdd_submit.sh

The evaluation obtains 0 for all metrics, so probably the file it is referring to is empty. And I check the script of tools_bin/to_bdd100k.py, seems like it does not save any file in the preds2bdd100k function. Is it as expected and I am missing something, or there is another problem?

@nhlben Hi, take UNINEXT with ResNet-50 backbone as an example, first you need to run python3 tools_bin/grid_search_bdd.py --config_name eval-vid/video_joint_r50_eval_mot.yaml --exp_dir_name video_joint_r50 as shown in infer.sh to obtain instances_predictions_init_0.40_obj_0.30.pkl. Then you need to run commands in the TEST.md and please replace ${EXP_NAME} .  with detailed name such as video_joint_r50.


Fix g++ 7.0.1 warnings

The standard warnings of g++ 7.0.1 includes -Wimplicit-fallthrough.
The case of these warnings are fixed.
Enabling -Wshadow reveals further warnings that are fixed in this PR.

Thank you, and sorry for taking so long to merge!


[DO NOT MERGE] Experiment to if sbt "Updating" messages are helpful.

The purpose of this PR was to comment in https://github.com/sbt/sbt/pull/3122#issuecomment-300717960


korean letters '각, 강, ...' appear strangely

Issue Type: Bug
type 각, 강, etc.
It appears to be 가ㄱ,가ㅈ, etc.
-disclaimer
It's actually been encoded correctly but only appears to be strange.
VS Code version: Code - Insiders 1.55.0-insider (04770364fdc1bebeca9d1a257df2cacce06b35d6, 2021-03-05T15:40:18.961Z)
OS version: Linux x64 5.8.0-44-generic

System Info

Item
Value

CPUs
Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz (4 x 1535)

GPU Status
2d_canvas: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: disabled_offopengl: enabled_onprotected_video_decode: unavailable_offrasterization: disabled_softwareskia_renderer: enabled_onvideo_decode: disabled_softwarevulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
1, 1, 1

Memory (System)
7.68GB (0.91GB free)

Process Argv
--no-sandbox --unity-launch

Screen Reader
no

VM
67%

DESKTOP_SESSION
ubuntu

XDG_CURRENT_DESKTOP
Unity

XDG_SESSION_DESKTOP
ubuntu

XDG_SESSION_TYPE
x11

Extensions: none
A/B Experiments
vsliv695:30137379
vsins829:30139715
vsliv368:30146709
vsreu685:30147344
python383:30185418
pythonvspyt602:30263608
vspor879:30202332
vspor708:30202333
vspor363:30204092
vstry914:30244316
pythonvsdeb440:30224570
pythonvsded773:30223139
pythonvspyt875:30259475
pythonvsnew554:30265444
pythontb:30258533
wslfolderdoc:30268769
vsget980:30265949
vspre833cf:30267465

for the examples above I typed 'rkr, rkd' respectively.
It happens whenever I type rk(가) and add another consonant key.

@mrharrykim We believe this to be a problem with the default "editor.fontFamily" on Linux, Droid Sans Mono. Does this reproduce when installing e.g. Fira Code and configuring "editor.fontFamily": "Fira Code" ?

Yes. It persist. When I change the font family, the english letters does change but it has no effect on korean letters.

I am fairly confident that this was caused by us writing to the textarea (changing its value) during the compositionstart event. In other words, I think the fix for #138095 will also fix this issue. I would be very thankful if you could verify that the issue no longer reproduces using tomorrow's Insiders that should be released in 9-10 hrs.

\closedWith 31fff5074d286d845d6de9e1bbc09aafa266a062

/verified? Maybe this needs linux to repro. I couldn't repro on stable either.

I can repro the original issue (typing rkr and rkd result in two characters rather than one) on my Xubuntu VM using fcitx and the Hangul layout.

@rzhao271 Thank you for testing. After more testing from my side, it looks like this was never an issue with input per-se.
This is a display problem that is caused by the font family Droid Sans Fallback that is included in our Linux default. This issue was encountered before in https://github.com/microsoft/vscode/issues/72083

To verify, simply copy-paste the following in VS Code on Linux:
aa각aa

A single Korean glyph should be rendered:


[2012-01-10] RedirectorPage and Redirector rules conflict

created by: @stevevu (aragonne)
created at: 2012-01-10
original ticket: http://open.silverstripe.org/ticket/6832

Hi,
The below is an always reproducible bug when the standard Director Rule $URLSegment//$Action/$ID/$OtherID exists and used in conjunction with descendent pages of RedirectorPage:
An http request for an unpublished (or non-existent) descendant page of RedirectorPage will always take the user to the redirector page instead of the 404 error page.
For example, let's say we have the following site hierarchy:
rp (RedirectorPage, published)
    |- up (Page, unpublished)
    |- pp (Page, published)

A request for the 'up' should result in a 404 page being returned, but instead the 'rp' page is returned.
I think the sequence of action that might be causing this is:
I. page is requested
II. Does page exist?
A. Yes: return the requested  page (eg, the /rp/pp page)
B. No; check Director rules
i. do any Director Rules match?
a. yes (in this example, $URLSegment//$Action/$ID/$OtherID matches the /rp/up request, where $URLSegment = '/rp' and $Action = 'up').  SilverStripe searches in the RedirectorPage 'rp' for a method called 'up' but since the init() method is executed first, the request is automatically forwarded to the the page to redirect to
b. no, correct SilverStripe behavior?

I can verify this is still an issue in 3.1.x. I may have a potential solution, which works pretty well for me and passes unit tests:
	public function init() {
		parent::init();

		// Redirect this request, but only if no additional action (slug) has been provided.
		$action = $this->request->param('Action');
		if(empty($action) && $link = $this->redirectionLink()) {
			$this->redirect($link, 301);
			return;
		}
	}

I noticed that if you just ignore the redirect if there's an extra action/slug passed, it continues on to showing a 404 error page since naturally the specified action (e.g. asdf) will not be found. This may be pretty safe since, if overridden, it will function as expected. Do you anticipate any problems with this fix? If not, I can whip something up pretty quickly for review.
Should this be performed on the 3 branch or 3.1? Also, doesn't this bug belong in the CMS  repo silverstripe/silverstripe-cms since my fix applies to the file located under cms/code/model/RedirectorPage.php?

Low priority, but existing issue.

@tractorcow Thanks for reminding me of this issue since it continues to haunt us to this day, despite all my other PR's since this is a real-world bug for me that's out in the wild, I may want to tackle sooner rather than  later. What say you do the above proposition?

Should this be performed on the 3 branch or 3.1? Also, doesn't this bug belong in the CMS repo silverstripe/silverstripe-cms since my fix applies to the file located under cms/code/model/RedirectorPage.php?

Highlighted the two important questions here, but the approach is also important (see code).

Actually @tractorcow my particular issue is actually already in progress here: https://github.com/silverstripe/silverstripe-cms/pull/1198  It still looks to me, however, like this issue belongs in https://github.com/silverstripe/silverstripe-cms/issues

I think it's ok to leave it here, for now. As long as it's on one of the core modules it'll get tracked.
I would fix this on the 3 branch, in answer to your question. :)


message view: Recipient bar date stamp should show older years

When rendering the date stamp on the recipient bar, timerender.render_now() only includes the year when the difference in days between now and the message(s) is >= 365. It should probably check if the message(s) were in a previous year and include the year in the date stamp if true.
Discovered in #4802.

@zulipbot claim

@dhcrzf Thanks for reporting this!
For simplicity sake, I think we should always show the year when it's not the current year.  This would probably be mildly annoying/verbose in early January, but I don't see a non-confusing way to make it work so that the December/January situation is concise and the October/June situation is explicit without having some arbitrary cutoff number of days.


Progress should get sent to main window more frequently while fetching torrent metadata

It's currently less than once per second

?
The main window gets an update as soon as the torrent fires an infohash event, then again on ready, then it gets a progress message once a second while the torrent is downloading or seeding.

When adding a magnet link, on a bad network, it can sometimes take 10-30 seconds before ready fires. We want to keep showing updates, like the number of peers, etc. during that time,

@feross I think we do get wt-progress events before ready. Is this still broken for you?

This is working the way I expect now. Closing.


Hello world sample fails to build

First, the build instructions in the README.md are wrong.  I followed those suggested in issue#10 and got
Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.

 - configuration.output.path: The provided value "./app/js" is not an absolute path!

npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build"
npm ERR! node v7.2.0
npm ERR! npm  v3.10.9
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>build: `fable`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build script 'fable'.

I changed the output.path field to __dirname+"/app.js" which fixed the webpack error.
Once I made that change, it built ok and now runs

Hi @jcoder58, thanks a lot for reporting and fixing the issue. I'm currently upgrading the fable-electron samples to Fable 1.0 (see https://github.com/fable-compiler/fable-electron/issues/13#issuecomment-296846896) so some changes are expected in the upcoming days :smile:

Thanks, @alfonsogarciacaro, looking forward to it.  The other examples need to be done as well as they all use older versions of fable.
An example using electron-edge would also be a nice addition.   Building the gui using Fable with F#/.Net doing the heavy work would be a nice way to develop desktop apps.

FWIW I initially assumed I'd use electron-edge, but once I got into Fable I have never found it necessary.

@jcoder58 Another option is to spin up a backend server as a child process of your app and treat is basically as a SPA with an HTTP API underneath. This is what I'm doing so that I can program with .NET libraries/ecosystem instead of Node.
I'm not using this library, but it's a good reference for how this looks: https://github.com/eliquious/electronify-server
Basically:

Electron entry point spawns a child process calling your backend executable
ping the server in a loop until you detect it's initialized
Create BrowserWindow and make ajax requests from the frontend

Faced the same issue, changed path to  __dirname+"/app/js" and got it working

It took a while but we finally updated the sample to Fable 1.2 beta, could you give it a try? Please check README for instructions and note the name of the repo has changed to samples-electron.

For now there's just one single example, we'll bring back the other (and new) samples later :)

I am closing this issue. Feel free to reopen if you still can't build the project.


fatal error: sync: inconsistent mutex state

Currently running into this issue:
fatal error: sync: inconsistent mutex state

goroutine 68 [running, locked to thread]:
runtime.throw({0x2340c6?, 0x5891cc0bf2b4?})
        C:/Program Files/Go/src/runtime/panic.go:992 +0x76 fp=0xc0000cbb68 sp=0xc0000cbb38 pc=0xd6396
sync.throw({0x2340c6?, 0xfbc85?})
        C:/Program Files/Go/src/runtime/panic.go:978 +0x1e fp=0xc0000cbb88 sp=0xc0000cbb68 pc=0xfbafe
sync.(*Mutex).lockSlow(0x1f622265338)
        C:/Program Files/Go/src/sync/mutex.go:149 +0xe5 fp=0xc0000cbbd8 sp=0xc0000cbb88 pc=0x1147a5
sync.(*Mutex).Lock(...)
        C:/Program Files/Go/src/sync/mutex.go:81
github.com/saltosystems/winrt-go/windows/foundation.(*AsyncOperationCompletedHandler).addRef(0x20dc40?)
        C:/Users/DF/git/winrt-go/windows/foundation/asyncoperationcompletedhandler.go:76 +0x5b fp=0xc0000cbc28 sp=0xc0000cbbd8 pc=0x18683b
github.com/saltosystems/winrt-go/windows/foundation.NewAsyncOperationCompletedHandler(0xc0002a2a80, 0xc000328210)
        C:/Users/DF/git/winrt-go/windows/foundation/asyncoperationcompletedhandler.go:70 +0xd2 fp=0xc0000cbc58 sp=0xc0000cbc28 pc=0x1867b2
tinygo.org/x/bluetooth.awaitAsyncOperation(0x1f622448230?, {0x239f0e, 0x52})
        C:/Users/DF/git/go-bluetooth/adapter_windows.go:43 +0x10b fp=0xc0000cbce0 sp=0xc0000cbc58 pc=0x18c9cb
tinygo.org/x/bluetooth.DeviceCharacteristic.write({{0x0, 0xb0000000, 0x4514000, 0xf000c000}, 0x1f622448230, 0xa, 0xc00009e180}, {0xc000368f38, 0x4, 0x8}, ...)
        C:/Users/DF/git/go-bluetooth/gattc_windows.go:296 +0x133 fp=0xc0000cbd60 sp=0xc0000cbce0 pc=0x18eb93
tinygo.org/x/bluetooth.DeviceCharacteristic.Write({{0x0, 0xb0000000, 0x4514000, 0xf000c000}, 0x1f622448230, 0xa, 0xc00009e180}, {0xc000368f38?, 0x15e189?, 0x22b9ff?})
        C:/Users/DF/git/go-bluetooth/gattc_windows.go:261 +0x65 fp=0xc0000cbdb8 sp=0xc0000cbd60 pc=0x18e985
main.(*GenericDriver).SendCommand(0xc0000ba0e0, {0x22bc0c, 0x7}, {0xc000368f38, 0x4, 0x8})

By sending many commands per second at differing intervals
command
wait 100ms
command
wait 200ms

When I execute this for a few different timing patterns, after about 20-60 seconds I consistently hit this error.
Removing the locking from AsyncOperationCompletedHandler addRef and removeRef solves the problem.
Wondering if there is a better way to handle this without any locking (since I imagine it is not safe in this kind of asynchronous system callback).

I have a very simplistic fix workng while maintaining the reference counting. We simply change the refs field from uint64 to in64, and useatomic.AddInt64 to avoid the race/deadlock.
Simply allow the counter to go below zero so that we don't have to do anything complicated for such a simple check.
What do you think?
https://github.com/ansoni-san/winrt-go/commit/7da1c6b01f401b1f502cd788426d8075af7b0c26

Thanks @ansoni-san for the issue and the detailed report! As this would require us to take a deeper look it's gonna take more time. Will keep you posted.

Thanks for looking into this.
Just to clarify the above this is for write requests (write with response).
Thanks.

I think the problem here is that winrt_AsyncOperationCompletedHandler_Release and winrt_AsyncOperationCompletedHandler_AddRef are exported, so will inherently be called from outside of go-land.
Go may not be able to control when the calls back into that code happen causing the lock/unlocking to be inconsistent.
Possibly Mutex locking is dangerous/racey in these types of system callbacks.

The stack trace you provided does not involve any callbacks. Could you tell us the specs of the computer you are running this?
If I limit the memory available for Go, then I can consistently reproduce the issue.
I'm running this code with the GOMEMLIMIT="10KiB" environment variable:
func main() {
	g := ole.NewGUID(foundation.GUIDIAsyncOperation)
	for i := 0; i < 100_000; i++ {
		a := foundation.NewAsyncOperationCompletedHandler(g, func(instance *foundation.AsyncOperationCompletedHandler, asyncInfo *foundation.IAsyncOperation, asyncStatus foundation.AsyncStatus) {
		})
		defer a.Release()
	}
	println("This will fail before reaching this point!")
}

And it consistently fails with the exact same stack trace you provided:
fatal error: sync: inconsistent mutex state

goroutine 1 [running]:
runtime.throw({0x7ff6d704dbe8?, 0x33b00000001e?})
        C:/Program Files/Go/src/runtime/panic.go:1047 +0x65 fp=0xc000059e48 sp=0xc000059e18 pc=0x7ff6d6fb4905
sync.throw({0x7ff6d704dbe8?, 0x200000003?})
        C:/Program Files/Go/src/runtime/panic.go:1026 +0x1e fp=0xc000059e68 sp=0xc000059e48 pc=0x7ff6d6fd9cde
sync.(*Mutex).lockSlow(0x1377eb03418)
        C:/Program Files/Go/src/sync/mutex.go:158 +0xe5 fp=0xc000059eb8 sp=0xc000059e68 pc=0x7ff6d6fe4925
sync.(*Mutex).Lock(...)
        C:/Program Files/Go/src/sync/mutex.go:90
github.com/saltosystems/winrt-go/windows/foundation.(*AsyncOperationCompletedHandler).addRef(0x7ff6d70390c0?)
        C:/Users/jagoba/go/pkg/mod/github.com/saltosystems/winrt-go@v0.0.0-20230510070731-e096b9afa761/windows/foundation/asyncoperationcompletedhandler.go:76 +0x5b fp=0xc000059f08 sp=0xc000059eb8 pc=0x7ff6d700873b
github.com/saltosystems/winrt-go/windows/foundation.NewAsyncOperationCompletedHandler(0xc00014c020, 0x7ff6d7051878)
        C:/Users/jagoba/go/pkg/mod/github.com/saltosystems/winrt-go@v0.0.0-20230510070731-e096b9afa761/windows/foundation/asyncoperationcompletedhandler.go:70 +0xd1 fp=0xc000059f38 sp=0xc000059f08 pc=0x7ff6d70086b1
main.fails()
        C:/Users/jagoba/prueba-winrt/main.go:26 +0x5a fp=0xc000059f70 sp=0xc000059f38 pc=0x7ff6d700971a
main.main()
        C:/Users/jagoba/prueba-winrt/main.go:10 +0x1c fp=0xc000059f80 sp=0xc000059f70 pc=0x7ff6d70095fc
runtime.main()
        C:/Program Files/Go/src/runtime/proc.go:250 +0x1f7 fp=0xc000059fe0 sp=0xc000059f80 pc=0x7ff6d6fb7077
runtime.goexit()
        C:/Program Files/Go/src/runtime/asm_amd64.s:1598 +0x1 fp=0xc000059fe8 sp=0xc000059fe0 pc=0x7ff6d6fde261

Thanks for the details @jagobagascon.
If the defer is called within a loop, the amount of method to be called is chained in the stack. Thus if a big amount of defers are chained we reach to some Go limit then. This common for all applications and not for winrt-go so, would you mind giving more details about this?

Hi All,
Thanks for the responses!
The machine is an i7-9750H with 16GB of ram, with about 9GB free when this occurs. Go version is 1.18 with no memory limits set. The process is using less than 100Mib of memory when this occurs (it happens reliably after running for 30 seconds or so).
I am sure this must be to do with how the WinRT side jumps back into callbacks in real usage with a device. A simple mutex lock that engages at multiple points in the same asynchronous flow may be dangerous, like with interrupts, as you're passing a pointer to the completed handler to the syscall. The memory corruption would make sense in that case.
Have you tried testing with a real device, using *GattCharacteristic.WriteValueWithOptionAsync, and then creating a completion handler on it, repeating many times per second? 🤔

The issue can occur very fast, or sometimes take some
time. It takes a different amount of time every time for the same sequence of calls.
This seems to indicate that there is a timing issue that causes the memory corruption.

@ansoni-san I ran your code and it was failing for me 😅, even without the defers. So I started debugging and I'm quite sure I found the issue.
The WinRT delegates are being instantiated in the heap using malloc: https://github.com/saltosystems/winrt-go/blob/2c400ab3bdecc9b81db1ccff829d24c00f059d79/windows/foundation/asyncoperationcompletedhandler.go#L67-L69
But we are not explicitly initialising all the properties, which means that their initial value may contain garbage from the memory allocated. This can cause the refs and the Mutex itself to be initialised with random garbage data, which would explain the memory corruption and the inconsistent mutex state error.
After initialising these fields then the error stops happening.
inst.Mutex = sync.Mutex{}
inst.refs = 0

I added this PR with the change: https://github.com/saltosystems/winrt-go/pull/74
@ansoni-san if you could try this branch in your code before merging it would be awesome 😄 , that way we can make sure that  this is what's causing all your errors.

Aah yes! I did think of this before, but I was looking at whether the pointer to the zero value could be being shared (as Go doesn't guarantee their uniqueness, in fact I think it likes to reuse them). But I didn't think about the individual fields.
Thank you for looking into this 😁👍🏽
I will test this out this evening.

@jagobagascon Yes, this fixes it.
I didn't notice the malloc (my brain saw a pointer to the zero value instead of the sizeof)
Thanks for fixing this. We can drop our internal version now.

Thank you @ansoni-san for the detailed report follow-ups


(chore) Enable coverage in test script

We should also enable coveralls for this repo :)

Actually I'll just do this at the same time as setting up coveralls (#4).


adding leap

I'm fairly sure this isn't in your list, @KTSnowy , but it in the 8th track so it was familiar enough to attempt to implement in cobol.
You'll notice that the file in the src subdirectory is just enough to get the student started.
I noticed that if you have code before the paragraph used by cobolcheck, you can put your own tests, viz
       IDENTIFICATION DIVISION.
       PROGRAM-ID. LEAP.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-MODULUS-VALUES.
         02 WS-MOD400 PIC 999.
         02 WS-MOD100 PIC 999.
         02 WS-MOD004 PIC 999.
       01 WS-RESULT PIC 9.
       01 WS-YEAR PIC 9999.
       01 WS-TEMP PIC 9999.
       PROCEDURE DIVISION.
         DISPLAY "YEAR: " WITH NO ADVANCING.
         ACCEPT WS-YEAR.
         PERFORM LEAP.
         DISPLAY WS-RESULT.
         GOBACK.

       LEAP.
         DIVIDE WS-YEAR BY 400 GIVING WS-TEMP REMAINDER WS-MOD400.
         DIVIDE WS-YEAR BY 100 GIVING WS-TEMP REMAINDER WS-MOD100.
         DIVIDE WS-YEAR BY 4   GIVING WS-TEMP REMAINDER WS-MOD004.
         IF WS-MOD400 = 0 OR (WS-MOD100 <> 0 AND WS-MOD004 = 0)
            MOVE 1 TO WS-RESULT
         ELSE
            MOVE 0 TO WS-RESULT
         END-IF.
       LEAP-EXIT.
         EXIT.

If you accidentally leave that code in, it won't get executed by cobolcheck because cobolcheck starts at the paragraph named in the .CUT file.

The CI pipeline expects the file extension `.CBL? in uppercase:  https://github.com/exercism/cobol/blob/main/bin/test#L25
We can change that, but we need to keep it the same across all the exercises.

The CI pipeline expects the file extension .CBL in uppercase: https://github.com/exercism/cobol/blob/main/bin/test#L25
We can change that, but we need to keep it the same across all the exercises.

Is there a way to change it to .cob lowercase?

We could use .cob for all files, it would better than .CBL uppercase

@KTSnowy, @axtens: Sure, we can change that. Shall I create a PR for that?

So ... what what do you want me to do in the short term? uppercase CBL or lowercase cob or what?

And yes, if we're going over to lowercase .cob we'd best PR that change

So ... what what do you want me to do in the short term? uppercase CBL or lowercase cob or what?

If it's alright I think we should go with lowercase .cob

Wait the CI failed?

test.sh: Permission denied

That's weird.

I've removed the tabs as mentioned earlier. I've changed all the CBL to cob including in cobolcheck's TEST.

test.sh: Permission denied

This is likely due to the test.sh missing the executable bit. See https://www.jerriepelser.com/blog/execute-permissions-with-git/ on how to set it using git.

Right,test.sh and bin/fetch-cobolcheck need to be executable chmod +x.
Or for windows like @ErikSchierboom mentioned: git update-index --chmod=+x foo.sh

Checking leap practice exercise...
bin/test: line 31: /home/runner/work/cobol/cobol/exercises/practice/leap/test.sh: Permission denied
leap: proof solution did not pass the tests
Error: Process completed with exit code 1.

Execute bit on test.sh?

So I deleted my cobol subdirectory after building the leap task (not what i do usually). How do I reconnect to the leap branch on axtens/cobol so that I can, for example, change the exec bit on test.sh?

Okay, so we've finally got it working. I changed paths in the test.ps1 to backslashes. And I changed the x-bit on the shell scripts


Error while trying to stream a RTSP to Kinesis Video Stream using kvssink

Hello there folks,
I'm trying to stream an RTSP to the AWS Kinesis Video Streams, based on your service. I was able to set up the stream, watch it running well in VLC, and so on.
Then, I've started to follow the tutorial on https://github.com/aws-samples/amazon-kinesis-video-streams-demos/tree/master/producer-cpp/docker-rtsp, and after running the kvs_gstreamer_sample, I got an error in docker:
0:00:02.597636000  1035 0x55cfcc491320 INFO        GST_ERROR_SYSTEM gstelement.c:2145:gst_element_message_full_with_details:<source> posting message: Internal data stream error.
Error received from element source: Internal data stream error.
Debugging information: gstrtspsrc.c(5653): gst_rtspsrc_loop (): /GstPipeline:rtsp-kinesis-pipeline/GstRTSPSrc:source:
streaming stopped, reason not-negotiated (-4)

When looking at the container log running rtsp-simple-server, I see the following: it can be found at https://gist.github.com/vbbandeira/2ba03f7b5aa48b972864288554753f42
Note: When I try to make the process to AWS passing a remote rtsp the error above doesn't happen, it appears only when I pass the rtsp aler9
Can you guys please lemme know what is going on there?
Thanks!

I finally got the change to try AWS Kinesis and stream from rtsp-simple-server to Kinesis, and in my case it worked flawlessly. Here are the steps i followed:

in one window, launch rtsp-simple-server
docker run --rm -it --network=host aler9/rtsp-simple-server

in another window, publish a file to rtsp-simple-server
ffmpeg -re -stream_loop -1 -i sample_1080p_h264.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream

Log into AWS, click the user menu, "My Security Credentials", "Access keys", "Create access key", copy key id and access key

launch kvs_gstreamer_sample with the key ID and access key:
git clone https://github.com/aws-samples/amazon-kinesis-video-streams-demos
cd amazon-kinesis-video-streams-demos/producer-cpp/docker-rtsp
docker build -t rtspdockertest .
docker run -it --network=host rtspdockertest:latest /bin/bash
AWS_ACCESS_KEY_ID=mykey AWS_SECRET_ACCESS_KEY=myaccess ./kvs_gstreamer_sample teststream rtsp://localhost:8554/mystream

Just replicate the above and it will work.


Modified audit/item.py to simplify and use our status list - changed …

don't merge

Coverage decreased (-2.7%) to 48.29% when pulling c7897705ed139911508a0d1eab03f38514cc89e8 on item_audit_update into df24351dd761515b07ec659e0697ffeb2d4c6eee on master.

Coverage increased (+0.4%) to 51.481% when pulling be05208fae0cbf8cadb8e8976c128e3687e119d5 on item_audit_update into df24351dd761515b07ec659e0697ffeb2d4c6eee on master.

Coverage increased (+0.1%) to 51.356% when pulling 8c49b787b6316b888ec4717311b74c7e9acb4f0e on item_audit_update into 419cc890ae151b8cae617b10ae7eb2a25428205a on master.

Coverage decreased (-0.8%) to 50.478% when pulling f91b11c18d443490d910a99dcc1b9a9b89768e85 on item_audit_update into 419cc890ae151b8cae617b10ae7eb2a25428205a on master.

Coverage decreased (-0.9%) to 50.361% when pulling 942071b1871c145f406b23f9881427cc5e2a6e40 on item_audit_update into 419cc890ae151b8cae617b10ae7eb2a25428205a on master.


Loading hosts sources in a git submodule

Hi,
First off, lots of thanks to your project and all data providers! I have been a long time user and have recently started to contribute back.
 However, when users (who) clone your repo (even a shallow clone), they receive the python scripts among other things as well as the hosts sources in the data and alternate folders. As such, I, for instance, want to keep (only) the code in the scripts up to date with this repo and hence run git pull every few days. However, running updateHostsFile.py locally for me introduces new changes which often cause conflicts when I git pull again. Of course, this can be solved by making a fresh clone of the repo (via git reset for instance); but this seems like a hacky way to do it.
My point being that, I think it will be a good addition to separate the hosts sources from the actual python engine (script) which does the actual work. A good way to tackle this can be to use git submodules for this purpose. So, to spell it out, (as I have it in my mind) the main python scripts, tests, etc could be in one repo and the hosts sources (content) will be another repo added to the former as a git submodule. This can also give a solution to #272 .
I am willing to write the code for a blueprint / final version of this idea. Please let me know what you think of the idea. Also, on another note, do you have a communication platform (IRC / Telegram / Riot)? I wanted to ask this there first, but couldn't find any.

Hi @paramjitrohits, thanks for your idea.
An alternate view is, it's the timely sources which are most valuable.
Think about it: a source of malware is discovered, and a diligent curator updates their sources.  It's conceivable that this repo, which aggregates many well-curated, is often much faster than antivirus vendors at responding to emerging threats.
Note that git submodules come with serious downsides.  I'm not convinced submodules would help.


Where exactly are these snippets installed? :)

I'd like to edit some of them, but I can't seem to find them when using PackageResourceViewer. Any help would be much appreciated.

Mine are available at ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/User/react-native-snippets, let me know if they're not there on your machine!

@Shrugs I'm on Windows, but your answer led me down the right path - pun intended! :)
For any other Windows users who might be wondering what the answer is...
"C:\Users%USERNAME%\AppData\Roaming\Sublime Text 3\Installed Packages\react-native-snippets.sublime-package"
I was originally checking "C:\Users%USERNAME%\AppData\Roaming\Sublime Text 3\Packages\User" ...to no avail. But all good now. Thanks for your hard work - much appreciated! :)

@shrugs
There is no such directory on Ubuntu 16.04.4 LTS xenial:

bash: cd: /home/user/Library/Application Support/: No such file or directory

There is nothing in ~/.config/sublime-text-3/Packages either.
Where is it installed?
I want to change default placeholder for styles. to css.:
from: <View style={styles.}></View>
to: <View style={css.}></View>

Downvoting my macOS specific comment for not mentioning Ubuntu isn't very nice.
I would recommend reading the docs for information on your specific system.
https://www.sublimetext.com/docs/3/packages.html
Regardless, this will not be a problem specific to react-native-snippets, as it would affect any package you install through package control.


Improve the API for fields that cannot be decrypted anymore

Hi,
Currently the library has two issues when it comes to replaying events that cannot be decrypted anymore due to a deleted key:

The default value cannot be changed. This is especially problematic for us, as we are heavily relying on not-null-constraints on our events. If a field suddenly becomes null, the event cannot be deserialized anymore. It should be possible to provide some kind of function for the default-values.
It doesn't seem to be possible for the event handler to recognize such events. It would be very helpful, it we could at least set some kind of flag within the event to check whether the event can no longer be fully decrypted. Maybe we could add a specific annotation to a boolean field, which is not serialized, but rather filled during the deserialization/decryption?

I like this suggestion. It might take a while for us to get around to it, however.


Cannot Pull Sensu Install

Hi,
Rebuilding a Sensu server and cannot pull Sensu from either apt-get or from instructions in online Sensu docs (http://sensuapp.org/docs/0.16/packages), I get access is denied.  Several days ago, I successfully pulled from apt-get from Ubuntu CLI.  Can someone shed some light on  this issue?  If beta just closed, when can we expect bits will be avail?
Also, can you point me to the new links for agent, server and dashboard?
Thanks,

I also tried signing up for Enterprise plan, just to go through the license agreement and to end up "we will contract you" early last week and have heard nothing.  Would appreciate some help on all of this or a referral to a source that can answer these questions if I am in the wrong queue.
Thanks,

@millernp Support for the Sensu Enterprise beta was through the helpdesk. The Sensu Core repositories do not use authentication, only the enterprise repositories do. The Sensu installation guide has seen some big improvements http://sensuapp.org/docs/latest/install-repositories If you have questions about Sensu Enterprise, please feel free to create a ticket at https://helpdesk.sensuapp.com


Provide a way call function when chart is drawn and all data is valid

A lot of things internally are lazy and calculated on demand. This helps improve performance a lot, but makes API a bit harder to use, because outside of the library you don't know whether some value/data/property is valid or not.
I'd suggest to add method something like "subscribeOnDrawn" (or any other better name) and call the passed function every time the chart is drawn. It allows people to getting values from the library exactly the end-user will see (like coordinates or range) and don't affect performance a lot, because all caches will be valid and we don't need to recalculate anything.
It's something like requestAnimationFrame in the browser's API, but with opposite meaning. In requestAnimationFrame you should modify DOM and shouldn't read to avoid performance issues (like "force reflow"). Right after animation frame is finished, you can read everything you want almost without any overhead, because everything is valid now.
Here we have pretty the same - an user could modify anything and we'll accumulate all changes until paint time to avoid exceeded calculations, then validate everything at paint time and after an user can get all that values without any hacks like "setTimeout right after requestAnimationFrame" or similar.
/cc @subzey

Potentially, we can drop almost all subscription in case of providing getters, so an user might subscribe on this event and get all values it needs.

It really depends on a use case.
h2. "I need to be notified every time something changes"
If a user (library user, not the end-user) would like to always update some values outside the library, then they would subscribe to an event and listen to all the emitted events.
In this case the event or callback would be perfect.
h2. "I just want to read the values safely"
If a user want to await from "right now" until "it's settled", then subscribing to some event would be bothersome. And knowing that the state is already "clean" right now would require another property
In this case I'd prefer a Promise:
await lib.whenItsSafeToReadValues(); // Promise<void>

Think about a Node.js Streams: If you need to know is it readable right now you get stream.readable /* boolean*/. If it's not you're waiting for the readable event. It's bothersome. No wonder AsyncIterator iterface was eventually bolted to the readable streams.

In fact, even the first scenario, "I need to be notified every time something changes" fits into AsyncIterable.
for await (const _ of lib.settled) {
  // Update some stuff
}

I.e., if you need a constant flow of events, use it as AsyncIterable. If you need only the cosest event, use it as ordinary Promise<unknown>.


Bump dcos-net

High-level description
Bump dcos-net
Corresponding DC/OS tickets (obligatory)
These DC/OS JIRA ticket(s) must be updated (ideally closed) in the moment this PR lands:

DCOS_OSS-3539 Running tasks don't get .dcos fqdns

Related tickets (optional)
Other tickets related to this change:
Checklist for all PRs

[x] Added a comprehensible changelog entry to CHANGES.md or explain why this is not a user-facing change: it's a bug fix
[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain here:
[x] Read the DC/OS contributing guidelines
[x] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[x] Change log from the last version integrated (this should be a link to commits for easy verification and review): example
[x] Test Results: [link to CI job test results for component]
[x] Code Coverage (if available): [link to code coverage report]

https://github.com/dcos/dcos-net/compare/70b142acc2e380506650405fd761796d416a3ad8...4a73d5f29030aafb5af4ef2beca1ccc802753f43
https://circleci.com/gh/dcos/dcos-net/482
https://codecov.io/gh/dcos/dcos-net/pull/56

PLEASE FILL IN THE TEMPLATE ABOVE / DO NOT REMOVE ANY SECTIONS ABOVE THIS LINE
Instructions and review process
What is the review process and when will my changes land?
All PRs require 2 approvals using GitHub's pull request reviews.
Reviewers should be:

Developers who understand the code being modified.
Developers responsible for code that interacts with or depends on the code being modified.

It is best to proactively ask for 2 reviews by @mentioning the candidate reviewers in the PR comments area. The responsibility is on the developer submitting the PR to follow-up with reviewers and make sure a PR is reviewed in a timely manner. Once a PR has 2 ship-it's, no red reviews, and all tests are green it will be included in the next train.

This repo has @mesosphere-mergebot integration. You can interact with the following commands.
@mesosphere-mergebot bump-ee
@mesosphere-mergebot merge-it
@mesosphere-mergebot label [Request For Comment |Ready For Review |Ship It |Holding |Work In Progress]
@mesosphere-mergebot override-status

PR creators can apply one of  [Ready For Review |Work In Progress]. Owners can apply any label.

@mesosphere-mergebot bump-ee

@mesosphere-mergebot label [Ready For Review]


Manual Save Broken

Describe the bug
When doing a manual save the game stops working. We receive the following error in the debugger "Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'layers')". Identified the potential culprit to be the variable "save.screen.layers[0]" in the "save-slot-ui.vue" file on line 77 and 78. It should likely be "save.screens.layers[0]"
To Reproduce
Steps to reproduce the behavior:

In code have a line that uses save "Manual Save 1"
Run that line.

Expected behavior
I'd expect the manual save dialog to appear.
Screenshots
No screenshots available
Browser
Running this on latest version of Chrome.

Ok, explored a bit more (tried to fix it myself). Appears that sometimes save.screens.layers[0] is need other times its save.screen.layers[0].

figured it out, it was old saves that were showing up as save.screen.layers[0] instead of save.screens.layers[0]. I removed them and now only see save.screens.layers[0]. I'll see if I can create a PR.

fixed by #236

I just made a release with the change, should be 3.9.8


Modify assume role operator

Motivation
This chart has not volumes option. I need volumes and volumeMounts for kube-aws-iam-controller.

Add README.me
Modified deployment.yaml

@cw-sakamoto

Modified deployment.yaml

Please give me a reason.

👍


docs: Fix issues not linking to cyberpandas

On the readthedocs Changelog page, issues were linked to Dask's Github page instead of cyberpandas'.

Thanks.


Collect @v8js tweets

If you're interested in a PR. Here are the places you'd need to change:
https://github.com/ebidel/devwebfeed/search?utf8=✓&q=chromiumdev&type=


Buttongroup: last button/dropdown loses rounding if using v-b-tooltip

Describe the bug
When BButton/BDropdown is placed in BButtonGroup, AND it is the last one in the buttongroup AND it has v-b-tooltip, right-side rounding of the element disappears.
<BButtonGroup class="m-3">
  <BButton title="tooltip"> just title </BButton>
</BButtonGroup>

<BButtonGroup class="m-3">
  <BButton v-b-tooltip="'tooltip'"> bootstrap tooltip </BButton>
</BButtonGroup>

bootstrap": "^5.3.3",
bootstrap-vue-next": "^0.18.1",
vue: "^3.4.21",
Reproduction
https://stackblitz.com/edit/github-z2mgrs?file=src%2FApp.vue
Used Package Manager
npm
Validations

[X] Have tested with the latest version. This is still alpha version and sometime things change rapidly.
[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

@xvaara Because tooltips are rendered next to the element, how should we handle this? It hardly seems appropriate to make some hacky css to make it so tooltips are ignored my groups.
Should we make tooltips render on the body element, but appeared next to the button?
Should we make it so people using it in the way have to make the tooltip teleport to body?

hi @tapsavo, I was also wrestling with this issue until I found your (perfectly) described bug report.
I use the following workaround:
<BButtonGroup class="m-3">
  <BButton>
    bootstrap tooltip workaround
  </BButton>
</BButtonGroup>

@xvaara Because tooltips are rendered next to the element, how should we handle this? It hardly seems appropriate to make some hacky css to make it so tooltips are ignored my groups.
Should we make tooltips render on the body element, but appeared next to the button?
Should we make it so people using it in the way have to make the tooltip teleport to body?

When they are rendered next to the element you can use classes. But I imagine we are going to get a lot of these questions in the future. So maybe teleport by default or if inside a group? Or direct users to use components :)


Tech Docs on qb Classes & How to use them

The class structure for representing columns/qb-components.

So we need to show:

how these classes can be used to build a cube

using the from_data methods

how you can add additional RDF to individual components
performing validation

Task completed. Documentation on how to use these classes can be found here.


Scholar creates empty log file

See https://github.com/scholarly-python-package/scholarly/discussions/280

Hi!
And thanks for the great lib. Regarding the linked issues, I agree that a library shouldn't claim control of the user's filesystem. This not only can be inconvenient/annoying, but could also cause real trouble e.g. when running on locations with restricted permissions. I think logging files should be opt-in, and the user should be able to specify the location. This can be achieved as follows:

if no location is given, don't log (default). If a location is explicitly given, try to log there, and warn/crash if there are any issues with that location.

Interestingly, the analogous Python library for the Scopus database had this exact problem. I just made a PR there with a similar opt-in rationale, you can find it here: https://github.com/ElsevierDev/elsapy/pull/65). If this approach is welcome I can propose a similar PR here.
In the meantime, here is a quick workaround:

Locate the `filename="scholar.log" line at the _proxy_generator.py and _navigator.py files.

Remove it :)

That seems to work just fine. As for real workarounds, I think the lib could provide a function like this (untested):
def log_to_file(abspath, logger_names=None):
    """
    """
    logging.basicConfig(filename=abspath)

The user could then call scholarly.log_to_file("some/path.log"). The only potential issue I see with this is that maybe once a logger is created, basisConfig won't alter it? Anyone knows about this?
Cheers,
Andres

Is this still an issue? AFAIK, scholarly by itself does not create a log file, but I have seen geckodriver does, and the latter is outside of the scope.

I don't think it is, just tested it with scholarly==1.4.5 and no file was generated.
Furthermore, I don't know about geckodriver but the lines that I referred to in my previous comment can't be found anymore in master, so I assume this was specifically fixed.
Feel free to close!

Great, thanks for confirming. Closing the issue.


New features

Shadows resolution:
0048B1B6
0048B1BB
0048D891
0048D89B
0048D8A5
0048D8AF
0048D8B9
0048D8C3
0048D8CD
0048D8D7
FPS fluctation fix:
005F15E2
E8 69 9C E2 FF => E8 A9 0D E1 FF
FPS Unlock:
0041992D
E8 8E 19 00 00 => E8 BA 1C 00 00
Disabling FPS limiter is better way to avoid FPS fluctation.
Should be used only with Vsync 60Hz, or external FPS limiter to 60 FPS, since game speed designed for 60 FPS.
Windows 10 white border fix:
00403042
68 00 03 00 00 => 68 00 00 00 00

Can FPS fluctuation be really fixed? I'd be grateful eternally.

@killer-m Thank you for the patches! I will be working on integrating them.
Here are some results of my testing (I will be updating this message):

FPS fluctation fix:
005F15E2
E8 69 9C E2 FF => E8 A9 0D E1 FF

While this does fix the fluctuation, it limits in-game framerate to 30. It also seems to make game's clock tick two times less frequently. I will try this in conjunction with your FPS unlock patch…

This works, but also breaks rendering in some scenes (e.g. cafe in the mall). The shadow maps are not present in texture dump, so they're probably freed along the way.

This should fix broken render in some areas.

Additional for shadows resolution:

This fixes the bug indeed.
Have you verified your FPS unlock and fluctuation fix patches with a low framerate? They seem to break the game when framerate is under 60.

Have you verified your FPS unlock and fluctuation fix patches with a low framerate? They seem to break the game when framerate is under 60.

It won't work properly with a low FPS. Minimal FPS must be at least 50+.

It won't work properly with a low FPS. Minimal FPS must be at least 50+.

That's the problem with this patch. Not every user will be able to maintain high FPS.

In that case what kind of specs, rig one need to achieve stable 60fps gameplay?

For me, it fully unlock FPS - http://funkyimg.com/i/2eQrS.jpg

There are certain places where the engine locks the game to 30fps, like nightmare hospital, the town, outdoor portions of the park, anywhere with fog. How many fps you get in those places?

There are certain places where the engine locks the game to 30fps, like nightmare hospital, the town, outdoor portions of the park, anywhere with fog. How many fps you get in those places? Or do you get any slow motions?

FPS very depend on render resolution, lower resolution - higher FPS.
I get solid 60 FPS and no slow motions.
2048x2048:
http://funkyimg.com/i/2eVrC.jpg
http://funkyimg.com/i/2eVrD.jpg
http://funkyimg.com/i/2eVrE.jpg
4096x4096:
http://funkyimg.com/i/2eVrJ.jpg
http://funkyimg.com/i/2eVrK.jpg
http://funkyimg.com/i/2eVrL.jpg


Dermatology Dataset

Is there code to replicate the dermatology dataset?

Hey @rahulv54, do you mean the CXR chest X-ray dataset?
You can find a description of the data here:

The spurious labels are not publicly available, we reached out to the authors of "Hidden stratification causes clinically
meaningful failures in machine learning for medical imaging", in particular Lauren Oakden-Rayner (https://laurenoakdenrayner.com/) to get these labels.

Thank you.

Oh yes, thank you.


Removed log constants

They should be defined in azcore/log, not here.
Added comments indicating which parts of log are public surface area.
Updated build constraints.

[ ] The purpose of this PR is explained in this or a referenced issue.
[ ] The PR does not update generated files.

These files are managed by the codegen framework at Azure/autorest.go.

[ ] Tests are included and/or updated for code changes.
[ ] Updates to CHANGELOG.md are included.
[ ] MIT license headers are included in each file.

Fixes https://github.com/Azure/azure-sdk-for-go/issues/17450


Add parallelization over multiple devices

Currently the code runs on one device, which doesn't allow scaling to larger computational network such as TPU pods.
Parallelizing over local sampler should be relatively simple, since that does not required communication between devices. Note that if single evaluation of the likelihood demands more RAM than what's available on the chips (TPUv4 has 8GB RAM per core, gradient of functions may cause problem), the computation may need to be shard to multiple device, but that should be taken care separately.
Evaluation of global sampler should be similar to local sampler.
Training the normalizing flow requires collecting data from multiple devices and updating weights in a somewhat sync version. Have a look of pmap to see how to deal with that https://jax.readthedocs.io/en/latest/jax-101/06-parallelism.html

Also see this https://jax.readthedocs.io/en/latest/jax-101/08-pjit.html

@kazewong Is there any though into parallelization over multi-node CPU resources? Such as through MPI?

Woops, I see you have an issue for that already https://github.com/kazewong/flowMC/issues/61

We are facing a similar issue for population inference of BBH on GWKokab for more than 100 events. The cluster resources get exhausted for a large number of events and lesser events are not giving me converging chains with heavy models. This feature is much needed and will alleviate the scalability of population inference of compact binaries using GWs data.


Worksheet name parsing from assay to CommonAPI rowMajor mistake

I translated one of the existing Swate templates to the new preview format and used the new common api row major format with it.
In Assay the worksheet name was correct, but after parsing to RowWiseSheet it was wrong as 1SPL01_plants was changed to 1SPL01.
The problem lies in https://github.com/nfdi4plants/ISADotNet/blob/AssayFileIO/src/ISADotnet/JsonIO/AssayCommonAPI.fs#L98 .
I am currently working on two different versions of a fix.

Hey, good catch. That's a really unnecessary mistake on my side.
Grouping should just be done by the protocol name.
Something like:
|> List.groupBy (fun x -> x.ExecutesProtocol. Value.Name. Value)


Problem with escaping quotes in style attributes

I'm attempting to read a local HTML file with Puppeteer, perform some operations on it, and then output the new version. Everything's working fine, except quotes are being handled strangely in style attributes. Specifically, single quotes are converted to double quotes (throughout the document, which is fine), but in the style attributes existing double quotes are then escaped as ".
Steps to reproduce
Tell us about your environment:

Puppeteer version: 1.13.0
Platform / OS version: Mac OSX Mojave
URLs (if applicable): N/A
Node.js version: 11.11.0

What steps will reproduce the problem?
async function fixHTML(filePath) {

  const browser = await puppeteer.launch({
    'args': [ '--disable-web-security' ]
  });

  const page = await browser.newPage();
  const contentHtml = fs.readFileSync(filePath, {encoding: 'utf8'});
  await page.setContent(contentHtml);

  const result = await page.evaluate(async threshold => {
  . . .
  }

  fixedHTML = await page.content();
  fs.writeFileSync(`${fileDir}/${fileBase}.fixed.html`, fixedHTML, {encoding: 'utf8'});
}

What is the expected result?
Style attributes in my original HTML look like this:
style='font-size:11.0pt;font-family:"Arial",sans-serif;color:#D99594'
What happens instead?
But in my output they're rendered as:
style="font-size:11.0pt;font-family:"Arial",sans-serif;color:#D99594"
Suggestions? Thank you!

This behavior seems valid. If you add style='font-size:11.0pt;font-family:"Arial",sans-serif;color:#D99594' to an element in the DevTools tree and then copy outerHTML via menu, you wil gets "Arial" as well.

@sethwilsonUS in fact, that's what WebPlatform's element.outerHTML returns with such a style. Where do you get this HTML from?


Interruptions in sound if I play two files at the same time on android 6.0

If I play files one by one there are no problems. But I need play it together.
On mac os and android 7.0 and higher all ok. But on android < 7.0 it looks like player wheezes. I know library that I use for playback audio based on oto. https://github.com/faiface/beep.
code Example:
https://gist.github.com/marinat/f1f14b61b8cdb070c0d1be14f06e93bd
Please, tell me, where to look for the problem?

What was the problem?  Explaining it may help future users, or help improve documentation in future.

CC @faiface

Duplicate https://github.com/faiface/beep/issues/61, sorry


added support for generateCookBook api

We prefer small, well tested pull requests.
Please refer to Contributing to Spinnaker.
When filling out a pull request, please consider the following:

Follow the commit message conventions found here.
Provide a descriptive summary for your changes.
If it fixes a bug or resolves a feature request, be sure to link to that issue.
Add inline code comments to changes that might not be obvious.
Squash your commits as you keep adding changes.
Add a comment to @spinnaker/reviewers for review if your issue has been outstanding for more than 3 days.

Note that we are unlikely to accept pull requests that add features without prior discussion. The best way to propose a feature is to open an issue first and discuss your ideas there before implementing them.
https://devopsmx.atlassian.net/browse/OP-17941

This PR  triggered this build in this execution, please wait for it  and child pipelines to succeed before merging:  https://isd.prod.opsmx.net/deck/#/applications/gcp-gitprtrigger/executions/details/01GESJ5PPVYV8B1EGFK3R8MKC0

This PR  triggered this build in this execution, please merge to master only if this succeeds:  https://isd.prod.opsmx.net/deck/#/applications/gcp-gitprtrigger/executions/details/01GESJ6F6926BYVE3ABG5D0NDY

SUCCESSFUL RunTests RESULT: Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 Reviewers ,  this PR did not cause the failures in  https://jenkins.opsmx.net:8181/jenkins/job/Dev-API-Automation-Test-GitPR/551/artifact/test-output/extentreport.html


Pass time of current time step as keyword argument to solver

Also add example of TDVP with time dependent Hamiltonian.

@emstoudenmire @b-kloss this is pretty simple, the main thing to consider is the interface.
It keeps the same argument interface for a custom solver but passes a new keyword argument time_step_start:
function solver(H, time_step, psi; time_step_start)
  # Custom solver code here
end

time_step_start means that it is the time of the start of the current time step, open to suggestions about the name.
If you don't want to use the new keyword argument (for time independent Hamiltonians), you would need to define your solver like this:
function solver(H, time_step, psi; kwargs...)
  # Custom solver code here
end

There may be other cases you want to make use of the time to customize the arguments of the solver beyond just time dependent Hamiltonians (say you want to adjust the solver's tolerance, or even which solver you want to use).
Additionally, I expect there will be more and more keyword arguments we will want to pass to the solver since the solver in general will want information about the TDVP run. I think in general custom solvers will make use of some keyword arguments and not others, so it is not such an imposition to require adding kwargs... in the solver definition.

Glad to see this progressing. I'm hoping to work on the port of the basis expansion code soon.
I'm missing some context about what time_step_start is for. What's an example of when that is needed? What does it do?

I imagine the use-case is a time-dependent Hamiltonian, where one makes the approximation that the Hamiltonian is time-independent for a single time-step of the propagator and updates the Hamiltonian before every timestep (but only to the past and present of the current orthogonality center (i.e. sites to the left of (and including) the orthogonality center, in a forward sweep). The advantage of updating the Hamiltonian like this instead of updating it everywhere at once is that the overhead of recomputing the Hamiltonian environment is avoided.
Maybe tstart is sufficient as keyword?

The application is for time-dependent Hamiltonians, where we put the time dependence in the solver and just pass the time independent part of the Hamiltonian.
Schematically it would be like this:
# Time dependent Hamiltonian
# H(t) = cos(omega * t) * H0

# Frequency
omega = 0.5

function solver(H0, time_step, psi; time_step_start)
  # Hamiltonian at the current time
  Ht = cos(omega * time_step_start) * H0

  # Apply the Hamiltonian at the current time to the current state.
  # We could use an ODE solver here, which would integrate from
  # `time_step_start` to `time_step_start + time_step`.
  return exponentiate(Ht, -im * time_step, psi)
end

# Time independent part of the Hamiltonian
H0 = heisenberg(n)
t = 10.0
tdvp(solver, H0, t; cutoff=1e-8)

There are a few advantages of this:

It enables a simple and flexible interface for dealing with time dependent Hamiltonians through the solver, instead of explicitly having to pass the time dependent Hamiltonian to tdvp. We could add support for directly passing time dependent Hamiltonians to tdvp, but doing it through the solver is minimally intrusive to the tdvp code itself and allows for more flexibility.
This approach makes it easy to try out other integrators like differential equation solvers that can account for the time dependence of the Hamiltonian during the TDVP time step.
I'm not sure if I totally follow the example described by @b-kloss, but it sounds like this could add flexibility for other ways of running TDVP.

The idea behind the name time_step_start was to be specific that the time passed is the start of the current time step. I thought tstart or time_start may get confused with the global starting time of TDVP, which could be another values that is passed. For example, if you are restarting TDVP from a certain time, we may have a time_start that tracks the initial time, and you might want to know how long it has been since the initial time, which would be time_step_start - time_start.

Thanks for explaining & makes sense.
Would it not be simpler to think of it as the current time (like the time evolved so far)? Then it could be called just t or a more explanatory name like current_time (or t_so_far or t_evolved). Thinking of it that way would also further disambiguate it from the starting time at the very beginning of the evolution.

In the latest I went with current_time, I think that one is clearest.
In the context of the overall TDVP scheme it is the current time of the evolution, but in the context of the solver it is the starting time of the particular time step you are performing. I was trying to come up with a name that made sense in the context of the solver instead of being too biased about where the time comes from, but I think those will essentially always be the same.
I also fixed a bug where I wasn't properly accounting for the times of the forward and backward evolution or the sub-time steps when computing the current_time that gets passed to the solver.


Add a basic dependabot config

This should help keep github actions versions up to date, and should still open PRs to bump dependencies when there are security risks detected

We're currently processing your upload.  This comment will be updated when the results are available.


updates google apiclient to stable version

upgrades google/cloud to v0.4 and google/client to ^2.0

Coverage decreased (-0.02%) to 98.041% when pulling 61315131d48de0464f86690e37a14733fddb7444 on upgrade-gcloud into 44deb78443d2775e0bcbeadd0c032d98b1fc6c32 on master.

LGTM

Looks like we need this for the test builds, merging first.


Renamed interfaces revert back to old name

Describe the issue
When you add a new data format any previously renamed formats will revert back to their default name
Steps to Reproduce
https://github.com/NeurodataWithoutBorders/nwb-guide/assets/844306/381de37d-ffb5-4d98-b26e-812acafc8911
See the name of the first format in this video. It is renamed to have a 1 at the end and then reverts to its initial name when a new format is added.
Operating System
osx
GUIDE Version
main branch
Code of Conduct
Yes
Did you confirm this issue was not already reported?
Yes

To confirm, the desired behavior is to maintain any custom changes to the keys and only append _{index} to the name of a new selection if one of the current keys shares the same default name?

Yes, exactly


better handling on push errors

More error handling from #1023.

This was implemented in #1038. Going to close and re-apply against the release-1.1 branch.


Release New Version -- 0.2.0

[ ] Make list of changes (and indicate if they are backwards incompatible or not)

[ ] setup no longer receives container as an argument.  It is available as this.container within the setup callback, and the test function itself.
[ ] this.append() is deprecated (but still functional), in favor of this.render().

[x] Update ember-cli-qunit to use rwjblue/ember-qunit-builds#0.2.0 (when its published)
[x] Update ember-cli blueprints

this seems no longer relevant, closing due to age


Change Material Base Color

Hello all.
I want to change material with button as you see in the pictures I added buttons Color1 and Color2. How do I know which material it changing ? What do I have to add to codes for specific material which I want to change ? For example I want to change "profiller" material. (you can see in the pictures)
Thank you.

This is not very ergonomic right now; there is an array of materials which is populated in a depth-first search of the glTF. Based on this, you can select the material you want by index and change it. It would be nicer to be able to also select a material by name. Shall we turn this issue into that feature request?

Hey Elalish. Thank you for answer. Yes It would be very nice select a material by name so we can turn this issue into request. Actually it is not an issue :)

@sercandemirtas did you found a way to do this? I am looking to achieve the same


Eks cluster upgrade

Upgraded eks cluster from 1.17 to 1.20

thanks for your contribution @bil9000 - we need to coordinate this upgrade with a shift to kubernetes 1.20 that we're in the middle of, expecting to get this merged with the 1.5 release in the next couple days. we appreciate your involvement in the kubefirst community!

closes #15

thanks @johndietz I'm excited to help out however i can!  woohoo! :)


[Feature idea] "Create Shortcut on Desktop" button for profiles

The shortcut would point at the tool exe with an argument like -p "My Profile Name", which in turn the tool exe would interpret to just immediately launch ME2 with the profile settings instead of opening the UI.

Feature Completed


Add Server support

Excited to have this in a shareable state and very interested in hearing your feedback :)
I created separate commits for refactorings that were required for the new code that then gets added "append-only" in one larger commit to make it easier to gauge the impact (rather non-impact) on the existing code.
One thing that is not perfect yet is that the synthetic arg and result structs are generated on the same level as the normal ones, opening the possibility for a name clash. Ideally, I would want them nested inside the ServerCall class, but that required changes to the existing data class/union generators, so I skipped it for now.

Codecov Report

Merging #447 (5dfdc01) into master (27438c5) will increase coverage by 0.89%.
The diff coverage is 67.76%.

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

One other thing that is a bit suboptimal is that the default error handler does not log anything when an error occurs. I didn't add that because up until now there was no dependency on any logging framework in thrifty-runtime and I was hesitant to add one. But it might be worth it, what do you think?

Side note: I am pretty confident that apart from the default requiredness thing (which is very minor), Thrifty is 1 to 1 compatible/equivalent with the thrift implementation.
You cited the lack of isSet* properties as a source of difference and non-conformity making Thrifty unfit for the server side, but I am pretty sure that's only the case if you were to use non-boxed primitives (as is the case in default Java thrift), as the isSet* implementation for reference types is just a null check on the field in default Java thrift.
But with Kotlin, the primitives are boxed anyways (at least
If optional, not sure about non-optional), so a null check is always equivalent to an isSet call.

Friendly nudge ;)

Sorry for the long delay, was struggling to find the motivation to sit down after work to get this done :)
Tried to take care of all the feedback, the coroutineServiceClient thingy will need to wait for another evening, though it should not require huge changes.

Codecov Report

Merging #447 (6daadb1) into master (27438c5) will increase coverage by 0.95%.
The diff coverage is 68.05%.

@@             Coverage Diff              @@
##             master     #447      +/-   ##
============================================
+ Coverage     59.53%   60.48%   +0.95%
- Complexity      796      847      +51
============================================
  Files            60       61       +1
  Lines          5535     6200     +665
  Branches        876      981     +105
============================================
+ Hits           3295     3750     +455
- Misses         1996     2150     +154
- Partials        244      300      +56

Impacted Files
Coverage Δ

.../com/microsoft/thrifty/compiler/ThriftyCompiler.kt
0.00% <0.00%> (ø)

...n/com/microsoft/thrifty/gradle/ThriftyExtension.kt
20.56% <0.00%> (-0.20%)
:arrow_down:

...kotlin/com/microsoft/thrifty/gradle/ThriftyTask.kt
0.00% <0.00%> (ø)

...java/com/microsoft/thrifty/testing/TestClient.java
60.46% <60.46%> (ø)

.../com/microsoft/thrifty/kgen/KotlinCodeGenerator.kt
83.62% <96.32%> (+1.27%)
:arrow_up:

...tlin/com/microsoft/thrifty/schema/ServiceMethod.kt
67.60% <100.00%> (+11.00%)
:arrow_up:

.../kotlin/com/microsoft/thrifty/schema/StructType.kt
44.00% <0.00%> (ø)

...ft/thrifty/compiler/SerializableKotlinProcessor.kt
0.00% <0.00%> (ø)

...ain/kotlin/com/microsoft/thrifty/kgen/TypeUtils.kt
89.83% <0.00%> (+1.69%)
:arrow_up:

... and 1 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 27438c5...6daadb1. Read the comment docs.

Server generation now always generates its own service interface in a server namespace that is always coroutine-based.
First, I tried for allowing both "plain" service handlers and coroutine ones, but that was a pain in the back because I had to duplicate a lot of code because suspend functions have different signatures.
So in the end I opted to just always generate coroutine based servers, because it allows for more freedom for the user, e.g. to use async constructs, either magic from Arrow or whatever.
If you choose to not use any coroutine specific stuff in your handler, that should be totally fine and not impact performance much, all you have is an extraneous parameter on our methods for the coroutine continuation (or maybe the compiler even optimizes that away if you never suspend).

I have addressed your feedback (thanks a lot!) and added the missing license headers.

Nice, thank you!  This generally looks good.  I'm going to hold off on merging this, however, until after we finalize a 3.0.0 release.  That should be fairly soon, but I'm still working out some problems with it.

A whole month later, I've finally released 3.0.0.  Thanks for your extraordinary patience.  Let's get this landed!

I have pulled your changes in via a rebase fixing any conflicts and only after I was done did I realize that that's not the most transparent way for you to track what has changed. Was totally in my work-workflow, sorry. I guess you would have probably preferred a merge commit?

Bump :)

oh geez, were you waiting for me?  I thought I was waiting for you 😧
let me take a look again


feat(cloud-bpmn): add variable outline tab

Proposed Changes
Adds the Variable tab to the desktop modeler.

related to https://github.com/camunda/camunda-modeler/issues/4267
Integration was also tested in the variable-outline PR: https://github.com/bpmn-io/variable-outline/pull/1

Checklist
To ensure you provided everything we need to look at your PR:

[x] Brief textual description of the changes present
[x] Visual demo attached
[x] Steps to try out present, i.e. using the @bpmn-io/sr tool
[x] Related issue linked via Closes {LINK_TO_ISSUE} or Related to {LINK_TO_ISSUE}

@jarekdanielak Please have a look into this (review).


[opencv4] add dnn-cuda feature

Before there was no way to enable CUDA support in the DNN module. It's default off (as documented here and confirmed). Depends on CUBLAS (which is enabled with the cuda feature) as well as cudnn.

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[x] The "supports" clause reflects platforms that may be fixed by this new version
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

The feature has been tested successfully.


docs(website): prover-market-page.mdx update

updated my endpoint

Closing for https://github.com/taikoxyz/taiko-mono/pull/15276


Add source file info to BLangFunciton symbol

Purpose

Resolve https://github.com/ballerina-platform/ballerina-lang/issues/25002

Approach

Add source file info to BLangFunciton symbol

Samples

N/A

Remarks

N/A

Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

I think it is difficult to add an isolated test case for this scenario and I think this will be tested in the mocking functionality implementation


Dude, you are f***ing awesome. Thank you for less.

Arch Linux is also my weapon of choice.

: ) - you're welcome.


Storing multiple (row) data in a given ctext

Hello,
Let's assume we have a 2D data (500 in total, 3 features) that looks like below for logistic regression using CKKS.
          x1    x2    x3   y
(row 1)  1.1.  1.2   1.3   1
(row 2)  2.1   2.2   2.3   0
    ...          ....
(row 500)     .....

Since logistic regression needs column-wise operation, I have encoded each row (each data) into a single ctext, so basically, I have 500 ctexts, which takes up lot memory I guess.
Is there a way one can encode / encrypt multiple row (multiple data) into a single ctext? Our polynomial has lots of slots, typically larger than 500*3 = 1500, so I think a single ctext can handle this.
But my concern is, then, I lose the ability to do column-wise operations, because the basis of HE is that we do +/-/* between two polynomials, not within the polynomial. Am I wrong? I hope I'm wrong! Can somebody tell me how to store multiple data in a single ctext yet still do a column-wise operation, say adding all the x1s?

Additionally, I wish to ask what are the performance metrics of homomorphic encryption. If it is memory, can someone share a code that tells me how much memory was required to run the code? I assume the maximum speed (stress) a computer experiences also matters, not only memory, since that can break down a system if it's too large, so I feel like a speed (stress) metric should also be reported.

Thank you in advance!

I managed to implement it using rotations !!!

Hello, @hdk0102
Can you please elaborate on the method you used to solve this problem?


Override default compare function to avoid infinite loop when editing files

Edit, no. Files can never be modified. But we've already discussed work else where to support 'mark delete'.

@jlhughes Do we want to edit files? We didn't allow it before

@Mykola97 This does not allow file edits, only updates to file names, labels and owner


coalescing_context: avoid goroutine when possible

We don't need a goroutine until either something has either accessed the done channel, or is adding a second context.  This avoids having a goroutine for every outstanding block request, even when the ones that aren't actively being fetched.
Issue: HOTPOT-2268

@jzila, I added this after seeing a log where a device ran out of memory and had >15K CoalescingContext active goroutines.  Not sure that they were the cause of the memory issue, but they weren't helping and seems like a good thing to do anyway.


Installation fails on certificate error

Debian 12 VM, amd64 build.
Tactical RMMv0.19.3
Certificate used on the machine is a Wildcard certificate for *.fqdn.com.
Any way to fix this without specifying the specific URL in the cert? Am I able to bypass the check somehow?
Go is up to date (version 1.21.5).
--2024-09-11 19:10:34--  https://mesh.fdqn.com/meshagents?id=[numbers]0&meshinstall=6
Resolving mesh.fdqn.com (mesh.fqdn.com)... <IP_ADDRESS>
Connecting to mesh.fdqn.com (mesh.fdqn.com)|<IP_ADDRESS>|:443... connected.
ERROR: The certificate of 'mesh.fdqn.com' is not trusted.
ERROR: The certificate of 'mesh.fqdn.com' doesn't have a known issuer.
The certificate's owner does not match hostname 'mesh.fqdn.com'
mkdir: cannot create directory '/opt/tacticalmesh': File exists
rm: cannot remove '/tmp/meshagent.msh': No such file or directory
Agent Compile begin
--2024-09-11 19:10:35--  https://github.com/amidaware/rmmagent/archive/refs/heads/master.zip
Resolving github.com (github.com)... <IP_ADDRESS>
Connecting to github.com (github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/amidaware/rmmagent/zip/refs/heads/master [following]
--2024-09-11 19:10:35--  https://codeload.github.com/amidaware/rmmagent/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... <IP_ADDRESS>
Connecting to codeload.github.com (codeload.github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 91672 (90K) [application/zip]
Saving to: '/tmp/rmmagent.zip'

/tmp/rmmagent.zip         100%[=====================================>]  89.52K  --.-KB/s    in 0.09s

2024-09-11 19:10:35 (991 KB/s) - '/tmp/rmmagent.zip' saved [91672/91672]

Archive:  /tmp/rmmagent.zip
   creating: /tmp/rmmagent-master/
   creating: /tmp/rmmagent-master/.github/
   creating: /tmp/rmmagent-master/.github/workflows/
  inflating: /tmp/rmmagent-master/.github/workflows/ci.yml
  inflating: /tmp/rmmagent-master/.gitignore
   creating: /tmp/rmmagent-master/.vscode/
  inflating: /tmp/rmmagent-master/.vscode/settings.json
  inflating: /tmp/rmmagent-master/LICENSE.md
  inflating: /tmp/rmmagent-master/README.md
   creating: /tmp/rmmagent-master/agent/
  inflating: /tmp/rmmagent-master/agent/agent.go
  inflating: /tmp/rmmagent-master/agent/agent_unix.go
  inflating: /tmp/rmmagent-master/agent/agent_windows.go
  inflating: /tmp/rmmagent-master/agent/checkin.go
  inflating: /tmp/rmmagent-master/agent/checks.go
  inflating: /tmp/rmmagent-master/agent/choco_windows.go
  inflating: /tmp/rmmagent-master/agent/embed_darwin.go
  inflating: /tmp/rmmagent-master/agent/embed_stub.go
  inflating: /tmp/rmmagent-master/agent/eventlog_windows.go
  inflating: /tmp/rmmagent-master/agent/install.go
  inflating: /tmp/rmmagent-master/agent/install_unix.go
  inflating: /tmp/rmmagent-master/agent/install_windows.go
  inflating: /tmp/rmmagent-master/agent/patches_windows.go
  inflating: /tmp/rmmagent-master/agent/process.go
  inflating: /tmp/rmmagent-master/agent/rpc.go
   creating: /tmp/rmmagent-master/agent/scripts/
  inflating: /tmp/rmmagent-master/agent/scripts/macos_fix_mesh_install.sh
  inflating: /tmp/rmmagent-master/agent/services_windows.go
  inflating: /tmp/rmmagent-master/agent/software_windows_386.go
  inflating: /tmp/rmmagent-master/agent/software_windows_amd64.go
  inflating: /tmp/rmmagent-master/agent/svc.go
  inflating: /tmp/rmmagent-master/agent/syscall_windows.go
  inflating: /tmp/rmmagent-master/agent/tasks_windows.go
  inflating: /tmp/rmmagent-master/agent/utils.go
  inflating: /tmp/rmmagent-master/agent/wmi_windows.go
  inflating: /tmp/rmmagent-master/agent/wua_windows.go
   creating: /tmp/rmmagent-master/build/
  inflating: /tmp/rmmagent-master/build/rmm.exe.manifest
  inflating: /tmp/rmmagent-master/build/setup.iss
  inflating: /tmp/rmmagent-master/go.mod
  inflating: /tmp/rmmagent-master/go.sum
  inflating: /tmp/rmmagent-master/main.go
   creating: /tmp/rmmagent-master/shared/
  inflating: /tmp/rmmagent-master/shared/types.go
  inflating: /tmp/rmmagent-master/versioninfo.json
cp: cannot create regular file '/usr/local/bin/rmmagent': Text file busy
FATA[0000] Get "https://api.fqdn.com/api/v3/installer/": tls: failed to verify certificate: x509: certificate is not valid for any names, but wanted to match api.fqdn.com
Tactical Agent Install is done```

Hi
In function install_agent on line 234, just put the --insecure parameter before -api.
here is an example
function install_agent() {
        cp /tmp/temp_rmmagent /usr/local/bin/rmmagent
         /tmp/temp_rmmagent -m install **--insecure** -api $rmm_url -client-id $rmm_client_id -site-id $rmm_site_id -agen    t-type $rmm_agent_type -auth $rmm_auth
         rm /tmp/temp_rmmagent

Here it worked correctly

Debian 12 VM, amd64 build. Tactical RMMv0.19.3
Certificate used on the machine is a Wildcard certificate for *.fqdn.com. Any way to fix this without specifying the specific URL in the cert? Am I able to bypass the check somehow?
Go is up to date (version 1.21.5).
--2024-09-11 19:10:34--  https://mesh.fdqn.com/meshagents?id=[numbers]0&meshinstall=6
Resolving mesh.fdqn.com (mesh.fqdn.com)... <IP_ADDRESS>
Connecting to mesh.fdqn.com (mesh.fdqn.com)|<IP_ADDRESS>|:443... connected.
ERROR: The certificate of 'mesh.fdqn.com' is not trusted.
ERROR: The certificate of 'mesh.fqdn.com' doesn't have a known issuer.
The certificate's owner does not match hostname 'mesh.fqdn.com'
mkdir: cannot create directory '/opt/tacticalmesh': File exists
rm: cannot remove '/tmp/meshagent.msh': No such file or directory
Agent Compile begin
--2024-09-11 19:10:35--  https://github.com/amidaware/rmmagent/archive/refs/heads/master.zip
Resolving github.com (github.com)... <IP_ADDRESS>
Connecting to github.com (github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/amidaware/rmmagent/zip/refs/heads/master [following]
--2024-09-11 19:10:35--  https://codeload.github.com/amidaware/rmmagent/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... <IP_ADDRESS>
Connecting to codeload.github.com (codeload.github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 91672 (90K) [application/zip]
Saving to: '/tmp/rmmagent.zip'

/tmp/rmmagent.zip         100%[=====================================>]  89.52K  --.-KB/s    in 0.09s

2024-09-11 19:10:35 (991 KB/s) - '/tmp/rmmagent.zip' saved [91672/91672]

Archive:  /tmp/rmmagent.zip
   creating: /tmp/rmmagent-master/
   creating: /tmp/rmmagent-master/.github/
   creating: /tmp/rmmagent-master/.github/workflows/
  inflating: /tmp/rmmagent-master/.github/workflows/ci.yml
  inflating: /tmp/rmmagent-master/.gitignore
   creating: /tmp/rmmagent-master/.vscode/
  inflating: /tmp/rmmagent-master/.vscode/settings.json
  inflating: /tmp/rmmagent-master/LICENSE.md
  inflating: /tmp/rmmagent-master/README.md
   creating: /tmp/rmmagent-master/agent/
  inflating: /tmp/rmmagent-master/agent/agent.go
  inflating: /tmp/rmmagent-master/agent/agent_unix.go
  inflating: /tmp/rmmagent-master/agent/agent_windows.go
  inflating: /tmp/rmmagent-master/agent/checkin.go
  inflating: /tmp/rmmagent-master/agent/checks.go
  inflating: /tmp/rmmagent-master/agent/choco_windows.go
  inflating: /tmp/rmmagent-master/agent/embed_darwin.go
  inflating: /tmp/rmmagent-master/agent/embed_stub.go
  inflating: /tmp/rmmagent-master/agent/eventlog_windows.go
  inflating: /tmp/rmmagent-master/agent/install.go
  inflating: /tmp/rmmagent-master/agent/install_unix.go
  inflating: /tmp/rmmagent-master/agent/install_windows.go
  inflating: /tmp/rmmagent-master/agent/patches_windows.go
  inflating: /tmp/rmmagent-master/agent/process.go
  inflating: /tmp/rmmagent-master/agent/rpc.go
   creating: /tmp/rmmagent-master/agent/scripts/
  inflating: /tmp/rmmagent-master/agent/scripts/macos_fix_mesh_install.sh
  inflating: /tmp/rmmagent-master/agent/services_windows.go
  inflating: /tmp/rmmagent-master/agent/software_windows_386.go
  inflating: /tmp/rmmagent-master/agent/software_windows_amd64.go
  inflating: /tmp/rmmagent-master/agent/svc.go
  inflating: /tmp/rmmagent-master/agent/syscall_windows.go
  inflating: /tmp/rmmagent-master/agent/tasks_windows.go
  inflating: /tmp/rmmagent-master/agent/utils.go
  inflating: /tmp/rmmagent-master/agent/wmi_windows.go
  inflating: /tmp/rmmagent-master/agent/wua_windows.go
   creating: /tmp/rmmagent-master/build/
  inflating: /tmp/rmmagent-master/build/rmm.exe.manifest
  inflating: /tmp/rmmagent-master/build/setup.iss
  inflating: /tmp/rmmagent-master/go.mod
  inflating: /tmp/rmmagent-master/go.sum
  inflating: /tmp/rmmagent-master/main.go
   creating: /tmp/rmmagent-master/shared/
  inflating: /tmp/rmmagent-master/shared/types.go
  inflating: /tmp/rmmagent-master/versioninfo.json
cp: cannot create regular file '/usr/local/bin/rmmagent': Text file busy
FATA[0000] Get "https://api.fqdn.com/api/v3/installer/": tls: failed to verify certificate: x509: certificate is not valid for any names, but wanted to match api.fqdn.com
Tactical Agent Install is done```

Hi
In function install_agent on line 234, just put the --insecure parameter before -api.
here is an example
function install_agent() {
        cp /tmp/temp_rmmagent /usr/local/bin/rmmagent
         /tmp/temp_rmmagent -m install **--insecure** -api $rmm_url -client-id $rmm_client_id -site-id $rmm_site_id -agen    t-type $rmm_agent_type -auth $rmm_auth
         rm /tmp/temp_rmmagent

Here it worked correctly

Debian 12 VM, amd64 build. Tactical RMMv0.19.3
Certificate used on the machine is a Wildcard certificate for *.fqdn.com. Any way to fix this without specifying the specific URL in the cert? Am I able to bypass the check somehow?
Go is up to date (version 1.21.5).
--2024-09-11 19:10:34--  https://mesh.fdqn.com/meshagents?id=[numbers]0&meshinstall=6
Resolving mesh.fdqn.com (mesh.fqdn.com)... <IP_ADDRESS>
Connecting to mesh.fdqn.com (mesh.fdqn.com)|<IP_ADDRESS>|:443... connected.
ERROR: The certificate of 'mesh.fdqn.com' is not trusted.
ERROR: The certificate of 'mesh.fqdn.com' doesn't have a known issuer.
The certificate's owner does not match hostname 'mesh.fqdn.com'
mkdir: cannot create directory '/opt/tacticalmesh': File exists
rm: cannot remove '/tmp/meshagent.msh': No such file or directory
Agent Compile begin
--2024-09-11 19:10:35--  https://github.com/amidaware/rmmagent/archive/refs/heads/master.zip
Resolving github.com (github.com)... <IP_ADDRESS>
Connecting to github.com (github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/amidaware/rmmagent/zip/refs/heads/master [following]
--2024-09-11 19:10:35--  https://codeload.github.com/amidaware/rmmagent/zip/refs/heads/master
Resolving codeload.github.com (codeload.github.com)... <IP_ADDRESS>
Connecting to codeload.github.com (codeload.github.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 91672 (90K) [application/zip]
Saving to: '/tmp/rmmagent.zip'

/tmp/rmmagent.zip         100%[=====================================>]  89.52K  --.-KB/s    in 0.09s

2024-09-11 19:10:35 (991 KB/s) - '/tmp/rmmagent.zip' saved [91672/91672]

Archive:  /tmp/rmmagent.zip
   creating: /tmp/rmmagent-master/
   creating: /tmp/rmmagent-master/.github/
   creating: /tmp/rmmagent-master/.github/workflows/
  inflating: /tmp/rmmagent-master/.github/workflows/ci.yml
  inflating: /tmp/rmmagent-master/.gitignore
   creating: /tmp/rmmagent-master/.vscode/
  inflating: /tmp/rmmagent-master/.vscode/settings.json
  inflating: /tmp/rmmagent-master/LICENSE.md
  inflating: /tmp/rmmagent-master/README.md
   creating: /tmp/rmmagent-master/agent/
  inflating: /tmp/rmmagent-master/agent/agent.go
  inflating: /tmp/rmmagent-master/agent/agent_unix.go
  inflating: /tmp/rmmagent-master/agent/agent_windows.go
  inflating: /tmp/rmmagent-master/agent/checkin.go
  inflating: /tmp/rmmagent-master/agent/checks.go
  inflating: /tmp/rmmagent-master/agent/choco_windows.go
  inflating: /tmp/rmmagent-master/agent/embed_darwin.go
  inflating: /tmp/rmmagent-master/agent/embed_stub.go
  inflating: /tmp/rmmagent-master/agent/eventlog_windows.go
  inflating: /tmp/rmmagent-master/agent/install.go
  inflating: /tmp/rmmagent-master/agent/install_unix.go
  inflating: /tmp/rmmagent-master/agent/install_windows.go
  inflating: /tmp/rmmagent-master/agent/patches_windows.go
  inflating: /tmp/rmmagent-master/agent/process.go
  inflating: /tmp/rmmagent-master/agent/rpc.go
   creating: /tmp/rmmagent-master/agent/scripts/
  inflating: /tmp/rmmagent-master/agent/scripts/macos_fix_mesh_install.sh
  inflating: /tmp/rmmagent-master/agent/services_windows.go
  inflating: /tmp/rmmagent-master/agent/software_windows_386.go
  inflating: /tmp/rmmagent-master/agent/software_windows_amd64.go
  inflating: /tmp/rmmagent-master/agent/svc.go
  inflating: /tmp/rmmagent-master/agent/syscall_windows.go
  inflating: /tmp/rmmagent-master/agent/tasks_windows.go
  inflating: /tmp/rmmagent-master/agent/utils.go
  inflating: /tmp/rmmagent-master/agent/wmi_windows.go
  inflating: /tmp/rmmagent-master/agent/wua_windows.go
   creating: /tmp/rmmagent-master/build/
  inflating: /tmp/rmmagent-master/build/rmm.exe.manifest
  inflating: /tmp/rmmagent-master/build/setup.iss
  inflating: /tmp/rmmagent-master/go.mod
  inflating: /tmp/rmmagent-master/go.sum
  inflating: /tmp/rmmagent-master/main.go
   creating: /tmp/rmmagent-master/shared/
  inflating: /tmp/rmmagent-master/shared/types.go
  inflating: /tmp/rmmagent-master/versioninfo.json
cp: cannot create regular file '/usr/local/bin/rmmagent': Text file busy
FATA[0000] Get "https://api.fqdn.com/api/v3/installer/": tls: failed to verify certificate: x509: certificate is not valid for any names, but wanted to match api.fqdn.com
Tactical Agent Install is done```

Hi
In function install_agent on line 234, just put the --insecure parameter before -api. here is an example
function install_agent() {
        cp /tmp/temp_rmmagent /usr/local/bin/rmmagent
         /tmp/temp_rmmagent -m install **--insecure** -api $rmm_url -client-id $rmm_client_id -site-id $rmm_site_id -agen    t-type $rmm_agent_type -auth $rmm_auth
         rm /tmp/temp_rmmagent

Here it worked correctly

That worked perfectly, thank you.