rancher 2.0.4 server memory leak

Rancher versions:
rancher/rancher: v2.0.4
kubernetes versions:
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.1", GitCommit:"d4ab47518836c750f9949b9e0d387f20fb92260b", GitTreeState:"clean", BuildDate:"2018-04-12T14:14:26Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

Docker version: (docker version,docker info preferred)
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:38:45 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:38:45 2017
 OS/Arch:      linux/amd64

Operating system and kernel: (cat /etc/os-release, uname -r preferred)
NAME="Ubuntu"
VERSION="16.04.1 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.1 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
UBUNTU_CODENAME=xenial

Type/provider of hosts: (VirtualBox/Bare-metal/AWS/GCE/DO)
OpenStack VM
Setup details: (single node rancher vs. HA rancher, internal DB vs. external DB)
We set up a 3-nodes Kubernets cluster manually via RKE in OpenStack backed VM and deployed a single pod deployment of rancher 2.0.4(We are deploying Rancher2.0 since technical review).
Recently this system became  a web-console for our production Kubernetes clusters and We discovered that pod of cattle deployment are crashing because of OOM(RSS nearly 7GiB) every several days.
Every time cattle pod crashes, all of our cluster needs to re-establish connections to it which is actually quite annoying
Is there some progress on this issue or can we help out for further investigation?
Results:

Thanks for the info, and we are looking into resource consumption in Rancher 2.0 for both issues and helping users plan for capacity.
If you are willing to share the info:

How many clusters do you have?
Type of clusters (Custom, imported, cloud)
Number of nodes per cluster
Number of pods and deployments in each cluster

Thanks for your reply!
We are still in a premature state in our kubernetes adventure. So there are no monster-size clusters
One thing may be worth-noting: some of our clusters are actually far away from our rancher server which (possibly) led to frequent cluster-unavailable events in Rancher WebUI.
So we suspected this to be the devil of leaking memory and managed to relocate the rancher server to be network-wise closed to these off-shore clusters.
Since then, the memory consumption of cattle pod seems to be rational. Don't know whether or not the info is useful

We are seeing the same issue in production with our cluster nodes. Memory usage creeps up until all available memory is consumed, then the node becomes unresponsive and needs to be replaced. We now run 8GB nodes to alleviate the problem to a degree but as you can see in the screenshot (showing a range since Monday), there definitely is a leak somewhere.

We currently run 3 EC2 m5.large worker nodes with RancherOS 1.4.0 using the EU-Franfurt AMI provided by RancherOS and a separate etcd/control t2.medium node with RancherOS 1.4.0. Each worker node has 15-20 pods. Traffic gets to pods via EC2 load balancers managed by the K8 AWS plugin provided by Rancher. We are still running Rancher 2.0.0 but I would imagine that has little impact on this issue.
So far the etcd/control node has not crashed but the worker nodes regularly did crash.

An update of this issue.
Even after we relocated our rancher server' public Internet access point, the cattle pod still crashes due to kernel OOM kill

https://github.com/rancher/rancher/issues/12965

On a setup with rancher v2.0.5-rc3, ran tests involving custom host addition with different roles.
The server crashed with FATAL error below:

2018-07-06 00:27:55.668885 W | etcdserver: apply entries took too long [575.987489ms for 1 entries]
2018-07-06 00:27:55.669555 W | etcdserver: avoid queries with large range/delete range!
WARNING: 2018/07/06 00:27:57 Failed to dial <IP_ADDRESS>:2379: connection error: desc = "transport: authentication handshake failed: context canceled"; please retry.
2018-07-06 00:27:57.297866 W | etcdserver: apply entries took too long [1.51920453s for 7 entries]
2018-07-06 00:27:57.298553 W | etcdserver: avoid queries with large range/delete range!
2018/07/06 00:28:01 [ERROR] NodePoolController c-6lqxl/np-jrqmn [nodepool-provisioner] failed with : Get https://<IP_ADDRESS>:6443/apis/management.cattle.io/v3/nodes: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
WARNING: 2018/07/06 00:28:02 Failed to dial <IP_ADDRESS>:2379: connection error: desc = "transport: authentication handshake failed: context canceled"; please retry.
E0706 00:28:02.946152       1 leaderelection.go:224] error retrieving resource lock kube-system/kube-scheduler: the server was unable to return a response in the time allotted, but may still be processing the request (get endpoints kube-scheduler)
2018/07/06 00:28:03 [ERROR] NodePoolController c-6lqxl/np-nd7b5 [nodepool-provisioner] failed with : Get https://<IP_ADDRESS>:6443/apis/management.cattle.io/v3/nodes: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2018/07/06 00:28:03 [INFO] Updating node ip-172-31-4-192 with labels map[beta.kubernetes.io/arch:amd64 beta.kubernetes.io/os:linux kubernetes.io/hostname:ip-172-31-4-192 node-role.kubernetes.io/worker:true] and annotations map[node.alpha.kubernetes.io/ttl:0 rke.cattle.io/external-ip:<IP_ADDRESS> rke.cattle.io/internal-ip:<IP_ADDRESS> volumes.kubernetes.io/controller-managed-attach-detach:true]
E0706 00:28:03.938664       1 event.go:260] Could not construct reference to: '&v1.Endpoints{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"", GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Initializers:(*v1.Initializers)(nil), Finalizers:[]string(nil), ClusterName:""}, Subsets:[]v1.EndpointSubset(nil)}' due to: 'selfLink was empty, can't make reference'. Will not report event: 'Normal' 'LeaderElection' 'df0e43ba6747 stopped leading'
E0706 00:28:03.945831       1 server.go:145] lost master
Error: lost lease
2018/07/06 00:28:03 [ERROR] kube-scheduler exited with error: lost lease
2018/07/06 00:28:03 [INFO] Shutting down SecretController controller
2018/07/06 00:28:03 [INFO] Shutting down NamespaceController controller
2018/07/06 00:28:03 [INFO] Shutting down RoleController controller
2018/07/06 00:28:04 [INFO] Shutting down SecretController controller
2018/07/06 00:28:04 [INFO] Shutting down RoleController controller
2018/07/06 00:28:04 [INFO] Shutting down ClusterRoleController controller
2018/07/06 00:28:04 [INFO] Shutting down RoleBindingController controller
2018/07/06 00:28:04 [INFO] Shutting down ClusterRoleBindingController controller
2018/07/06 00:28:04 [INFO] Shutting down ListenConfigController controller
2018/07/06 00:28:04 [INFO] Shutting down SettingController controller
2018/07/06 00:28:04 [INFO] Shutting down NodeDriverController controller
2018/07/06 00:28:04 [INFO] Shutting down DynamicSchemaController controller
2018/07/06 00:28:04 [INFO] Shutting down AuthConfigController controller
2018/07/06 00:28:04 [INFO] Shutting down GroupController controller
2018/07/06 00:28:04 [INFO] Shutting down GroupMemberController controller
2018/07/06 00:28:04 [INFO] Shutting down ProjectController controller
2018/07/06 00:28:04 [INFO] Shutting down PipelineController controller
2018/07/06 00:28:04 [INFO] Shutting down SourceCodeRepositoryController controller
2018/07/06 00:28:04 [INFO] Shutting down SourceCodeCredentialController controller
2018/07/06 00:28:04 [INFO] Shutting down ClusterPipelineController controller
2018/07/06 00:28:04 [INFO] Shutting down RoleTemplateController controller
2018/07/06 00:28:04 [INFO] Shutting down UserAttributeController controller
2018/07/06 00:28:04 [INFO] Shutting down TokenController controller
2018/07/06 00:28:04 [INFO] Shutting down ProjectRoleTemplateBindingController controller
2018/07/06 00:28:04 [INFO] Shutting down ClusterRoleTemplateBindingController controller
2018/07/06 00:28:04 [INFO] Shutting down UserController controller
2018/07/06 00:28:04 [INFO] Shutting down NodeController controller
2018/07/06 00:28:04 [INFO] Shutting down NodeController controller
2018/07/06 00:28:04 [INFO] Shutting down ClusterController controller
2018/07/06 00:28:04 [INFO] Shutting down ClusterRegistrationTokenController controller
2018/07/06 00:28:04 [FATAL] context canceled

Something new related to this?

Clusters deployed via aws ec2 3 weeks ago are stable, from the same RKE instance that has been upgraded, newly deployed ec2 clusters using the same instance sizing and running the exact same workload, the workers crash out in minutes.
rancherOS hosts m5.xlarge x 10 workers.
70 pods

There have been several performance related fixes that have gone in but not tagged specifically to this issue. @cloudnautique can you use this issue to track your performance testing?

Yeah, we can use this for the memory consumption work.

We are experiencing the same issue
You can see the cattle server using 83% memory on one of the rancher nodes:

And here you can see the memory free graph going down

@penevigor What are you doing on your machines that you manage to leak > 2.5 Gigs of RAM in two hours? In our case it takes about three days for a gigabyte and we're primarily running web servers with comparably low throughput network traffic and occasional high-usage CPU tasks.

@advancingu we were leaking 16gb of ram x 10 nodes in under 2 hours.
Workload consisted of various web services, some java, some php, some python. roughly 70 containers in 20 pods. this workload is stable with plenty of resources remaining when run on rancher 1.6 via cattle on far less resources ( 5 * m4.large vs 10 * m5.xlarge)

I have a similar issue with v2.0.2, especially if I have the Workload overview open. It seems like it tries to reconnect to the websockets every second and fails. Memory and CPU usage (stays 100%) increases every second.

Need to coordinate with @cloudnautique  on who and how we're going to verify this.

@cjellick I think with the release of v2.0.8 and the catalog backoff fix, we should resolve this one. If newer leaks pop up, we can open separate issues.

Same issue with v2.0.8

@cloudnautique of course, i will post tomorrow. In short, the problem described by @BowlingX. I noticed memory increasing to 100% on the catalog apps tab and probably other tabs.

@cloudnautique
I see only multiple events every seconds:

E0830 08:00:57.504534       7 streamwatcher.go:109] Unable to decode an event from the watch stream: object to decode was longer than maximum allowed size

I have one cluster with 6 nodes. Problem present on clean installation, i mean without resources in kubernetes.

@alv91, is Rancher server in debug mode? You need to add  --debug to the rancher command. Hopefully it might give some clue as to what object might be too large. The error itself is actually being thrown by K8s.
It looks like there is an open issue upstream where objects can be larger the 1MiB but the system doesn't handle them properly. kubernetes/kubernetes#57073

@cloudnautique In debug mode just flooding with:
2018/08/31 10:21:29 [DEBUG] closing watcher for configMap
2018/08/31 10:21:29 [DEBUG] Impersonating user user-c9mjc, groups [system:authenticated]
2018/08/31 10:21:29 [DEBUG] watching ingress
2018/08/31 10:21:29 [DEBUG] watching workload
2018/08/31 10:21:29 [DEBUG] watching namespacedSecret
2018/08/31 10:21:29 [DEBUG] watching job
2018/08/31 10:21:29 [DEBUG] watching namespacedDockerCredential
2018/08/31 10:21:29 [DEBUG] watching namespacedSshAuth
2018/08/31 10:21:29 [DEBUG] watching appRevision
2018/08/31 10:21:29 [DEBUG] watching cronJob
2018/08/31 10:21:29 [DEBUG] watching sshAuth
2018/08/31 10:21:29 [DEBUG] watching replicationController
2018/08/31 10:21:29 [DEBUG] watching namespacedServiceAccountToken
2018/08/31 10:21:29 [DEBUG] watching statefulSet
2018/08/31 10:21:29 [DEBUG] watching cronJob
2018/08/31 10:21:29 [DEBUG] watching deployment
2018/08/31 10:21:29 [DEBUG] watching replicaSet
2018/08/31 10:21:29 [DEBUG] watching replicationController
2018/08/31 10:21:29 [DEBUG] watching daemonSet
2018/08/31 10:21:29 [DEBUG] watching serviceAccountToken
2018/08/31 10:21:29 [DEBUG] watching daemonSet
2018/08/31 10:21:29 [DEBUG] watching pod
2018/08/31 10:21:29 [DEBUG] watching replicaSet
2018/08/31 10:21:29 [DEBUG] watching namespacedBasicAuth
2018/08/31 10:21:29 [DEBUG] watching deployment
2018/08/31 10:21:29 [DEBUG] watching statefulSet
2018/08/31 10:21:29 [DEBUG] watching app
2018/08/31 10:21:29 [DEBUG] watching secret
2018/08/31 10:21:29 [DEBUG] watching persistentVolumeClaim
2018/08/31 10:21:29 [DEBUG] watching basicAuth
2018/08/31 10:21:29 [DEBUG] watching dockerCredential
2018/08/31 10:21:29 [DEBUG] watching service
2018/08/31 10:21:29 [DEBUG] watching dnsRecord
2018/08/31 10:21:29 [DEBUG] watching namespacedCertificate
2018/08/31 10:21:29 [DEBUG] watching job
2018/08/31 10:21:29 [DEBUG] watching certificate
2018/08/31 10:21:29 [DEBUG] watching configMap

Thanks @alv91 , nothing going by at roughly the same time as one of the streamwatcher error messages regarding the size?

@cloudnautique unfortunately, nothing more. What can i say more, memory is not releasing when i stop using webui.
I dont know if it is related, but when i inspecting web browser, console is flooding with:
subscribe.js:287 Project Subscribe disconnected (sockId=null)
socket.js:57 Socket connecting (id=38, url=wss://<ip>/v3/projects/c-mrx9c:p-9t9r9/subscribe...)
socket.js:241 Socket opened (state=reconnecting, id=38)
subscribe.js:277 Project Subscribe connected (sockId=38) (after 1 try, 0.183 sec)
socket.js:186 Socket null closed

We've addressed 3 or 4 different performance issues around this ticket in v2.0.8. @cloudnautique has verified those through performance testing. As he suggests, I am going to close this issue. New bugs or issues around memory leaks or performance should be opened as new issues.

Is this issue solved? I get same trouble about memory increase unexpectedly using 4gb of ram 2vcpu 60gb disk even I only run hello world container and mini hello react app at the moment I'm still using cattle in production and not yet do a migration after referencing this issue still exists in my RnD env

I have the same problem when I go to Catalogs Tab, and one of Helm Stable or Helm incubator are enabled.


Reset value of nested components

@dxvladislavvolkov
This fix causes the following error:
ERROR TypeError: Cannot read property 'resetOption' of undefined
    at DxoPagingComponent._resetOption (vendor.js:147523)
    at DxoPagingComponent.ngOnDestroy (vendor.js:201520)
    at callProviderLifecycles (vendor.js:67582)
    at callElementProvidersLifecycles (vendor.js:67541)
    at callLifecycleHooksChildrenFirst (vendor.js:67523)
    at destroyView (vendor.js:78623)
    at callViewAction (vendor.js:78782)
    at execComponentViewsAction (vendor.js:78690)
    at destroyView (vendor.js:78622)
    at callViewAction (vendor.js:78782)

Should be possible to reproduce with devextreme-angular-template app.

@hakimio hi.
Can you provide steps to reproduce? I couldn't reproduce this issue on my side

@dxvladislavvolkov I don't have the time to create a full demo, but you could try something like the following:
<ng-container *ngIf="isAuthorized; else notAuthorized">
    <app-navigation>
        <div class="dx-card content-block responsive-paddings">
            <router-outlet></router-outlet>
        </div>
    </app-navigation>
</ng-container>

<ng-template #notAuthorized>
    <app-card>
        <router-outlet></router-outlet>
    </app-card>
</ng-template>

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {

    isAuthorized: boolean;

    ngOnInit() {
        setTimeout(() => this.isAuthorized = true, 500);
    }
}

When isAuthorized is false Router should redirect to login component, otherwise it should redirect to a component which displays datagrid with paging toolbar. app-navigation is this component.
If you still can't reproduce with this example I'll try to create a demo app for you sometime next week.

@dxvladislavvolkov it seems we are not the only ones experiencing issues with this fix:
https://www.devexpress.com/Support/Center/Question/Details/T849449/cannot-read-property-resetoption-of-undefined

Hello,
We didn't manage to reproduce the issue. Could you please modify the project I attached to the https://supportcenter.devexpress.com/ticket/details/T849449 ticket to demonstrate the problem?


Server-side rendering doesn't output sprites on the first request after starting the server

The first time I open a server rendered page, require('svg-sprite-loader/runtime/sprite.build') doesn't contain the individual SVG sprites (the symbols array is empty) but only the container (.stringify() outputs <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; width: 0; height: 0" id="__SVG_SPRITE_NODE__"></svg>)
If I reload the page, the SVG symbols are there (filled array with all symbols).
Is this normal behaviour or am I doing something wrong?
I'm using:
Node.js 9.5.0
webpack 3.11.0
svg-sprite-loader 3.6.2
express 4.16.2
Vue.js 2.5.13 (shouldn't matter)
on Windows 10 64bit
Part of my webpack config:
{
	test: /\.svg$/,
	loader: 'svg-sprite-loader'
}

express server.js:
app.get('*', (req, res) => {
	const sprite = require('svg-sprite-loader/runtime/sprite.build');
	console.log('sprite', sprite);
	console.log('sprite.stringify():', sprite.stringify());
	...
});

I require the SVG files in a .vue file either with
<script>
import svg from '../svg/facebook.svg';
</script>

or requiring all SVG files in a directory:
const requireContext = require.context('../svg/', true, /\.svg$/);
requireContext.keys().forEach(key => requireContext(key));

Could you please create repo with minimal setup to demonstrate a problem (package.json, webpack config, SVG image and piece of your code). If you don't want to create a repository - you can create a gist with multiple files.

@diff-dennis ping

I prepared a repository here:
https://github.com/diff-dennis/svg-loader-test
After npm i you can start the project with npm run dev. The project should be available at http://localhost:4040

@kisenka @diff-dennis I have the same issue. I want to be able to render SVG on both client and server but it only renders on client. And also I have target: 'node' on server. Please let me know what other changes I need to make to make it render on server as well. Thank you.

I have the same issue, on the server side, svg  does not inject into html

@kisenka Any updates on this issue? If is it possible to render SVG on both client and server side?

Any updates? I'm following this example in a Next.js project and the sprite has no symbols in the SSR page.

Any updates ? I have the same issue.


Docs & design overhaul

Hi there. It's 2020 and Express remains the most popular Node framework. However, we still have an obsolete docs site that doesn't meet today's design trends.
I think it's time to:

rebuild the docs site with modern static site frameworks like Gatsby;
update the Express logo and implement a design system for the docs.

Your opinions?

Hi, I assume core team is focused now on pushing next major express version. If you have something to propose opening a PR is more than welcome!

PRs always welcome, of course, but this proposal would be a significant project.  Does Gatsby have a GitHub integration?  That's one of the main advantages of Jekyll.

I'd be more than happy to contribute to this, but not sure pushing a massive PR would be helpful.
I'm assuming there are several people involved in maintaining the website, I think they should be involved in the process at the very least with regards to UX and sitemap.
It would likely take several steps to get to an updated version of

Stack: I don't mind sticking to Jekyll. We could certainly move to another SSG (e.g. Eleventy) but I'm not sure that would address the key issue (UI and UX), although it could help if the current build process is too slow. I do think it'd be helpful to adopt a modern CSS framework though (e.g. Tailwind).
Sitemap: I think there should be a concerted effort to review the current pages/sections and figure out what would make sense for the projects (AND the site contributors). I'm not sure there are analytics on the site, that could be helpful figuring out what folks are actually looking for.
Design: expectations aren't what they used to be when this website was designed, even for Open Source project. I think the current design is a bit damaging to all the hard work that the maintainers are putting in. This could however be the more contentious point for Express.js collaborators (it's always difficult to get a group to agree on UI choices). I would also say that a very light refresh of the wordmark wouldn't hurt, but I wouldn't want it to distract from the UI/UX work that needs to be done.

Happy to put in work there, but again I'm mostly concerned with how we should break this work down.
I'm fine with either:

Option 1: breaking things down in a bunch of small incremental improvements,
Option 2: make a big redesign push we can refine until we're comfortable with the changes.

@dougwilson I'd be curious to know who leads on the expressjs.com front (yourself?) and where contributors hang out (IRC seems dead and Gitter mostly looks like user support).

There's a lot to be said about a docs and design overhaul.
But let's break it down slightly
Docs
The content of the documentation itself is due for shaking the dust out and improving. A full rewrite would be costly in man hours and overseeing it, but would be worth considering. Incremental changes to the corpus in the meantime are the most likely to get merged.
Design
The actual site on which the docs are consumed. Same thing goes in terms of shaking out and improving, and how scope impacts likelihood to get changes landed while maintenance is ramping back up.
The Question is, which do we prio first?
Here's a tracking issue where these dicussions will be gathered https://github.com/expressjs/discussions/issues/211
I'd prefer we prio the content of the docs, and lean on some existing software to turn that into a really good hostable docs site. The point of the website is to host the docs and guides. I see the site as an entrypoint to the docs, and should be no more technologically complicated than necessary to facilitate that.

Thanks for the discussion @jonchurch @hunvreus ... I'm getting re-engaged with the project after some absence, and the project as a whole is being reinvigorated with short-term focus on the 5.0 release.   But still, I'm working on this in my spare time (as most of us are), which is sadly limited.
I agree with @jonchurch that content updates should be the top priority.  Certainly, we can improve the presentation (i.e. framework, css, etc.) but that is secondary to the actual information.
See https://github.com/expressjs/discussions/issues/211 for more of my thoughts.
Immediate priorities are reviewing/landing open PRs and issues and preparing for 5.0 release.  After that, we can reassess.


[Bug] Voice quality decreases over time

Before Reporting

[X] I found no existing issues matching my bug
[X] My issue is not caused by a plugin or theme

Describe the Bug
After some time in the voice channel, my interlocutors say that the sound of the microphone is ruined (but I can hear myself in the headphones fine without distortion), only restarting the channel helps
Expected Behavior
The sound of the voice should not change over time
Steps To Reproduce
I don't know how to reproduce it, I'm just sitting in the ds
Operating System
Windows
Discord Version
Stable
BetterDiscord Version
v1.8.4
Anything else?
No response

BD can't touch your mic input, so its likely Discord or another software interfering with it.

Yeah same as above, BD does not touch any audio streams.


Banner for general purpose notifications

Banner with announcements to all users. To support color and font customizations

Can the banner be configured to be visible to:

Only users
Only super users
Users and super users

@evdhoudt The banner no longer displays any colors.  The banner color is beige for all four general banner levels.  The colors were functioning before the 16 November release.


docs: multi-language support

Pre-Checklist
Note: please complete ALL items in the following checklist.

[ ] I have read through the CONTRIBUTING.md documentation.
[ ] My code has the necessary comments and documentation (if needed).
[ ] I have added relevant tests

Description

Related Issues

New Behavior (screenshots if needed)

@Danielhui 首先感谢您的贡献！
用机器翻译软件搞出整体的雏形没有问题，但一定请进行人工的校对和审核，确保用词一致性、风格符合native speaker的习惯。
例：

review/reviewer在本文中出现了至少3种不同的翻译：审查、审稿人、审阅者
“变得热情与包容。您应主动确保作者认可。” -- 作为中文母语者，我不知道这句话的含义。

建议您在开始贡献之前，先阅读我们的CONTRIBUTING文档，并在PR里打钩，let the community and the reviewers know that we are on the same page.
关于文档的修改是尤其重要的，因为这影响所有新用户、新贡献者的体验，请一定确保：

人工校对机器翻译结果
确保用词一致性
确保语言风格符合中国人的说话习惯

Thanks for your contribution! Feel free to check out our new contributor guide. We have quite a few pieces of documentation explaining the basic concepts and how to work on DevStream. Read them in the "Developer Guide" section of the documentation.

Regarding commit messages, we try our best to follow the conventional commits specification so that it would give other people clear information. We've also got a "TL;DR" version in our documentation; feel free to have a quick glance. Please provide useful information in your commit message; and please do not use duplicated commit messages.

Another kind reminder that you haven't signed off on your commit(s) yet.
Check out our official doc here to learn how to do this.
Licensing is important to open source projects. It provides some assurances that the software will continue to be available based on the terms that the author(s) desired.
Now that we are part of CNCF, per CNCF's requirement, we kindly require that contributors sign off on commits submitted to our project's repositories. Thanks!


Avoid simultaneous logins of the same user

Is there a way to avoid one single user log from another computer/browser?  I mean: when an user logs in, automatically close other posible sessions of the same user.

That functionality is outside the functionality of this package.


[Permission] Only access the pontoon site instead of all sites.

Steps to reproduce
1.Install from mozilla addon
2.Ask for permission
3.Permission wanted for all sites
Actual behavior
Permission wanted for all sites
Expected behavior
Only https://pontoon.mozilla.org/ is accessed

Hi @Oymate.
Thank you for reaching out. It's actually not just pontoon.mozilla.org (or other Pontoon server configured in the extension settings) which is being accessed, but also other Mozilla websites. It's noted in the privacy policy that this permission is needed for the contextual feature, which allows to highlight any text on localizable website, and then pivot to Pontoon. It looks like this

The reason to ask for all websites instead of an explicit list is that the list is quite long (risk of missing some) and possible UX issues when the the list is extended and the extension asks for more. The first reason may go away with #135 in the near future though.
Does this answer cover your issue? Is that OK if rephrase this issue a little and try to address it after #135 (hopefully during summer) and if the UX when a new item is added is not too terrible?

Yeah, it's a backlog. Again thanks for the add-on :)


enable transactions results

closes https://github.com/spacemeshos/go-spacemesh/issues/3267

transactions result

created for transactions that were applied to the state, either successfully or simply consumed. stores information about consumed gas, fee (multiple by gas price in the header), tx status with error string, updated addresses. maybe will be added for invalid transactions in the future https://github.com/spacemeshos/go-spacemesh/issues/3272
when saved into the database indexed by updated addresses, so that both principal and other modified addresses can fine this transaction efficiently.
all changes in the txs module are because vm returns this type on apply.

transactions results stream

new endpoint for transactions service. can request a stream of historical and live transactions results. filterable by: tx id, address, start/end layer. in order to watch new data - watch field must be set to true. single stream will provide results without duplicates.
also adjusted systest for transactions to use new streaming endpoint.
api change: https://github.com/spacemeshos/api/pull/165

events: buffered subscription type

allows to subscribe for events of a particular type with a buffer. on buffer overflow subscription is closed and subscriber must terminate with error. this was existing behavior for api streams, i just refactored it a bit.

database: immediate tx

sqlite backend terminates transaction with sqlite_busy without waiting if transaction is initialized as reader and then upgrades to writes later. i added a helper to initialize tx with begin immediate that will initialize transaction in a writer mode immediately.

bors try

bors merge

bors merge

bors merge


deskTool is deprecated

Is your feature request related to a problem? Please describe.
After v3.20.0 Desk is now Structure
Describe the solution you'd like
The readme in this project describes installation as
import { deskTool, StructureBuilder } from 'sanity/structure'

export default defineConfig({
  //...
  plugins: [
    deskTool({
      structure: (S, context) => {

Describe alternatives you've considered
This should be updated to
import { structureTool } from 'sanity/structure'

export default defineConfig({
  //...
  plugins: [
    structureTool({
      structure: (S, context) => {

Fixed in #99


add from tuple for RedisValue / MultipleKeys

see. this file
https://github.com/aembke/fred.rs/compare/main...3TiFork:fred.rs:main#diff-a9675a50f05c968ba0df585cd6ec549c2382ff81fc747a932a3587956923e552
fix this error in my project

Thanks @3tieto, this will be included in https://github.com/aembke/fred.rs/pull/187


Update grafana dashboard configuration

Adds a row of response_size charts to the dashboard (will be used in "Collecting Metrics" task) and updates the metric name of request_duration (from request_latency).

This change is

Jenkins job mixer/presubmit passed

Jenkins job mixer/e2e-smoketest passed

Jenkins job mixer/manager-regression passed

Jenkins job mixer/presubmit passed

Jenkins job mixer/manager-regression passed

Jenkins job mixer/presubmit passed

Jenkins job mixer/e2e-smoketest passed

Jenkins job mixer/manager-regression passed


Unable to download complete set of files due to "412 The condition specified using HTTP conditional header(s) is not met"

Which version of the AzCopy was used?
Note: The version is visible when running AzCopy without any argument
10.4.3
Which platform are you using? (ex: Windows, Mac, Linux)
Windows
What command did you run?
Note: Please remove the SAS to avoid exposing your credentials. If you cannot remember the exact command, please retrieve it from the beginning of the log file.
s:\temp\azcopy.exe copy "https://accountname.blob.core.windows.net/prefetch/data/*?se=2020-06-01T20%3A54%3A01Z&sp=rl&sv=2018-03-28&sr=c&sig=<...>" "Y:\PrefetchData" --overwrite=prompt --recursive --from-to=BlobLocal --preserve-last-modified-time
What problem was encountered?
Not able to download 130K files - every time some files (80 to 170) get errors.
Below are 3 attempts, note that every time some percentage fails.
It is different files every time.
I don't see a retry option for this situation.

99.6 %, 131189 Done, 130 Failed, 828 Pending, 0 Skipped, 132147 Total, 2-sec Throughput (Mb/s): 21.6107
Job 6c0052c9-9788-1740-6c44-d554cf861184 summary
Elapsed Time (Minutes): 4.0987
Number of File Transfers: 132147
Number of Folder Property Transfers: 0
Total Number of Transfers: 132147
Number of Transfers Completed: 132016
Number of Transfers Failed: 131
Number of Transfers Skipped: 0
TotalBytesTransferred: 610341232
Final Job Status: CompletedWithErrors

100.0 %, 131982 Done, 167 Failed, 1 Pending, 0 Skipped, 132150 Total,
Job f3f892fc-03db-e041-7a8c-3e062e7d8cfb summary
Elapsed Time (Minutes): 8.2499
Number of File Transfers: 132150
Number of Folder Property Transfers: 0
Total Number of Transfers: 132150
Number of Transfers Completed: 131983
Number of Transfers Failed: 167
Number of Transfers Skipped: 0
TotalBytesTransferred: 609848351
Final Job Status: CompletedWithErrors

100.0 %, 132067 Done, 83 Failed, 1 Pending, 0 Skipped, 132151 Total,
Job 396c74ad-69d5-ed4a-56ff-f413c3006e28 summary
Elapsed Time (Minutes): 2.1031
Number of File Transfers: 132151
Number of Folder Property Transfers: 0
Total Number of Transfers: 132151
Number of Transfers Completed: 132068
Number of Transfers Failed: 83
Number of Transfers Skipped: 0
TotalBytesTransferred: 609147498
Final Job Status: CompletedWithErrors
Log:
2020/05/02 21:55:50 AzcopyVersion  10.4.3
2020/05/02 21:55:50 OS-Environment  windows
2020/05/02 21:55:50 OS-Architecture  amd64
2020/05/02 21:55:50 Log times are in UTC. Local time is 2 May 2020 14:55:50
2020/05/02 21:55:50 Job-Command copy https://accountname.blob.core.windows.net/prefetch/data/*?se=2020-06-01t20%3A54%3A01z&sig=-REDACTED-&sp=rl&sr=c&sv=2018-03-28 Y:\PrefetchData --overwrite=prompt --recursive --from-to=BlobLocal --preserve-last-modified-time
2020/05/02 21:55:50 Number of CPUs: 8
2020/05/02 21:55:50 Max file buffer RAM 4.000 GB
2020/05/02 21:55:50 Max concurrent network operations: 128 (Based on number of CPUs. Set AZCOPY_CONCURRENCY_VALUE environment variable to override)
2020/05/02 21:55:50 Check CPU usage when dynamically tuning concurrency: true (Based on hard-coded default. Set AZCOPY_TUNE_TO_CPU environment variable to true or false override)
2020/05/02 21:55:50 Max concurrent transfer initiation routines: 64 (Based on hard-coded default. Set AZCOPY_CONCURRENT_FILES environment variable to override)
2020/05/02 21:55:50 Max enumeration routines: 64 (Based on hard-coded default. Set AZCOPY_CONCURRENT_SCAN environment variable to override)
2020/05/02 21:55:50 Max open files when downloading:<PHONE_NUMBER> (auto-computed)
2020/05/02 21:55:50 Any empty folders will not be processed, because source and/or destination doesn't have full folder support
2020/05/02 21:55:50 JobID=6c0052c9-9788-1740-6c44-d554cf861184, credential type: Anonymous
2020/05/02 21:55:50 scheduling JobID=6c0052c9-9788-1740-6c44-d554cf861184, Part#=0, Transfer#=0, priority=0
<...>
2020/05/02 21:56:01 ERR: [P#0-T#5359] DOWNLOADFAILED: https://accountname.blob.core.windows.net/prefetch/data/filename.v3.txt?se=2020-06-01t20%3A54%3A01z&sig=-REDACTED-&sp=rl&sr=c&sv=2018-03-28 : 412 : 412 The condition specified using HTTP conditional header(s) is not met.. When Downloading response body. X-Ms-Request-Id: b0413918-801e-003d-50cc-20cd4e000000
Dst: %5C%5C?\Y:\PrefetchData\filename.v3.txt
How can we reproduce the problem in the simplest way?
Not sure. We have 5000+ machines modifying these files so you'd have to set up some sort of multithreaded writer that modifies files.
Have you found a mitigation/solution?
Not with azcopy.

@zezha-msft My guess is that this is the download equivalent of the issue we discussed last week, with uploads files modified after scan time.  Perhaps we can apply a similar solution here.

files modified after scan time

Most definitely (notice that tidbit about 5000 machines all updating various files in the folder)

Having same problem with $ sudo azcopy --version
azcopy version 10.11.0

Still an issue on 10.12.2

Hi all, AzCopy does not support modifying the source/destination while using the tool. Closing this issue as a result.


[cloud_firestore]Improve documentation of startAfter for pagination

I'm abandoning this PR in favor of implementing startAtDocument and friends, see flutter/plugins#1426


[bug]: No idea why lnd is stuck - could it be compacting for 18+ hours?

Background
lnd stuck for 18+ hours
Your environment

version of lnd: lncli version 0.17.3-beta commit=v0.17.3-beta
which operating system (uname -a on *Nix): Linux 4.19.0-26-amd64 #1 SMP Debian 4.19.304-1 (2024-01-09) x86_64 GNU/Linux
version of btcd, bitcoind, or other backend Bitcoin Core RPC client version v26.0.0
any other relevant environment details

Steps to reproduce
Just updated from 16 to 17.3 and restarted...
Bitcoin fully sync'd and I can create addresses and bitcoin txs just fine.
bitcoin-cli getblockcount
833658

Expected behaviour
Should have some idea of why it is not loading... all it says is that RPC services are not avail:
lncli getinfo
[lncli] rpc error: code = Unknown desc = waiting to start, RPC services not available

Actual behaviour
log shows:
2024-03-07 00:00:08.534 [INF] CHDB: Compacting database file at /home/bitcoin/.lnd/data/graph/mainnet/channel.db
...
2024-03-07 18:51:05.068 [ERR] RPCS: [/lnrpc.Lightning/LookupInvoice]: waiting to start, RPC services not available
2024-03-07 18:51:06.768 [ERR] RPCS: [/lnrpc.Lightning/GetInfo]: waiting to start, RPC services not available

Thanks for flagging this issue. Indeed this takes a long time. Do you know how big the db was when you started the compaction? Have you ever compacted the db before?

db I believe is compacted automatically whenever the process is restarted.
Unsure when that last occurred before this.
Here is my lnd/data/graph/mainnet dir (user redacted):
-rw-r--r-- 1 user user 1023M Mar  5 10:09 /home/user/.lnd/data/graph/mainnet/channel.db
-rw------- 1 user user     8 Jan 30 18:51 /home/user/.lnd/data/graph/mainnet/channel.db.last-compacted
-rw-r--r-- 1 user user  132M Mar  5 10:08 /home/user/.lnd/data/graph/mainnet/sphinxreplay.db
-rw------- 1 user user     8 Jan 30 18:51 /home/user/.lnd/data/graph/mainnet/sphinxreplay.db.last-compacted
-rw-r--r-- 1 user user   65M Mar  8 04:11 /home/user/.lnd/data/graph/mainnet/temp-dont-use.db
-rw-r--r-- 1 user user   33M Mar  5 10:08 /home/user/.lnd/data/graph/mainnet/wtclient.db
-rw------- 1 user user     8 Jan 30 18:51 /home/user/.lnd/data/graph/mainnet/wtclient.db.last-compacted

I have now tried to restart without compacting bbolt database to see if that helps - but it's seems to be stuck at "opening" for over an hour already. I'm really not sure about the diff between bbolt db and channel db and what could be causing this...
Changed lnd.conf to:
db.bolt.auto-compact=false
logs:
2024-03-08 03:48:17.282 [INF] LTND: Opening the main database, this might take a few minutes...
2024-03-08 03:48:17.282 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2024-03-08 04:48:26.182 [INF] LTND: Opening the main database, this might take a few minutes...
2024-03-08 04:48:26.182 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false

Did you recently experience any downtime or outages of your node?
You should do the following:

Stop lnd
Copy the channel.db file into a separate folder
In that separate folder, run chantools compactdb and check the result (see https://github.com/lightninglabs/chantools)

It might help (a lot) to run cat channel.db > /dev/null while lnd is starting/compacting. It seems your system only managed to write 65 MByte after 18 hours of compacting, you might want to check your disk (or storage backend) health.

The message "Opening the main database" should only appear once during startup. In your logs it is shown twice, with almost exactly one hour in between. Do you maybe re-start lnd automatically (if it doesn't start up completely within a timeout)?

It might help (a lot) to run cat channel.db > /dev/null while lnd is starting/compacting. It seems your system only managed to write 65 MByte after 18 hours of compacting, you might want to check your disk (or storage backend) health.

Disk health is good. This is running on a server cluster that is quite healthy.
running cat /home/user/.lnd/data/graph/mainnet/channel.db >> /dev/null does not seem to help.
Log keeps repeating - I assume this is lnd crashing and the service auto-restarting:
2024-03-08 06:57:12.929 [INF] LTND: Version: 0.17.3-beta commit=v0.17.3-beta, build=production, logging=default, debuglevel=info
2024-03-08 06:57:12.929 [INF] LTND: Active chain: Bitcoin (network=mainnet)
2024-03-08 06:57:12.930 [INF] RPCS: RPC server listening on [::]:10009
2024-03-08 06:57:12.930 [INF] RPCS: RPC server listening on <IP_ADDRESS>:10009
2024-03-08 06:57:12.935 [INF] RPCS: gRPC proxy started at [::]:10080
2024-03-08 06:57:12.935 [INF] RPCS: gRPC proxy started at <IP_ADDRESS>:10080
2024-03-08 06:57:12.935 [INF] LTND: Opening the main database, this might take a few minutes...
2024-03-08 06:57:12.935 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
2024-03-08 06:57:24.181 [INF] LTND: Version: 0.17.3-beta commit=v0.17.3-beta, build=production, logging=default, debuglevel=info
2024-03-08 06:57:24.181 [INF] LTND: Active chain: Bitcoin (network=mainnet)
2024-03-08 06:57:24.182 [INF] RPCS: RPC server listening on [::]:10009
2024-03-08 06:57:24.182 [INF] RPCS: RPC server listening on <IP_ADDRESS>:10009
2024-03-08 06:57:24.185 [INF] RPCS: gRPC proxy started at [::]:10080
2024-03-08 06:57:24.186 [INF] RPCS: gRPC proxy started at <IP_ADDRESS>:10080
2024-03-08 06:57:24.186 [INF] LTND: Opening the main database, this might take a few minutes...
2024-03-08 06:57:24.186 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false

How do you start lnd? Maybe systemd is doing weird things?

Can you check the actual standard out of the daemon (and not just the log)? Do you see a panic/stack trace?

How do you start lnd? Maybe systemd is doing weird things?

Yeah I am using systemd services and docker...

Can you check the actual standard out of the daemon (and not just the log)? Do you see a panic/stack trace?

How do I do that exactly?

Can you check the actual standard out of the daemon (and not just the log)? Do you see a panic/stack trace?

How do I do that exactly?

When I run lnd I get:
2024-03-13 11:47:14.649 [INF] LTND: Opening the main database, this might take a few minutes...
2024-03-13 11:47:14.649 [INF] LTND: Opening bbolt database, sync_freelist=false, auto_compact=false
panic: freepages: failed to get all reachable pages (page 256270: multiple references (stack: [256270<PHONE_NUMBER>70]))
goroutine 273 [running]:
go.etcd.io/bbolt.(*DB).freepages.func2()
go.etcd.io/bbolt@v1.3.7/db.go:1178 +0x8d
created by go.etcd.io/bbolt.(*DB).freepages in goroutine 1
go.etcd.io/bbolt@v1.3.7/db.go:1176 +0x1e5

Ugh, that looks like data corruption in the freepages. Did you attempt the steps in this comment? https://github.com/lightningnetwork/lnd/issues/8532#issuecomment-1985577491

Ugh, that looks like data corruption in the freepages. Did you attempt the steps in this comment? #8532 (comment)

Yes, actually I did try it. I ran this a few times:
chantools compactdb --sourcedb channel.db --destdb ./results/compacted.db
...and it seems to stall with no errors at with the compacted version stuck at a size of 57M.

Does not seem to pass 57M @guggero @hieblmi
Any other ideas?
Or do I just clear data and restore seed and channel backup...

Yeah, unfortunately if you can't compact the DB anymore it's very likely in a borked state and won't start up again. Restoring from seed and SCB is the safest option, although that will close all channels, which sucks.
But I'm not aware of any way to fix a borked database, unfortunately. Did you have any power outage or did you have to kill (unclean shutdown) of lnd at some point that could explain the problem?
If you restore the node from the seed, you might want to start with a Sqlite backend which is more resilient against those sorts of issues.
I'm closing the issue, since there's not really anything more there is to do here.

What are the steps to restore from seed and scb?

You can find the steps here https://docs.lightning.engineering/lightning-network-tools/lnd/disaster-recovery.


Kotlinize The Sample App and the Library

This PR adds Kotlin powerful features for the library and the sample APP, I did a simple work which is converting your existing code from Java to kotlin, I hope this is a Good PR.

Moved to kotlin in 1.4.0


iphone x layout problem

its looks like what should i do ?

I  have the same problem   Do you solve it


Handle case where data is not in the json

This should fix #30 by handling both cases

Thanks a lot! 😃


Allow the public and private services secondary IP CIDR ranges to be specified manually

This PR adds two new variables: var.public_services_secondary_cidr_block and var.private_services_secondary_cidr_block that allow the public and private services secondary IP CIDR ranges to be specified manually. It is intended for backwards compatibility with existing GKE clusters to prevent changing the automatically assigned networking and recreating the clusters.

Released in https://github.com/gruntwork-io/terraform-google-network/releases/tag/v0.7.1


Maximum record size (question)

How will the maximum record size behave in combination with extensions? If an extension on the 'Customer' table would be published, is the maximum record size of a 'Customer' record, including the companion table fields limited to 8000 bytes in total, or would we have 8000 bytes for the base 'Customer' table and an additional 8000 bytes for each companion table as well?

Companion tables don't count against the base table limitation.


Add running scripts on connect/disconnect

Added settings for running scripts on connect and disconnect (including SteamVR shutdown).
Previously non-graceful closing of TCP control connection was not detected (as no packets were sent/received), an application level sending of keep-alive messages has been implemented (as it uses new ServerControlPacket and ClientControlPacket values it is not compatible with previous client versions).
Previously tokio::net::TcpStream supported enabling OS level TCP keep-alive, but this functionality was removed in https://github.com/tokio-rs/tokio/pull/1767.

Thanks. The Rust code looks very good! Unfortunately I cannot accept the keepalive code as is because you invalidated the packets signature. I added some "reserved" fields and variants to allow limited extensibility without breaking backward compatibility. Basically I want that client and servers on v14.X.X to be forward/backward compatible with one another. To be honest I'm making it a bigger deal than I should, but this was the policy we adopted for when to bump the major version number.
Fortunately I see that you can just replace "NetworkKeepAlive" with just "Reserved" (containing an empty string).
Just so you know, in the branch audio-rewrite, I'm sending and receiving audio with the control socket (using the "ReservedBuffer"). On v15 it will be moved to a separate streaming socket.

Thanks. The Rust code looks very good! Unfortunately I cannot accept the keepalive code as is because you invalidated the packets signature. I added some "reserved" fields and variants to allow limited extensibility without breaking backward compatibility. Basically I want that client and servers on v14.X.X to be forward/backward compatible with one another. To be honest I'm making it a bigger deal than I should, but this was the policy we adopted for when to bump the major version number.
Fortunately I see that you can just replace "NetworkKeepAlive" with just "Reserved" (containing an empty string).
Just so you know, in the branch audio-rewrite, I'm sending and receiving audio with the control socket (using the "ReservedBuffer"). On v15 it will be moved to a separate streaming socket.

@zarik5 Thanks! :slightly_smiling_face:  Can I use Reserved("KeepAlive") instead of NetworkKeepAlive? I think that would be more descriptive and would consume only a few more bytes (every 5 seconds) of bandwidth.
Please don't use TCP for any realtime data (audio, video, controls)! As far as I know all the IP telephony applications use UDP for realtime data (audio and video) - just tested three very popular apps and confirmed this.
In case of temporary packets loss (e.g. wifi glitch) TCP will buffer up the data and resend it all (or close the connection).
What should be the behavior of audio if connectivity is broken for 0,5 seconds? I would guess that audio stream during the connectivity loss should be just discarded and streaming should resume from the point in time where connectivity is restored - UDP does exactly that. TCP would either struggle and resend all the buffered data or break the connection. In case of resent data it would need to be discarded on client side (or a delay between audio and video will be introduced), in case of broken connection it should reconnect quickly as each dozen of milliseconds adds to user frustration (and by default TCP sends "connect" retries after seconds). In either case coping with TCP issues will add complexity to the application without any real benefits (at least without any benefits known to me). Also TCP might add to increased audio delays after connectivity issues (while the restoration of connectivity is detected and data is being resent).
What is the reason behind TCP for audio?

@zarik5 Thanks! :slightly_smiling_face:  Can I use Reserved("KeepAlive") instead of NetworkKeepAlive? I think that would be more descriptive and would consume only a few more bytes (every 5 seconds) of bandwidth.
Please don't use TCP for any realtime data (audio, video, controls)! As far as I know all the IP telephony applications use UDP for realtime data (audio and video) - just tested three very popular apps and confirmed this.
In case of temporary packets loss (e.g. wifi glitch) TCP will buffer up the data and resend it all (or close the connection).
What should be the behavior of audio if connectivity is broken for 0,5 seconds? I would guess that audio stream during the connectivity loss should be just discarded and streaming should resume from the point in time where connectivity is restored - UDP does exactly that. TCP would either struggle and resend all the buffered data or break the connection. In case of resent data it would need to be discarded on client side (or a delay between audio and video will be introduced), in case of broken connection it should reconnect quickly as each dozen of milliseconds adds to user frustration (and by default TCP sends "connect" retries after seconds). In either case coping with TCP issues will add complexity to the application without any real benefits (at least without any benefits known to me). Also TCP might add to increased audio delays after connectivity issues (while the restoration of connectivity is detected and data is being resent).
What is the reason behind TCP for audio?

What is the reason behind TCP for audio?

Basically it's just a temporary necessity, since the current UDP streaming socket port is still occupied by the legacy code and I don't want to require the user to whitelist another port. Actually, working with TCP first gives me room to experiment with the actual data stream, before worrying about the stream reconstruction algorithm. The first Iteration of the audio rewrite will be able to deal with latency caused by queued packets, but it could be slow to recover. After that I will implement a statistics based latency minimization model that can deal with latency spikes a lot faster and lower the overall latency considerably.

Can I use Reserved("KeepAlive") instead of NetworkKeepAlive?

That's ok, but keep in mind that the Reserved variants will also be shared by other things until v15, like haptics. To deal with this I thought we should use put data in JSON form. So for the keepalive this could be something like Reserved("{ }") or Reserved("{ "keepalive": null }")

What is the reason behind TCP for audio?

Basically it's just a temporary necessity, since the current UDP streaming socket port is still occupied by the legacy code and I don't want to require the user to whitelist another port. Actually, working with TCP first gives me room to experiment with the actual data stream, before worrying about the stream reconstruction algorithm. The first Iteration of the audio rewrite will be able to deal with latency caused by queued packets, but it could be slow to recover. After that I will implement a statistics based latency minimization model that can deal with latency spikes a lot faster and lower the overall latency considerably.

Can I use Reserved("KeepAlive") instead of NetworkKeepAlive?

That's ok, but keep in mind that the Reserved variants will also be shared by other things until v15, like haptics. To deal with this I thought we should use put data in JSON form. So for the keepalive this could be something like Reserved("{ }") or Reserved("{ "keepalive": null }")

I have removed NetworkKeepAlive and replaced it by Reserved("{ \"keepalive\": true }".into()) (true instead of null as it looks more descriptive and takes the same number of bytes on the wire).
Does this PR look good? Or maybe I should consolidate 6 commits in 2 - adding the ability to run scripts and adding network keep-alives?
Regarding audio streaming.
I think opening a new port is not a problem for most users (as they have already opened other ports).
I strongly suggest using a new UDP port for the new (non-legacy) realtime data streams! As far as I know virtually all relevant literature (e.g. https://ccrma.stanford.edu/workshops/nsd2012/lectures/03-RT-Audio-Streaming.pdf https://gafferongames.com/post/udp_vs_tcp/ ) suggests using UDP for realtime data streams.
Unfortunately there is no way how to reliably compensate all the problems caused by TCP for realtime streams (and more or less decent compensation should be much more complicated than custom audio-streaming protocol).

I have removed NetworkKeepAlive and replaced it by Reserved("{ \"keepalive\": true }".into()) (true instead of null as it looks more descriptive and takes the same number of bytes on the wire).
Does this PR look good? Or maybe I should consolidate 6 commits in 2 - adding the ability to run scripts and adding network keep-alives?
Regarding audio streaming.
I think opening a new port is not a problem for most users (as they have already opened other ports).
I strongly suggest using a new UDP port for the new (non-legacy) realtime data streams! As far as I know virtually all relevant literature (e.g. https://ccrma.stanford.edu/workshops/nsd2012/lectures/03-RT-Audio-Streaming.pdf https://gafferongames.com/post/udp_vs_tcp/ ) suggests using UDP for realtime data streams.
Unfortunately there is no way how to reliably compensate all the problems caused by TCP for realtime streams (and more or less decent compensation should be much more complicated than custom audio-streaming protocol).

Ok, your code LGTM! Merging now.
About the audio, I'll do some tests. If I don't see problems then I will still ship it with TCP. Soon I'll add the option to switch to UDP.

Ok, your code LGTM! Merging now.
About the audio, I'll do some tests. If I don't see problems then I will still ship it with TCP. Soon I'll add the option to switch to UDP.

While merging audio-rewrite with master I took the chance to fix some issues with your code. I removed the scripts from OpenvrConfig, since those are settings needed specifically by OpenVR at startup and are those settings that require a restart when changed (the idea is to remove most of them at the end of the Rust rewrite). I see that you put a copy of the disconnection code at shutdown, and so it may be executed twice. I moved it inside the StreamCloseGuard, that gets executed always when the control flow exits the connection pipeline (by proper disconnection or execution canceling).
Also I made the connect/disconnect scripts non advanced, since right now the advanced settings are things like "don't change anything if you don't want to break everything" 🙂
Anyway, what do you think of the current Rust code? Do you think the architecture is good? Do you think using async was appropriate?

While merging audio-rewrite with master I took the chance to fix some issues with your code. I removed the scripts from OpenvrConfig, since those are settings needed specifically by OpenVR at startup and are those settings that require a restart when changed (the idea is to remove most of them at the end of the Rust rewrite). I see that you put a copy of the disconnection code at shutdown, and so it may be executed twice. I moved it inside the StreamCloseGuard, that gets executed always when the control flow exits the connection pipeline (by proper disconnection or execution canceling).
Also I made the connect/disconnect scripts non advanced, since right now the advanced settings are things like "don't change anything if you don't want to break everything" 🙂
Anyway, what do you think of the current Rust code? Do you think the architecture is good? Do you think using async was appropriate?


Fix search-plus and search-minus codes

Fixes #37

This change is

 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.


Make Code compliant with PEP8 -

Fixed various issues that flake8 found to attempt to pass Travis CI cleanly.

@robbaronbu if you want to approach this gradually, you can tell flake8 to ignore certain files and errors.  I've done it in the moc-openstack-tools-repo:
https://github.com/CCI-MOC/moc-openstack-tools/blob/master/setup.cfg
I'm planning to do a pep8 overhaul of those files later, but in the meantime the Travis tests pass.

Ouch, that's still a lot of pep8 errors left :(
But just a thought-- a good number of these errors are about unused imports. I'd be extra careful with these since sometimes "unused" imports actually have side effects. Unfortunately without a good test suite it's hard to know immediately if you've broken something.

Yes Jeremy, this project has mushroomed.  Thanks for the warning that we may not be able to completely PEP8ize this project.  So the bottom line is that we may not be able PEP8ize this project, or if it is PEP8ized it probably will not work.
For me, just as  larger an issue is the McCabe complexity tests.  In this test a switch statement is higher in complexity than a small set of nested if statements.  For example, there are try blocks that have multiple exception statements that are fairly easy to understand, and quite common in this codebase, that McCabe measures as being very complex.


Check license key for feature 5101 of product 5770WDS is valid after connection is established

If license key for feature 5101 of product 5770WDS is expired, compile/build command will show the error below.
 *  Executing task: IBM i: Compile with CRTBNDRPG 🔨

Running Action: Compile with CRTBNDRPG 🔨 (11:06:04 AM)
Current library: TESTLIB
Library list: QGPL QTEMP
Working directory: /home/qsecofr/builds/ibmi-company_system
Commands:
                CRTBNDRPG PGM(TESTLIB/mypgm) SRCSTMF('qrpglesrc/mypgm.pgm.rpgle') OPTION(*EVENTF) DBGVIEW(*SOURCE) TGTRLS(*CURRENT) TGTCCSID(*JOB)

CPF9E78:  The license key for product 5770WDS, license term V7R5M0, feature 5101 is no longer valid.
RNS9310:  Compilation failed. Program MYPGM not created in library TESTLIB.
RNS9310:  Compilation failed. Program MYPGM not created in library TESTLIB.

Give the users a notification of the expired license key when the connection is created.

@SJLennon You are right, it's part of the product 5770WDS for RDS, and feature 5101 is ILE COMPILERS: RPG, COBOL, C/C++ .
Not sure if there is a command to show the license key info of a product.

@william-xiang sinec the error logged by the action is quite clear, why should Code for i check for this feature validity?
Is there an actual use case or a third-party tool that would require this to be checked? (in which case this should be implemented in this third-party tool/extension).
Besides, if there is a command/SAL service that can check this, it may require special authorities that common users may not have.

@sebjulliand Thanks for the advice. I will close this issue.


Update web-sites-deploy.md

Typo

Hi @JonCanning, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;


Mobile view toolbar segmented control

Fixes #6506

Using the ToolbarSegmentedControl component for the page/grid toggle
Hiding this component when the item info is visible (where it could be confusing, since you can't see the result until you close the info)

Do we need some tests on this to ensure the viewing logic is good?

Probably a good idea, yes. I'll put something in.


Initial values updated async aren't being applied to the form values in wizard (multiple form scenario) when using enableReinitialize and keepDirty

Are you submitting a bug report or a feature request?

Bug
What is the current behavior?

The values of the form are not being updated when initialValues changes after the form has already been initialized.
What is the expected behavior?
When enableReinitialize is true, the form values should update when the initialValues change.
What's your environment?

redux-form 6.8.0
Other information

I don't know the codebase very well, but it looks related to recent changes in 6.8.0 in createReducer.js.
This if block appears to be blocking new initial values from being set since the previous initial values are no longer undefined.

I have this problem too after I updated to 6.8.0
6.7.0 is working well

Same here ! Any plan to fix ?

Because this issue saw almost no activity for a few months, I'm closing it.


feat: add --pyDantic to cli for Python and Pydantic preset

Description
Add an option to the modelina CLI to enable the PYDANTIC preset for Python output.
Related Issue

Checklist

[X] The code follows the project's coding standards and is properly linted (npm run lint).
[x] Tests have been added or updated to cover the changes.
[ ] Documentation has been updated to reflect the changes.
[X] All tests pass successfully locally.(npm run test).

Additional Notes

@all-contributors please add @Pike for code, test


Add more Portals to demo

The Demo does currently not support all Portals. Would be nice, if you could add the missing Portals to the Demo.

Which portals you are thinking of?

Just all Portals that are suitable for the Demo. The Demo is a nice Way to explore the Portal interactivity and see how the behave. For me as a developer it is a better Way to see if the Portals fit my needs than just reading the Documentation.

Well, it already has all possible portals. Except the UpdateMonitor thing and some missing options here and there. The remaining ones are not really portals per see and are not available for sandboxed applications.
Please re-open if you have specific things in mind that I might have missed.

Examples for missing Portals would be Gamemode, Trash, Secrets, Settings and the new Dynamic Launcher Portal.

Secrets is available, it is just hidden. Trash/GameMode, I have no idea how to present them.  Dynamic launcher portal doesn't have an available implementation that I could test on my machine ,the only available implementation is GNOME 43 material.
Regarding the Settings one, it is fairly weird portal, maybe we could display the color-scheme key, and tbh it is not worth an issue, if someone wants to send a PR feel free to do so.

KDE has added supported for the Dynamic Launcher Portal in 5.25, so you can test it now.