[WFLY-18549] Upgrade WildFly Core to 22.0.0.Beta3

Jira issue:
https://issues.redhat.com/browse/WFLY-18549

Tag: https://github.com/wildfly/wildfly-core/releases/tag/22.0.0.Beta3
Diff: https://github.com/wildfly/wildfly-core/compare/22.0.0.Beta2...22.0.0.Beta3

        Sub-task

[WFCORE-6511] -         Reimplement WFCORE-5493: Invoke DeploymentTransformer in operation "full-replace-deployment"

[WFCORE-6512] -         Reimplement WFCORE-1386 Accept properties file in scripts for starting as a service

        Bug

[WFCORE-4296] -         Illegal reflective access by org.wildfly.extension.elytron.SSLDefinitions

[WFCORE-6491] -         HostControllerBootOperationsTestCase fails intermittently when Security Manager is enabled

[WFCORE-6502] -         setlocal usage in common.bat

[WFCORE-6506] -         StringIndexOutOfBoundsException on JDK 21 GA release

        Task

[WFCORE-6472] -         Removing the remoting subsystem transformers

[WFCORE-6473] -         Clean up domain mode logic related to remoting subsystem worker configuration

[WFCORE-6493] -         Add Guava as a test dependency to the Test Suite.

[WFCORE-6510] -         Change the WildFly Core license to ASL 2

[WFCORE-6518] -         Move createFilePermission methods from WF org.jboss.as.test.shared.integration.ejb.security.PermissionUtils to org.jboss.as.test.shared.PermissionUtils

        Component Upgrade

[WFCORE-6495] -         Upgrade FasterXML Jackson to 2.15.2

[WFCORE-6500] -         Upgrade JBoss DMR 1.7.0.Final

[WFCORE-6501] -         Upgrade StAXMapper to 1.5.0.Final

[WFCORE-6515] -         Upgrade Jandex from 3.1.3 to 3.1.5

        Enhancement

[WFCORE-6519] -         Enable tests that hanged in the past due to https://bugs.openjdk.java.net/browse/JDK-8219658

ReactiveStreamsPublisherTckTest.stochastic_spec103_mustSignalOnMethodsSequentially failure on JDK11 Job looks unrelated, test history shows the same failure with other PRs (https://ci.wildfly.org/test/-2905116994948736757?currentProjectId=WF_PullRequest&expandTestHistoryChartSection=true&orderBy=status&order=desc)

Thanks @yersan


Dropdown in issue reporter has wrong border color

Issue Type: Bug
Check the image below:

VS Code version: Code - Insiders 1.22.0-insider (6c22e21cdcd6811770ddcc0d8ac3174aaad03678, 2018-03-30T05:16:39.261Z)
OS version: Windows_NT x64 10.0.15063

Closing this as a duplicate of https://github.com/microsoft/vscode/issues/47012


Package removal request for (vaughntech-construct-secure-s3-bucket)

What is the name of the package that you would like to have removed?
vaughntech-construct-secure-s3-bucket
Which versions of the package would you like to remove?
all versions
Are you the owner of this package?

[X] I am the owner of this package.

Removed. You should notice the change on ConstructHub shortly.


FlutterAppRequiredException: The current directory does not appear to be a Flutter application project.

This error occurs when pubspec.yml has
dependencies:
  flutter_localizations:
    sdk: flutter

instead of
dependencies:
  flutter:
    sdk: flutter

If using localizations your pubspec.ymlshould be
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

Some projects only have the flutter_localizations key and are missing the flutter key and therefore flutterfire client doesn't recognize the project as a Flutter project.

Flutter docs specify that pubspec.yml with Flutter localizations should be
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

but some projects only have the flutter_localizations key.

I'm using the flutterfire configure along with localizations no problem.
is your pubspec file extension .yml? - might be worth to try changing that to .yaml - just a guess though.

This isn't a problem for me. Just reporting that if the pubspec.yml is missing
dependencies:
  flutter:
    sdk: flutter

flutterfire configure doesn't work.

@Salakar Please reopen.
Here is our scenario:
The application itself is acting as a shell for other features. Flutter is part of our infrastructure. eg:
dependencies:
  infrastructure:
    path: ../infrastructure/infrastructure
  payment:
    path: ../features/payment

Yes flutter is not a direct dependency, it is exported and some things are hidden from flutter itself
There will be linting issues of course if that's allowed because the import won't import a direct dependency. So I suggest adding an optional header like l10n.yaml does, which is what we use it for, when a generator is involved:
header: "// ignore_for_file: depend_on_referenced_packages"


Proposal: Add an option for helm test to run in parallel

At the moment helm tests run in serial, however as each test is a separate pod there seems to be a clear use-case for running them in parallel
I suggest a flag, --parallel on helm test to run the tests in parallel

That's good to hear, I'm not super confident in my go so I thought maybe I'd made some obvious mistakes

@michelleN would you mind taking a look at the pr? https://github.com/kubernetes/helm/pull/4144

closed via #4144


fix(chart & alert): make to show metrics properly

SUMMARY
Altered Modal Doesn't Show Metrics Properly In Table Chart
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
BEFORE:

AFTER:

TESTING INSTRUCTIONS
How to reproduce bug

Open a chart (table chart)
Remove the column in the "Metric" field and add a different column
Click the yellow "Altered" button at the top of the page

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

/testenv up

@prosdev0107 I see metrics twice in the control panel now:

I don't think this is the right way to fix this issue.

/testenv up

a quick test on the ephemeral was looking good to me


[modify] redirect page : redirect_link url field

Coverage decreased (-15.2%) to 63.124% when pulling 1b3801b97f9933c06f3dd51ecba74002e5da69ab on itowtips:fix-redirect_link into 1131f3f9626c98c541ac823c869e9a64500d4341 on shirasagi:master.


It didn't support fish-shell

When I enter source golang-crosscompile/crosscompile.bash in fish-shell.
It prompt
source: Error while reading file '/Users/MasterMac/Downloads/go/golangcrosscompile/crosscompile.bash'

Story, I don't know how to help, I don't use fish shell.

@davecheney It's OK, I enter this command using zsh.


[BUG] instance manager seem to screw worker nodes after running for 2-3 weeks

Describe the bug
A clear and concise description of what the bug is.
After running longhorn for a while, some worker nodes ends up in this situation:

top - 05:37:39 up 4 days,  3:04,  0 users,  load average: 38.95, 50.38, 52.34
Tasks: 650 total,  13 running, 490 sleeping,   0 stopped, 147 zombie
%Cpu(s):  6.4 us, 41.1 sy,  0.0 ni, 52.2 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :  72262.8 total,   9565.5 free,  21468.9 used,  41228.4 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  52941.8 avail Mem

  PID USER      PR  NI    VIRT    RES  %CPU  %MEM     TIME+ S COMMAND
24355 root      20   0  712848  10216  65.6   0.0   7:29.09 R runc:[2:INIT]
 3683 root      20   0  711788   7492  65.0   0.0   2:09.15 R runc:[2:INIT]
14654 root      20   0  713124  13292  59.2   0.0   9:48.52 R runc:[2:INIT]
24214 root      20   0  713380  13296  47.8   0.0   5:59.54 R runc:[2:INIT]
 1829 root      20   0  713008  13248  44.6   0.0   2:22.86 R runc:[2:INIT]
18110 root      20   0 1089956 387796  25.5   0.5  56:09.36 S longhorn-manage
14208 root      20   0 1307824 569144  21.7   0.8   2404:49 S k3s-agent
 8130 root      20   0   16.0g   3.9g  20.4   5.5   1533:34 S qemu-system-x86
 8107 root      20   0  712088   7904   5.7   0.0   0:01.52 D runc
 6953 root      20   0  711832   8700   5.1   0.0   0:02.07 D runc
 8546 root      20   0  712088   5972   4.5   0.0   0:00.58 D runc
18496 root      20   0 2186812   1.4g   1.9   2.0 120:13.96 S longhorn-manage
 5772 root      20   0<PHONE_NUMBER>76   1.9   0.4 140:57.24 S longhorn-manage
 8651 root      20   0  711832   5900   1.9   0.0   0:00.53 D runc
 6863 root      20   0  712688   9164   1.3   0.0   0:02.79 R runc
 5347 root      20   0  713008  10628   1.3   0.0   0:06.86 R runc
 8865 rancher   20   0    2756   1928   1.3   0.0   0:00.05 R top
14243 root      20   0 1004196 274540   1.3   0.4 259:41.84 S containerd

This is the top output of the node,  I originally report this at https://github.com/k3s-io/k3s/issues/2980, now i am suspecting it cause by longhorn. Because if I kill longhorn managers on the node, the problem then disappear.
To Reproduce
Steps to reproduce the behavior:
Not sure how to do, properly let longhorn run with high load for some days. However, it case it happens, it stays.  I see force kill longhorn manager helps.
Expected behavior
A clear and concise description of what you expected to happen.
longhorn should run stably by time.
Log
If applicable, add the Longhorn managers' log when the issue happens.
You can also attach a Support Bundle here. You can generate a Support Bundle using the link at the footer of the Longhorn UI.
Environment:

Longhorn version:
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version:

Number of management node in the cluster:
Number of worker node in the cluster:

Node config

OS type and version:
CPU per node:
Memory per node:
Disk type(e.g. SSD/NVMe):
Network bandwidth between the nodes:

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal):
Number of Longhorn volumes in the cluster:

Additional context
Add any other context about the problem here.

        Sl   Mar02   3:01 /var/lib/rancher/k3s/data/4ff5628ce9c2d4ec1aea353ab5c524800d1c4ed8ce522545991eee491e843ff2/bin/containerd-shim-runc-v2 -namespace k8s.io -id b0badf1ea5de51fbf2396d940e4f9ad4282772cb9d5d5c5eeaaafd8463a218c5 -address /run/k3s/containerd/containerd.sock
root      8441  0.0  0.0   1020     4 ?        Ss   Mar02   0:00  \_ /pause
root      8556  0.0  0.0   4524   784 ?        Ss   Mar02   0:09  \_ /tini -- longhorn-instance-manager --debug daemon --listen <IP_ADDRESS>:8500
root      8577  0.0  0.0 2563124 17200 ?       SLl  Mar02   0:36  |   \_ longhorn-instance-manager --debug daemon --listen <IP_ADDRESS>:8500
root     15505 98.2  0.0<PHONE_NUMBER>2 ?        Rsl  15:46  33:31  \_ runc init
root     21870 98.0  0.0<PHONE_NUMBER>2 ?        Rsl  15:48  31:28  \_ runc init
root     27986 98.8  0.0<PHONE_NUMBER>0 ?        Rsl  15:50  29:45  \_ runc init
root     34622 98.7  0.0<PHONE_NUMBER>6 ?        Rsl  15:52  27:43  \_ runc init
root     40603 98.7  0.0<PHONE_NUMBER>0 ?        Rsl  15:54  25:43  \_ runc init
root     46903 98.6  0.0<PHONE_NUMBER>2 ?        Rsl  15:56  23:40  \_ runc init
root      4785 98.3  0.0<PHONE_NUMBER>6 ?        Rsl  15:58  21:41  \_ runc init
root     10975 98.5  0.0<PHONE_NUMBER>6 ?        Rsl  16:00  19:42  \_ runc init
root     17200 98.7  0.0<PHONE_NUMBER>0 ?        Rsl  16:02  17:45  \_ runc init
root     23570 98.4  0.0<PHONE_NUMBER>4 ?        Rsl  16:04  15:42  \_ runc init
root     29704 98.6  0.0<PHONE_NUMBER>2 ?        Rsl  16:06  13:45  \_ runc init
root     35948 98.2  0.0<PHONE_NUMBER>6 ?        Rsl  16:08  11:47  \_ runc init
root     42210 98.5  0.0<PHONE_NUMBER>8 ?        Rsl  16:10   9:46  \_ runc init
root     48506 98.9  0.0 711952  9900 ?        Rsl  16:12   7:45  \_ runc init
root      6321 96.6  0.0 712388  9304 ?        Rsl  16:14   5:42  \_ runc init
root     12214 96.8  0.0 711672  8184 ?        Rsl  16:16   3:47  \_ runc init
root     18656 97.4  0.0 710124  6428 ?        Rsl  16:18   1:47  \_ runc init
root     23291 74.6  0.0<PHONE_NUMBER>0 ?        Rl   16:20   0:11  \_ runc --root /run/containerd/runc/k8s.io --log /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/96bbde4928bc5dd8c098648182243f3b906c896a8628e7865396df145c7dec59/log.json --log-format json exec --process /tmp/runc-process266074978 --detach --pid-file /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/96bbde4928bc5dd8c098648182243f3b906c896a8628e7865396df145c7dec59/45ac6883a3a48005bdfc9cfdff5902945d8b992dc93dacb7447bf4dd845ff740.pid 96bbde4928bc5dd8c098648182243f3b906c896a8628e7865396df145c7dec59

Looking at helm charts in https://github.com/longhorn/longhorn/, we currently do not use resources limit as
# resources:
#   limits:
#     cpu: 100m
#     memory: 256Mi
#   requests:
#     cpu: 50m
#     memory: 128Mi

We probably should, otherwise "bad configuration change that causes a program to go out of control and use 100% of the available CPU. "

@cclhsu that is nice to have! Meanwhile, we need to figure out while instance manager get mad :)

@ElisaMeng Can you also provide longhorn-support-bundle? and send to<EMAIL_ADDRESS>

Not sure if that is doable, when this happen, the cluster is almost in accessible.  I will give it a try later anyway.

@cclhsu I takes forever to produce something.
If look close to the mad container, we see this:
pstree -p 8263
containerd-shim(8263)-+-pause(8441)
                     |-runc(40027)---runc:[2:INIT](41058)
                     |-runc:[2:INIT](3125)
                     |-runc:[2:INIT](7926)
                     |-runc:[2:INIT](11400)
                     |-runc:[2:INIT](13258)
                     |-runc:[2:INIT](16069)
                     |-runc:[2:INIT](17892)
                     |-runc:[2:INIT](20540)
                     |-runc:[2:INIT](22226)
                     |-runc:[2:INIT](24820)
                     |-runc:[2:INIT](26995)
                     |-runc:[2:INIT](29550)
                     |-runc:[2:INIT](31716)
                     |-runc:[2:INIT](34046)
                     |-runc:[2:INIT](36660)
                     |-runc:[2:INIT](38607)
                     |-runc:[2:INIT](42911)
                     |-runc:[2:INIT](47043)
                     `-tini(8556)---longhorn-instan(8577)

i.e. the bad processes are not sub-process of instance-manager.  Is volume instance process supposed to subprocess to instance manager? If that is the case, instance manager should not the one to be blamed. It is someone come from the outside of container, e.g. run a process via exec against the container.  Beside the aggressive exec-probe, who else might run exec in instance manager container?

Longhorn Instance Manager creates/manages the engine and replica instances on the node.  It is difficult to pinpoint the cause of the issue with the information we currently have.  Is it possible that we try to retrieve logs and manifests in another way using the following script?
#!/usr/bin/env bash
# log.sh
# rm -rf logs
mkdir -p logs/pods
NAMESPACE=longhorn-system

LOG_TYPE=pods
PODS=($(kubectl get pods --namespace=${NAMESPACE} -o jsonpath='{.items[*].metadata.name}'))
for POD in ${PODS[*]}; do
  echo -e "\n>>> Describe: ${POD} ...\n" > ./logs/${LOG_TYPE}/${POD}-describe.log
  kubectl describe pod ${POD} --namespace=${NAMESPACE} >> ./logs/${LOG_TYPE}/${POD}-describe.log
  echo -e "\n>>> Logs: ${POD} ...\n" > ./logs/${LOG_TYPE}/${POD}-logs.log
  kubectl logs pod/${POD} --namespace=${NAMESPACE} >> ./logs/${LOG_TYPE}/${POD}-logs.log
done

echo -e "\n>>> Events ...\n" > ./logs/events.log
kubectl get events --namespace ${NAMESPACE} >> ./logs/events.log

echo -e "\n>>> Top Nodes ...\n" > ./logs/top_nodes.log
kubectl top nodes >> ./logs/top_nodes.log

echo -e "\n>>> Top Pods ...\n" > ./logs/top_pods.log
kubectl top pods --all-namespaces >> ./logs/top_pods.log

echo -e "\n>>> Get all ...\n" > ./logs/get_all.log
kubectl get all -o wide --all-namespaces >> ./logs/get_all.log

echo -e "\n>>> Manifest in ${NAMESPACE} ...\n" > ./logs/manifests_${NAMESPACE}.log
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) --namespace ${NAMESPACE} -o yaml >> ./logs/manifests_${NAMESPACE}.log

echo -e "\n>>> Manifest in kube-system ...\n" > ./logs/manifests_kube-system.log
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) --namespace kube-system -o yaml >> ./logs/manifests_kube-system.log

echo -e "\n>>> Helm Charts ...\n" > ./logs/helms_charts.log
helm list --all-namespaces >> ./logs/helms_charts.log

To Run:
./log.sh
ls -alh ./logs
zip -r logs.zip logs
ls -alh ./logs.zip

The file could be a little big depended on your cluster node size.  At the same time, I am still investigating based on ps.log.

This is one k8s host containing 1 running engine and 1 running replica:
root     16423   678  0 Mar05 ?        00:01:47  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/5e85cd873e586a2b210c7d67e926bccaf59fb6fc3
root     16449 16423  0 Mar05 ?        00:00:02  |   \_ /tini -- engine-manager --debug daemon --listen <IP_ADDRESS>:8500
root     16478 16449  0 Mar05 ?        00:00:35  |       \_ longhorn-instance-manager --debug daemon --listen <IP_ADDRESS>:8500
root     16481 16478  0 Mar05 ?        00:00:14  |           \_ tgtd -f
root     16482 16478  0 Mar05 ?        00:00:00  |           \_ tee /var/log/tgtd.log
root     15683 16478  0 04:45 ?        00:00:00  |           \_ /engine-binaries/longhornio-longhorn-engine-master/longhorn controller vol --frontend tgt-blockdev --replica tcp://<IP_ADDRESS>
root     16517   678  0 Mar05 ?        00:01:47  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/35bc8be473cae7f922c105d74a1803cc496852021
root     16541 16517  0 Mar05 ?        00:00:03  |   \_ /tini -- longhorn-instance-manager --debug daemon --listen <IP_ADDRESS>:8500
root     16565 16541  0 Mar05 ?        00:00:30  |       \_ longhorn-instance-manager --debug daemon --listen <IP_ADDRESS>:8500
root     15570 16565  0 04:45 ?        00:00:00  |           \_ /host/var/lib/longhorn/engine-binaries/longhornio-longhorn-engine-master/longhorn replica /host/var/lib/longhorn/replicas/vol-
root     15575 15570  0 04:45 ?        00:00:00  |               \_ /host/var/lib/longhorn/engine-binaries/longhornio-longhorn-engine-master/longhorn sync-agent --listen <IP_ADDRESS>:10002 --repl
root     28401   678  0 Mar05 ?        00:00:03  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/8779fa3d91947f707cb372a7f625602a0b43a3b81
root     28465 28401  0 Mar05 ?        00:00:00  |   \_ /pause
root     28605   678  0 Mar05 ?        00:00:03  \_ containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/3cec1bac177e728d5bc8d762747bd6f7f506a2628
root     28639 28605  0 Mar05 ?        00:08:31      \_ longhorn-manager -d daemon --engine-image longhornio/longhorn-engine:master --instance-manager-image longhornio/longhorn-instance-mana

Typically, the CPU will be consumed by engine or replica processes during data r/w. The process is like:
(replica)
root     15570 16565  0 04:45 ?        00:00:00  |           \_ /host/var/lib/longhorn/engine-binaries/longhornio-longhorn-engine-master/longhorn replica /host/var/lib/longhorn/replicas/vol-
root     15575 15570  0 04:45 ?        00:00:00  |               \_ /host/var/lib/longhorn/engine-binaries/longhornio-longhorn-engine-master/longhorn sync-agent --listen <IP_ADDRESS>:10002 --repl

(engine)
root     15683 16478  0 04:45 ?        00:00:00  |           \_ /engine-binaries/longhornio-longhorn-engine-master/longhorn controller vol --frontend tgt-blockdev --replica tcp://<IP_ADDRESS>

It seems that runcs in your cluster are not engine/replica processes. Not sure if it's caused by liveness probe.

Longhorn Instance Manager creates/manages the engine and replica instances on the node. It is difficult to pinpoint the cause of the issue with the information we currently have. Is it possible that we try to retrieve logs and manifests in another way using the following script?
#!/usr/bin/env bash
# log.sh
# rm -rf logs
mkdir -p logs/pods
NAMESPACE=longhorn-system

LOG_TYPE=pods
PODS=($(kubectl get pods --namespace=${NAMESPACE} -o jsonpath='{.items[*].metadata.name}'))
for POD in ${PODS[*]}; do
  echo -e "\n>>> Describe: ${POD} ...\n" > ./logs/${LOG_TYPE}/${POD}-describe.log
  kubectl describe pod ${POD} --namespace=${NAMESPACE} >> ./logs/${LOG_TYPE}/${POD}-describe.log
  echo -e "\n>>> Logs: ${POD} ...\n" > ./logs/${LOG_TYPE}/${POD}-logs.log
  kubectl logs pod/${POD} --namespace=${NAMESPACE} >> ./logs/${LOG_TYPE}/${POD}-logs.log
done

echo -e "\n>>> Events ...\n" > ./logs/events.log
kubectl get events --namespace ${NAMESPACE} >> ./logs/events.log

echo -e "\n>>> Top Nodes ...\n" > ./logs/top_nodes.log
kubectl top nodes >> ./logs/top_nodes.log

echo -e "\n>>> Top Pods ...\n" > ./logs/top_pods.log
kubectl top pods --all-namespaces >> ./logs/top_pods.log

echo -e "\n>>> Get all ...\n" > ./logs/get_all.log
kubectl get all -o wide --all-namespaces >> ./logs/get_all.log

echo -e "\n>>> Manifest in ${NAMESPACE} ...\n" > ./logs/manifests_${NAMESPACE}.log
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) --namespace ${NAMESPACE} -o yaml >> ./logs/manifests_${NAMESPACE}.log

echo -e "\n>>> Manifest in kube-system ...\n" > ./logs/manifests_kube-system.log
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) --namespace kube-system -o yaml >> ./logs/manifests_kube-system.log

echo -e "\n>>> Helm Charts ...\n" > ./logs/helms_charts.log
helm list --all-namespaces >> ./logs/helms_charts.log

To Run:
./log.sh
ls -alh ./logs
zip -r logs.zip logs
ls -alh ./logs.zip

The file could be a little big depended on your cluster node size. At the same time, I am still investigating based on ps.log.

As long as we need to talk to k3s, I have problem in running things. May you have instructions that I can log into node, collecting log directly, without go through k3s?

[
longhorn-support-bundle_28661347-f230-4964-9d0d-3f0342c5ddf9_2021-03-11T11-08-13Z.zip
](url)
@cclhsu Finally, I get something.  Please have a look.

I see longhorn manager consume 1-3G RAM, is that normally? while it needs so much memory?

Is it longhorn-manager-gtzgm in lab4node0 that consume so much memeory?

no, on this one, It is not. As may you see, I have almost zero volume active at the moment.

I get this problem on more and more nodes and cluster. What is common in these cluster is that i recently try out longhorn. Before that, I don't have this problem. this lead me to suspect it is longhorn problem.
lab4node0 [~]$ mount | grep shm | wc -l
32781

I learn from other GitHub dev, saying run init get high cpu load because there are two many mounts, as I show above.  Where is this mounts coming from, anything relative to longhorn?

@ElisaMeng can you attach the full output of mount | grep shm.
Possibly related to the secret mount spam, noticed here: https://github.com/longhorn/longhorn/issues/2083

@joshimoo
I simply run
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.1.0/deploy/longhorn.yaml
Here is top output of one of the clusters

NAME                                       CPU(cores)   MEMORY(bytes)
csi-attacher-5dcdcd5984-5q9pk              1m           11Mi
csi-attacher-5dcdcd5984-x6w5x              2m           12Mi
csi-attacher-5dcdcd5984-zxk7g              2m           16Mi
csi-provisioner-5c9dfb6446-bjd52           2m           15Mi
csi-provisioner-5c9dfb6446-cckh4           1m           9Mi
csi-provisioner-5c9dfb6446-dtfsm           1m           9Mi
csi-resizer-54d484bf8-67d76                1m           13Mi
csi-resizer-54d484bf8-rpndt                1m           12Mi
csi-resizer-54d484bf8-sp76w                1m           12Mi
csi-snapshotter-96bfff7c9-8r6gq            1m           8Mi
csi-snapshotter-96bfff7c9-f6chf            1m           9Mi
csi-snapshotter-96bfff7c9-rbgl7            6m           13Mi
engine-image-ei-cf743f9c-5vzld             5m           27Mi
engine-image-ei-cf743f9c-8lq82             3m           8Mi
engine-image-ei-cf743f9c-9tcsq             2m           7Mi
instance-manager-e-843a5080                3m           17Mi
instance-manager-e-8c759563                15m          2678Mi
instance-manager-e-eaa4da5e                2m           8Mi
instance-manager-r-99a66e22                4m           4928Mi
instance-manager-r-a2225dc5                4m           112Mi
instance-manager-r-b62984c3                10m          329Mi
longhorn-csi-plugin-4cw7j                  1m           9Mi
longhorn-csi-plugin-fhk7s                  1m           11Mi
longhorn-csi-plugin-nnxws                  1m           30Mi
longhorn-driver-deployer-cdb7464c6-shsp5   1m           6Mi
longhorn-manager-dzc8c                     23024m       8151Mi
longhorn-manager-rnb72                     12m          2533Mi
longhorn-manager-wjcz5                     21m          831Mi
longhorn-ui-849c455d79-pnwh2               0m           6Mi

below are part of the thousands mounts:
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)
shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si
ze=65536k)

I don't miss iscsi software like #2083 for sure since it is functioning as expected at the beginning, but get explosion by time.

Am I only one keep longhorn running for more that two weeks? soon my 100% of cluster see the same problem. Curious why no once else see this problem. ;)

@ElisaMeng Which OS and kubernetes distro + version are you running?
Possibly related to k3s/k3os, needs further investigation.
https://github.com/rancher/k3os/issues/498
https://github.com/k3s-io/k3s/issues/1042

I do run k3os and I have report similar issue early. I mention https://github.com/k3s-io/k3s/issues/2980 at the beginning of this issue. As I said, I suspect bugs in contained/runc get explosion by "bad" behaviour of longhorn.

Looks like the readiness probe of the longhorn-engine image, which are the binaries that are used to communicate / initiate certain engine actions.
https://github.com/longhorn/longhorn-manager/blob/master/controller/engine_image_controller.go#L763

seem like related to discussion in https://github.com/containerd/containerd/issues/5113#issuecomment-796538266, where large mount caused by shm on /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dbafa07dc970a457a4c179b55cd1963ab25da3c7f2deb1194e472a21c3f97a0a/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,si ze=65536k)

@cclhsu i am double checking. It seem like it mess up container runtime and lead longhorn into bad behaviors.

@cclhsu I am double checking. It seem that bad pod mess up the runtime and cause longhorn move into bad state. Back to you later.

@cclhsu I find similar issue with rshared mount in this other cluster, so I think it is ourself to blame. Thanks for your time! I will close this for now.

@ElisaMeng Thanks for the update, please let us know if you are having additional issues after resolving your cluster setup.


Please provide a dist folder at the root of the repository

Would you like to work on this feature?

[ ] Check this if you would like to implement a PR, we are more than happy to help you go through the process.

What problem are you trying to solve?
The old repository/version had that and it was really useful to be able to copy two files and get a graph displayed. Especially for educational purpose but also for small/static experiments when you don't want to depend on node+npm, etc.
Describe the solution you'd like
Integrate a way during the build/release process to commit the latest version of the package at the root of the repository.
Describe alternatives you've considered
Go grab it from unpkg or similar. Maybe grab it from the (future) documentation website if not minified…
Documentation, Adoption, Migration Strategy
No response

@davidbgk Hi. You can grab it from unpkg: http://unpkg.com/chartist


CronJob unable to create

getting errors after running cronjob--> Saw a job that the controller did not create or forgot: vijay-deployment-restart-manual-hkp5z
How to resolve it ?

/language en

Please describe the issue in details and mention which page you are following

/triage needs-information

Looks like a request for help in its current form.
/kind support
(Feel free to remove the label if this is incorrect.)

/close
feel free to reopen this if there are docs issues to fix.


Refactor marker quantification

What is the purpose of this PR?
Addresses and closes #185.
How did you implement your changes
Rename some functions in marker_quantification.py to something more understandable. Split up the test functions in marker_quantification_test.py.

Note sure why this PR isn't being submitted to Travis, but I tested it locally and it passes all the tests.

Alright, Travis is back online!


gpu and  cpu get different result

Thank you for your excellent work. But I have a question.
I trained the model with GPU, and the SoftPool2d parameter force_inplace was set to the default value False.
But the results I measured using GPU and CPU in the test are different, and the mAP of CPU is much lower than that of GPU. And if I change the force_inplace=True in the test, the mAP of the GPU is equal to that of the CPU, which is much lower than the previous GPU（force_inplace=False）

Hi @JasperKirk ,
So the soft_pool2d() function includes two implementations at the moment. The first is the one that uses the class CUDA_SOFTPOOL2d and the CUDA code from softpool_cuda. The second one is the in-place version based on avg_pool2d that can be used for CPU or GPU (if you want to run everything in-place). If you are using force_inplace=True, you are essentially using the CPU version implemented with standard PyTorch functions.
I have not tested the second implementation, but I am not surprised that there is indeed some difference in performance. There is a residual error between the two - you can see that by lowering the threshold value in line 13 of the test.py. I believe this is mainly due to:

That there is no way of implementing SoftPool in PyTorch (at least with reasonable speeds) without changing the functionality of PyTorch functions such as average pooling or convs.
That the PyTorch python code does not (currently) do any clipping, so exponential weights could take zero values.
In general in-place operation should be avoided as essentially the new object created will occupy the same memory location as the previous one. This is -generally- fine for forward passes however, I am not entirely sure how gradient calculations are affected by it. It would be possible to make python operations non-inplace for the CPU version however, that means significantly larger memory usage and running times (since new objects will need to both be created and stored).

So To sum up the above, I highly suggest using the CUDA function as it is the one that is primarily intended to be used in networks.
Out of curiosity, how large is the accuracy margin between the two versions?
Best,
Alex

Hi,
I use the CUDA function (CUDA_SOFTPOOL2d) to train, the data is PASCAL VOC ,the task is object detection.Due to time constraints, I chose 128 pictures for testing. All settings of the code are the same, the only difference is the use of CPU or GPU，but the margin between the two is too large.
GPU<EMAIL_ADDRESS>mAP@0.5:0.95=0.622
CPU<EMAIL_ADDRESS>mAP@0.5:0.95=0.091
So, if I use the CUDA function for train, how can I test on CPU?

I did an experiment：
`
class SP(nn.Module):
# Spatial pyramid pooling layer used in YOLOv3-SPP
def init(self, k=2):
super(SP, self).init()
self.m = SoftPool2d(kernel_size=k, stride=2, force_inplace=True)
self.m2 = SoftPool2d(kernel_size=k, stride=2)
def forward(self, x):
    x1 = self.m(x)
    x2 = self.m2(x)
    return x1,x2

x = torch.rand(1,3,4,4)
print("x:",x)
device = 'cpu'
x1 = x.to(device)
print("x1:",x1)
device1 = '0'    #gpu
x2 = x.to(device1)
print("x2:",x2)
m = SP(2)
y1,y2 = m(x1)
print(y1,y2)
y3,y4 = m(x2)
print(y3,'\n',y4,'\n')
`
so x1==x2, but x1 in cpu, x2 in gpu.
the result is y1==y2,but y3 != y4.

There is a big gap between the two versions（y3 VS. y4）

Since there are differences between the two implementations (see the first comment) I don't think that training with the custom GPU method and testing with the python version is sensible. If you absolutely want to validate your data on the CPU, but also do the training on the GPU, you should set the in-place flag to True force_inplace=True for both training and testing. That way both CPU and GPU will run the same implementation.
On your second comment: Yes, that is correct. y1,y2,y3 use the python implementation. y4 uses the CUDA custom implementation.

CPU
GPU

inplace=True
python implementation (y1)
python implementation (y3)

inplace=False
python implementation  (y2)
CUDA implementation (y4)

You can have a look at lines 180--198 if you are still unsure.
Best,
Alex

I understand what you said, I thought the same way before, so I ran the Python version again, and it seems normal at the moment. At present, maybe this is the only way.
But it seems that  the python implementation is slower than the CUDA custom implementation in GPU（I am not sure）.If this is the case, is it possible to provide a faster version on the GPU?
Finally, thank you very much for your answers.

Unfortunately, creating a python version for PyTorch will be bound to use torch's classes and functions (which will be slower than a native CUDA implementation). There is the alternative of using convolutions instead of avg_pooling however if again compared to a CUDA-native implementation it will definitely run slower and require more memory.
In any case, I do think the CUDA version makes more sense to use if you are to include SoftPool as part of your model.
Thank you for your interest and hope the answers helped! :)
Best,
Alex

Thank you for your answer, it is very helpful to me.I might choose two models, one using the SoftPool on the GPU, and the other using the normal pooling layer on the CPU.

That should also work. Thanks again for your interest! I'll close this issue for now, feel free to open a new one if there are any other problems.
Best,
Alex


Functions with same intersection and conditional type in parameter list not assignable to each other

TypeScript Version:  3.5.1

Search Terms:
function, intersection, conditional type, parameter list, assignable
Code
/**
 * We should never be able to create a value of this type legitimately.
 *
 * `ErrorMessageT` is our error message
 */
interface CompileError<ErrorMessageT extends any[]> {
  /**
   * There should never be a value of this type
   */
  readonly __compileError : never;
}
type ErrorA = CompileError<["I am error A"]>;
type ErrorB = CompileError<["I am error B"]>;

declare const errorA : ErrorA;
/**
 * Different compile errors are assignable to each other.
 */
const errorB : ErrorB = errorA;

/**
 * Pretend this is `v1.0.0` of your library.
 */
declare function foo <N extends number> (
  /**
   * This is how we use `CompileError<>` to prevent `3` from being
   * a parameter
   */
  n : (
    N &
    (Extract<3, N> extends never ?
    unknown :
    CompileError<[3, "is not allowed; received", N]>)
  )
) : void;

/**
 * Argument of type '3' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", 3]>'.
 */
foo(3);
/**
 * OK!
 */
foo(5);
/**
 * Argument of type '3 | 5' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", 3 | 5]>'.
 */
foo(5 as 3|5);
/**
 * Argument of type 'number' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", number]>'.
 */
foo(5 as number);

///////////////////////////////////////////////////////////////////

/**
 * The same as `foo<>()` but with a different error message.
 *
 * Pretend this is `v1.1.0` of your library.
 */
declare function bar <N extends number> (
  n : (
    N &
    (Extract<3, N> extends never ?
    unknown :
    CompileError<[3, "is not allowed; received", N]>)
  )
) : void;

/**
 * Expected: Assignable to each other
 * Actual: Not assignable to each other
 */
const fooIsAssignableToBar : typeof bar = foo;
const barIsAssignableToFoo : typeof foo = bar;

Expected behavior:
The following should have no errors,
const fooIsAssignableToBar : typeof bar = foo;
const barIsAssignableToFoo : typeof foo = bar;

Actual behavior:
It has errors
Playground Link:
Playground
Related Issues:
https://github.com/microsoft/TypeScript/issues/21756
Also, related to my comment here,
https://github.com/microsoft/TypeScript/issues/23689#issuecomment-512114782

If you remove the N & part from the parameters and replace unknown with N, it works.
/**
 * We should never be able to create a value of this type legitimately.
 *
 * `ErrorMessageT` is our error message
 */
interface CompileError<ErrorMessageT extends any[]> {
  /**
   * There should never be a value of this type
   */
  readonly __compileError : never;
}
type ErrorA = CompileError<["I am error A"]>;
type ErrorB = CompileError<["I am error B"]>;

declare const errorA : ErrorA;
/**
 * Different compile errors are assignable to each other.
 */
const errorB : ErrorB = errorA;

/**
 * Pretend this is `v1.0.0` of your library.
 */
declare function foo <N extends number> (
  /**
   * This is how we use `CompileError<>` to prevent `3` from being
   * a parameter
   */
  n : (
    (Extract<3, N> extends never ?
    N :
    CompileError<[3, "is not allowed; received", N]>)
  )
) : void;

/**
 * Argument of type '3' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", 3]>'.
 */
foo(3);
/**
 * OK!
 */
foo(5);
/**
 * Argument of type '3 | 5' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", 3 | 5]>'.
 */
foo(5 as 3|5);
/**
 * Argument of type 'number' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", number]>'.
 */
foo(5 as number);

///////////////////////////////////////////////////////////////////

/**
 * The same as `foo<>()` but with a different error message.
 *
 * Pretend this is `v1.1.0` of your library.
 */
declare function bar <N extends number> (
  n : (
    (Extract<3, N> extends never ?
    N :
    CompileError<[3, "is not allowed; received", N]>)
  )
) : void;

/**
 * Expected: Assignable to each other
 * Actual: Assignable to each other
 */
const fooIsAssignableToBar : typeof bar = foo;
const barIsAssignableToFoo : typeof foo = bar;

Playground

The motivation behind introducing intersection types is so that multiple compile-time requirements can be chained together,
declare function bar <N extends number> (
  n : (
    N &
    (Extract<3, N> extends never ? unknown : CompileError<[3, "is not allowed; received", N]>) &
    (Extract<4, N> extends never ? unknown : CompileError<[4, "is not allowed; received", N]>) &
    (SomeOtherComplicatedCondition<N>)
  )
) : void;

Of course, with such a "basic" type like number, the conditions aren't very interesting.

A code snippet of something more complicated,
export type AssertNotInPreviousJoinsImpl<
    QueryT extends IQuery,
    AliasedTableT extends IAliasedTable
> = (
    QueryT["_joins"] extends IJoin[] ?
    (
        Extract<
            AliasedTableT["alias"],
            JoinArrayUtil.TableAliases<QueryT["_joins"]>
        > extends never ?
        unknown :
        CompileError<[
            "Alias",
            Extract<
                AliasedTableT["alias"],
                JoinArrayUtil.TableAliases<QueryT["_joins"]>
            >,
            "already used in previous JOINs",
            JoinArrayUtil.TableAliases<QueryT["_joins"]>
        ]>
    ) :
    unknown
);
export type AssertNotInParentJoinsImpl<
    QueryT extends IQuery,
    AliasedTableT extends IAliasedTable
> = (
    QueryT["_parentJoins"] extends IJoin[] ?
    (
        Extract<
            AliasedTableT["alias"],
            JoinArrayUtil.TableAliases<QueryT["_parentJoins"]>
        > extends never ?
        unknown :
        CompileError<[
            "Alias",
            Extract<
                AliasedTableT["alias"],
                JoinArrayUtil.TableAliases<QueryT["_parentJoins"]>
            >,
            "already used in parent JOINs",
            JoinArrayUtil.TableAliases<QueryT["_parentJoins"]>
        ]>
    ) :
    unknown
);
export type AssertNoUsedRefImpl<
    AliasedTableT extends IAliasedTable
> = (
    Extract<keyof AliasedTableT["usedRef"], string> extends never ?
    unknown :
    CompileError<[
        "Derived table",
        AliasedTableT["alias"],
        "must not reference outer query tables",
        Writable<
            ColumnIdentifierUtil.FromColumnRef<AliasedTableT["usedRef"]>
        >
    ]>
);
export type AssertValidJoinTargetImpl<
    QueryT extends IQuery,
    AliasedTableT extends IAliasedTable
> = (
    & AssertNotInPreviousJoinsImpl<QueryT, AliasedTableT>
    & AssertNotInParentJoinsImpl<QueryT, AliasedTableT>
    & AssertNoUsedRefImpl<AliasedTableT>
);
export type AssertValidJoinTarget<
    QueryT extends IQuery,
    AliasedTableT extends IAliasedTable
> = (
    AliasedTableT &
    AssertValidJoinTargetImpl<QueryT, AliasedTableT>
);

If all the conditions are satisfied, AssertValidJoinTarget<QueryT, AliasedTableT> resolves to AliasedTableT.
If at least one of the conditions fail, it resolves to AliasedTableT & CompileError<>

It seems like if I nest conditional types instead of introducing intersections, it works,
/**
 * We should never be able to create a value of this type legitimately.
 *
 * `ErrorMessageT` is our error message
 */
interface CompileError<ErrorMessageT extends any[]> {
  /**
   * There should never be a value of this type
   */
  readonly __compileError : never;
}
type ErrorA = CompileError<["I am error A"]>;
type ErrorB = CompileError<["I am error B"]>;

declare const errorA : ErrorA;
/**
 * Different compile errors are assignable to each other.
 */
const errorB : ErrorB = errorA;

type IfExtractExtendsNever<A, B, TrueT, FalseT> = (
  Extract<A, B> extends never ? TrueT : FalseT
);
type Condition0<N, TrueT> = (
  IfExtractExtendsNever<
    3, N,
    TrueT,
    CompileError<[3, "is not allowed; received", N]>
  >
);
type Condition1<N, TrueT> = (
  IfExtractExtendsNever<
    4, N,
    TrueT,
    CompileError<[4, "is not allowed; received", N]>
  >
);
type Condition2<N, TrueT> = (
  IfExtractExtendsNever<
    3, N,
    TrueT,
    CompileError<[3, "is not allowed; received", N, "Same as Condition0 but with different error message"]>
  >
);
type Condition3<N, TrueT> = (
  IfExtractExtendsNever<
    4, N,
    TrueT,
    CompileError<[4, "is not allowed; received", N, "Same as Condition1 but with different error message"]>
  >
);
/**
 * Pretend this is `v1.0.0` of your library.
 */
declare function foo <N extends number> (
  /**
   * This is how we use `CompileError<>` to prevent `3` from being
   * a parameter
   */
  n : (
    Condition0<N, Condition1<N, N>>
  )
) : void;

/**
 * Argument of type '3' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", 3]>'.
 */
foo(3);
/**
 * OK!
 */
foo(5);
/**
 * Argument of type '3 | 5' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", 3 | 5]>'.
 */
foo(5 as 3|5);
/**
 * Argument of type 'number' is not assignable to parameter of type
 * 'CompileError<[3, "is not allowed; received", number]>'.
 */
foo(5 as number);

///////////////////////////////////////////////////////////////////

/**
 * The same as `foo<>()` but with a different error message.
 *
 * Pretend this is `v1.1.0` of your library.
 */
declare function bar <N extends number> (
  n : (
    Condition2<N, Condition3<N, N>>
  )
) : void;

/**
 * Expected: Assignable to each other
 * Actual: Not assignable to each other
 */
const fooIsAssignableToBar : typeof bar = foo;
const barIsAssignableToFoo : typeof foo = bar;

Playground

This assignability situation is actually making life kind of hard ._.
/**
 * We should never be able to create a value of this type legitimately.
 *
 * `ErrorMessageT` is our error message
 */
interface CompileError<ErrorMessageT extends any[]> {
  /**
   * There should never be a value of this type
   */
  readonly __compileError : never;
}
type ErrorA = CompileError<["I am error A"]>;
type ErrorB = CompileError<["I am error B"]>;

declare const errorA : ErrorA;
/**
 * Different compile errors are assignable to each other.
 */
const errorB : ErrorB = errorA;

/**
 * Expected:
 * OK!
 *
 * Actual:
 * Type
 * '<N extends number>(n: N & (Extract<3, N> extends never ? unknown : CompileError<[3, "is not allowed; received", N]>)) => void'
 * is not assignable to type
 * '<N extends number>(n: N & (Extract<3, N> extends never ? unknown : CompileError<[3, "is not allowed; received", N]>)) => void'.
 * Two different types with this name exist, but they are unrelated.
 */
const blah : (
  <N extends number> (
    n : (
      N &
      (Extract<3, N> extends never ?
      unknown :
      CompileError<[3, "is not allowed; received", N]>)
    )
  ) => void
) = (
  <N extends number> (
    n : (
      N &
      (Extract<3, N> extends never ?
      unknown :
      CompileError<[3, "is not allowed; received", N]>)
    )
  ) : void => {

  }
)

Playground

In the above, you see something like A is not assignable to A. And that just confuses me.
My actual use-case has to do with having function properties (not methods) on a generic class.
And the function uses the this keyword.

Smaller repro,

/**
 * Expected:
 * OK!
 *
 * Actual:
 * Type
 * '<N extends number>(n: N & (3 extends N ? any : any)) => void'
 * is not assignable to type
 * '<N extends number>(n: N & (3 extends N ? any : any)) => void'.
 * Two different types with this name exist, but they are unrelated.
 */
const blah : (
  <N extends number> (
    n : (
      N &
      (3 extends N ? any : any)
    )
  ) => void
) = (
  <N extends number> (
    n : (
      N &
      (3 extends N ? any : any)
    )
  ) : void => {

  }
)

Playground

type BLAH<N> = 3 extends N ? any : any;
/**
 * Expected:
 * OK!
 *
 * Actual:
 * Types of parameters 'n' and 'n' are incompatible.
 * Type 'N & BLAH<N>' is not assignable to type 'N & BLAH<N> & BLAH<N & BLAH<N>>'.
 * Type 'N & BLAH<N>' is not assignable to type 'BLAH<N & BLAH<N>>'.
 */
const blah : (
  <N extends number> (
    n : (
      N &
      BLAH<N>
    )
  ) => void
) = (
  <N extends number> (
    n : (
      N &
      BLAH<N>
    )
  ) : void => {

  }
)

Playground

So, if I put the generic type param on the RHS of the extends, it is not assignable,
//Error, cannot assign
const blah : (
  <N extends number> (
    n : (
      N &
      (any extends N ? any : any)
    )
  ) => void
) = (
  <N extends number> (
    n : (
      N &
      (any extends N ? any : any)
    )
  ) : void => {

  }
)

If I put it on the LHS of the extends, it is assignable,
//OK! Can assign
const blah : (
  <N extends number> (
    n : (
      N &
      (N extends 3 ? unknown : ["blah"])
    )
  ) => void
) = (
  <N extends number> (
    n : (
      N &
      (N extends 3 ? unknown : ["blah"])
    )
  ) : void => {

  }
)

And I have zero intuition for why this is the case.

@AnyhowStep TL;DR ?

Umm... Kind of hard to make a TL;DR.

TL;DR
I have a generic function.
It has a parameter.
That parameter uses a conditional type and intersection type.
Because of the conditional and intersection type, a different function with the exact same signature is treated as a different type... Even though they are the same type. A type assertion does not work, either.
I don't know if it is a bug, design limitation, or by design.
And I don't have an intuition for why it thinks it is assignable in some cases, but not assginable in other cases.

//Error, cannot assign
const blah : (
  <N extends number> (
    n : (
      N &
      (any extends N ? any : any)
    )
  ) => void
) = (
  <N extends number> (
    n : (
      N &
      (any extends N ? any : any)
    )
  ) : void => {

  }
)

Playground
Notice that the type annotation and the type of the function have the same "type". But the compiler thinks they're different types.

But I have found that this is not always the case. In certain cases, the compiler knows they're the same type.
Like when I put N on the LHS of the extends.
//OK! Can assign
const blah : (
  <N extends number> (
    n : (
      N &
      (N extends 3 ? unknown : ["blah"])
    )
  ) => void
) = (
  <N extends number> (
    n : (
      N &
      (N extends 3 ? unknown : ["blah"])
    )
  ) : void => {

  }
)

Playground


fixed standardjs errors on login.js

@Zenerika , I fixed all the standard js "errors" in login.js and made it as a module.


Msi ms7d25/rel v1.1.3

@BeataZdunczyk

also add a link to the new test results spreadsheet that we have since this release: https://docs.google.com/spreadsheets/d/1wSE6xA3K3nXewwLn5lV39_2wZL1kg5AkGb4mvmG3bwE/edit?usp=sharing

Let's use a link that directly leads to results for given platform, from page is not that interesting for subscribers.

@BeataZdunczyk

also add a link to the new test results spreadsheet that we have since this release: https://docs.google.com/spreadsheets/d/1wSE6xA3K3nXewwLn5lV39_2wZL1kg5AkGb4mvmG3bwE/edit?usp=sharing

Let's use a link that directly leads to results for given platform, front page is not that interesting for subscribers.

https://github.com/Dasharo/docs/pull/686/commits/f91807ba59f8f0d7c2b08ec1faba9a3311d888dc#diff-02c1965ab265070941dfe35aabf982d0946a2ee1545fac0763eda95ccf36162fR17

@miczyg1 you can merge this release notes after fixing link checker errors https://github.com/Dasharo/docs/actions/runs/7610834739/job/20725011619?pr=686

Sop links are broken, the same is on master, so this MR is in no way worse. We need to find out internally what has happened and fix it in a followup.


Manager shutdown hanging in GracefulStop

I got this stack trace when shutting down dockerd:
https://gist.github.com/aaronlehmann/5b80c6b9d7beca9f2835aa96e14dd4a7
It looks like GracefulStop is hanging, probably because it's waiting for the handler for a streaming events Watch RPC to finish. This RPC handler needs to terminate when the server is shut down.
cc @LK4D4 @dongluochen

/cc @dperny


Set permanent as default redirect configuration

I was wondering if it is possible to configure somewhere that the default redirect type configuration should be permanent instead of temporary?

@marisks @valdisiljuconoks @kaspars-ozols @jevgenijsp @ellinge

No it’s set as selected in template:
https://github.com/Geta/geta-notfoundhandler/blob/2ed3c5f746d5497fd9f0a6432aa453935e2b8a9e/src/Geta.NotFoundHandler.Admin/Areas/GetaNotFoundHandlerAdmin/Pages/Index.cshtml#L48

I agree that it would be beneficial to be able to specify default redirect type in configuration.
Changing the HTML template is not good as it would break potential future package upgrades.


chore: add offline bundle Makefile target

Codecov Report
Patch coverage: 13.66% and project coverage change: -0.64 :warning:

Comparison is base (a0db425) 18.67% compared to head (567c672) 18.04%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #558      +/-   ##
===========================================
- Coverage    18.67%   18.04%   -0.64%
===========================================
  Files           53       54       +1
  Lines         4878     5082     +204
===========================================
+ Hits           911      917       +6
- Misses        3940     4138     +198
  Partials        27       27

Impacted Files
Coverage Δ

golang/api/v1/deploy.go
80.61% <ø> (ø)

golang/internal/helper/docker/container.go
0.00% <0.00%> (ø)

golang/internal/helper/docker/network.go
0.00% <ø> (ø)

golang/internal/mapper/grpc.go
69.61% <ø> (ø)

golang/pkg/builder/container/container_builder.go
0.00% <ø> (ø)

golang/pkg/crane/k8s/deploy_facade.go
0.00% <ø> (ø)

golang/pkg/crane/k8s/secret.go
0.00% <ø> (ø)

golang/pkg/dagent/utils/container.go
0.00% <ø> (ø)

golang/pkg/dagent/utils/docker.go
8.85% <ø> (ø)

golang/pkg/dagent/utils/dockerhelper.go
0.00% <ø> (ø)

... and 5 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Reorder vector size nesting to fix multi-dimensional vecs

Note: there is probably a chisel "bug" counteracting this "bug," so this is definitely not ready for primetime
The following is currently illegal, causing the compiler to complain that the index 2 is too big for the range of a 2-element vector.
circuit Top :
  module Top :
    input clock : Clock
    output out : UInt<1>
    reg r_vec : UInt<1>[4][2], clock
    out <= r_vec[UInt<2>(2)][UInt<1>(1)]

This arises because the order in which index notation is considered is not compatible between vec declarations and access expressions. There are two ways to fix it (fixing the declarations or fixing the expressions), and this fix assumes that the access expression from the above block should be resolved to the following AST, as it currently does in master:
    SubAccess
    |       |
SubAccess   1
|       |
Ref     2

The counterintuitive, but correct implication is that the vec should have type Vec(Vec(_, 1), 2). This PR modifies the grammar to cause that to happen, by using a single production to iterate through the declared sizes of multi-dimensional vecs, followed by a foldRight to produce the right IR structure.

To add some food for thought (because I have been struggling to wrap my head around this), here is some example Chisel code and what it maps to:
  val vecA = Wire(Vec(2, Vec(4, UInt(32.W))))
  vecA(1)(3) := "haa".U

    wire vecA : UInt<32>[4][2]
    vecA[1][3] <= UInt<8>("h0aa")

  class MyBundle extends Bundle { val foo = Vec(4, UInt(32.W)) }
  val vecB = Wire(Vec(2, new MyBundle))
  vecB(1).foo(3) := "hbb".U

    wire vecB : {foo : UInt<32>[4]}[2]
    vecB[1].foo[3] <= UInt<8>("h0bb")

Now the Chisel code makes sense in that it matches the behavior of Scala, eg.
scala> val xs = Seq.tabulate(2) { i =>
     |   Seq.tabulate(4) { j => (i + 1)*(j + 2) }
     | }
xs: Seq[Seq[Int]] = List(List(2, 3, 4, 5), List(4, 6, 8, 10))

scala> println(xs(1)(3))
10

However, the generated Firrtl code differs from what one would expect when you look at equivalent C code:
#include <stdio.h>

typedef struct {
  int foo[4];
} foo_t ;

int main(void) {
  int arr1[4][2];
  foo_t arr2[2];
  arr1[3][1] = 4;
  arr2[1].foo[3] = 5;
  printf("%d %d\n", arr1[3][1], arr2[1].foo[3]);
  return 0;
}

In summary: The Chisel API looks and acts like one would expect in Scala. The confusing bit is that it maps to type definitions that look like C but are indexed like Scala, which is what I believe @albert-magyar is trying to address. As he said, this does require a change to Chisel emission in addition to this PR.

Won't fix per @azidar comment.


Docs: non-cask binaries are not overwritten by --force

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?
[x] Have you successfully run brew man locally and committed any changes?

This was decided in August but recently we had another issue because of it. Understandably, some people will expect --force to mean “trample everything”, so we should document when that isn’t the case.

Review period will end on 2021-01-08 at 21:26:39 UTC.

Review period will end on 2021-01-08 at 21:26:39 UTC.

Review period skipped due to critical label.

Review period skipped due to critical label.


Newline

Mirror of #34 so that we can run CI
@blakemorgan

I'm pleasantly surprised that the CI started by this PR also applied to #34.


beta cohort

#17
Work session #17
Monday, April 24 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs
https://docs.google.com/document/d/1dg_UNoyyoH5W9cpwYf-7hA2jre1NM9Cs-8dGAYz2fv8/edit?usp=sharing

Work session #18
Tuesday, April 25 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs
https://docs.google.com/document/d/1KuJ7xYQHxDF0JbWNrclR_wJp8_1coA28wGy9oU3eEAs/edit?usp=sharing

19

Thursday Session (#20)
Thursday, April 27 · 10:00 – 11:00pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/cqv-gwzz-hmk

Work session #21
Monday, May 1 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs

Work session #22
Tuesday, May 2 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs
https://docs.google.com/document/d/1Ktx5gGx_J4h_jE0oCE3Ef9rTZLvAHWpHcpFwlBk_iWI/edit?usp=sharing

Work session #23
Wednesday, May 3 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs
https://docs.google.com/document/d/1SDSguaRpyGPEgA6R2s7_JN7cIPmPF3k97idBMj_39gQ/edit

Work session #25
Monday, May 8 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs
notes: https://docs.google.com/document/d/1G0eucMIxWksPLwJlF0ggiHwuSShVDLn8jg4S1H1oc10/edit?usp=sharing

Work session #26
Tuesday, May 9 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs

Work session #27
Wednesday, May 10 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs
https://docs.google.com/document/d/1Qx5z3JvC2set-TbsbNeGpNKQH0UeaH7LZqPW9YkUlPw/edit

#28 Thursday Work Session
Thursday, May 11 · 9:30 – 10:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/qed-qkny-hox
https://docs.google.com/document/d/10iWaBwxLBcsB7oKEW3scRS1x9EIHXXBjZVnbBUqazUo/edit?usp=sharing

Work session #30
Tuesday, May 16 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/oau-bprx-hhs
https://docs.google.com/document/d/15d42j3lNAYm_2j-XrN9jzaBR0Zod_5gqpJzwbeCfph0/edit?usp=sharing

Thursday Work Session (#32)
Thursday, May 18 · 10:00 – 11:00pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/qed-qkny-hox
https://docs.google.com/document/d/1ZCzerEVJjgjr71ew0-stSgZfljJfgK9hm1zFcpfDA-o/edit

Work Session #33
Monday, May 22 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/vcp-khky-mxf
https://docs.google.com/document/d/1ZCzerEVJjgjr71ew0-stSgZfljJfgK9hm1zFcpfDA-o/edit?usp=sharing

Work Session #34
Tuesday, May 23 · 9:30 – 11:30pm
Time zone: America/Sao_Paulo
Google Meet joining info
Video call link: https://meet.google.com/xoi-euww-trg
https://docs.google.com/document/d/17A7BAEwfFqFvI2rwgRY1Lddxh4q3lBheK28KHmXWlBA/edit?usp=sharing


Remove ground control pagination and show ID

Description
Remove ground control pagination and show assessment ID.
Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Code quality improvements

How to test
It's deployed on staging.
Checklist

[x] I have tested this code
[ ] I have updated the documentation

Pull Request Test Coverage Report for Build 6798

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 31.524%

Totals

Change from base Build 6771:
0.0%

Covered Lines:
1862

Relevant Lines:
5521

💛  - Coveralls


fatal: repository 'https://github.com/NodLabs/SHARK/tree/main/iree/' not found

hi ，clone iree error，how can I solve it?
Cloning into '/root/mmperf/external/flatbuffers'...
remote: Enumerating objects: 25292, done.
remote: Counting objects: 100% (2168/2168), done.
remote: Compressing objects: 100% (890/890), done.
remote: Total 25292 (delta 1329), reused 1818 (delta 1174), pack-reused 23124
Receiving objects: 100% (25292/25292), 15.85 MiB | 13.83 MiB/s, done.
Resolving deltas: 100% (17583/17583), done.
Cloning into '/root/mmperf/external/iree'...
fatal: repository 'https://github.com/NodLabs/SHARK/tree/main/iree/' not found
fatal: clone of 'https://github.com/NodLabs/SHARK/tree/main/iree' into submodule path '/root/mmperf/external/iree' failed
Failed to clone 'external/iree'. Retry scheduled
Cloning into '/root/mmperf/external/iree-llvm-sandbox'...
remote: Enumerating objects: 7480, done.
remote: Counting objects: 100% (7480/7480), done.
remote: Compressing objects: 100% (2161/2161), done.
remote: Total 7480 (delta 5395), reused 7135 (delta 5153), pack-reused 0
Receiving objects: 100% (7480/7480), 2.98 MiB | 4.22 MiB/s, done.
Resolving deltas: 100% (5395/5395), done.

@yzhang93  looks like an error in the submodule
As a workaround please edit the .gitmodules file to just point to nodlabs/SHARK and remove the branch

thank you，Can be solved

I pushed a patch to fix this. thanks for the report.


Drop SubtypeName

...as it's only used in System Tests.  So moved there.

coverage: 98.673% (-0.05%) from 98.723%
when pulling 500a7c738b6371144abac8c86d34b5f4306e2556 on subtype-naming
into 60725611df73a97f6302552814f726e04758c395 on main.


Allow Identitys to be cloned

The Identity struct, as consumed by TlsConnectorBuilder::identity, is not clonable. Due to this, if the same identity pair needs to be used in more than one place, it must be parsed from source data in each place, requiring error handling at each point.
For comparison, the Certificate, consumed by TlsConnectorBuilder::add_root_certificate for example, is clonable.
Can Identity be made clonable?

It'll require some work on the OpenSSL side.

Thanks!


Deprecate RAC2 support?

Not insignificant time is being spent maintaining the RACSignal extensions, as well as the non-RAC3+ provider. We should consider officially marking these as deprecated for some time, before eventually removing them.
Not sure if anyone else is using them or if its just me, and I won't be for much longer. Open for discussion!

I'm all for removing them. We could mark them as depreciated in the next major version and keep them in as long as RAC4 is still not final.

Sounds like a plan!

+1. Out with the old in with the new.

Next action would be to add @available(*, deprecated, message="This will be removed in the next major version of Moya. Please visit https://github.com/Moya/Moya/issues/298 for more information.") to all relevant methods (I should think request overload).


datsketches extension updated to use the latest sketches-core-0.12.0

Everything must be compatible

sketches-core-0.12.0 uses memory-0.12.0, which forced most of the changes. In particular, new memory is sensitive to the byte order of ByteBuffer received from Druid, which is not always right. MemoryWrapper was introduced to force little endian byte order.

@AlexanderSaydakov  yes, SynchronizedUnion is not needed in buffer aggregators which are never used concurrently. Aggregator on the other hand gets used at "realtime" processes concurrently to index as well as query data.

SynchronizedUnion is not needed in buffer aggregators which are never used concurrently

That is great, if so. But I wonder why in previous reviews of other modules (quantiles in particular) I was advised to use that striped locking in buffer aggregators. Perhaps we should revise those to get rid of unnecessary complexity.

I see that conflicts appeared. I will take care of them in a couple of days.

Rebased to resolve conflicts.


Feature request: Specify path to .htpasswd file

Currently, one can do this:
[web]
address = ":8080"

  [web.auth.basic]
    users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/", "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/

The problem with this, however, is that users of Kubernetes are likely to stash their entire traefik.toml in a configmap. Storing secrets (like passwords) in a configmap, even if encoded, is frowned upon. To circumvent this, one could consider base64 encoding the entire traefik.toml and storing that in a secret instead, but that unnecessarily obfuscates lots of non-sensitive configuration. From an operator's perspective, it's not ideal.
What would make all of this easier to deal with would be if, as with certificates, passwords could be loaded from a separate file-- an .htpasswd file in this case. What would the Traefik team think about making it possible in traefik.yaml to simply provide a path to such a file? This would help Kubernetes users quite a bit because just the password could be stored in a secret while all the non-sensitive config remains in a configmap.

sounds reasonable


Limit 6 devices

Hi thank you for your efforts.
While trying to implement a dynamic flow i came across a limitation.
It seems you can only connect six devices on a single account.
to connect more you have to use another account.

Hello @E1cid,
Are you getting an "Authentication error" or a "Service Temporary Unavailable"?(https://github.com/ottoszika/node-red-contrib-ewelink/issues/74)
Thanks,
Otto

i got the service temp unavailable  in html format. As i said it happens after the 6th device. i workred around it by add multiple accounts and sharing devices.

Ditto. #503 temporarily unavailable.

Im having disconected error after some hours, already shared my devices with 3 accounts but the error still appears, only 2 devices are connected per account

I share all my devices with other accounts, just found that easier. I find that you can not log in on mobile app without the ewelink nodes losing connection. I therefor use one account for mobile app and other accounts for node-red.

Yes I created 2 extra accounts just for node-red but I still loose the connection , only 2 devices per account stay connected
From<EMAIL_ADDRESS>Sent: 4 de junho de 2020 19:30
To<EMAIL_ADDRESS>Cc: Bruno Miguel<EMAIL_ADDRESS><EMAIL_ADDRESS>Subject: Re: [ottoszika/node-red-contrib-ewelink] Limit 6 devices (#77)
I share all my devices with other accounts, just found that easier. I find that you can not log in on mobile app without the ewelink nodes losing connection. I therefor use one account for mobile app and other accounts for node-red.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/ottoszika/node-red-contrib-ewelink/issues/77#issuecomment-639032674, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AHZRDZQWSPTEXVDQBFVSKO3RU7R4RANCNFSM4KBNYW4Q.

Are they devices or listeners?

All devices and just 1 listener
Com os melhores cumprimentos,
Bruno Mataloto, nº70082 DCTI

From: E1cid<EMAIL_ADDRESS>Sent: Thursday, June 4, 2020 7:33:19 PM
To: ottoszika/node-red-contrib-ewelink<EMAIL_ADDRESS>Cc: Bruno Miguel Mataloto<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: Re: [ottoszika/node-red-contrib-ewelink] Limit 6 devices (#77)
Are they devices or listeners?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/ottoszika/node-red-contrib-ewelink/issues/77#issuecomment-639034542, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AHZRDZQTUFHAMWJZBSQNYC3RU7SG7ANCNFSM4KBNYW4Q.

Same as my set up, i am not seeing any issues. Have you tried restarting the node_red server? I have 12 devices over 2 accounts and a listener on its own account.

The listener should be in a separate account?
Com os melhores cumprimentos,
Bruno Mataloto, nº70082 DCTI

From: E1cid<EMAIL_ADDRESS>Sent: Thursday, June 4, 2020 8:28:10 PM
To: ottoszika/node-red-contrib-ewelink<EMAIL_ADDRESS>Cc: Bruno Miguel Mataloto<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: Re: [ottoszika/node-red-contrib-ewelink] Limit 6 devices (#77)
Same as my set up, i am not seeing any issues. Have you tried restarting the node_red server? I have 12 devices over 2 accounts and a listener on its own account.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/ottoszika/node-red-contrib-ewelink/issues/77#issuecomment-639068985, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AHZRDZUBHMILABST67QFDODRU7YUVANCNFSM4KBNYW4Q.

I don't think it has to be, but mine is.

I am afraid I am still stucking on 401 authorizatio error issue. You have mentioned in previous conversations that you have made a global connection which use 1 login at the same time, but I did not find how to do it. Or - Is there a chance for example to specify deviceId as a node property over a JSON format in msg.payload? It could solve the problem as we will have only 1 node for switch on and off and deviceId we want to switch will be in msg.payload......

Here I have same issue, even after paid "Annual Advanced subscription"

I keep having 6 account limit. I shared the devices over 3 accounts (owner + 2 shared) but always only 6 nodes connected, no matter which account I use. Other nodes return:
FetchError: invalid json response body at https://eu-api.coolkit.cc:8080/api/user/login reason: Unexpected token < in JSON at position 0
P.S.: I'm glad to try to help with the code if someone give me some hint about where to start.

Hi all,
I have found a solution to read Ewelink devices status, doest matter how many.
I have used Devices node to read all devices status, and after filtering any of them

To send a command to Ewelink I am using IFTTT

Hi all,
I have found a solution to read Ewelink devices status, doest matter how many.
I have used Devices node to read all devices status, and after filtering any of them

To send a command to Ewelink I am using IFTTT

Hi sergey08, that's smart. If we get an equivalent method to write status, we can solve every situation. Nonetheless, it would be nice to have the nodes working as they are now!

Node pañette has an update 5 days ago!!!
Version 2.0
Maybe fix it

IMHO lib should use serverless mode: saving token and reuse it. Other thing I noticed is that if you send many commands at the same time (to different sonoff devices) they will fail. May be it is a similar problem for connection?
P.S: I'm using the latest version.

I manged to overcome the limit of 6 devices making a connection pool and reusing them when needed. I modified the 'ready' promise function in file ewelink-connect.js like this:
ready (RED, node, config)  {
  // Get credentials node
  const credentialsNode = RED.nodes.getNode(config.auth);

  // Check for valid credential node
  if (!credentialsNode) {
    throw new Error('No credentials provided!');
  }

  // Set the node status to 'connecting'
  this.setNodeStatusToConnecting(node);

  if (globalThis.connectionPool == undefined)
    globalThis.connectionPool = [];

  // search for stored connection(Promise) in global array
  for (let storedConnection of globalThis.connectionPool) {
    if (storedConnection.credential == config.auth) {
      this.setNodeStatusToConnected(node);
      return storedConnection.connection;
    }
  }

  let connectionPromise = new Promise((resolve, reject) => {

    credentialsNode.connection.getCredentials().then(response => {
      if (response.error) {
        this.setNodeStatusToDisconnected(node);
        return reject(response);
      }

      this.setNodeStatusToConnected(node);
      return resolve (credentialsNode.connection);
    })
    .catch(error => {
      this.setNodeStatusToDisconnected (node);
      reject(error);
    });
  });

  let newConnection = {
    credential: config.auth,
    connection: connectionPromise
  };
  globalThis.connectionPool.push(newConnection); //append to global array for reuse

  return connectionPromise;
}

I'm a beginner with js so maybe this is not the best solution. Anyway it works on my setup. I'm happy to elaborate it in a better way if someone point me in some direction.

I manged to overcome the limit of 6 devices making a connection pool and reusing them when needed. I modified the 'ready' promise function in file ewelink-connect.js like this:
ready (RED, node, config)  {
  // Get credentials node
  const credentialsNode = RED.nodes.getNode(config.auth);

  // Check for valid credential node
  if (!credentialsNode) {
    throw new Error('No credentials provided!');
  }

  // Set the node status to 'connecting'
  this.setNodeStatusToConnecting(node);

  if (globalThis.connectionPool == undefined)
    globalThis.connectionPool = [];

  // search for stored connection(Promise) in global array
  for (let storedConnection of globalThis.connectionPool) {
    if (storedConnection.credential == config.auth) {
      this.setNodeStatusToConnected(node);
      return storedConnection.connection;
    }
  }

  let connectionPromise = new Promise((resolve, reject) => {

    credentialsNode.connection.getCredentials().then(response => {
      if (response.error) {
        this.setNodeStatusToDisconnected(node);
        return reject(response);
      }

      this.setNodeStatusToConnected(node);
      return resolve (credentialsNode.connection);
    })
    .catch(error => {
      this.setNodeStatusToDisconnected (node);
      reject(error);
    });
  });

  let newConnection = {
    credential: config.auth,
    connection: connectionPromise
  };
  globalThis.connectionPool.push(newConnection); //append to global array for reuse

  return connectionPromise;
}

I'm a beginner with js so maybe this is not the best solution. Anyway it works on my setup. I'm happy to elaborate it in a better way if someone point me in some direction.

Very interesting. Good job!!!
Look works!!!!!
I have found ewelink-connect.js in the path /.node-red/node_modules/node-red-contrib-ewelink/src/utils
Is this file the one we have to edit?
I have tried and I think you miss a , at the end
....
};
globalThis.connectionPool.push(newConnection); //append to global array for reuse
return connectionPromise;
},
That the only way node keep working for me.
Thanks a lot!!!!

Very interesting. Good job!!!
Look works!!!!!
I have found ewelink-connect.js in the path /.node-red/node_modules/node-red-contrib-ewelink/src/utils
Is this file the one we have to edit?
I have tried and I think you miss a , at the end
....
};
globalThis.connectionPool.push(newConnection); //append to global array for reuse
return connectionPromise;
},
That the only way node keep working for me.
Thanks a lot!!!!

Very interesting. Good job!!!
Look works!!!!!
I have found ewelink-connect.js in the path /.node-red/node_modules/node-red-contrib-ewelink/src/utils
Is this file the one we have to edit?
I have tried and I think you miss a , at the end
....
};
globalThis.connectionPool.push(newConnection); //append to global array for reuse
return connectionPromise;
},
That the only way node keep working for me.
Thanks a lot!!!!

I confirm, the file is that one. And you're right about the comma at the end. Sorry, it wasn't clear.

Very interesting. Good job!!!
Look works!!!!!
I have found ewelink-connect.js in the path /.node-red/node_modules/node-red-contrib-ewelink/src/utils
Is this file the one we have to edit?
I have tried and I think you miss a , at the end
....
};
globalThis.connectionPool.push(newConnection); //append to global array for reuse
return connectionPromise;
},
That the only way node keep working for me.
Thanks a lot!!!!

I confirm, the file is that one. And you're right about the comma at the end. Sorry, it wasn't clear.

I also confirm this works perfectly, is there any reason this is not included in the codebase?
Great work @1101101011011110 , thank you very much!
Thank you @nareso for pointing this in another issue.

Hallo zusammen,
habe auch versucht oben genannten code zu verwenden. Leider habe ich immer noch das Problem das mindestens 2 meiner 8 Geräte als nicht conncted angezeigt werden. Was aber lustig ist..... 1 Gerät ist definiv offline da nicht eingesteckt wird aber manchmal als connected angezeigt?


create new structure for site

creates base files for new site architecture.

Closing pull request to create branch on upstream and merge from upstream


Incorrect comments indentation formatting in select block

case
when 1
  # This is OK
  foo
when 2
  # This is OK
  bar
end

select
when x
# Not OK
  foo
when y
# Still not OK
  bar
end

This could be put in one box I guess. Note then indentation:
case
when x  then foo
when yz then bar
end

select
when x then foo
when yz then bar
end


Leaderboard Feature + Functionality

ask gayathri bro

u fr bro

jk bro i need to confirm a few things with design team first. we lyk when done with this.

u the boss


Use semantic versioning

I want to use semantic versioning for versioning aiohttp_cors.
E.g. release not yet stable version as 0.1.0, 0.2.0, ..., and subsequent stable versions as 1.0.0, 2.0.0, ..., according to semantic versioning rules.
Any objections?
/cc @asvetlov

Feel free to publish aiohttp_cors 1.0.0 but I think aiohttp is not ready yet for 1.0.
I prefer 0.1.x for now.

Sound reasonable, I'll stay with 0.x.x versions for now.


oaRename does not seem to work

Hi there,
The ability to use "oaRename" as detailed in the cli-options example does not appear to work. I attempted to use the renaming ability by cloning the portman repo and running the example detailed in examples/cli-options. Unfortunately, it didn't work.
Are there any known issues with this?
Thanks in advance,
Paul

This is not an issue. I sorted this out by simply using "collectionName" in my portman-cli.json file.


Need to add more protein features to ProteinMetadata

Could not parse feature: Unrecognized protein feature type: "Topological domain" (skipping)
Could not parse feature: Unrecognized protein feature type: "Transmembrane" (skipping)
Redo the SLC32A1 analysis after this is added.

Unrecognized protein feature type: "Zinc finger" (skipping). ZN462

Basic and acidic residues -- manual JSON is working but UnitProt API omits this
label="NKX6-2",
uniprot_json="Q9C056.json",


spike - consider iac addition for app management

@johndietz can you add more information to what this issue is please?


Unable to add empty lines between buttons (commands) in Welcome Content in TreeView

VSCode Version: 1.44
OS Version: MacOS Mojave 10.14.6

Does this issue occur when all extensions are disabled?: Yes
Steps to Reproduce:

Define a viewsWelcome content, containing two commands in sequence, like the snippet bellow:

    "viewsWelcome": [
      {
        "view": "projectsExplorerFavorites",
        "contents": "No projects saved yet.\n
                     In order to save projects, you have to open a folder or workspace first.\n
                     [Open a Folder](command:workbench.action.files.openFileFolder)\n
                     \n
                     [Open a Workspace](command:workbench.action.openWorkspace)\n
                     To learn more about how to use Project Manager in VS Code [read the docs](http://github.com/alefragnani/vscode-project-manager/#project-manager)",
        "when": "workbenchState == empty"
      },

the contents json is splitted just for viewing purposes. it is a single line entry in package.json file

I will display this:

I tried a few alternatives to add an empty line between both commands (buttons), with no success (new line  \n , tab \t , html - empty space &nbsp, html - line break <br/> , html - paragraph <p>, with no success. It seems a limitation in the rendering engine.

I'm  looking for something like this (edited the html in DevTools):

You can see the same issue (not exactly coding but visual) in the native Source Control view

Thank you

I believe this is a duplicate of https://github.com/microsoft/vscode/issues/94592 which is already fixed in insiders.
Can you reproduce using Visual Studio Code Insiders https://code.visualstudio.com/insiders/

That's it! Working perfectly in Insiders 👏
Thank you!

/duplicate #94592

Thanks


Add goals to factions

A faction should have a goal

This is actually the synopsis, so this is not relevant


fix(DrawingTool): better support of staging Token Service environments

[PT-185233166]
This PR will allow us to reconfigure Token Service to use https://token-service-files.concordqa.org/ domain instead of https://token-service-files.s3.amazonaws.com/.
Note that there's another bug somewhere around that makes Token Service always use the staging / QA environment - even on LARA production. But this will improve things on staging, and it'll slightly improve things on production until the other bug is fixed.

@scytacki, I just removed the direct token-service-files S3 bucket URL from the proxy whitelist as we discussed. It started to work for me, but just to be safer. It's not a regression, as we've been always using proxy in this case. I was just hoping we can optimize it.


Server side render not creating class="active" for Link elements

I'm getting an 'isomorphic' fail where my navigation links are getting class="active" on the client side but not on the server side. Everything else in the page appears as I expect it to.
This is what my server rendering code looks like. (Partly copied from the code shown in https://github.com/rackt/react-router/issues/1793) The routes variable is a Route element with several Route children. It's the same route used on the client.
I'm happy to provide more code if that helps.
require('babel/register');
var keystone = require('keystone');
var _ = require('underscore');
var React = require('react');
var RoutingContext = require('react-router/lib/RoutingContext');
var routeUtils = require('react-router/lib/RouteUtils');
var useRoutes = require('react-router/lib/useRoutes');
var createLocation = require('history/lib/createLocation');
var createHistory = require('history/lib/createMemoryHistory');
var routes = require('../../app/components/routes/routes');

module.exports = function (req, res) {

    var history = useRoutes(createHistory)({
        routes: routeUtils.createRoutes(routes)
    });
    var location = createLocation(req.path);
    var view = new keystone.View(req, res);

    history.match(location, function (error, state) {

        var element = React.createElement(RoutingContext, _.extend({}, state, {
            history: history
        }));

        view.render('app', {
            content: React.renderToString(element)
        });

    });

};

missing active class +1
Warning: React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:
 (client) a class="header__btn active" href="/" da
 (server) a class="header__btn" href="/" data-reac

Working here. How are you setting up your history object?
This is what I'm doing:
import createHistory from 'history/lib/createHistory';
let history = createHistory({
  getCurrentLocation: () => createLocation(req.path, {}, undefined, 'root')
});

what does the client code look like? are you using createBrowserHistory?

I find that createBrowserHistory throws errors when used server side. I've used createMemoryHistory as shown above.

Yes I use createBrowserHistory on the client side. My server side code looks like this:
import React from 'react';
import Router, { HistoryLocation } from 'react-router';
import routes from './routes';

const mount = document.getElementById('application');

// declare our routes and their hierarchy
Router.run(routes, HistoryLocation, (Root) => React.render(<Root />, mount));

SSR is still baking, we'll make sure there are tests around this.

This is happening for me too. on RC1
server:
const location = createLocation(this.request.url)
match({ routes, location }, (error, redirect, renderProps) => {
  ...<RoutingContext {...renderProps}/>
})

client:
const history = createBrowserHistory({
  queryKey: false
})
<Router history={history}>

Passing in a history to the Router on the server doesn't seem to fix the problem here.

The documentation has been update with how to implement properly. Working smoothly with rc1.

That's the approach I've taken but still the above problem persists regarding the active class... all else works fine.

Did you set activeClassName?

Yes, that's the problem... it's adding the active class on the client but not from the server.
Using the advised config. Have added the additional history with getCurrentLocation to the server as well but still the inconsistency.

If your final block in this comment is current, that's different from the rc1 API for SSR. You no longer have to create a history. Otherwise, I have a working implementation in an example project: Component (display: none because just using it as a proof), SSR, client-side.

I added the history section after finding the bug in my code and reading this github.
Here is a more complete version of my current code:
routes function used in both client and server
const makeRoutes = (history) => (
  <Router history={history}>
    <Route path='/' component={App}>
      <Route path='login' component={Login} />
    </Route>
  </Router>
)

server middleware setting a routeContext
export default function routeContextMiddleware(makeRoutes){
  return function *(next){
    const location = createLocation(this.request.url)
    const routes = makeRoutes();
    match({ routes, location }, (error, redirect, renderProps) => {
      if (redirect)
        this.redirect(redirect.pathname + redirect.search)
      else if (error)
        this.throw(error.message)
      else if (renderProps == null)
        this.throw(404, 'Not found')
      else
        this.routeContext = <RoutingContext {...renderProps}/>
    })
    yield next
  }
}

response middleware on the server
export default function renderRouter(isomorphicTools){
  return function *(){
    if (process.env.NODE_ENV == 'development') {
      isomorphicTools.refresh()
    }
    const { javascript, styles } = isomorphicTools.assets();
    const html = ReactDOMServer.renderToString(

        {this.routeContext}

    );
    this.body = `<!doctype html>${html}`;
  }
}

App
export class App extends React.Component {

  render() {
    return (
      <Grid className={cx('app', style.app)} >
        <Col u='1'>
          <Link activeClassName={style.active} to='/'>Home</Link>

          <Link activeClassName={style.active} to='/login'>Login</Link>
        </Col>
        <Col u='1'>

Hello, world!

        </Col>
        <Col u='1'>
          {this.props.children || 'Home'}
        </Col>
      </Grid>
    )
  }
}

client entry point:
const history = createBrowserHistory({
  queryKey: false
})

ReactDOM.render(
  makeRoutes(history),
  document.getElementById('application-root')
)

As the one who raised the original issue, I can confirm that it's now working correctly for me.
I'm using React 0.14.0-rc1 and React Router 1.0.0-rc1. (I'm also using redux and keystone but that's not important here.)
My server side code looks like this:
require('babel/register');
var keystone = require('keystone');
var React = require('react');
var ReactDOMServer = require('react-dom/server');
var RoutingContext = require('react-router').RoutingContext;
var match = require('react-router').match;
var createLocation = require('history').createLocation;
var Provider = require('react-redux').Provider;

var configureStore = require('../../app/store/configureStore');
var routes = require('../../app/components/routes/routes');

module.exports = function (req, res) {

    var location = createLocation(req.path);
    var view = new keystone.View(req, res);
    var store = configureStore(res.locals.data);

    match({
        routes: routes,
        location: location
    }, function (error, redirectLocation, renderProps) {

        var provider = React.createElement(Provider, {
            store: store,
            children: React.createElement(RoutingContext, renderProps)
        });

        view.render('app', {
            content: ReactDOMServer.renderToString(provider),
            data: JSON.stringify(store.getState())
        });

    });

};

I still don't see where mine is rendering from the server incorrectly? If I remove activeClassName, the server and client both stay in sync perfectly.

Thanks for the help so far..
After debugging further, my server is responding correctly... so this works... although I still get the error:
Warning: React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:
(client) m8g2dc.0"><a class="" href="/" data-reac

This is telling my my server isn't rendering the active class... even though it is... disabled javascript and the class is there just fine.

Nevermind, found my issue.
Link is behaving inconsistently with parent route matching - not setting the parent route as active... fixed this case with an IndexLink for now.

This is happening again:
"react": "^0.14.0",
"react-dom": "^0.14.0",
"react-router": "^1.0.0-rc3",
"history": "^1.9.1",

  <Router history={history}>
    <Route path='/' component={App}>
      <IndexRoute component={Home}/>

    const { url } = this.request;
    match({ routes, location: url }, (error, redirect, renderProps) => {
      <RoutingContext {...renderProps}/>

class HeadNavigation extends React.Component {
  render() {
    return (

        <IndexLink to='/' activeClassName={styles.active}>
          Home
        </IndexLink>

Warning: React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:
 (client) 3k.0.0.0"> {

})

use: match({ location:  req.originalUrl })
not: match({ location:  req.url })


Not working on release

Hello, im using version 3.0.0 on my apps, when i test them there is no problem with this plugin but when i release the apps (android and ios) it does not work (the app on facebook developers is active not in development).

Same issue. On iOS working perfect on Testflight, but Android don't work.

Same issue here (Android).

@roughike any idea?

Hello everyone,
do not forget to add the Hash for Android in the configuration (facebook developer console).

I have resolved it by generating key hashes which is generated using android keystore file. Followed this instruction.

Please notice that you can have problems depending on the end-user device,
for example if I have NOT the Facebook app installed, then everything works fine. The login comes in a webview.
If I try with the facebook app active, then the login try to use the native FB app and it can throw an error if my app key hash is not properly configured.
A workaround is to force the webview using:
facebookLogin.loginBehavior = FacebookLoginBehavior.webViewOnly;

having my hash configures but still some androids fail to login

@viniciuszani thanks! Finding the solution for this drove me crazy, as the signing cert through play store isn't mentioned anywhere. Makes sense of course now but the documentation should definitely reflect this as a hint somewhere.

I had login issues with just a set of devices (!?), while for the majority of our users the login was working perfectly in production.
After some debugging, the error message we got was that the hash key did not match.
The steps below solved the problem.
If you use Google Play App Signing:

Go to Google Play Console -> Release Management -> App signig
In the App signing certificate, copy the SHA-1 certificate fingerprint value (AA:BB:CC...)
Use this tool to convert it to base64: http://tomeko.net/online_tools/hex_to_base64.php
Repeat the process with the Upload certificate SHA-1 certificate fingerprint
Open https://developers.facebook.com/ and go to Configuration -> Basic -> scroll to Android
Paste the base64 generated values in the key hashes and save it

Alternative:

Generate your appbundle or apk using your tools (android studio, flutter, react native...) - here my example output will be app.aab (bundle)
Go to the generated file using your terminal
Run keytool -list -printcert -jarfile app.aab
Copy the SHA-1 fingerprint and use steps 3-6 from the previous list

Thank you this is helped me.

I had login issues with just a set of devices (!?), while for the majority of our users the login was working perfectly in production.
After some debugging, the error message we got was that the hash key did not match.
The steps below solved the problem.
If you use Google Play App Signing:

Go to Google Play Console -> Release Management -> App signig
In the App signing certificate, copy the SHA-1 certificate fingerprint value (AA:BB:CC...)
Use this tool to convert it to base64: http://tomeko.net/online_tools/hex_to_base64.php
Repeat the process with the Upload certificate SHA-1 certificate fingerprint
Open https://developers.facebook.com/ and go to Configuration -> Basic -> scroll to Android
Paste the base64 generated values in the key hashes and save it

Alternative:

Generate your appbundle or apk using your tools (android studio, flutter, react native...) - here my example output will be app.aab (bundle)
Go to the generated file using your terminal
Run keytool -list -printcert -jarfile app.aab
Copy the SHA-1 fingerprint and use steps 3-6 from the previous list

Thank you this is helped me.


Fixed some warnings in Time series weather forecasting

Fixed some Typos, Markdown warnings, Doc string in Time_series_weather_Forecasting.

Let's close, sounds good.