Deadlock in openflow client

Describe the bug
@alokmaurya88 reported that in large scale cluster Pods failed to come up with error "no IP addresses available in range set:", even though enough IPs are available.
From antrea-agent log, there were CNI Add events for a Pod but no CNI Del events:
I1103 16:58:06.490006       1 server.go:345] Received CmdAdd request cni_args:<container_id:"0ca23667726e9ef1763e9752e35e54ec283f5585a03ce3ad83d7d3d98312195c" netns:"/var/run/netns/cni-00ede981-5efe-32c5-f7bd-bd57343503ca" ifname:"eth0" args:"K8S_POD_NAME=vsphere-csi-node-4cxv4;K8S_POD_INFRA_CONTAINER_ID=0ca23667726e9ef1763e9752e35e54ec283f5585a03ce3ad83d7d3d98312195c;IgnoreUnknown=1;K8S_POD_NAMESPACE=kube-system" path:"/opt/cni/bin" network_configuration:"{\"cniVersion\":\"0.3.0\",\"ipam\":{\"type\":\"host-local\"},\"name\":\"antrea\",\"type\":\"antrea\"}" >
...
I1103 17:02:21.518070       1 server.go:345] Received CmdAdd request cni_args:<container_id:"f13a68bf2206e678f20fbd73ee351f5121513d29535acb0d58394c0d38759270" netns:"/var/run/netns/cni-fed0a9eb-a081-80f6-d068-0edf28e0af2a" ifname:"eth0" args:"K8S_POD_NAME=vsphere-csi-node-4cxv4;K8S_POD_INFRA_CONTAINER_ID=f13a68bf2206e678f20fbd73ee351f5121513d29535acb0d58394c0d38759270;IgnoreUnknown=1;K8S_POD_NAMESPACE=kube-system" path:"/opt/cni/bin" network_configuration:"{\"cniVersion\":\"0.3.0\",\"ipam\":{\"type\":\"host-local\"},\"name\":\"antrea\",\"type\":\"antrea\"}" >

From containerd log, it thought netplugin failed with no error message:
Nov 03 17:02:06 scale-workload-cluster-new-md-0-b8f98ffbf-qbb2q containerd[678]: time="2020-11-03T17:02:06.496313163Z" level=error msg="RunPodSandbox for &PodSandboxMetadata{Name:vsphere-csi-node-4cxv4,Uid:61907499-025d-4200-aafd-15746c23d242,Namespace:kube-system,Attempt:0,} failed, error" error="failed to setup network for sandbox \"0ca23667726e9ef1763e9752e35e54ec283f5585a03ce3ad83d7d3d98312195c\": netplugin failed with no error message"
...
Nov 03 17:06:21 scale-workload-cluster-new-md-0-b8f98ffbf-qbb2q containerd[678]: time="2020-11-03T17:06:21.520370919Z" level=error msg="RunPodSandbox for &PodSandboxMetadata{Name:vsphere-csi-node-4cxv4,Uid:61907499-025d-4200-aafd-15746c23d242,Namespace:kube-system,Attempt:0,} failed, error" error="failed to setup network for sandbox \"f13a68bf2206e678f20fbd73ee351f5121513d29535acb0d58394c0d38759270\": netplugin failed with no error message"

So it should be antrea-agent didn't finish handling the CNI requests, and containerd wouldn't call CNI DEL as ADD never succeeded, then each retry occupy one more IP until the pool was exhausted.
Dumping the goroutines, the CNI handler was stuck in acquiring a lock for installing openflows:
157 @ 0x4330a0 0x443840 0x44382b 0x4435a7 0x47dcac 0x1561670 0x15615c2 0x1564f11 0x1572608 0x15ba772 0x15aa469 0x15ab43b 0x15d8af9 0x15d658d 0x15dbc60 0x1396d07 0x137ea34 0x1382757 0x138fb9b 0x460fe1
#	0x4435a6	sync.runtime_SemacquireMutex+0x46									/usr/local/go/src/runtime/sema.go:71
#	0x47dcab	sync.(*Mutex).lockSlow+0xfb										/usr/local/go/src/sync/mutex.go:138
#	0x156166f	sync.(*Mutex).Lock+0xcf											/usr/local/go/src/sync/mutex.go:81
#	0x15615c1	github.com/contiv/ofnet/ofctrl.(*OFSwitch).subscribeMessage+0x21					/tmp/gopath/pkg/mod/github.com/wenyingd/ofnet@v0.0.0-20200911061943-57045ae085da/ofctrl/ofSwitch.go:452
#	0x1564f10	github.com/contiv/ofnet/ofctrl.(*Transaction).Begin+0x60						/tmp/gopath/pkg/mod/github.com/wenyingd/ofnet@v0.0.0-20200911061943-57045ae085da/ofctrl/transaction.go:149
#	0x1572607	github.com/vmware-tanzu/antrea/pkg/ovs/openflow.(*OFBridge).AddFlowsInBundle+0x117			/usr/src/github.com/vmware-tanzu/antrea/pkg/ovs/openflow/ofctrl_bridge.go:345
#	0x15ba771	github.com/vmware-tanzu/antrea/pkg/agent/openflow.(*client).AddAll+0xf1					/usr/src/github.com/vmware-tanzu/antrea/pkg/agent/openflow/pipeline.go:365
#	0x15aa468	github.com/vmware-tanzu/antrea/pkg/agent/openflow.(*client).addFlows+0x188				/usr/src/github.com/vmware-tanzu/antrea/pkg/agent/openflow/client.go:253
#	0x15ab43a	github.com/vmware-tanzu/antrea/pkg/agent/openflow.(*client).InstallPodFlows+0x41a			/usr/src/github.com/vmware-tanzu/antrea/pkg/agent/openflow/client.go:335
#	0x15d8af8	github.com/vmware-tanzu/antrea/pkg/agent/cniserver.(*podConfigurator).connectInterfaceToOVS+0x5f8	/usr/src/github.com/vmware-tanzu/antrea/pkg/agent/cniserver/pod_configuration.go:489
#	0x15d658c	github.com/vmware-tanzu/antrea/pkg/agent/cniserver.(*podConfigurator).configureInterfaces+0x3ac		/usr/src/github.com/vmware-tanzu/antrea/pkg/agent/cniserver/pod_configuration.go:233
#	0x15dbc5f	github.com/vmware-tanzu/antrea/pkg/agent/cniserver.(*CNIServer).CmdAdd+0x68f				/usr/src/github.com/vmware-tanzu/antrea/pkg/agent/cniserver/server.go:408
#	0x1396d06	github.com/vmware-tanzu/antrea/pkg/apis/cni/v1beta1._Cni_CmdAdd_Handler+0x216				/usr/src/github.com/vmware-tanzu/antrea/pkg/apis/cni/v1beta1/cni.pb.go:452
#	0x137ea33	google.golang.org/grpc.(*Server).processUnaryRPC+0x4f3							/tmp/gopath/pkg/mod/google.golang.org/grpc@v1.26.0/server.go:1024
#	0x1382756	google.golang.org/grpc.(*Server).handleStream+0xd96							/tmp/gopath/pkg/mod/google.golang.org/grpc@v1.26.0/server.go:1313
#	0x138fb9a	google.golang.org/grpc.(*Server).serveStreams.func1.1+0xba						/tmp/gopath/pkg/mod/google.golang.org/grpc@v1.26.0/server.go:722

And the lock was hold by publishMessage, it seems the channel's consumer stopped so the routine was leaked and the lock was not released.
1 @ 0x4330a0 0x406bbb 0x406b91 0x406975 0x1565f58 0x460fe1
#	0x1565f57	github.com/contiv/ofnet/ofctrl.(*OFSwitch).publishMessage.func1+0x107	/tmp/gopath/pkg/mod/github.com/wenyingd/ofnet@v0.0.0-20200911061943-57045ae085da/ofctrl/ofSwitch.go:463

func (self *OFSwitch) publishMessage(xID uint32, result MessageResult) {
 go func() {
  self.txLock.Lock()
  defer self.txLock.Unlock()
  ch, found := self.txChans[xID]
  if found {
   ch <- result
  }
 }()
}

Also, from ovs-vswitchd log, there was a bundle timeout event, which might be related:
2020-11-03T16:18:42.723Z|00157|memory|INFO|peak resident set size grew 106% in last 10.0 seconds, from 101960 kB to 209660 kB
2020-11-03T16:18:42.724Z|00158|memory|INFO|handlers:2 ofconns:1 ports:110 revalidators:2 rules:1820 udpif keys:138
2020-11-03T16:18:55.777Z|00159|connmgr|INFO|br-int<->unix#0: sending OFPBFC_TIMEOUT error reply to ONFT_BUNDLE_CONTROL message
2020-11-03T16:18:55.778Z|00160|connmgr|INFO|br-int<->unix#0: sending OFPBFC_TIMEOUT error reply to ONFT_BUNDLE_CONTROL message
2020-11-03T16:19:24.629Z|00161|connmgr|INFO|br-int<->unix#0: 1369 flow_mods in the 21 s starting 60 s ago (1359 adds, 10 deletes)
2020-11-03T16:58:06.554Z|00162|bridge|INFO|bridge br-int: added interface vsphere--77ea1b on port 111
2020-11-03T17:02:06.553Z|00163|bridge|INFO|bridge br-int: deleted interface vsphere--77ea1b on port 111

Discussed with @weiqiangt, we think it's because of a bug of ofctrl transaction:
When OFPBFC_TIMEOUT happened, listenReply would return and there was no other consumer for tx.controlReplyCh, and OVS would also send a timeout message to agent so publishMessage would be called. However, the channel hadn't been removed from txChans so it would be stuck in ch <- result forever.
The related change https://github.com/wenyingd/ofnet/commit/57045ae085da3d8a5c50a3b3db804b4f3ace6209 was introduced in https://github.com/vmware-tanzu/antrea/commit/3a81b47266f84bf0fd22a7cdafe266f50adbeac2.
To Reproduce
There should be a chance to reproduce it by restarting antrea-agent in a large scale cluster, during which it tries to install many flows leading to OFPBFC_TIMEOUT.
Versions:
Please provide the following information:

Antrea version (Docker image tag). 0.10.0 and later versions

Additional context
goroutine.txt
containerd.log
ovs-vswitchd.log

is anyone working on this? @wenyingd @weiqiangt

@antoninbas, I'm working on it. The PR https://github.com/wenyingd/ofnet/pull/15 is under review. After merging it, I will push a PR to update the dependency.

BTW, can the issue be reproduced reliably in the context of an integration test? I'm thinking that if this is the case we may want to add such a test to validate the fix and improve our test suite.

BTW, can the issue be reproduced reliably in the context of an integration test? I'm thinking that if this is the case we may want to add such a test to validate the fix and improve our test suite.

IMO, I don't think it can be easily reliably reproduced although the occurrence rate is comparatively high.

When OFPBFC_TIMEOUT happened, listenReply would return and there was no other consumer for tx.controlReplyCh, and OVS would also send a timeout message to agent so publishMessage would be called. However, the channel hadn't been removed from txChans so it would be stuck in ch <- result forever.

According to our prior analysis, we need to ensure the OVS response TIMEOUT and the internal statuses of goroutines are in expected states. I actually tried to patch a sleep(10) to the publishMessage to mock the situation, and after applying this fix, the agent not blocks anymore.

Fixed by https://github.com/vmware-tanzu/antrea/pull/1511


How to display landscape

When I use it, I can only display it vertically. I need to display it horizontally. What should I do?Thanks

Using set_rotate() works for the methods inside this module, not when using the framebuffer methods. I guess an option would be to use double buffers (one for drawing and another for sending to the screen) and translate the working buffer into the display buffer for each display redraw. Pretty much a roundabout way, but would possible work.


TypeError in TypeScript for ReactCogniteAuthWrapper.

TypeScript is non too happy about the redirect_uri.

Nvm, works fine without it.


Pokefast 2.0. Googlerefreshtoken question

Hi guys, can someone tell me, where is googlerefreshtoken situated in Pokefast 2.0? i have my old token, but i don't know where i have to past it. with which name,and in which format i have to past it?

I don't think this is the right place for Pokefast questions.

Sorry, but i didn't know where i can give that question , i just need to know where is it situated and in which file format


Key repetition rate is slow when Kmonad is running on Windows.

When hold and pressing a key (e.g. the arrow keys), the repetition rate is much slower with Kmonad running than without Kmonad:

Note that this is for all keys, and it is especially annoying for arrow key. I am running Kmonad on Windows.
Is there any option to change the key repetition rate? Or is this considered a bug?
Thanks in advance!

As of this point, the key repetition rate is controlled by the OS.  Since kmonad creates a new (virtual) input device, you have to change the rate after starting kmonad.  The uinput-sink output has a handy second argment for that:
(uinput-sink
 "KMonad Keyboard"
 "sleep 0.2s; xset r rate 230 70; sleep 0.2s; setxkbmap -option compose:menu")

Hi and thanks for the info. Is there a similar option for Windows OS (i.e. (send-event-sink))?

Hi and thanks for the info. Is there a similar option for Windows OS
(i.e. (send-event-sink))?

Ah, Windows, of course.  I think there is something like
(send-event-sink 500 20)

Ah, that works great! Thank you very much!

I'm experiencing issues regardless of the values I choose! If 2nd arg is low, I get stuck keys every other sentence. If it's high, I get this latency when keys are held down. Unusable for me on Windows, unfortunately.


Some small fixes

update messages in close stale issues / pr
update readme (advanced config in new file)

@jandersonhill
In addition to that, please:

disable two workflows: version and tag.

https://docs.github.com/en/actions/using-workflows/disabling-and-enabling-a-workflow

disable PR template.

https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository


Ben pusey/display test app breaking changes

Draft PR for the issues I'm currently experiencing implementing the display-test-app fix.

Using Alias as recommended in this discussion thread to fix issues with sourcemaps: here.

the display-test-app fix.

Can you elaborate, or link to an issue?

Please, can you edit your description to tell me what you are fixing? Thanks.

this is not the only vite.config.ts in this repo that needs to be updated

@markschlosseratbentley @DStradley @MarcNeely @AJMigliore
can you guys verify the src map issue you guys were previously seeing has now been resolved?

fyi @MarcNeely @DStradley


Zero Division Error During Call Component

Hello Kez,
Exciting work you've put together here with dysgu. Very happy to have come across your preprint as I've been looking for a tool that would generate such useful read metrics for the major SV classes.
I have been trying to get the software to complete on one of my samples and continue to run into this same error upon running the call step.
dysgu fetch working_dir PD26400a_T.final.bam
2021-12-17 11:44:15,327 [INFO   ]  [dysgu-fetch] Version: 1.3.0
2021-12-17 11:59:25,375 [INFO   ]  dysgu fetch PD26400a_T.final.bam written to working_dir/PD26400a_T.final.dysgu_reads.bam, n=6183390, time=0:15:10 h:m:s

dysgu call --ibam PD26400a_T.final.bam --sites PD26400a_T_vs_PD26400b_N.consensus.somatic.sv.vcf Homo_sapiens_assembly38.fasta working_dir workin
g_dir/PD26400a_T.final.dysgu_reads.bam > svs.vcf
2021-12-17 12:01:57,321 [INFO   ]  [dysgu-call] Version: 1.3.0
2021-12-17 12:01:57,321 [INFO   ]  Input file is: working_dir/PD26400a_T.final.dysgu_reads.bam
2021-12-17 12:01:57,321 [INFO   ]  call --ibam PD26400a_T.final.bam --sites PD26400a_T_vs_PD26400b_N.consensus.somatic.sv.vcf Homo_sapiens_assembly38.fasta working_dir working_dir/PD26400a_T.final.dysgu_reads.bam
[W::hts_idx_load3] The index file is older than the data file: PD26400a_T.final.bai
2021-12-17 12:01:57,573 [INFO   ]  Sample name: PD26400a_T
2021-12-17 12:01:57,573 [INFO   ]  Writing vcf to stdout
2021-12-17 12:01:57,573 [INFO   ]  Running pipeline
2021-12-17 12:01:58,283 [INFO   ]  Calculating insert size. Removed 27 outliers with insert size >= 938.0
2021-12-17 12:01:58,299 [INFO   ]  Inferred read length 151.0, insert median 458, insert stdev 89
2021-12-17 12:01:58,301 [INFO   ]  Max clustering dist 903
2021-12-17 12:01:58,301 [INFO   ]  Minimum support 3
2021-12-17 12:01:58,301 [INFO   ]  Reading --sites
[W::vcf_parse_info] INFO/END=34143939 is smaller than POS at chr1:84232901
2021-12-17 12:01:58,351 [INFO   ]  Building graph with clustering 903 bp
2021-12-17 12:03:57,234 [INFO   ]  Total input reads 6183142
2021-12-17 12:03:59,688 [INFO   ]  Added 57 variants from input sites
2021-12-17 12:04:01,797 [INFO   ]  Graph constructed
Traceback (most recent call last):
  File "/conda/bin/dysgu", line 8, in <module>
    sys.exit(cli())
  File "/conda/lib/python3.7/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/conda/lib/python3.7/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/conda/lib/python3.7/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/conda/lib/python3.7/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/conda/lib/python3.7/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/conda/lib/python3.7/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/conda/lib/python3.7/site-packages/dysgu/main.py", line 442, in call_events
    cluster.cluster_reads(ctx.obj)
  File "dysgu/cluster.pyx", line 1115, in dysgu.cluster.cluster_reads
  File "dysgu/cluster.pyx", line 898, in dysgu.cluster.pipe1
  File "dysgu/cluster.pyx", line 633, in dysgu.cluster.component_job
  File "dysgu/call_component.pyx", line 1914, in dysgu.call_component.call_from_block_model
  File "dysgu/call_component.pyx", line 1928, in dysgu.call_component.call_from_block_model
  File "dysgu/call_component.pyx", line 1880, in dysgu.call_component.multi
  File "dysgu/call_component.pyx", line 988, in dysgu.call_component.single
  File "dysgu/call_component.pyx", line 608, in dysgu.call_component.make_single_call
  File "dysgu/call_component.pyx", line 286, in dysgu.call_component.count_attributes2
ZeroDivisionError: float division

To troubleshoot, I first ran dysgu test to determine if my build was fully successful and this completed without error.
Next, I checked the output bam from the fetch step with some samtools commands. It's wasn't corrupt and had a reasonable amount of reads (6183390).
Then I went into the script call_component.pyx and looked into the code block where the error originated:
if clipped_bases > 0 and aligned_bases > 0:
        er.clip_qual_ratio = (aligned_base_quals / aligned_bases) / (clipped_base_quals / clipped_bases)
    else:
        er.clip_qual_ratio = 0

From that I can see it's one of aligned_bases, clipped_base_quals, or clipped_bases
I couldn't see a reason any to these values would be zero based on the BAM that was produced so I wanted to present the issue here.
Let me know if there is any other information or tests you would like me to try.
Best regards,
Patrick
Below are packages installed for build via Anaconda and pip:
Cython                 0.29.26
click                  8.0.3
numpy                  1.21.2
pandas                 1.3.5
pysam                  0.18.0
networkx               2.6.3
scikit-learn           1.0.1
ncls                   0.0.62
scikit-bio             0.5.6
edlib                  1.3.9
sortedcontainers       2.4.0
lightgbm               3.3.1

Hi Patrick,
Thanks for raising this and providing a detailed report.
It looks like it is clipped_base_quals, when that is 0 then a ZeroDivisionError arises. Sorry for missing this!
I have pushed a fix for this to github. A release will be uploaded to pypi shortly (v1.3.3).

Hi Kez,
I greatly appreciate the fast response. This data was sequenced on Illumina.
Also, I just checked the output BAM in IGV and I can see the soft-clipped bases. It appears their individual base qualities are non-zero so the sum most certainly shouldn't be.

I am unsure if this is a correct interpretation so let me know if you have a preferred method for evaluating these metrics.

Thanks for the extra info, I think your data looks 'normal' as far as I can see.
I have released v1.3.3 to pypi, so hopefully that resolves issue. I will close this for now, but please re-open if this doesn't fix it.
Also, as you mentioned in your comment that you are interested in the metrics dysgu provides, you might want to add --metrics flag to your run/call command to get the full list of metrics in the output, without this a more limited set is reported.

Hey Kez,
Just wanted to update you and confirm the error has been resolved and the call function successfully moved past this part of the function. However there was an additional error that arose so I will open a new issue to detail this for you.
I think it'll be a small fix so hopefully it won't take up too much of your time.
Thanks again for addressing this,
Patrick


Hook when router moves to halted state

It would be nice to have some event hook or strategy injected so I can Process.Exit() when the router moves to halted state.
This is difficult to achieve at the moment because you would need to check for the "Router halted due to previous error" exception at every point (in every thread) where you publish an event.

+1
From: Richard Dingwall<EMAIL_ADDRESS>Sent: 02 September 2015 09:51
To: esp/esp-net<EMAIL_ADDRESS>Subject: [esp-net] Exception handler (#46)
It would be nice to have some event hook or strategy injected so I can Process.Exit() when the router moves to halted state.
This is difficult to achieve at the moment because you would need to check for the "Router halted due to previous error" exception at every point (in every thread) where you publish an event.
—
Reply to this email directly or view it on GitHub https://github.com/esp/esp-net/issues/46 .  https://github.com/notifications/beacon/AAcMhSyuL0dlIVhNgorVEs3nQ_QjrC3jks5otq_zgaJpZM4F2WBL.gif


Memo'd generator function

With return types of generator functions returning an iterable (An object with Symbol.iterator or Symbol.asyncIterator) that can only be iterated through once, I am wondering how these functions would be handled for memoization.
My first instinct is to just put a big flag over the top of usage, and just mention that they probably shouldn't be used with generators unless you know what you're up to, e.g. it is actually useful if the reader copies the result somewhere else, and just uses the returned generator as a key to their own cache.

For any function I would expect it would work like:
let index = -1;

function id() {
    index += 1;
    return { index }; // object reference will be different every return
}

const oneId = id.memo();

const a = oneId(),
    b = oneId();

console.log({ a, b });

if (a !== b) {
   throw new Error("Expected returned values to have the same object reference");
}

Given that, I would expect the returned object from a generator function to be the same reference each time.
function *generator() {
   yield id();
    yield id();
}

const generatorMemo = generator.memo();

const generatorMemoReturnA = generatorMemo(),
  generatorMemoReturnB = generatorMemo();

if (generatorMemoReturnA !== generatorMemoReturnB) {
   throw new Error("Expected returned values to have the same object reference");
}

If I called the generator function twice, and spread the returned iterable into arrays, I get the same length arrays:
const aArray = [...generator()],
    bArray = [...generator()];

console.log({ aArray, bArray });

if (aArray.length !== bArray.length) {
   throw new Error("Expected arrays to have the same length");
}

But, then doing this with the memo'd version, you get a possibly unexpected (but explainable) result:
const generatorMemo = generator.memo();

const aArrayMemo = [...generatorMemo()],
    bArrayMemo = [...generatorMemo()];

console.log({ aArrayMemo, bArrayMemo });

if (aArrayMemo.length !== bArrayMemo.length) {
   throw new Error("Expected arrays to have the same length");
}

If we are aware of this, and instead use the returned object as a key to another cache, we can achieve what we are actually after:
const toArray = (function (iterable) {
   return [...iterable];
}).memo();

const aArray = toArray(generator()),
    bArray = toArray(generator());

console.log({ aArray, bArray });

if (aArray.length !== bArray.length) {
   throw new Error("Expected arrays to have the same length");
}

const generatorMemo = generator.memo();

const aArrayMemo = toArray(generatorMemo()),
    bArrayMemo = toArray(generatorMemo());

console.log({ aArrayMemo, bArrayMemo });

if (aArrayMemo.length !== bArrayMemo.length) {
   throw new Error("Expected arrays to have the same length");
}

Given the naive implementation:
Function.prototype.memo = function () {
   const that = this;
    const cache = new Map();

    function findKey(args) {
       for (const key of cache.keys()) {
          if (key.length !== args.length) continue;
           const match = key.every((value, index) => args[index] === value);
           if (match) return key;
       }
        return undefined;
    }

    return function (...args) {
      const key = findKey(args) ?? args;
        const existing = cache.get(key);
        if (existing) return existing;
        const result = that.call(this, ...args);
        cache.set(key, result);
        return result;
   }
}

This becomes more of a complex problem once you start to talk about async generators
Then, how does .memo() mix with  https://github.com/tc39/proposal-iterator-helpers
Proposed helpers:
generator()
   .map(value => value * 2)
   .filter(value => value > 3)
   .next();

memo & call:
generator
   .memo()
   .call()
   .map(value => value * 2)
   .filter(value => value > 3)
   .next();

Or maybe it should be a helper itself in the case of all generator functions, which maybe would just answer this entire issue and push it into a helper land problem for generator functions.
generator()
   .memo()
   .map(value => value * 2)
   .filter(value => value > 3)
   .next()

What we do with generators and async generators depends on:

#7: Is there any prior art in which developers of any programming language applied function memoization to a generator function?
#9: What are the specific use cases of function memoization for developers?

As you know, generator functions return new stateful objects. To my current knowledge, function memoization is almost exclusively used on pure functions, which generators of course are not. I predict that we will not be able to find any prior art of generator memoization for #7.
So—assuming that we will not be able to find any prior art of generator memoization for #7—and assuming that we will not be able to think of any compelling specific developer use cases of generator memoization for #9—then we might conclude that generator memoization is just not something we want to support.
In fact, we might consider making the memo function throw a TypeError when a generator or async-generator function is given. However, I do not think this is a good idea. TC39 has always tried to treat generator functions and functions-that-return-generator-like-objects as functionally identical.

I'd expect returning of one cached generator and the absence of any special behavior here.

I have prior art for asyncIterator based objects, I'll post some more about it in this issue later on today.
The summary of it though is that the more you look into it, the more complex it gets.
The iterator objects are closer to communication tunnels rather than a static set of information.
Because the communication is two way too, it really depends how far you want to go, e.g are yielded values returned only if the values passed to next are in the exact same order, if anything is different you might want a new source, but you might not know that till half way through the iteration, so you can just say instead to just cache everything once and ignore those values completely.
Here is a link to some code that's testing that the "memo'd" async iterables are working the way I had expected.
https://github.com/virtualstate/promise/blob/755eca0dbe34e3b0e8e7e0faf985c45d9177249f/src/tests/blend.ts#L239

My immediate thoughts is just to ignore all this and just return the memod generator object though. As with earlier comments.
Anywhere where memod async generators are used, the consumer will need to be aware of this pattern and be aware that they need to decide on their own caching pattern

This implementation here is equivalent to the memo in the original description of this issue
https://github.com/virtualstate/memo/blob/3d5d259cdede930a2c9b54fda75be28fac756c96/src/memo.ts#L12-L40
It now includes though async iterable memo as well though.
It only takes into account the values that were yielded once.
Using this code I could now do
Function.prototype.memo = function() {
  return createMemoFn(this)
}


Fix CandidateRemoved event

@zjb0807 the development of statemint has moved to https://github.com/paritytech/cumulus/ for now at least, can I ask you open this if needed there?


Add CLI flag to ignore hidden directories and/or support .gitignore

I have "work in progress" .wip/ directories in my local repo that are included in my .gitignore.  As these are work in progress, they may be in a state that cause flux-local to crash.
It would be really useful to be able to set flux-local (and the gh Action) to ignore directories that:

in the .gitignore
match a glob/regex pattern

@ahgraber You can can specify --path to point to a specific subdirectory e.g. --path=kubernetes/ or --path=clusters/prod etc

@ahgraber  i believe using --path addresses your issue. Is that right?

Mostly!  If I want to do a full build of the entire repo (locally), then having a way to exclude multiple patterns would be really useful.  However, I probably don't need to do that locally, in which case --path solves the issue, and it's a non-issue in GHA b/c I don't commit the directories.
Thanks for following up!  I'll close this.

I believe this would be useful. For example my cluster is not in a subfolder, and the tool picks up .github/workflows yaml:
$ flux-local --log-level INFO diff kustomization --unified 6 --strip-attrs "helm.sh/chart,checksum/config,app.kubernetes.io/version,chart" --skip-crds --skip-secrets --limit-bytes 10000 --all-namespaces --kustomize-build-flags="" --sources "" --output-file diff.patch ${extra_flags}
flux-local error:  Command 'flux build ks flux-system --dry-run --kustomization-file /dev/stdin --path /home/jkoelker/jkoelker/nas00 --namespace flux-system' failed with return code 1
✗ failed to generate kustomization.yaml: failed to decode Kubernetes YAML from /home/jkoelker/jkoelker/nas00/.github/workflows/flux-diff.yaml: missing Resource metadata <nil> <nil>

I think having a --ignore-paths that just passes through to flux build would work as I think that's what's picking it up, but i'm not really sure.

I found out there is a .krmignore file that supports directory names. This is respected by kustomize

I found out there is a .krmignore file that supports directory names. This is respected by kustomize

Unfortunately it does not alleviate the issue:
$ cat .krmignore
.github

$ flux-local       --log-level INFO       diff       kustomization       --unified 6          --strip-attrs "helm.sh/chart,checksum/config,app.kubernetes.io/version,chart"       --skip-crds       --skip-secrets       --limit-bytes 10000       --all-namespaces       --kustomize-build-flags=""       --sources ""       --output-file diff.patch
flux-local error:  Command 'flux build ks flux-system --dry-run --kustomization-file /dev/stdin --path /home/jkoelker/jkoelker/nas00 --namespace flux-system' failed with return code 1
✗ failed to generate kustomization.yaml: failed to decode Kubernetes YAML from /home/jkoelker/jkoelker/nas00/.github/workflows/flux-diff.yaml: missing Resource metadata <nil> <nil>

@jkoelker I see -- in this case it looks like its flux build not kustomize which is failing. It seems like the problem is these files are actually included by a kustomization though here right?
I don't think flux-local can have another way to tell flux build to ignore files within the kustomization. How is the kustomize controller ignoring these?
I think i'd need to see more about the details of the repo to figure out a path forward for you.

I think the deal is by default the flux controller never sees them as they are excluded from the Artifact by the source controller
The repository was created with flux bootstrap just without specifying a path, so it defaulted to the current directory which is the root of the git repo. flux build supports --ignore-paths which I think would be the right way to pass through flux-local to the build any directories to ignore.

T

Thanks for that detail. Yeah, --ignore-paths from the source ref ignores automatically seems interesting/useful if possible.

One thing that may be hard to automatically do is that we may not have a way to identify the right GitRepository that points to "this cluster" though maybe --sources can pick it up.


Bugfix: django dependency specification

This works:
Django = [
    {version = ">=2.2,<4", markers = "python_version < '3.8' and extra == 'django'", optional = true},
    {version = ">=2.2,<5", markers = "python_version >= '3.8' and extra == 'django'", optional = true}
]

I built the package locally and it produces this metadata:
[...]
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Provides-Extra: aiohttp
Provides-Extra: asgi
Provides-Extra: chalice
Provides-Extra: debug-server
Provides-Extra: django
Provides-Extra: fastapi
Provides-Extra: flask
Provides-Extra: opentelemetry
Provides-Extra: pydantic
Provides-Extra: sanic
Requires-Dist: Django (>=2.2,<4); python_version < "3.8" and extra == "django"
Requires-Dist: Django (>=2.2,<5); python_version >= "3.8" and extra == "django"
Requires-Dist: aiohttp (>=3.7.4.post0,<4.0.0); extra == "aiohttp"
Requires-Dist: asgiref (>=3.2,<4.0); extra == "django"
Requires-Dist: cached-property (>=1.5.2,<2.0.0)
[...]

I tested the marker:
Python 3.9.9 (main, Nov 21 2021, 03:23:44)
[Clang 13.0.0 (clang-13<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from packaging.markers import Marker
>>> Marker('python_version >= "3.8" and extra == "django"').evaluate(environment={'extra': 'django'})
True
>>> Marker('python_version >= "3.8" and extra == "django"').evaluate(environment={'extra': 'pouet'})
False
>>> Marker('python_version >= "3.10" and extra == "django"').evaluate(environment={'extra': 'django'})
False

Closes #1488

Some extra context:

the Markers docs
a related poetry issue

Thank you! I'm just double checking if there's a bug in Poetry 😊 I'll merge this after I'm done with that :)

I haven't found on this specific case. The most related I mentioned above.

Thanks for adding the RELEASE.md file!

Here's a preview of the changelog:

This fixes the previous release that introduced a direct dependency on Django.

Here's the preview release card for twitter:

Here's the tweet text:
🆕 Release (next) is out! Thanks to Guillaume Andreu Sabater for the PR 👏

Get it here 👉 https://github.com/strawberry-graphql/strawberry/releases/tag/(next)

it seems to be a bug in poetry, haven't figured out yet how to fix it though :)


Yahoo - Problem

Hello Hardware,
sorry for disturb and for my English
I have problem when I sending email for yahoo.
i have an error, I don't have Log at moment but it's yahoo don't accepted mail.
best regard

Whitelist https://github.com/vstakhov/rspamd/blob/1.6.5/conf/surbl-whitelist.inc#L795-L801


Send and TC Enhancement: Handle result of executing send confirmation operations on UI.

Present modal in response to the send confirmation operation.

Send confirmation should be shown as successful or failed


Update run_training_single.sh

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

Project coverage is 37.42%. Comparing base (9f2a87e) to head (235a411).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #167   +/-   ##
=======================================
  Coverage   37.42%   37.42%
=======================================
  Files          19       19
  Lines        1280     1280
=======================================
  Hits          479      479
  Misses        801      801

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


Uptade to 18.04 Bionic Beaver

First, thank you again for the great job, I was using the archert2u and it was working just fine in the 17.10 version.
It was working so fine that i end up forgeting about and updating the distro for the 18.04 bionic beaver, now the driver doesn´t work of course. Do you pretend uptdate the instalation process to work on 18.04?
Thank you and congrats.

Thanks a lot for the kind words. The work for 17.10 came from a contributor! ☺
Sadly I will discontinue the manteinance on this repository. I can't test the dongle anymore (got rid of it) and got no time to work on this.
Give it a try to update the code to 18.04 ☺, it should not be hard.
Cheers!

Hi @ivannieto If you can make the next update for us, can you tell us how to do that please?
Thanks in advance!


[UI]-Hyperlink under dark mode not visible

Current Behavior
The Hyperlink is not properly visible under dark mode.

Desired Behavior
Color should be changed to make it visible

I have sucessfully made the changes @leecalcote just need your permission to PR can you please assign me.
Environment

Browser: Chrome Safari Firefox
Host OS: Mac Linux Windows
Meshery Server Version: stable-v
Meshery Client Version: stable-v
Platform: Docker Kubernetes

Contributor Guides and Handbook

🎨 Wireframes and designs for Meshery UI in Figma
🖥 Contributing to Meshery UI
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

@Chadha93 I have made a PR and it looks good and matching with the theme both in dark and light mode so I have not made further changes could you review.

@Chadha93 I have made a PR and it looks good and matching with the theme both in dark and light mode so I have not made further changes could you review.

@parmishh Please post this under the PR, let's follow up there.


Support of combining data from multiple DICOMweb sources in a single viewer instance

Request
What feature or change would you like to see made?
I'd like to be able to combine individual series that are stored on different DICOMweb stores into a single Viewer instantiation.
Why should we prioritize this feature?
There are several use cases where this might be very helpful. I think the use cases below are very common, and users will need this functionality pretty soon (we already have examples where this would help a lot):

visualization of analysis results for public collections: Google Healthcare is hosting a copy of TCIA public collections. Annotations or analysis results produced by individual users/projects will have to be stored in a DICOM store separate from the collection store. With the current capabilities of OHIF Viewer, source collection will need to be replicated to allow visualization of those. Some of those collections are VERY large (e.g., LIDC-IDRI is 125Gb). There is a very real and specific dataset of LIDC annotations that motivates this use case, see here.
even if data size and replication is not a concern, separate DICOM stores can help in logically organizing analysis analysis results and annotations produced by several projects for the same image collection.

Specifically for IDC, it is reasonable to expect that there will be fully resolved location for the individual series that need to be included in the visualization. Those can be populated by the cohort search interface. The Viewer task would be just to take those and visualize the result as a collection of series.

This issue is likely blocked until we have support for configuring modes, routes, and route templates. As currently prioritized, that's likely a month or two out, and may live on a feature branch until as late as August. If you need this before then, we should discuss how we might expedite, and make sure that any changes here aren't lost when the feature branch is rolled out.
You could use a "Higher Order Component" (HOC) to wrap the existing Viewer route, but add support for additional query string or route template parameters. You would then use those parameters to query for the data as you see fit, and map the data to the viewer routes "viewmodel".

For many reasons, including this limitation of OHIF, we will most likely set up a single DICOM store for all IDC data in the MVP. This issue should not be in the critical path for IDC MVP.
I think we should keep it as priority, since I think in the general  case we will want to support users that have image analysis/annotation results in their own stores with the imaging data in the IDC store.

We should probably do a smoke test to see how well the dicom store scales to this data size (e.g. how does the size impact query times).  It would be pretty simple to create a scratch store and then upload all the tcia data from gcs for testing.

Say we have two dicomweb servers in our configuration, if a series exists in both stores do we fallback to the first in the array of dicomweb servers? I.e. have a priority list?

When you STOW which one do you STOW back to?

Do we want to have some UI to show which scan came from where?

Great questions. Although full functionality answers will need more thought, for the initial iteration, I think it is fair to assume that sources are curated, and no duplicates will exist. Also, for MVP we assume read only access so nothing will be tired back.

As a common use case, I would want to be able to designate just one source dataset (the images, generally speaking) vs the annotations (measurements and segs).   For now they can both be read only but the idea would be to save out annotations to your own database for further analysis.

Per discussion with @Punzo today, considering there's work in this direction in Slim being explored between @igoroctaviano and @hackermd, and that the urgency of being able to avoid data replication is much greater for slide microscopy data, we should probably wait until a solution in Slim is developed, and then use that experience to add support in OHIF.

@igoroctaviano summary from the multiple/dynamic discussion
Use case:
Reading data from multiple servers. Wwe can start from 2, but we would need to generalize to N.
NOTE: writing segmentation to another server use case is out for the moment.
Steps to implement:

implement reading from multiple servers in DICOMwebclient library
add the servers in the config
add UI to select the servers
using the url to select the servers -> we need a generic solution, not only using google.

@igoroctaviano summary from the multiple/dynamic servers discussion
Use case: Reading data from multiple servers. We can start from 2, but we would need to generalize to N.
NOTE: writing segmentation to another server use case is out for the moment.
Steps to implement:

implement reading from multiple servers in DICOMwebclient library
add the servers in the config in a static way
add UI to select the servers dynamically
using the url to select the servers -> we need a generic solution, not only using google.

Is there any update about this, glad to see it in progress now.

I know we've been going back and forth about this, but I want to refocus this discussion to the original issue and specific use case where we need support.
We have an analysis use case where we perform segmentation for a large number of CT series, and we want to visualize those series. It is absolutely not practical (and very expensive) to replicate the CT series segmented. As part of the processing notebook, we are creating a separate DICOM store that will contain segmentations. Here are the constraints and expectations:

There will be only 2 DICOM stores.
The user will know exactly the locations of those stores at runtime.
The user will have full control and complete understanding of what is located in which DICOM store.
The user will be able to specify via explicitly via URL fully resolved location of the study in the first DICOM store that will have images, and fully resolved location of the (same as defined by StudyInstanceUID) study in the second store that will have the segmentations.
The user will want to see the content of the study loaded from 2 stores in the viewer without the need to differentiate in the interface the specific DICOM store from where a given series of the study is coming from.

The user will not need to write anything to either of the DICOM stores through the viewer. All writing of the segmentations to the DICOM store will happen outside of the viewer. The segmentations store can be expected to be fully populated at the time viewer is invoked

There will be situations, though, were data will be stored. The question then arises which store shall be used. Both? Only one of them? Which one?

The user will be able to specify via explicitly via URL fully resolved location of the study in the first DICOM store that will have images, and fully resolved location of the (same as defined by StudyInstanceUID) study in the second store that will have the segmentations

If we can make the assumption that one store will serve as the "primary" store for source images and the other store(s) as "secondary" score for annotations/segmentations, then this would potentially simplify things a lot. The "primary" store would then be used to search for studies. The "secondary" store would then have to be searched for a selected study. If we can further assume that the results don't have to be merged (i.e., images will only be queried and retrieved using the "primary" store and annotations/segmentations will only be queried and retrieved using the "secondary" store), then we can use separate DICOMweb client instances and they don't necessarily have to be aware of each another.
This will mean, however, that any annotations/segmentations in the "primary" store would be ignored.

This issue has been available in the IDC fork for some time now, and seems to work well, so I am closing this issue.


Strict concurrency

Enable strict concurrency for swift 5.8+
Add Xcode 15/swift 5.9 test strategy
Fix use of deprecated batch read API in tests

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

Comparison is base (3609fc9) 86.09% compared to head (9a974b6) 85.91%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #21      +/-   ##
==========================================
- Coverage   86.09%   85.91%   -0.18%
==========================================
  Files          20       20
  Lines        1683     1683
==========================================
- Hits         1449     1446       -3
- Misses        234      237       +3

Files
Coverage Δ

...CoreDataRepositoryTests/BatchRepositoryTests.swift
99.29% <100.00%> (ø)

... and 1 file with indirect coverage changes

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


Find a way to auto-run migrations on deploys that doesn't have race conditions for migrations

The server image entrypoint currently runs migrations and then starts the server. This is problematic if you want multiple replicas, because the replicas may all try to execution migrations at the same time. We need either some kind of leader election for which replica really runs the migration, or some other mechanism to execution migrations on deploy. Perhaps helm's deploy mechanisms have something that could help us here?

cc: @snoshy

Looked into this a little bit, but will need to evaluate our options in greater depth later.  Helm does have support for hooks that allow for triggering a deployment after a singleton migration job has finished.  I'll need to see if this would actually work for our use case.  Another option is to use an init container, which would be a more kube native approach.  There might be other options as well.
cc: @neutralino1 since he commented on the PR as well.

Implemented as a hook that runs the migration on its own before the servers are started.


[AERIE-1873] feat: ag-grid table implementation

This resolves https://jira.jpl.nasa.gov/browse/AERIE-1933.
It includes a generic ag-grid table component and replaces the Activities, Constraints, and Scheduling Goals tables.

Is it easy to remove the individual cell highlighting for now?


Single-year indicators - bar charts

Should all single-year indicators be automatically converted to bar charts? An example is 2.4.1. The single-year "dot" is difficult to see in a line chart.

Try this automation.

This is complete.


Duplicate / confusing jars in shipped game zip

On semi-randomly poking around I noticed by change that our game zip ships with a few dependencies that look to be duplicated with different versions. This could have snuck in and not matter, could be transitive dependencies etc, but it seemed worth mentioning since it includes big scary ole Reflections.
Suspicious sets:

annotations-13.0.jar + annotations-2.0.1.jar
DiscordIPC-0.4.jar + DiscordRPC.jar (in the Discord subsystem, I only see the IPC - I guess the other could just be transitive)
google-http-client-1.20.0.jar + google-http-client-jackson2-1.20.0.jar - I suspect this might be coming in indirectly via the CrashReporter - but do we need both? I also see httpclient-4.5.2.jar
reflections-0.9.10.jar + reflections-0.9.12-MB.jar - I think the second one might be built via our fork?
TeraMath-1.5.0.jar - not a dupe, but what's that still doing in here 🤔

Can probably be investigated pretty quick with some Gradle dependency graph trawling but I've got enough tangents open right now as-is :-)

reflections-0.9.10.jar + reflections-0.9.12-MB.jar - I think the second one might be built via our fork?

Correct. And this is the one that worries me. On the one hand, if by some chance we have some dependency with a transitive dependency on the upstream reflections-0.9.10, it might be a little bloat but I don't know if it's risky beyond that.
But the Reflections class is a part of the public interface of gestalt-module. So if we somehow end up with multiple different implementations of Reflections that we're trying to pass around among engine, gestalt-module, and nui.reflect or whatever else, that sounds like it might make for some very hard-to-debug situations.
I guess the thing to do is look at the dependency graph in a build scan and see what is depending on each of them.


Collocated errands (errands v2) - Appropriate manifest syntax

I have installed a BOSH Director which aims to support collocated errands (errands v2)  => https://github.com/cloudfoundry/bosh-notes/blob/master/errands-v2.md
The release is v263.1.0.
In the manifest, I don't find the appropriate syntax to collocate errands and service jobs.
What is the keyword ?
Where can I find a manifest sample in order to help me ?

Hello,
A quick feedback about the issue.
Finally, the syntax documented in https://github.com/cloudfoundry/bosh-notes/blob/master/errands-v2.md is fine.
The steps followed in order to use collocated errands :
*Delete the uploaded release in old BOSH Director
*Upload the release with the BOSH Director that supports collocated errands (up to v263)
*Deploy the release and apply the syntax (described in bosh-notes)
*The command "bosh -d foo errands" returns all errands (collocated ones and others)
The issue is now close.
Thanks and regards,
JC LOSAPIO.


Refactor hardware initialization

gmdrec currently supports two hardware options:

the original version sold on tindie (rev1c/rev1d) (also electrically identical with the breadboard version)
the second revision (rev2a) sold as a stemma QT accessory

also to consider:

tentative third revision of the PCB which integrates mcp2221a  on second revision form factor & MCP4561/4562 so calibration can be stored on the digipot  (+ pulldown shenanigans)

gooey complicates things slightly, as the python script needs to evaluate so that we can display the UI, even when nothing is connected yet. Then the user can connect either of the two revisions, or just half of the second revision (the adafruit breakout). Only the second revision carries eeprom. Third revision uses eeprom on the digipot chip (10 addresses available - just enough). As soon as the device is connected, the digipot needs to be put in shutdown to avoid #4. This is currently handled although in a bit of a convoluted manner, as it is intermingled with settings.py as well.
MCP4562 is put in shutdown differently, writing to TCON register (04h) disconnects the wiper or the B terminal from the resistor network, but it doesn't automatically re-enable it on writing a new wiper value.
Figure out how to refactor hw initialization to make it more simple and modular.

also integrate/rewrite adafruit_24LC04 into hardware.py
retarget for v0.7

mostly done really

re-implemented based on the return value of the status register (05h) on mcp4562 (rev3) https://github.com/fijam/gmdrec/commit/b28a4c007aa06e2c198a870288bff92e981b666a


Issue with "You need to provide your API key in an Authorization header using Bearer auth"

I am facing difficulties while using the AI Dashboard with my personal dataset in .csv format. Despite my attempts on both my local machine and using my ChatGPT key, I am not able to view any results. I have followed the provided documentation and troubleshooting steps, but the problem persists.in the console o got this error https://api.openai.com/v1/completions

Hello @Zouhir-ZT !
Were you able to fix it?


Add stats mp upload part copy

Add item missed at #1180 (RCS-220)

Code looks good and clean; Another pull requests merge made this branch conflicting, I'll +1 after rebase.

Thanks for notification! Rebased on current develop 9519ff5 and force pushed.

@borshop merge

See RCS-11 for release notes.


Docs on Reachability contradict Apple's docs.

In the AFNetworking docs about Reachability:
"Network reachability is a diagnostic tool that can be used to understand why a request might have failed. It should not be used to determine whether or not to make a request."
Apple's docs:
"If the task failed, most apps should retry the request until either the user cancels the download or the server returns an error indicating that the request will never succeed. Your app should not retry immediately, however. Instead, it should use reachability APIs to determine whether the server is reachable, and should make a new request only when it receives a notification that reachability has changed."
Why does AFNetworking recommend against using reachability to determine if it's appropriate to make a request?

My personal experience with Reachability is that I've needed to use it to determine when I definitely should not send a request to server. Getting a status of reachable does not guarantee the request I am about to send will actually make it to the destined server, so I should not write code that assumes that. When I get NotReachable, I can be sure ahead of time that it won't make it.

I think the difference is that Apple is talking about how to handle a potential retry after a request has failed. You should never use Reachability to decide whether or not to send the original request. It can be used for diagnostics to determine how to handle failures, for example, whether or not to retry the request immediately.

Watch any of Apple's sessions; Reachability's docs are incorrect. You must not use Reachability to gate connection attempts.
Or heck, look at Apple's apps.

@kcharwood: That's the wrong behaviour. If you're told the server is unreachable, it only means that it's not currently unreachable. Attempting it may make it reachable.

Try 2012 session 706, "Networking Best Practices."
The whole video is great, but you should watch from 32:50. The statement at 32:56 is very clear: "Don't check the Reachability object to determine if something's available. It can be deceptive in some cases. You want to go ahead and just make the attempt anyhow. If you succeed, you're done. If you don't succeed, you want to wait for another Reachability change notification before you attempt again."
Though this is misleading, too: If your UI allows you to add a simple way for the user to indicate they want to try again now, like Safari has, you should definitely try again if they tap that rather than just waiting. iOS can be lazy about connections; until something tries networking, it may take a while before the OS notices it could connect here and attempts to.

@tewha I think we're saying the same thing, but I am not sure. If I see notreachable, I am not going to send out the request. In addition, when I do see reachable, I can't assume it will actually make it. I need to be prepared for that to still timeout, fail, etc and code for that. Make sense?

@kcharwood I understood you. You're not doing the right thing.
If Reachability says the server is unreachable, you're supposed to try anyway. Because even though Reachability says it won't work, it will often be wrong about that and it will work.

@tewha That's really interesting. Certainly doesnt match my experience with Reachability. In just about all cases I can remember, trying the request anyway leads to a request that eventually times out, giving a poor user experience.
Have you seen requests work often when reachability declares something as not reachable? Just doesnt seem to match up with the 100+ apps I've been involved with.

Yup. Happens all the time with Safari on my iPad.

@kcharwood In most cases, you are correct that Reachability is very reliable. However it can and does get confused under some conditions and reports the network as unavailable when it is. I know this first-hand because we unfortunately implemented our mobile app to disable most features when Reachability reported the network as unavailable. We then discovered the edge cases which caused users to be unable to access features even though they clearly had network coverage.
One of the easiest ways for us to reproduce this was to use the app on an iPhone on WiFi, enter an elevator on a high floor in an office building, put the phone in a pocket while going down to the first floor, exit the building, and then open the app. Around 5% of the time, doing this will not trigger a Reachability notification when the phone connected to the cellular network. It will continue to report network unavailable from losing it during the elevator ride.
That's when I researched more and discovered that Apple recommends against using Reachability to prevent network requests. I also looked at other apps -- Safari, Facebook, Twitter, Google+. None of them prevent users from doing whatever they want when they show a no-network-connected banner. They use Reachability merely to show the banner so users know that they may not be able to use the app. But they still send requests based on user interaction even if they believe they don't have connectivity.

Wow, quite a lot of confusion here. My takeaways:

Do not use Reachability to determine if an original request should be sent.
(optionally) Use Reachability to determine if a request should be retried.
Reachability is most useful for giving the user ahead of time feedback about connectivity status (e.g a banner). Potentially lessening the annoyance they feel when a request fails.

Reachability is not "confused." Reachability is doing exactly what it's supposed to do. This is what's so important to understand about Reachability, and it's obvious if you think about the power level involved in networking:

Reachability will report that unreachable if the networking hardware is powered down.
Attempting to make a connection will power up the networking hardware.

If you are relying on Reachability saying something might be reachable, you are relying on something else (a background process) powering up the networking hardware. There's a number of them in the OS, don't get me wrong, so it's unlikely it'll stay down forever. But many of these processes can be disabled. The result can quite easily be the phone sitting in the middle of a room with beautiful networking, Reachability reporting "not reachable." But if you were to try sending a network request, the hardware would obediently power up, establish a connection, and the request would succeed.

Yes, automatic transparent retry is indeed what I meant :)

@tewha Fair enough. However in my experience Reachability can continue to report "not reachable" even when other apps have just used the networking hardware. That was the situation we ran into. Switching to Safari, making a successful web page request, and returning to our app would still claim that our server was unreachable.
@ileitch Yes, your takeaways are spot-on.

@taylesworth That could be, too. Networking is a mess. :) I wonder if tearing down the Reachability and re-establishing it would have fixed it.

@tewha Probably. Now if only we could have something to indicate when we should re-establish Reachability...  ;-)

Oh, I thought of one other thing. @kcharwood, this might explain the differences we see. If your app is set to require a persistent WiFi connection, the iOS is likely more aggressive about getting networking back on. I still wouldn't completely trust this, though, as it's probably not as aggressive enough to detect a network connection faster than the user can tap a retry button.
@ileitch's takeaway is still the right approach.

We actually do set that is quite a few of our apps, so that may be a good note worth calling out.

@ileitch what about a PR to add your takeaways points to AFNetworking docs? (I'm assuming it is possible to open a PR for the docs)

In any case, I think we can update the docs. Where are they? :)

Nevermind, found them, I'll fix something up and y'all can see if it needs more work.

There. I think this definitely needs more work before its merged, and I'll look at it again, but if you guys have any feedback:
https://github.com/AFNetworking/AFNetworking/pull/2704/files

To address the original issue:
@ileitch The two statements you cited are actually not incompatible. As @taylesworth pointed out, Apple's documentation here is talking about using reachability as a condition for retry, whereas AFNetworking's documentation is making a broader statement that reachability should not be used as a condition for initial request (which is @tewha's point). AFNetworking's not incorrect, per se, it could certainly be improved. AFNetworkReachabilityManager is one of the more misunderstood components of AFNetworking, and something I've been wanting to address for a while.
Thank you all for your discussion so far. I would encourage you to lend any further insights into #2704, so that we can make those necessary improvements to the documentation.


fix: Fix reset dialog

Motivation / Background

This Pull Request ...
Details

Additional information

Current dependencies on/for this PR:

#5792  👈
main

This stack of pull requests is managed by Graphite.


Force LF download of script using .gitattributes

I'll accept this patch.
But git on cygwin keeps LF with default settings.
So, I'm wondering that this patch is useful or not.

I don't use git-cygwin package, and instead I install a portable git (and git-lfs) and use it from command line and SourceTree.
Official git on Windows installer ask for the line-ending configuration.


Converter from Yggdrasil model to TensorFlow SavedModel

Add a command line tool, such that a model (whenever possible) trained with Yggdrasil can easily be imported in a TensorFlow colab for exploration.

In the meantime:

Yggdrasil models can be converted into TF-DF models with the tfdf.keras.core.yggdrasil_model_to_keras_model. This method could be wrapper into a CLI.
Yggdrasil models are naively supported by the TF-DF model inspector.


Fix kubectl apply commands

Doc bug in calico.md found in 3.10 by Tomas.

Can merge at any time to 3.11
Confirmed by Laurence
Normal regression for fix: 2 versions back

Deploy preview for calico ready!
Built with commit f4b2273cb4917dcb949d9bf860eaa60821a7e571
https://deploy-preview-3056--calico.netlify.com


Use Nginx to make Buildbot logs available via CORS

Buildbot itself (neither the current version eight nor the upcoming
verison nine) does not seem to have built-in CORS support, so use Nginx
to supply CORS headers while reverse proxying.
This is only needed to download log files, so start with a very
conservative set of CORS headers. In particular:

Only support basic CORS requests (those that don't require preflight
requests via OPTIONS). This means supporting only GET requests.
Do not allow sending cookies or exposing any headers.
In return, whitelist all domains for CORS, and send the Allow-Origin
header unconditionally, as the actual value of the Origin header does
not matter.

Because we are using proxy_pass to reverse proxy Buildbot, we need to
tell Nginx to always add the CORS headers, instead of only adding them
for successful responses. (I.e. add CORS headers even for 404s and other
erroneous status codes). This features is not available in the Nginx
packaged for Ubuntu Trusty, so replace it with a newer Nginx from
upstream Nginx's respositories.
Because Debian/Ubuntu modify the default configuration for Nginx, use
Salt to ensure that the installed nginx.conf properly looks into the
sites-enabled directory (which is a Debian-ism) and that the default
handler in /etc/nginx/conf.d/ is purged.
In order to only support CORS on GET requests, use the 'if' directive.
However, because Nginx's if is evil,
(https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/)
add a bunch of tests to ensure that the configuration is working.
Also, update the Nginx states to follow Salt best practices.
Fixes #354. Blocked on #374 because I encountered various failures
while upgrading from the Ubuntu Nginx to upstream Nginx, and I'd
like to make sure I caught them all.

This change is

cc @jdm: Is this sufficient to pull the logs you needed or do I need to support OPTIONS/preflight requests too?

I don't know of any reason that preflight requests should be required.

No longer blocked since #374 merged a while ago. @bors-servo try

:hourglass: Trying commit 5d93b54 with merge f805856...

:broken_heart: Test failed - status-travis

:umbrella: The latest upstream changes (presumably #544) made this pull request unmergeable. Please resolve the merge conflicts.


User query selection

Feature request
Need to implement selection of query type for end user.
Possible solutions

Simple list of options for user to choose from.

1.  Patient ID
2.  Enterprise ID
3.  First Name
4.  Last Name
5.  Date of Birth

Implement Bullet project for an interactive menu selection.

Addressed in PR #5


TDTM_Allocation: Excluded User still hit with Inactive Fund

I've excluded the user from the TDTM that sits on Allocation__c but when I try to update an Allocation connected to an inactive GAU, I still get the validation error that the GAU is inactive.
Is this not the correct to bypass the validation?

@chasefriedman we don't provide support here in GitHub. Can you post your question, with images and steps to repeat in the Power of Us Hub NPSP Group?

Thanks for the thought however we don't have access to that community as we're not a non-profit. Do you have another place we could go for support?

@chasefriedman are you are Consultant working with a Nonprofit? If so, you can request access to the Hub for support. If you can email me at<EMAIL_ADDRESS>I can help further if that's the case.


modified:   daemon/config/config_test.go

Ⅰ. Describe what this PR did
Ⅱ. Does this pull request fix one issue?

fixes #1758
Ⅲ. Describe how you did it
write 5 test case to test for daemon/config/getUnknownFlags
Ⅳ. Describe how to verify it
{name: "test0", args: args{flagSet: flags, fileFlags: map[string]interface{}{"a": "a"}}, want: nil}
{name: "test1", args: args{flagSet: flags, fileFlags: map[string]interface{}{"a": "b"}}, want: nil}
{name: "test2", args: args{flagSet: flags, fileFlags: map[string]interface{}{"a": "c"}}, want: nil}
{name: "test3", args: args{flagSet: flags, fileFlags: map[string]interface{}{"a": "d"}}, want: nil}
{name: "test4", args: args{flagSet: flags, fileFlags: map[string]interface{}{"b": "a"}}, want: nil}
Ⅴ. Special notes for reviews
Ⅴ. Anything else we need to know?
baiji group 1, to be NO.1!

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

Codecov Report

Merging #1796 into master will decrease coverage by 3.49%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master    #1796     +/-   ##
=========================================
- Coverage    56.3%   52.81%   -3.5%
=========================================
  Files         200      200
  Lines       15657    15657
=========================================
- Hits         8816     8269    -547
- Misses       5745     6255    +510
- Partials     1096     1133     +37

Flag
Coverage Δ

#critest
33.55% <ø> (+0.07%)
:arrow_up:

#integrationtest
37.65% <ø> (-0.01%)
:arrow_down:

#unittest
14.09% <ø> (-6.24%)
:arrow_down:

Impacted Files
Coverage Δ

pkg/multierror/def.go
15.38% <0%> (-84.62%)
:arrow_down:

daemon/logger/loggerutils/tag.go
0% <0%> (-81.82%)
:arrow_down:

pkg/utils/utils.go
25.64% <0%> (-64.53%)
:arrow_down:

pkg/bytefmt/bytefmt.go
28.81% <0%> (-64.41%)
:arrow_down:

daemon/mgr/container_envs.go
11.76% <0%> (-54.91%)
:arrow_down:

daemon/logger/info.go
0% <0%> (-53.66%)
:arrow_down:

daemon/logger/syslog/validate.go
0% <0%> (-52.64%)
:arrow_down:

pkg/utils/templates/templates.go
0% <0%> (-50%)
:arrow_down:

pkg/utils/filters/filter.go
22.5% <0%> (-50%)
:arrow_down:

pkg/net/interface.go
49.47% <0%> (-46.36%)
:arrow_down:

... and 26 more


Extra blank page printed in Chrome for single paged document

Attach (recommended) or Link to PDF file here:
SinglePagedPDF.pdf
Configuration:

Web browser and its version: Google Chrome Version 71.0.3578.80 (Official Build) (64-bit)
Operating system and its version: Windows 10 Pro Version 1803
PDF.js version: latest
Is a browser extension: no

Steps to reproduce the problem:

Try to print a single paged document(see attached file) in the demo link https://mozilla.github.io/pdf.js/web/viewer.html
Check to see if it has an extra blank page appended to the end

What is the expected behavior? (add screenshot)
The document is a single paged document. When I print it, it should have only 1 page.
What went wrong? (add screenshot)
Adds an extra blank page.

When I tested, this behavior is only for single paged documents.

Closing since this is a duplicate of e.g., #9295.


Blob test new migration

(message created by the CI based on PR content)

(message created by the CI based on PR content)


Add ESP_IDF_VERSION=4.4 to the environment settings in up-coming ESP-IDF v4.4.4 (IDFGH-9295)

Is your feature request related to a problem?
Please add ESP_IDF_VERSION=4.4 to the environment settings in IDF v4.4.4, as is done in IDF v5.0 and thus making it easier to use scripts between those 2 versions of ESP-IDF.
Describe the solution you'd like.
Upon starting any ESP-IDF v4.4.4 command shell, the use can rely on the environment variable ESP_IDF_VERSION being set to 4.4 for any scrips to use.
Describe alternatives you've considered.
At the very least, at the very bottom of %IDF_PATH%\export.bat, please add:
if %ERRORLEVEL% NEQ 0 (
echo error %ERRORLEVEL% occured, end this script, leave this cmd window
goto :eof
)
:: Check for a user customization script is present, and skip it if one is not.
if NOT EXIST ..\user_customization.cmd    goto :eof
:: Clear return code then call user customization script.
set "ERRORLEVEL=1"
set "ERRORLEVEL="
(call )
echo a customization script exists, calling it now that return code was cleared to %ERRORLEVEL%
call ..\user_customization.cmd
echo customization script returned %ERRORLEVEL%
if %ERRORLEVEL% GTR 0 (
echo user customization succeeded with %ERRORLEVEL%, closing this cmd window
exit
)
if %ERRORLEVEL% LSS 0 (
echo user customization failed with error %ERRORLEVEL%
)
:: else %ERRORLEVEL% EQU 0 leaving this cmd window open
Ideally, both this and ESP_IDF_VERSION=4.4 would be added to the IDF v4.4.4 release & the current IDF v5.0 release branch.
Additional context.
No response

The environment variable was added in b5b0b4d.


Manually set quaternion rotation values on skeleton animations do not work and throw error

Godot version
4.0 Alpha 6
System information
Windows 10 Nvidia GTX 1060 Intel i5 4690k
Issue description
Relevant : #55864
Animations with quaternion rotation tracks will work in Godot. However, if you manually set a rotation value in a rotation track,
 The start quaternion must be normalized.
As a result, the rotation track does not work for the values you have added

In the sample project, you can open the test.tscn and play the animation and see the error.
The fix for #55864 allows quaternion values to be entered and saved into rotation tracks, however the rotation tracks once edited can no longer be, I guess "used".
Steps to reproduce

Have any godot animation on a skeleton WITH a rotation track. (OR you can edit any existing rotation track keyframe)
Insert a keyframe in the rotation track in a spot that has no keyframes
Click on the keyframe
Manually update the keyframe in the inspector(Pick a random value, ex. (0,0,0,1) ==> (.2,.3,.1,1)
Save
Either play the animation, or go through the animation in the animation player
The console will be flooded with the errors as long as it plays

Minimal reproduction project
Testt.zip

cc @TokageItLab

Dupe of #39229. This is a usability issue, not a bug. reduz plans to implement a GUI for quaternions, as mentions in #39229.


Removed redirect on HEAD request

HEAD request won't automatically get redirected by browsers. It is therefore more useful to resolve the redirect already internally, such that clients can detect if the image can be found without having to perform an explicit extra request. This is also needed for some libraries to work correctly (e.g. the angular-retina library we use at Magnet.me).
@rogierslag @joostverdoorn @wouter-willems - RFR!

:+1:

:+1:


Add outline for atom-reason.

Fuck, this is awesome...
Can I have a screenshot please?

Of course :)

Whoa! Awesome!

Great, thanks! I'll try it =D

Oh no! I forgot the order is reversed... One sec.

Oops, already merged. While we're at it, can you make sure that you run npm start one last time to get to latest js/map artifacts?

Also, can we have these printed as Reason code when it's in a re/rei file?

.map file also contains lines like this: "/Users/chenglou/.opam/4.02.3/lib/js_of_ocaml/fs.js". I will find-replace my username for now.
I will check how reason signatures are different later. Have to fix the order and go to the bed.

Yeah the source map absolute path problem is a KP (cc @SanderSpies). Currently it's not too important, as it's developer-facing and if you were checking these things locally, after the build command it'll be pointing to your local absolute path anyway (thus loading the source maps correctly).
I see that the current val and sig and such outline labels are hard-coded; This is easy to fix with another layer of hard-coding. Btw, here's a handy ml <-> re conversion trick.


Is it possible to use modern spfx or typescript project which works in classic site?

Category

[x] Question
[ ] Typo
[ ] Additional article idea

Question
Is it possible to use modern spfx or typescript project which works in classic site with any work around?
I would like to use modern development tools and technology like React, typescript, ES6 to our old projects in future if we migrate code we will have little work.
So any suggestions or idea to use this in classic website is most welcome
Thanks in advance
Environment details (development & target environment)
Submission guidelines

!!IMPORTANT!! - All submissions must complete the baseline sections included in this template. Ignoring or deleting this template may result in closing the issue with the label type:incomplete-submission.
Follow our guidance on How To Create Good Issues.
If you are reporting an issue around any of the documents or articles, please ensure that you have referenced the specific file or URL of the related document.
If you have technical questions about the framework, we monitor the tags #spfx, #spfx-webparts, and #spfx-tooling on SharePoint StackExchange.
Remember to include sufficient details and context.
If you have multiple questions, suggestions, or bugs, please submit them in separate issues.

DELETE THIS SECTION BEFORE SUBMITTING
Thanks for your contribution! Sharing is caring.

Once uploaded in the app catalog and installed in the site collection, you can use it on the your classic pages which have custom page layouts and master page.
It will appear in the webpart gallery under the "Under development" section and then you add it like you add a normal webpart.

SPFX WebPart solution also supports to use in Classic web site, once editing the classic page, you can find out the spfx web part in Other tag:


fixed failing windows miniconda setup

Separated windows and linux workflows
Disabled mamba in windows workflow, as this causes conda-incubator/setup-miniconda@v3 to fail currently (https://github.com/conda-incubator/setup-miniconda/actions/workflows/example-6.yml)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>8
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 81.091%

Totals

Change from base Build<PHONE_NUMBER>3:
0.0%

Covered Lines:
1690

Relevant Lines:
1983

💛  - Coveralls


Incremented version to 1.2.4.

Coming from https://github.com/opensearch-project/opensearch-build/issues/1417.

Codecov Report

:exclamation: No coverage uploaded for pull request base (1.2@c20dec4). Click here to learn what that means.
The diff coverage is n/a.

@@          Coverage Diff           @@
##             1.2     #264   +/-   ##
======================================
  Coverage       ?   78.60%
  Complexity     ?      214
======================================
  Files          ?      173
  Lines          ?     6959
  Branches       ?      912
======================================
  Hits           ?     5470
  Misses         ?     1006
  Partials       ?      483

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 c20dec4...d3a8f6b. Read the comment docs.


Fix publish

Coverage remained the same at 88.235% when pulling 3fa6e26b727f3953e266a1c80945de31ee20a1d1 on fix-publish into fbe8b9f71283e11ea911f867d238597ebc11b77e on master.


Allow multiple range values to map to the same category

Usually for a categorical dataset, the range will be encoded as integers, each of which maps to a different category (e.g. forest, surface water, etc). But one of the things we want to do in MELODIES is to allow remapping of a dataset from one set of categories to another (usually smaller and more general) set. This could be done by changing all the values of the range, but a neater way would be simply to change the parameter set and the contained category mapping. For example:
Source data:
"categories": [ {
      "value": 1,
      "label": "Arable farmland"
    },{
      "value": 2,
      "label": "Livestock farmland"
  }, ...
]

Remapped data:
"categories": [ {
      "values": [1,2],
      "label": "Farmland"
    }, ...
   ]

The implication of this is that we should allow multiple range values to map to the same category. (The overall idea is that this mapping could be done automatically, through ontologies.)

That makes sense, should be an easy change to the spec.


Docs: define extension rules

It would be helpful to document the intended behavior of the "extends", "is_base", and "points_base" fields of equipment so we can use them correctly.  From the data, it seems like:

If an entity "extends" another entity, the type (list of markers, references, and optinoal references) should be made up of the ones specified in the leaf entity, as well as these fields on equipment read by following "extends" fields.
If a piece of equipment "extends" another one, you should be able to follow the list of "extends" equipment until you reach one where "is_base=True"
The points and functions list of a piece of equipment contains the union of all pieces of equipment it extends.
What is points_base for?

Sorry for the delay on this, will get this updated in the docs and share and be more active in the repo in 2024.

@stevedh We will update the docs to reflect this, but in answer to your questions:

If an entity "extends" another entity, the type (list of markers, references, and optional references) should be made up of the ones specified in the leaf entity, as well as these fields on equipment read by following "extends" fields.

Answer: Correct

If a piece of equipment "extends" another one, you should be able to follow the list of "extends" equipment until you reach one where "is_base=True"

Answer: In general yes, although there are exceptions. In general the is_base flag is a grouping mechanism concept.

The points and functions list of a piece of equipment contains the union of all pieces of equipment it extends.
What is points_base for?

Points and functions are not automatically inherited by extended equip types. By specifying points as points_base, they are then applied to the base type and inherited by the child equip types.


Consider renaming CLI options to match Nunjucks

One small point of confusion I had while migrating over from a different Nunjucks tool was the --template CLI option. After looking through the source, I realized that it seems to work the same as searchPaths (https://mozilla.github.io/nunjucks/api.html#filesystemloader).
You might consider renaming that to match or adding a note to help avoid similar confusion in the future.

Since, changing the option will be a breaking change, I've added clarification in the cli help. I hope it helps.
v3.0.6 is out now 🎉, and it was 99th commit in this repo 😜.

Thanks!


configure debounceTime on modelChange event

[ ] bug report => search github for a similar issue or PR before submitting
[x] feature request
[ ] support request

Current behavior
ModelChange event fires on every keystroke
Expected behavior
Possible to configure a debounce time on modelchange (not field as already possible)

Angular version: 7.2.4

see https://ngx-formly.github.io/ngx-formly/examples/field-options/model-options

I'm I right that this is only a 'field' setting?

I like to set it on the FormlyFormOptions so it is debounced for all fields

sorry I've missed your note

not field as already possible

use a custom extension (landed in V5) which allows you to pass the default options during the build process, see the following example https://stackblitz.com/edit/angular-gqidyp-zmudf2

one question left, i see that you can name the extension. In your example "defaultOptions".
Is it than also possible to select the pre defined option when declaring a formly form control.
Let's say that i like to have one form to update the model immediately, and on another form debounced?

Let's say that i like to have one form to update the model immediately, and on another form debounced?

just pass options input with an extra property to differentiate between the two scenario, then inside extension check that property from field.options to decide which case you may want to apply


'mono' could not be spawned - again

See 'mono' could not be spawned #128

Resolved on OS X 10.9.
Notes to others:

Make sure to set the path in both the ionide-paket and ionide-fsharp package settings.
Make sure that you're setting as a directory, i.e. /usr/local/bin, rather than a full path to an executable like /usr/local/bin/mono.


Take DB lock before updating port status.

Fixes #869

Ugh, the lock isn't re-entrant so this deadlocks.  Back to the drawing board...


Made BrownianTree deterministic wrt entropy

Thanks for the library, I'm enjoying using it.
Fixed the issue in the title. I've not tried modifying the corresponding C++: the code for determinism wrt seeds looks a bit more finickity there.

Thanks for catching this problem and quickly coming up with a patch!
I think there's perhaps a deeper problem here. Since the queries outside of the range of [t0, t1] are based on the BrownianPath logic, there currently are no guarantees that the global entropy will determine what the sampled values are out there.
I think the present fix is good enough to be merged. But I'll open up a separate issue discussing the general problem. I think the case is rare enough that people probably won't actively ask for values outside [t0, t1], if they were explicitly giving t0 and t1 to the data structure. Though, at least there should be some warning or documentation on this.

Actually, I think it's worse than that! When I've queried with t > t1 (by accident), I actually observe that None is returned, e.g.
torchsde.BrownianTree(t0=torch.tensor(0.), w0=torch.tensor(0.))(2.)

Not helped by the implicit assumption that t1 = t0 + 1.

I think you're right, this is problem. Could you open up another issue? I can fix this right away. I also had plans for enhancing the tests for the brownian components. I think this should be done in a unified commit.
Thanks again for pointing this out!

As a side note, I'll also send in a patch for the C++ side. That part was written somewhat hastily, so definitely no worries for not walking through that!


Minor documentation error

Should this param be of type Shape instead of Body?

Yes! Fixed it. Thanks!


feat: add GetAccessorDecl, SetAccessorDecl, TaggedTemplateExpr, OmittedExpr

Adds new AST nodes:

GetAccessorDecl
SetAccessorDecl
TaggedTemplateExpr
OmittedExpr

Allows GetAccessorDecl, SetAccessorDecl and MethodDecl in ObjectLiteralExpr.
const obj = {
  get foo() { }
  set foo(f) { }
  method() { }
}

Add isOptional to PropAccessExpr and CallExpr.
call?.();
prop?.access;

I cannot leave comments on lines that didn't change... :(
Missing enusure for OmitElm in visit.

Errr, actually, where you going to update ArrayBinding to use OmittedExpr?
export type ArrayBindingElement = BindingElement | OmittedExpression;

Also looks like BindingElm name is ending up undefined now? (failed tests)


shelldap: 1.4.0 -> 1.5.1

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

This seems good to me once you explain why checks are disabled. But I can't really test anything as I don't have access to an ldap server anymore, so I trust you on the fact that it works! Anyway, the current derivation certainly fails as the gitlab server seems to have moved to github.

@Janik-Haag @tobiasBora Thank you for your review, I added a comment to doCheck = false. If you want to try this tool, there are plenty of public LDAP servers to connect to.

@yu-re-ka oh thanks for your review. I found out what wen't wrong. When I initially changed the upstream repo, I forgot to bump the version. I noticed that und changed the version in the derivation. The build was successful, as the unchanged source hash was still cached and it actually build an old version.
I updated the hash now and had to update the dependencies too. It should work now.

@ofborg build shelldap

Folowup: https://github.com/NixOS/nixpkgs/pull/258079


totalitems with long type

Please add support for totalitems with long type.

That is a good idea, I will do that!
You must be paging through some really huge lists :-D

@joeaudette Thats right :-D

This is now implemented and new nuget packages have been published.
Thanks again for the good suggestion!

@joeaudette Thanks. You're too fast


Does this support unity 2020?

This error occurs in a blank project when running with Unity 2020 LTS.
Assets\Mirror\Runtime\Transports\KCP\MirrorTransport\KcpTransport.cs(306,17): error CS0103: The name 'GUILayout' does not exist in the current context

Huh, why would GUILayout not be available? Does that work in your other projects?

My immediate thought was that the file might have had a missing using UnityEngine; directive but that directive is snuggling between using System.Net and Mirror directives.
Sounds like a random compile error. Try restarting Unity and reinstalling Mirror from Asset Store. Restart Unity again after reinstalling Mirror. Did you mess up any ASM Definitions?
If the problem persists, your installation of Unity might be faulty. Also, please tell us what operating system and platform you're developing on/for, like are you on a Mac? Running Unity Editor on Linux? Windows 11 user? etc.

not a mirror error, closing


Bump version 0.1.0 - Release 0.1.0

Please check if the CHANGLOG and README.md  looks fine.
Pending:

[ ] https://github.com/kedro-org/vscode-kedro/pull/35

@astrojuanlu Thanks, I didn't notice we messed up the format for the markup.


Disappearing backslash

When transforming some text to Markdown I observed that backslashes were disappearing:
  def processor = new PegDownProcessor(ALL & ~QUOTES & ~SMARTS)
  processor.markdownToText("hello\\ world")

  =>
hello world
 // instead of
hello\ world

I had the same issue earlier with specs2 when using "regex".r.replaceAllIn(someString, groupMatches) so maybe that's something you're using internally somewhere?

This is indeed a bug.
pegdown allows you to quote special characters (in the same way the original Markdown implementation does), however this is currently not implemented correctly. You need a double backslash in the source for one backslash to appear.
Thanks, Eric, for the report!

You need a double backslash in the source for one backslash to appear.

Yes that's what I did as a workaround. I'll take your fix once it's online (but no rush for now :-)).


fold on-demand edge sync message

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 58 (0.0%)  changed or added relevant lines in 2 files are covered.
6 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.4%) to 28.565%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/app/management/command_handler.go
0
1
0.0%

plugins/edge/plugin.go
0
57
0.0%

Files with Coverage Reduction
New Missed Lines
%

pkg/cli/cc/ports.go
6
76.27%

Totals

Change from base Build<PHONE_NUMBER>:
-0.4%

Covered Lines:
1322

Relevant Lines:
4628

💛  - Coveralls


File extensions are truncated when using 'import'

Issue Type: Bug

Add "type": "module" to package.json
Create file app.js; leave it empty to start.
Create file tool.js; add a named non-default export, and save the file:

export function abcdefg() {
}

In app.js, begin to type the name of function, in order to call it: abcdefg();
As you type, VS Code should suggest importing it from ./tool (note the lack of .js extension)
Accept the suggestion to automatically import the file
Import is added: import { abcdefg } from './tool', with no .js extension
app.js won't run — ES6 import syntax requires the complete filename, including extension.

VS Code version: Code 1.63.2 (899d46d82c4c95423fb7e10e68eba52050e30ba3, 2021-12-15T09:40:02.816Z)
OS version: Windows_NT x64 10.0.19042
Restricted Mode: No
Extensions (7)

Extension
Author (truncated)
Version

prettier-vscode
esb
9.0.0

rest-client
hum
0.24.6

vscode-docker
ms-
1.18.0

python
ms-
2021.12.1559732655

vscode-pylance
ms-
2021.12.2

jupyter
ms-
2021.11.1001550889

hosts
tom
1.2.0

(1 theme extensions excluded)

See https://github.com/Microsoft/TypeScript/issues/16577#issuecomment-754941937

See https://github.com/Microsoft/TypeScript/issues/16577#issuecomment-754941937

/question
This auto imports behavior requires separate configuration depending on your setup.
In your case you should add to Workspace (or User) settings.json "javascript.preferences.importModuleSpecifierEnding": "js" ("typescript.preferences.importModuleSpecifierEnding": "js" if needed).
@albertosantini this question is about code generated with auto imports, linked issue is about different "problem" - updates of import paths during compiling JS/TS files.

/question
This auto imports behavior requires separate configuration depending on your setup.
In your case you should add to Workspace (or User) settings.json "javascript.preferences.importModuleSpecifierEnding": "js" ("typescript.preferences.importModuleSpecifierEnding": "js" if needed).
@albertosantini this question is about code generated with auto imports, linked issue is about different "problem" - updates of import paths during compiling JS/TS files.


Building with VS 2015

I'm trying to build OpenEXR with Visual C++ and having no luck. I took the cmake route per the instructions here, but they don't work. These get me close, but I still cannot get it to build:
cd /d d:\
git clone https://github.com/openexr/openexr.git
cd openexr\IlmBase
md vsbuild
cd vsbuild
cmake -G"Visual Studio 14 Win64" ..

Build ilmbase.sln (works, but generates a ton of warnings)
cd ..\..\openexr
md vsbuild
cd vsbuild
cmake -DZLIB_ROOT=D:\zlib-1.2.8 -DZLIB_LIBRARY=D:\zlib-1.2.8\contrib\vstudio\vc11\x64\ZlibDllRelease\zlibwapi.lib -DILMBASE_PACKAGE_PREFIX=D:\openexr\ilmbase\vsbuild -G "Visual Studio 14 Win64" ..

Build openexr.sln, and I get numerous errors like:

D:\openexr\OpenEXR\IlmImf\b44ExpLogTable.cpp(52): fatal error C1083: Cannot open include file: 'half.h': No such file or directory
d:\openexr\openexr\ilmimf\ImfInt64.h(44): fatal error C1083: Cannot open include file: 'ImathInt64.h': No such file or directory

BTW, it would be super-helpful if you guys just published a NuGet package for Windows developers

@walbourn You might be interested in my appveyor support for OpenVDB (it includes building OpenEXR from source). I was actually interested in forking OpenEXR and adding support for appveyor also and maybe we can get NuGet package published too?
https://github.com/caron/openvdb/tree/v3.2.0-win-appveyor
particularly this part...
https://github.com/caron/openvdb/blob/v3.2.0-win-appveyor/appveyor.yml#L57

The vfxpro99 OpenEXR script for USD works a treat.
https://github.com/vfxpro99/usd-build-club/blob/master/prerequisites-vc140-x64/openexr.cmd

Thank you so much. That script rocks!

@caron
The nuget request is complete: https://github.com/openexr/openexr/pull/218
For package installation:
Install-Package openexr-msvc14-x86
Install-Package openexr-msvc14-x64
thanks,
coast

I believe this was fully resoved in #218.


fix: fill_match_arms hangs on a tuple of large enums

lazy computation of missing arms.

Fixes #8835

Do we need a benchmark for this?

I don't think benching single assists is worth it? Unsure.
This PR still calculates all arms eagerly where as we should try to only check whether we find a single missing arm and then actually calculate all arms in the closure instead as outlined by matklad, https://github.com/rust-analyzer/rust-analyzer/issues/8835#issuecomment-841809519

@Veykril I've seen your comment. I think it is worth to add a test with cov_mark asserting that it is lazy.

Looks good to me, thanks @iDawer !
bors r+


Poor tooltip name and description for Military Symbol Editor addin Tooltip (ArcGIS Pro)

When I hover over the Visibility addin the following tooltip is displayed:

"Show Dockpane" - there is no reason to use the verb "Show". Users know that the tool will open or do something. It needs to state the name of the addin.
"Show Dockpane" - This doesn't help the user at all. We should be describing what the user can do with the addin. Look at other tools and see how they describe the tool.

Good catch - unless there are other suggestions we can change the tooltip to:
Line1: "Military Symbol Editor"
Line2: "Open the Military Symbol Editor"

Ready to verify in next build

@csmoore I'll provide you with a better description. We should be describing what the tool does; not describing what happens when you click the addin button.

@csmoore Here's what we should use for the tooltip description....

Thanks.

Updated in #122 - looks like this now:

@csmoore @kgonzago Validated that the tooltip name and description in the individual military symbol editor addin is good, i.e. matches screenshot above. Closing this issue. This is the tooltip name and description that should be used for this tool in the single Military Tools for ArcGIS add-in.


Fix block pruning after long re-org

Current code using blockchain.hash(..) does not account for potential re-orgs that may be happening in the same DB transaction. In particular in a rare case when there are 3 branches and finalization happens along with a reorg to a longer branch, this may lead to a block being deleted from the canonical chain.
Fixes #13186

@bkchr please backup to polkadot-v0.9.37 and polkadot-v0.9.38, we can upgrade asap

@zjb0807 done.


Meta-package not building for 3.6

The import system for the meta package is broken on 3.6 but not 3.7.
See: Travis build 3.7 vs.3.6

Closing as we are going with the metalite approach.


[SPARK-38996][SQL] Use double quotes for types in error massages

What changes were proposed in this pull request?
In the PR, I propose to modify the method QueryErrorsBase.toSQLType() to use double quotes for types in error messages.
Why are the changes needed?

To highlight types and make them more visible for users.
To be able to easily parse types from error text.
To be consistent to other outputs of identifiers, sql statement and etc. where Spark uses quotes or ticks.

Does this PR introduce any user-facing change?
Yes, the PR changes user-facing errors.
How was this patch tested?
By running the modified test suites:
$ build/sbt "test:testOnly *QueryParsingErrorsSuite"
$ build/sbt "test:testOnly *QueryCompilationErrorsSuite"
$ build/sbt "test:testOnly *QueryExecutionErrorsSuite"
$ build/sbt "testOnly *CastSuite"
$ build/sbt "testOnly *AnsiCastSuiteWithAnsiModeOn"
$ build/sbt "testOnly *EncoderResolutionSuite"
$ build/sbt "test:testOnly *DatasetSuite"
$ build/sbt "test:testOnly *InsertSuite"

@ivoson @yutoacts @leesf @cloud-fan @HyukjinKwon @gengliangwang @panbingkun Could you review this PR, please.
Also cc @srielau @karenfeng @anchovYu @entong

FYI, we discussed the changes with @cloud-fan and @srielau offline.

GA passed. Merging to master.
Thank you, @cloud-fan for review.


Propagate trace context to Jenkins build agents

Propagate trace context to Jenkins build agents so plugins that execute code in the build agent have end to end view on their code execution.
It's disabled by default, to enable it, set the following configuration options through the Jenkins OTel Plugin Config screen:
otel.instrumentation.jenkins.remoting.enabled=true
otel.instrumentation.jenkins.agent.enabled=true

Testing done

Submitter checklist

[x] Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
[x] Ensure that the pull request title represents the desired changelog entry
[x] Please describe what you did
[ ] Link to relevant issues in GitHub or Jira
[ ] Link to relevant pull requests, esp. upstream and downstream changes
[ ] Ensure you have provided tests - that demonstrates feature works or fixes the issue

@timja FYI I just need to add documentation on the feature flags otel.instrumentation.jenkins.agent.enabled=true|false and otel.instrumentation.jenkins.remoting.enabled=true|false and it will be ready for review.

@kuisathaverat please review