Unnecessary clear operation removal

Hi
Recently I've discussed ChunkedAssociativeArray implementation with my colleague and he had noticed that ChunkedAssociativeArray contains whole bunch of complicated code clear(long startKey, long endKey) to support one supper rare case of long overflow, that can happen only after 1 year after class loading. And even then, it is not so helpful, we will remove almost all values.
So I've decided to simplify handling of this case 😄 .

Also, what do you think about replacing of SlidingTimeWindowReservoir by this SlidingTimeWindowArrayReservoir in 4.0 branch?

LGTM, I think that's justified. I'm still reluctant to make SlidingTimeWindowArrayReservoir as default, though.


write_to_png functionality

I see there seems to an API called "write_to_png" on https://docs.rs/crate/cairo-rs/0.1.0/source/src/image_surface_png.rs, but it's not anymore in latest version, any reason it gets removed?
Then how can I save the image surface to a file?
Thanks,

It under png feature

You mean crate png? Then how can get the raw data from {{ImageSurface}}?

I mean http://doc.crates.io/specifying-dependencies.html#choosing-features
[dependencies.cairo-rs]
version = "^0"
features = [ "png" ]

then use function on image.

@GuillaumeGomez, there strange stream parameter type for https://github.com/gtk-rs/cairo/blob/master/src/image_surface_png.rs#L80.
It not need changed to stream: &mut W ? Same with create_from_png

Oh damn! Yes it should!

Thank you both, now I can use this function.


配置http代理完成后，不能访问代理的内容

Describe the bug
正常启动easegress，配置完成httpserver、httppipeline后，启动无异常。
但是不能通过http://10.10..:10080 访问代理内容。
To Reproduce
Steps to reproduce the behavior:

Execute ' easegress-server --ip-addr xxx.xxx.12.3'
Send a request to 'postman http get'
no response

Expected behavior
A clear and concise description of what you expected to happen.
Version
1.4.1
Configuration

Easegress Configuration
default
HTTP server configuration

autoCert: false
caCertBase64: ""
cacheSize: 0
certBase64: ""
certs: {}
http3: false
https: false
keepAlive: true
keepAliveTimeout: 60s
keyBase64: ""
keys: {}
kind: HTTPServer
maxConnections: 10240
name: server-demo
port: 10080
rules:
- host: ""
  hostRegexp: ""
  paths:
  - backend: pipeline-demo
    headers: []
    pathPrefix: /pipeline
    rewriteTarget: ""
tracing: null
xForwardedFor: false

Pipeline Configuration

filters:
- kind: Proxy
  mainPool:
    loadBalance:
      policy: roundRobin
    servers:
    - url: http://www.baidu.com
    - url: http://www.baidu.com
    - url: http://www.baidu.com
  name: proxy
flow:
- filter: proxy
  jumpIf: {}
kind: HTTPPipeline
name: pipeline-demo

Logs
Easegress logs, if applicable.

OS and Hardware

OS: centos 7.x
CPU: Intel(R) Core(TM) i5-8265U
Memory: 32GB

Additional context
Add any other context about the problem here.

version:1.4.0

I noticed that your configuration contains   pathPrefix: /pipeline. It means that the traffics only be forwarded to www.baidu.com only when you send a request with PATH of the /pipeline.  Is it your expectation?

thanks.
http://10.10..:10080/pipeline 也是无效的。

使用<IP_ADDRESS>:10080/pipeline访问是有效的

may I know the errors when you access the 10.10..:10080/pipeline ?

如果直接访问就是上面的错误

when change server port  10080 to 6080，chrome report 404

I guess you want to forward requests to www.baidu.com, but you configure a prefix match /pipeline. So when you send a request xx.xx.xx.xx:xxx/pipeline, the Easegress will the forward request to Baidu with www.baidu.com/pipeline, but obviously the Baidu hasn't /pipeline page, it returns 404.
If you have other pipelines, I strongly recommend you change the prefix match from /pipeline to /. I think this is what you want.

thanks you. you is ok. thks,thks.


Proprioceptive State Estimator Inclusion

Thank you for this great work!
I was wondering if there is interest in a proprioceptive state estimator being included. I built one for the Anymal C and Unitree A1 quadrupeds paper so I should be able to add it here as well if it's something that would be useful.

Feel free to make a pull request if you have it working within the framework!


Multiple YAML pipeline files for one project?

Is it possible to define multiple different YAML pipelines for a given project? This seems like something we would need for our team's needs to deal with the scale and vast difference in number of things we want to control in our pipelines.

bump? Am I misunderstanding anything about this? I imagine some of our projects will need many build pipelines, or some real potentially complicated variable settings. Another question of this, is it easy/possible to define a pipeline with many tasks that are conditionally run or opted into/out of before the pipeline runs? For example one task might be a lint check, and then another a large regression test, we may want the same pipeline defined but then only run lint on PR validation builds. This is a question if multiple YAML pipeline files aren't possible.

azure-pipelines-yaml would be a better repo.  we're moving there and keeping this pure agent.
Yes, you can create a definition and browse to a yaml file (and therefore many) . The azure-pipelines.yml is just a convenient one that generates a definition.
We also have a story on the backlog to support a directory structure which will mirror and create defs in that same structure.
Closing since this is a question.  If it's not clear then we can reopen.

@cdietschrun for your second question, you can use condition to control the step at run time.
Ex:
https://github.com/Microsoft/azure-pipelines-agent/blob/master/.vsts.ci.yml#L34

Cool, all parts of this make sense to me now. Thanks again all.

Create your YAML file anywhere in your project and name them whatever you need (build.yml, deploy-dev.yml, deploy-qa.yml, etc) and then go to Pipelines, create a new one, select the Azure Repos Git and then you'll see an option down the list of suggestions of  use exiting YAML file:

That will open a blade asking you to pick the file and you should be ready to go.
Repeat the process above for as many YAML pipeline definitions you have.


Fix simple-keyvalue-client crash

Fixes #2531
The crash reported in the above issue is actually result of two separate problems, both of which should be fixed by this PR:

The runtime client endpoint should return empty sequences instead of nil as serde doesn't know how to decode a NULL when the expected type is a sequence.
The simple-keyvalue client used a hardcoded round number in the query (3) which can easily be incorrect due to the time at which the client is called.

Sucks that golang didn't take a clue from Java about how painful it is to maintain nil-safety.

In this case the returned nil is not unsafe. The problem is that in Golang both a nil and an empty slice can be used interchangeably (e.g., in range constructs and append etc. builtins). But when serialized into CBOR a nil is encoded as CBOR NULL while an empty slice is encoded as an empty sequence.
However the Rust serialization library (serde) doesn't know how to deserialize a sequence (e.g. Vec<T>) from a NULL by default and decoding fails.


Executing kam command scenario

What type of PR is this?
/kind enhancement
What does this PR do / why we need it:
Scenario for creating kam bootstrap files
Have you updated the necessary documentation?

[ ] Documentation update is required by this PR.
[ ] Documentation has been updated.

Which issue(s) this PR fixes:
Fixes #119, #127
How to test changes / Special notes to the reviewer:
Test scenario should pass in CI

Don't review it. I just patch the changes on top of pr #83 and #86 which are under review. Once the base pr #83 is merged into master, i will rebase and open it for review
/hold

 --- Failed steps:
  Scenario: KAM bootstrap # features/basic.feature:9
    When executing "kam bootstrap --service-repo-url $SERVICE_REPO_URL --gitops-repo-url $GITOPS_REPO_URL --image-repo $GITOPS_REPO_URL --dockercfgjson $DOCKERCONFIGJSON_PATH --git-host-access-token $GIT_HOST_ACCESS_TOKEN --output bootstrapresources --push-to-git=true" succeeds # features/basic.feature:10
      Error: command 'kam bootstrap --service-repo-url $SERVICE_REPO_URL --gitops-repo-url $GITOPS_REPO_URL --image-repo $GITOPS_REPO_URL --dockercfgjson $DOCKERCONFIGJSON_PATH --git-host-access-token $GIT_HOST_ACCESS_TOKEN --output bootstrapresources --push-to-git=true', expected to succeed, exited with exit code: 1
Command stdout:
Checking dependencies
 •  Checking if Sealed Secrets is installed with the default configuration  ...

 ✗  Checking if Sealed Secrets is installed with the default configuration [53ms] [Please install Sealed Secrets Operator from OperatorHub]
 •  Checking if ArgoCD Operator is installed with the default configuration  ...

 ✓  Checking if ArgoCD Operator is installed with the default configuration [242ms]
 •  Checking if OpenShift Pipelines Operator is installed with the default configuration  ...
 ✗  Checking if OpenShift Pipelines Operator is installed with the default configuration [255ms]
Command stderr:  ✗  failed to check for OpenShift Pipelines Operator: deployments.apps "openshift-pipelines-operator" is forbidden: User "developer" cannot get resource "deployments" in API group "apps" in the namespace "openshift-operators"

Details log - https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_kam/87/pull-ci-redhat-developer-kam-master-v4.5-integration-e2e/1329661371251429376#1:build-log.txt%3A1115

 --- Failed steps:
  Scenario: KAM bootstrap # features/basic.feature:9
    When executing "kam bootstrap --service-repo-url $SERVICE_REPO_URL --gitops-repo-url $GITOPS_REPO_URL --image-repo $GITOPS_REPO_URL --dockercfgjson $DOCKERCONFIGJSON_PATH --git-host-access-token $GIT_HOST_ACCESS_TOKEN --output bootstrapresources --push-to-git=true" succeeds # features/basic.feature:10
      Error: command 'kam bootstrap --service-repo-url $SERVICE_REPO_URL --gitops-repo-url $GITOPS_REPO_URL --image-repo $GITOPS_REPO_URL --dockercfgjson $DOCKERCONFIGJSON_PATH --git-host-access-token $GIT_HOST_ACCESS_TOKEN --output bootstrapresources --push-to-git=true', expected to succeed, exited with exit code: 1
Command stdout:
Checking dependencies
 •  Checking if Sealed Secrets is installed with the default configuration  ...

 ✗  Checking if Sealed Secrets is installed with the default configuration [53ms] [Please install Sealed Secrets Operator from OperatorHub]
 •  Checking if ArgoCD Operator is installed with the default configuration  ...

 ✓  Checking if ArgoCD Operator is installed with the default configuration [242ms]
 •  Checking if OpenShift Pipelines Operator is installed with the default configuration  ...
 ✗  Checking if OpenShift Pipelines Operator is installed with the default configuration [255ms]
Command stderr:  ✗  failed to check for OpenShift Pipelines Operator: deployments.apps "openshift-pipelines-operator" is forbidden: User "developer" cannot get resource "deployments" in API group "apps" in the namespace "openshift-operators"

Details log - https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_kam/87/pull-ci-redhat-developer-kam-master-v4.5-integration-e2e/1329661371251429376#1:build-log.txt%3A1115

Locally reproducible on 4.7 cluster

Blocked due to - https://github.com/redhat-developer/kam/issues/94

/retest

I am not able to reproduce it locally. Only the issue we can hit the issue in CI. I tried both admin login system:admin and kube:admin and in both the cases it fails with Sealed secret check. However when i used the same kube:admin it works.
I have captured services log in cicd namespace. PTAL
+ oc get service -n cicd
I1130 10:01:05.912602    5299 request.go:621] Throttling request took 1.129866468s, request: GET:https://api.ci-
op-l3yhpjsf-413d3.origin-ci-int-aws.dev.rhcloud.com:6443/apis/samples.operator.openshift.io/v1?timeout=32s

I1130 10:01:16.112576    5299 request.go:621] Throttling request took 11.329732374s, request: GET:https://api.ci-
op-l3yhpjsf-413d3.origin-ci-int-aws.dev.rhcloud.com:6443/apis/operators.coreos.com/v1alpha2?timeout=32s
NAME                                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
sealed-secrets-operator-helm-metrics    ClusterIP   <IP_ADDRESS>   <none>        8383/TCP,8686/TCP   117s
sealedsecretsontroller-sealed-secrets   ClusterIP   <IP_ADDRESS>   <none>        8080/TCP            104s

Surprisingly i am hitting another issue Command stderr:  ✗  unable to use access-token from keyring/env-var: exec: "dbus-launch": executable file not found in $PATH, please pass a valid token to --git-host-access-token
For dbus-launch i need to add extra rpm packaged in the base centos test container. I tried it locally in the test container but fails to install
[root@8e536a8ba80a kam]# dnf install http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm
Last metadata expiration check: 0:00:43 ago on Mon 30 Nov 2020 11:07:42 AM UTC.
okay-release-1-1.noarch.rpm                                       24 kB/s |  12 kB     00:00
Package okay-release-1-1.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@8e536a8ba80a kam]# dnf install dbus-daemonLast metadata expiration check: 0:00:50 ago on Mon 30 Nov 2020 11:07:42 AM UTC.
No match for argument: dbus-daemon
Error: Unable to find a match: dbus-daemon

I am looking into the installation failure

Platform issue
/retest

/test v4.5-integration-e2e

/retest

/retest

Created a new github secret and rebased the pr

/retest

https://github.com/redhat-developer/kam/issues/104#issuecomment-740537255
/retest

Complete the configuration again
/retest

Works fine locally (on the same image that CI uses), but the same bootstrap command fails on CI
# kam bootstrap --service-repo-url https://github.com/kam-bot/taxi --gitops-repo-url https://github.com/kam-bot/gitops.git --image-repo quay.io/kam-bot/taxi --dockercfgjson ../../openshift/origin/kam-bot-kambot-auth.json --git-host-access-token **** --output resources

Checking dependencies

 ✓  Checking if Sealed Secrets is installed with the default configuration [812ms]
 ✓  Checking if ArgoCD Operator is installed with the default configuration [2s]
 ✓  Checking if OpenShift Pipelines Operator is installed with the default configuration [2s]
Adding .git to https://github.com/kam-bot/taxi

Completing Bootstrap process

 ✓  Authentication tokens encrypted in secrets
 ✓  Pipelines tracker has been configured
 ✓  OpenShift Pipelines resources created
 ✓  Openshift Route for EventListener created
 ✓  Created dev, stage and CICD environments
 ✓  Bootstrapped OpenShift resources successfully

 Next Steps:
 Please refer to https://github.com/redhat-developer/kam/tree/master/docs to get started.

/retest

/test all

/hold cancel

platform issue
/retest

platform issue
/retest

/retest

/retest

/retest

FAIL	github.com/redhat-developer/kam/test/e2e	10860.004s
FAIL```

/retest

/retest

Codecov Report

Merging #87 (f256618) into master (fbaa6be) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #87   +/-   ##
=======================================
  Coverage   59.10%   59.10%
=======================================
  Files          54       54
  Lines        2768     2768
=======================================
  Hits         1636     1636
  Misses        980      980
  Partials      152      152

Flag
Coverage Δ

unittests
59.10% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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

Failure https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-developer_kam/87/pull-ci-redhat-developer-kam-master-v4.5-integration-e2e/1344076342471168000#1:build-log.txt%3A58 will be fixed once pr https://github.com/openshift/release/pull/14550 and https://github.com/openshift/release/pull/14549 merge into master.
We just need to apply retest label to confirm the fix.

/test all

/test all

/retest

/retest


Update docker-compose.yml

#1921
PR Type
What kind of change does this PR introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Other... Please describe:

What is the current behavior?

Issue Number: #1921
What is the new behavior?
在某些情况下，version: '2'下healthcheck不可用。
修改docker-compose.yml中的：
version: '2'
为
version: '2.1'
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information
参考：https://stackoverflow.com/a/42754309

先关闭了


Fix container cleanup

Description
This hopefully fixes the issue with the container cleanup. In the package the install command looks like this:
docker pull ghcr.io/conduitio/conduit:latest-nightly

Notice that the organization is all lower case. I have a hunch this might be the reason for the cleanup job to fail.
This PR also changes the schedule of when the nightly job runs (Tue-Sat), I think it makes more sense since it now happens after each workday.
Fixes #291

The change didn't fix the issue 😕  https://github.com/ConduitIO/conduit/runs/5464034337?check_suite_focus=true#step:6:15

This is fixed now, I created the @ConduitIO/automation team, added @meroxa-machine to the team and gave it admin permissions to the repo.
I still think it would make sense to change the schedule, that's the only change left in this PR now.


Installation error

In ReactNativeFlipper.java file i think i need to import the library before doing client.addPlugin(new RNPerfMonitorPlugin(reactInstanceManager)). I'm not sure what the import package link is.... That's just my guess anyways, I'm not a java guy (I'm more javascript so maybe I'm wrong).
I get the error
/ReactNativeFlipper.java:48: error: cannot find symbol
      client.addPlugin(new RNPerfMonitorPlugin(reactInstanceManager));
                           ^
  symbol:   class RNPerfMonitorPlugin
  location: class ReactNativeFlipper
Note: /.../android/app/src/debug/java/com/safiri/ReactNativeFlipper.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error

FAILURE: Build failed with an exception.

Hi @Abramovick , import should be:
import tech.bam.rnperformance.RNPerfMonitorPlugin;

I'll add this to the doc
(Usually I just open the android folder on Android Studio, then you get auto imports when you add code)

@Almouro thanks man


Add depth option to read_pixels()

Thanks @LuanGBR  for the PR! There are some minor changes but I'll make them myself after merging.


fix archive-download endpoint tests dependency on config

This happens when someone sets DOCSRS_S3_STATIC_ROOT_PATH to a non-default value.
But tests shouldn't depend on config in this way.

r? @zahidkizmaz

All green now with the default env vars :+1:  Thank you for the fix!


failed to add i18n module angular-translate

Hi Urigo,
I tried to add the module
https://atmospherejs.com/planettraining/angular-translate
but I do not succeed to instantiate/import the angular-translate module.
Can you indicate how to use them inside Angular2/Ionic2 project using Typescript?
Thanks for your help!

also tried the ng2-translate module but it keeps hanging with an error referring to invalid character < in JSON (at position 0) ...

@tomitbe angular-translate is for angular<2.0.0

Ok thank you, do you know an alternative solution?
Van: Max Bruchmann <notifications<EMAIL_ADDRESS>Beantwoorden - Aan: Urigo/angular-meteor <reply<EMAIL_ADDRESS>Datum: donderdag 29 december 2016 12:50
Aan: Urigo/angular-meteor <angular-meteor<EMAIL_ADDRESS>CC: Tom Van den Broek <contact<EMAIL_ADDRESS>Mention <mention<EMAIL_ADDRESS>Onderwerp: Re: [Urigo/angular-meteor] failed to add i18n module angular-translate (#1532)
@tomitbehttps://github.com/tomitbe angular-translate is for angular<2.0.0

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Urigo/angular-meteor/issues/1532#issuecomment-269619623, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AM5PwGrzgjvsca1sK6R9_qgBwyH1_rkNks5rM56BgaJpZM4LXDDh.

closing due to inactivity and cleanup after tons of new updates in the recent month.
Feel free to open a new issue if you are still affected .


filer: elasticsearch7 no longer works

Hello
Since 2.21 elasticsearch7 does not work when db already exist.
On a new cluster (>=2.21), the 3 indces are created on startup.
indices:
  .seaweedfs_buckets: green
  .seaweedfs_topics: green
  .seaweedfs_kv_entries: green

Filer and s3 are accessibles.
But if filer service are restarted, the filer don't restart.
filer daemon in not listening on network ports (filer and s3)
cmdline
weed-filer -logtostderr -v 6 filer -port=8888 -s3 -ip=test-seaweedfs1-f -defaultReplicaPlacement=002 -master=test-seaweedfs1-m:9333,test-seaweedfs2-m:9333,test-seaweedfs3-m:9333,test-seaweedfs4-m:9333,test-seaweedfs5-m:9333 -dataCenter=vau -encryptVolumeData

filer.toml
[filer.options]
recursive_delete = false

[elastic7]
enabled = true
servers = [
    "http://test-sdv-seaweedfs1-f:9200",
    "http://test-sdv-seaweedfs2-f:9200",
    "http://test-sdv-seaweedfs3-f:9200",
    "http://test-sdv-seaweedfs4-f:9200",
    "http://test-sdv-seaweedfs5-f:9200",
]

log for >=2.21
févr. 02 17:12:45 test-seaweedfs1 systemd[1]: Started seaweedfs-filer.
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 config.go:29] Reading security.toml from
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 metrics.go:155] filer server sends metrics to test-seaweedfs:9091 every 15 seconds
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 config.go:29] Reading filer.toml from
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: W0202 17:12:45 26971 filer_server.go:115] skipping default store dir in ./filerldb2
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 config.go:29] Reading notification.toml from
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 config.go:36] Reading : Config File "notification" Not Found in "[/usr/local /var/empty/seaweed/.seaweedfs /usr/local/etc/seaweedfs /etc/seaweedfs]"
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 elastic_store.go:70] filer store elastic endpoints: [http://test-seaweedfs1-f:9200 http://test-seaweedfs2-f:9200 http://test-seaweedfs3-f:9200 http://test-seaweedfs4-f:9200 http://test-seaweedfs5-f:9200].
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 filer.go:101] existing filer.store.id = -379500687
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 configuration.go:28] configured filer store to elastic7
févr. 02 17:12:45 test-seaweedfs1 weed-filer[26971]: I0202 17:12:45 26971 filerstore_wrapper.go:220] ListDirectoryPrefixedEntries /buckets from  prefix  limit<PHONE_NUMBER>

No more log availble :/
The daemon in not listening on network port (filer, s3)
With 2.20 the service works and can be restarted, filer and s3 are accessibles.
Antoine

Could you please make a docker compose file to reproduce this?

Added a fix without testing.

I won't be able to do the test until tomorrow.

ok. Anyway, adding a docker compose file will be good for future tests also.

I don't have a docker-compose to provide yet.
My installation is done with anible without docker image.
No change with 2396ac2
I forgot to specify that

elastic is in version 7.10.1.
my test cluster receives about 150 requests per second (goreplay from prod).

I modified filer.toml to only use one of the members of the elastic cluster
[filer.options]
recursive_delete = false

[elastic7]
enabled = true
servers = [
     "http: // test-seaweedfs1-f: 9200",
]

Here 3 network captures between the filer and its local elastic
made in the following order:

2.19
2.23-396ac2
2.20

2.20.cap.gz
2.23-2396ac234c060774ef0640f513fee2e424fbb706.cap.gz
2.19.cap.gz
The elastic indexes already existed before the captures.

Actually I have some doubts about the Elastic search support. It is creating one index for each directory. If there are too many directories, there would be too many indices. cc @taozix
@antitbone What is your use case to use elastic search as the filer store?

Added a fix. The files under the root directory may not be accessible any more. You can copy them out first before upgrading.

In my configuration I have on each host 4 services: volume/filer/s3 and 1 elastic node.
A load balancer distributes the traffic to the s3.
An ansible role deploys weed and elastic configurations and services
When adding a new server to increase capacity, the Elastic cluster allow the new filer/s3 to be directly accessible by the loadballancer without a synchronization phase.
 Do you have a lot of buckets? Do you need to delete some buckets? Existing elasticsearch filer store does not have an bucket specific index yet, which we can add later.


Add profile mcafee-web-gateway

What does this PR do?

Add profile mcafee-web-gateway
Motivation

Additional Notes

Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached
[ ] If the PR doesn't need to be tested during QA, please add a qa/skip-qa label.

@lizaerem Can I have another review ? I had to fix a formatting issue.


adding backend functionalities

data management is done on the frontend, the ui get's laggy. so we can move all the data logic to the backend.

@Tri-M


Access @root in json

Current behaviour

In Handlebars when I am inside iteration loop I am not able to access @root of the json data. For example inside loop of foo if I want access {{bar}} I should do it with<EMAIL_ADDRESS>or less comfortable and traversing upwards {{../bar}}. Traversing is usable but loop inside loop ... will look like {{../../bar}} and also this is not usable if I want to use the bar inside partial inside loop..
Expected behaviour

Calling @root.bar should output the value of bar in root of the data.json
Reproduction Example

Basic data.json:
{
    "foo": [
        "a", "b", "c"
    ],
    "bar": [
        "alfa", "beta"
    ]
}

Simple loop
{{#each foo}}
    {{this}}
    {{#each @root.bar}}
        {{this}}
    {{/each}}
{{/each}}

nor
{{#each foo}}
    {{this}}
<EMAIL_ADDRESS>{{!-- outputs nothing --}}
{{/each}}

Environment

OS: macOS
version of Node.js: v18.16.0
version of Webpack: 5.89.0
version of the Plugin: 3.0.3

Additional context

This behaviour was on this plugin v2.* too.
@data variables at handlebars documentation: https://handlebarsjs.com/api-reference/data-variables.html

Hello @5ulo,
thanks for the issue report. I'll try to fix it in a few days.

@5ulo
I can't reproduce the issue.
See the test case.
All @data variables are accessible inside the loop.
Please create a small repo with reproducible issue.

@webdiscus so I found @root cant be accessed if you extend page with layout page. Just to clarify the situation:
dir pages - for example index, home, contact... simply said its everything between <body></body>
dir partials/layout - contains page layouts (<html> with #block)
dir partials/parts - contains regular partials
So the process in my case is to assign some data (title, body class...) inside index.hbs then fill the partial and extend to layout. I made a git as you requested

@5ulo thanks for the clarification.
Yes, now I can reproduce it. Obviously this is a bug in the block/partial helper. I will fix it.

@5ulo
the issue is fixed in the version 3.1.3.
Thank you!

checked.. is working perfectly.. done .. thank You! Closing :)

@5ulo
you can simplify the config using the references preprocessor and preprocessorOptions in plugin options w/o loaderOptions: {...}:
new HtmlBundlerPlugin({
    entry: './src/pages',
    data: './src/data.json',
    preprocessor: 'handlebars',
    preprocessorOptions: {
        root: './src/pages',
        views: [
            './src/partials',
        ],
        partials: [
            './src/partials',
        ],
        helpers: [
            './src/helpers',
        ],
    },
}),

data is reference to  loaderOptions.data
preprocessor is reference to  loaderOptions.preprocessor
preprocessorOptions  is reference to  loaderOptions.preprocessorOptions

The loaderOptions is the reference to modules.rule[HTMLBundlerLoader].options.
The plugin adds own HTMLBundlerLoader into Webpack modules automatically.


Pattern matching: What, where, how

Basically, there are two types of pattern matching techniques that we want to cover:

Destructuring ADTs and lists (and especially user-defined datatypes
Other techniques for pattern matching, such as:

Functions Guards
Pattern Guards
As-patterns
View Patterns

The first type should be mentioned in the lesson about user-defined ADTs.
The second type will need its own lesson.

cc @DrewFenwick

Good learning materials on all the forms of pattern matching are spread out all over the place
and somewhat hard to discover if you aren't specifically looking for them:
Currently view patterns are best documented by the GHC user's guide,
as-patterns are coverd by A Gentle Introduction to Pattern Matching and the Haskell Wikibook
while Pattern Guards are mentioned a little hither and thither but generally hard to find or even hear of at all unless you're specifically looking for them (which is surprising for an unextended Report Haskell feature!)
Having all forms of pattern matching covered by Haskell School would fill a role that isn't currently filled very well in my opinion.
If lesson headings were such that someone searching specifically for "patterns" could find all our coverage of them too, that would be even better.
Lesson Order
In tutorials, list matching patterns generally get introduced fairly early; often earlier than ADTs.
Covering how to pattern match on all forms of ADT and explaining that patterns can only take apart what constructors put together requires an understanding of constructors that is probably best gained from learning how to make ADTs.
We'd be tying our hands too much to only show pattern matching until after ADTs,
but violating the pedagogic order to introduce pattern matching on ADTs before introducing ADTs, so things need to be split.
On talking with @Kleidukos, IIRC we felt that the appropriate order was to introduce pattern matching on lists early as nessecary,
cover pattern matching on ADTs in the same section that introduces ADTs,
and have an "advanced pattern matching" section that covered all the myriad special pattern matching syntaxes.
Maybe we ought to have a styled "interesting note" box in the ADT section that points out that the : operator and [] value are just constructors of the list type, which is a built in sum type, and that's why pattern matching on (x:xs) works, while xs ++ ys cannot?
More topics
Here are some more pattern matching topics we might want to cover:

Exhaustive and inexhaustive patterns.
How patterns nest.
Why patterns sometimes have brackets around them and sometimes don't.
How function pattern matches are case expressions under the hood.
Irrefutable vs Refutable patterns.
Strictness semantics of let vs case/function patterns
BangPatterns
How lazy case patterns and strict let patterns desugar
Pattern synonyms?

All of the topics we cover will need an appropriate home in the lesson order, and any topics covering language extension features need to appropriately inform the user.


/series endpoints for API v1 and scalar range queries

@juliusv
Note: dropping metrics only is completed after the next indexing run. Until then we still get fingerprints for deleted metrics, but the metrics themselves are gone.
So subsequent deletes (<1s apart) on intersecting metric sets may return a wrong numDeleted value. Given that deleting should be a rare operation that seems okay to me.

Done.

Regarding label matching, should this wait on the outcome of the discussion in https://github.com/prometheus/prometheus/pull/786 now? (I mean, there's no super hurry)

Yep, have to expose some more parser stuff for this - wondering if it's worth it to find a clean way to parse arbitrary fragments.

Now using the match[] semantics we agreed on for federation.

:+1:


SAVE/STICKY - Steps for adding new Database / Customer / ORG

When creating a new customer, there are many things that need to be done.

[ ] Create firestore instance with cloud storage, firestore, functions etc
[ ] Setup service account credentials on google cloud platform to only allow proper URLs to access instance and DB
[ ] Setup all google services like maps, directions, etc
--- maps javascript api
--- directions API
--- places API
--- Maps IOS SDK
[ ] Setup firestore rules - copy from another DB
[ ] Create hidden .env files and scripts for using new ORG
--- client/functions/.env-strava-config-ORG.json,
--- client/functions/.serviceAccountKey-ORG.json
--- client/.env-ORG
--- client/.firebaserc-ORG
--- client/scripts/fbSwitchToORG.sh
[ ] GIve ORG a code (ATC, SAA)
[ ] Get branding images in correct folder i.e. images/${ORG}/
[ ] Seed users collection with admin
[ ] Seed ATCMembers collection (does not NEED documents but collection must exist)
[ ]  Save key icons etc under ORG
[ ] Create Strava Account.  Strava needs to have a new client id and secret for every app.  I have one for atc<EMAIL_ADDRESS>and one for dev (paul@linck.net).  Unfortunately you must have one for each firestore instance since strava cant handle sending to multiple from one account.


Saving changes on People > Personal Details are not working

Issue description
Saving changes on People > Personal Details are not working
Prerequisites
URL: https://app.staging.chums.org/
Browser: Chrome
User<EMAIL_ADDRESS>Password: password
Steps to reproduce the issue

Login using the given credentials in the prerequisites above
Click Cypress Chums on the popup dialog
Go to People
Select a person to edit
Click the Personal Details edit icon
Update personal details of person
Click Save Button

What's the expected result?
Changes should save without any issues
What's the actual result?
Clicking the Save button does nothing
Additional details / screenshot

Was due to cypress user person record being removed.  Adding another issue to gracefully handle this scenario

Issue still persistent per checking

Was resolved with #191


Changed the color of highlighted props in CSS

Fixes #15 whenever you set g:badwolf_css_props_highlight = 1.
Before:

After:

@lukaszklis can't see screenshots: got message "SSL connection error"

@skywinder could you please check it now? I've updated the description with new links to the screenshots.

@lukaszklis yes, got it, thanks

:+1: for merging this.

Just out of curiosity, as someone new to this, is there a reason this doesn't use cssProp group from the syntax file?

Merged (finally), thanks.

Yay! Thanks a lot!


What model is the Tensorflow face detector using?

Hello,
What model is the face detector using? I tried doing inference on the CPU and it is very very slow.
Any idea what model is it?
Thanks
Abhishek S

Hi, it uses this face detector:
https://github.com/yeephycho/tensorflow-face-detection
On Wed, Jun 19, 2019 at 7:41 PM Abhishek Shivkumar<EMAIL_ADDRESS>wrote:

Hello,
What model is the face detector using? I tried doing inference on the CPU
and it is very very slow.
Any idea what model is it?
Thanks
Abhishek S
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/joonson/syncnet_python/issues/13?email_source=notifications&email_token=ACKAH3W5ZO66WSVQVP3GQL3P3IEO5A5CNFSM4HZIH76KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4G2LSTWA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACKAH3WK2PKVZJKLWHFIB4LP3IEO5ANCNFSM4HZIH76A
.


Issue with enum comparison witch are changed in another function

Tested TypeScript Versions: 3.7.5 & 3.8.2 & Nighly
I got an Error while compiling the following code
enum Test {
    SomeItem,
    OtherItem
}

let test = Test.SomeItem

function edit() {
    test = Test.OtherItem
}
edit()

if(test === Test.OtherItem) console.log("Hello World")
// This condition will always return 'false'
// since the types 'Test.SomeItem' and 'Test.OtherItem' have no overlap.
// ts(2367)

Expected behavior: No errors will be thrown.
if(test === Test.OtherItem) is possible because test is changed in the edit function and the edit function is changing test.
Actual behavior:
TypeScript is throwing the following Error:
This condition will always return 'false' since the types 'Test.SomeItem' and 'Test.OtherItem' have no overlap. ts(2367)
Playground: https://www.typescriptlang.org/play/index.html#code/KYOwrgtgBAKsDOAXKBvAUASAMoHsLAElFgIAaTAeUQAtgAnIktAXzTQBthlikoBeWAkQA6XPkYQ2AMzAgAxogCWOEFGAATRYgAUASlSYeyAXCTCqtBsUmsNWvW0VTtR-nxNDzNehP1yV8Dicwuw4AObaAEQAEsDsoVAA6jh07OqRumgA9Fmw1IrwUP4gmkoqUADuivFQAIbsFbUAnoV0XGB0qgDkUvXwwF3ZufCK8sBQ3hNNAA4IUF2mImKE1l11JfOLXpYSa9S1AG7jIDhQOEeptdPCQxPw2gBMAMwAbADsukA

Yet another duplicate of #9998.


Switch to the new Docker Github action in Meshery-app-mesh repo

Description
Since last Monday (7th October 2019) the default Docker GitHub action stopped working because the repo was deleted. We have migrated to a different docker GitHub action in the Meshery repo.
We need to replace the entire Docker block in Meshery-app-mesh repo's https://github.com/layer5io/meshery-app-mesh/blob/master/.github/workflows/ci.yml file with the one from the Meshery repo (https://github.com/layer5io/meshery/blob/master/.github/workflows/ci.yml).
Here is the snippet from the Meshery repo which we want copied over:
https://github.com/layer5io/meshery/blob/82018c54539f3d79eb639109b7c7cf6f67e41b2b/.github/workflows/ci.yml#L139-L173
Here is the snippet which needs to be replaced:
https://github.com/layer5io/meshery-app-mesh/blob/f678727891439da1000dd907d6470f86b36c4e41/.github/workflows/ci.yml#L106-L157

Closed by https://github.com/layer5io/meshery-app-mesh/pull/13


Implement undo

ref: #124

I think it might be better to organize the UI for executing actions first.


TArray constructor from DataFrame (DataFrames.jl) and from TimeArray (TimeSeries.jl)

Hello,
it will be nice if you could tell me how to construct a TArray from DataFrame (DataFrames.jl) and from TimeArray (TimeSeries.jl) because I'm considering adding JuliaTS.jl support to https://github.com/femtotrader/TALib.jl/issues/6
Here is some code to get a sample DataFrame
Download sample data https://github.com/femtotrader/TALib.jl/blob/master/test/ford_2012.csv
using DataFrames
filename = "test/ford_2012.csv"
dfOHLCV = readtable(filename)
dfOHLCV[:Date] = Date(dfOHLCV[:Date])

and for a sample TimeArray
using TimeSeries
taOHLCV = readtimearray(filename)

Maybe such constructors could be add to JuliaTS.jl (without adding these package as dependencies) ?
Kind regards

Constructing TArray from DataFrame or TimeArray would be something like:
using DataFrames
using JuliaTS
using TimeSeries

# read as dataframe
dfOHLCV = readtable("ford_2012.csv");
dfOHLCV[:Date] = Date(dfOHLCV[:Date]);

# read as timeseries
tsOHLCV = readtimearray("ford_2012.csv");

# dataframe to TArray
ta = TArray((:Date,), [n=>dfOHLCV[n] for n in names(dfOHLCV)]...)

# timeseries to TArray
ta = TArray((:Date,), :Date=>tsOHLCV.timestamp, [symbol(n)=>tsOHLCV[n].values for n in colnames(tsOHLCV)]...)

May be Requires.jl will help adding such conversion functions without explicit package dependencies.

@femtotrader, what do you think of an alternate interface for timeseries as in this notebook here: https://github.com/tanmaykm/notebooks/blob/master/stocks/demo2.ipynb ?
It is somewhat similar to python xarray. The backing array can be made to support NDSparseData. Is this a more convenient way for exploring data?
The implementation is in my fork here: https://github.com/tanmaykm/AxisArrays.jl/tree/tan

Thanks for Require.jl package suggestion. I didn't know it.
I don't feel confortable enough with JuliaTS / AxisArray so I can't help for now about API usage but I will do it when I will have a better understanding about it.
Python xarray (formerly xray) is a very interesting package and having a Julia alternative will be a great feature.
A 3D (like Panel) data structure is a great feature to have. I will use it in https://github.com/femtotrader/DataReaders.jl (to store for example OHLCV values for several stocks). https://github.com/femtotrader/TALib.jl might also be able to support this kind of structure and apply a same indicator to several stock at once.
Maybe a function to read CSV (and XLS, XLSX) files should be add ?
Because for now I don't see any other method than reading first to a DataFrame (or a TimeArray) and convert to TArray.

julia> ta
TArray 250x6 Tuple{Date} => Tuple{Float64,Float64,Int64,Float64,Float64}
 (:Date,) => (:Close,:High,:Volume,:Low,:Open)
 (2012-01-03,) => (11.13,11.25,45709900,10.99,11.0)
 (2012-01-04,) => (11.3,11.53,79725200,11.07,11.15)
 (2012-01-05,) => (11.59,11.63,67877500,11.24,11.33)
 (2012-01-06,) => (11.71,11.8,59840700,11.52,11.74)
 (2012-01-09,) => (11.8,11.95,53981500,11.7,11.83)
 (2012-01-10,) => (11.8,12.05,121750600,11.63,12.0)
 (2012-01-11,) => (12.07,12.18,63806000,11.65,11.74)
 (2012-01-12,) => (12.14,12.18,48687700,11.89,12.16)
 (2012-01-13,) => (12.04,12.08,46366700,11.84,12.01)
 (2012-01-17,) => (12.02,12.26,44398400,11.96,12.2)
 ⋮
 (2012-12-17,) => (11.39,11.41,46983300,11.14,11.16)
 (2012-12-18,) => (11.67,11.68,61810400,11.4,11.48)
 (2012-12-19,) => (11.73,11.85,54884700,11.62,11.79)
 (2012-12-20,) => (11.77,11.8,47750100,11.58,11.74)
 (2012-12-21,) => (11.86,11.86,94489300,11.47,11.55)
 (2012-12-24,) => (12.4,12.4,91734900,11.67,11.67)
 (2012-12-26,) => (12.79,12.79,140331900,12.31,12.31)
 (2012-12-27,) => (12.76,12.81,108315100,12.36,12.79)
 (2012-12-28,) => (12.87,12.88,95668600,12.52,12.55)
 (2012-12-31,) => (12.95,13.08,106908900,12.76,12.88)

julia> ta = TArray((:Date,), :Date=>tsOHLCV.timestamp, [symbol(n)=>tsOHLCV[n].values for n in colnames(tsOHLCV)]...)
TArray 250x6 Tuple{Date} => Tuple{Float64,Float64,Float64,Float64,Float64}
 (:Date,) => (:Close,:High,:Volume,:Low,:Open)
 (2012-01-03,) => (11.13,11.25,4.57099e7,10.99,11.0)
 (2012-01-04,) => (11.3,11.53,7.97252e7,11.07,11.15)
 (2012-01-05,) => (11.59,11.63,6.78775e7,11.24,11.33)
 (2012-01-06,) => (11.71,11.8,5.98407e7,11.52,11.74)
 (2012-01-09,) => (11.8,11.95,5.39815e7,11.7,11.83)
 (2012-01-10,) => (11.8,12.05,1.217506e8,11.63,12.0)
 (2012-01-11,) => (12.07,12.18,6.3806e7,11.65,11.74)
 (2012-01-12,) => (12.14,12.18,4.86877e7,11.89,12.16)
 (2012-01-13,) => (12.04,12.08,4.63667e7,11.84,12.01)
 (2012-01-17,) => (12.02,12.26,4.43984e7,11.96,12.2)
 ⋮
 (2012-12-17,) => (11.39,11.41,4.69833e7,11.14,11.16)
 (2012-12-18,) => (11.67,11.68,6.18104e7,11.4,11.48)
 (2012-12-19,) => (11.73,11.85,5.48847e7,11.62,11.79)
 (2012-12-20,) => (11.77,11.8,4.77501e7,11.58,11.74)
 (2012-12-21,) => (11.86,11.86,9.44893e7,11.47,11.55)
 (2012-12-24,) => (12.4,12.4,9.17349e7,11.67,11.67)
 (2012-12-26,) => (12.79,12.79,1.403319e8,12.31,12.31)
 (2012-12-27,) => (12.76,12.81,1.083151e8,12.36,12.79)
 (2012-12-28,) => (12.87,12.88,9.56686e7,12.52,12.55)
 (2012-12-31,) => (12.95,13.08,1.069089e8,12.76,12.88)

Column order is not preserved. Maybe an OrderedDict might be use
see a similar issue here https://github.com/JuliaStats/DataFrames.jl/issues/950
I also noticed that Volume type (Int64) is not preserved. Volume seems to be converted to Float64 when using TimeArray (from TimeSeries.jl) to TArray

TimeArray stores all columns in the same array. It promoted Int64 volume column to Float64. DataFrame can handle differently typed columns though.
I think column order is not preserved because of the use of setdiff here: https://github.com/tanmaykm/JuliaTS.jl/blob/3595d41404c984209bfb0d11dad154f09a5a1e3a/src/ts.jl#L29. Will push a fix. Thanks for pointing it out.

Thanks for your help


Fix check commit exists procedure for rebase

Commit should exist in git repo.
Commit should be accessible from one of the HEADs.

Otherwise this commit is unaccessible and stage should be deleted.

Fixed in the werf 1.1.


fix: Improve error message when bam header doesn't contain given target

This PR fixes #46.

Codecov Report

Merging #47 (7636801) into main (32e5dec) will decrease coverage by 0.03%.
The diff coverage is 66.66%.

@@            Coverage Diff             @@
##             main      #47      +/-   ##
==========================================
- Coverage   61.63%   61.60%   -0.04%
==========================================
  Files           3        3
  Lines         245      250       +5
==========================================
+ Hits          151      154       +3
- Misses         94       96       +2

Impacted Files
Coverage Δ

src/plot.rs
93.84% <66.66%> (-1.36%)
:arrow_down:

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


Can't use pallet database

I Installed version <IP_ADDRESS> on a other PC, and after installing I transferred my "PalletSolutionsDB" folder to the new PC in the Stackbuilder folder. Before transferring I renamed the one that is installed standardly. When I now open the SB and go to Tools >> Edit pallet solution database.. I get a window saying "Pallet solution database is empty. Closing form.." I am sure the folder contains all the database solutions I want to use. Is there a other way to transfer the PalletSolutionsDB to a new install or other PC ?

I seem to be able to reproduce the bug. I will keep you updated when it is corrected.
Thanks for warning us. Regards,

Can you make sure you also copied a file named index.xml together with stb file of the database?
Its full path ought to be:
'C:\Program Files (x86)\treeDiM\PLMPack\StackBuilder\PalletSolutionsDB\index.xml'
If it still does not work, could you please send a zip archive of your database directory at the following email adress: fgasnier_at_treedim_dot_com.
Regards,

You are right, including index.html fixed the problem, THX!!


[Windows] Recording skips frames

This gif obviously was not recorded at this speed

Cannot reproduce in 5 tries.

I could not reproduce it with the CI version either.


Karavan does not work in vscode 1.73+ web

Same issue https://github.com/microsoft/vscode/issues/166003

The fix is to adopt asWebviewUri instead of using vscode-resource

https://github.com/microsoft/vscode-webview-ui-toolkit/blob/main/docs/getting-started.md


Resolves relative path issue on Windows

Fixes #19
@Kashish121

Please review this PR.
Please checkout to feature/relative-path-bug branch and test the e2e flow.

@Kashish121 There's another minor change in this PR: Moved the scanner_thread.py in a separate folder.

@Kashish121 Invited you as a collaborator, please check your email and accept the invitation.

Thank You for adding me as a collaborator. Accepted the invitation. :star2:

@Kashish121 Merging this into develop.
Thanks for reviewing.


Prepare release 4.0.12

Codecov Report

Merging #5781 (9c9db75) into master (f67abbe) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master    #5781   +/-   ##
=======================================
  Coverage   96.19%   96.19%
=======================================
  Files         752      752
  Lines       73859    73859
=======================================
  Hits        71050    71050
  Misses       2809     2809

Flag
Coverage Δ

servertests
36.95% <100.00%> (ø)

unittests
96.13% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

moto/athena/models.py
94.06% <100.00%> (ø)

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


Update: Add AI Gateway tile to landing page

Description
Adding AI Gateway as a key feature to our docs landing page.
Changed the rows to a two-column max because otherwise it's a 3-3-1 tile overhang. Not sure if I like this more, please take a look.
Testing instructions
Preview link:
Checklist

[x] Review label added
[x] Conditional version tags added, if applicable.

Whichever option we choose, can we decide and ship?

Whichever option we choose, can we decide and ship?

@mheap @lena-larionova @cloudjumpercat I'm merging this and we can iterate again if we need to. Fwiw this looks fine to me.


Do not automatically update

Description of the new feature / enhancement
I hope I don't get a pop-up message from Powertoy every time I have a release. Although there is a button to download updates automatically, I would prefer to have the ability to turn off checking for updates so I can turn it on when I feel like updating.
Scenario when this would be used?
I don't want it to pop up notifications and remind me to update multiple times while I'm using my computer.
Supporting information
No response

/dup #2701


Fix text spacing with vertical fonts (#6387)

According to the PDF spec 5.3.2, a positive value means in horizontal,
that the next glyph is further to the left (so narrower), and in
vertical that it is further down (so wider).
This change fixes the way PDF.js has interpreted the value.
Fixes #6387.

/botio test

/botio-windows test

/botio-linux preview

/botio-linux preview

/botio test

@yurydelendik Could you review this PR?

@CodingFabian Could you rebase this PR to resolve the merge conflicts?

conflict in gitignore :-) rebased.

/botio makeref


neon_local init creates a directory called .zenith instead of .neon

@yeputons I'm keen on picking this, just wondering - if i should address this as part of https://github.com/neondatabase/neon/issues/1702 ?

@phoenix24 Ah, yes, let's move it there.


infra: Add debugging tool in action(win build)

tmate is a tool that helps debugging github actions.
If CI fails, opens an ssh connection for debugging.
It is difficult to predict the msvc dev environment of the window-latest image.
This can be useful when problems occurs.
https://github.com/marketplace/actions/debugging-with-tmate

thanks. feedbacks:

If you find this useful, it might be better to apply it for all supported platforms. Some engineers use Windows for development, while Linux/macOS is controversial.

This usage is optional, and tmate will be terminated after a designated time. So, I believe applying this guide would be the best option for us.

This usage is optional, and tmate will be terminated after a designated time. So, I believe applying this guide would be the best option for us. https://github.com/marketplace/actions/debugging-with-tmate#manually-triggered-debug

I researched about using workflow_dispatch.
In my opinion, this is not suitable for our goal. (for testing, debugging)
The reason we set up ssh debugging(tmate) is because we want to debug the CI's environment status during the Pull-Request step.
workflow_dispatch is not a tool that can be set in the PR step. (like this)
This is used when operating for a separate event in the Action tab.
Therefore, I think it is better to use when build failed and use the timeout appropriately.

@JSUYA The benefit of the manual trigger method is that we can trigger Tmate only when the test fails for a valid reason. Otherwise, every time you push commits, Tmate will add to our test time, and you'll have to wait for the GitAction result to use Tmate. Unfortunately, many many of time we don't have fails. This can be quite burdensome. The key point to note is that Tmate will be terminated in 15 minutes, I think that's why the Tmate guides the manual mode.

@JSUYA The benefit of the manual trigger method is that we can trigger Tmate only when the test fails for a valid reason. Otherwise, every time you push commits, Tmate will add to our test time, and you'll have to wait for the GitAction result to use Tmate. Unfortunately, many many of time we don't have fails. This can be quite burdensome. The key point to note is that Tmate will be terminated in 15 minutes, I think that's why the Tmate guides the manual mode.

@hermet
workflow_dispatch(explained in tmate's manual trigger) guide can be executed targeting the default branch.
The trigger does not work because the build check target is the dev branch or the dev branch of a personal repository.
Unless I misunderstand.. The build status of our default branch almost always has no problems, so it does not fit the current purpose. https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch
Our build and unit_test build tests are each built in the same environment.
Since the build environment(state?) of unit_test includes the build environment of build,
if the build fails, the failure is displayed starting from unit_test.
In fact, we can only put this code(commit) in and test it when a problem occurs.
And I think, there might be a more efficient way.
But I haven't found a way yet and other projects I know are already using this, so I don't think we need to worry about this further.
We don't necessarily need this feature.

workflow_dispatch(tmate) works on a branch:

Oh I didn't see there was a dropbox to select branch there. Thank you for check!

a. We haven't received any requests for this so far. Does this really work for debugging? Can it help us figure out the problem in 15 minutes? b. What about Ubuntu, macOS, and other platforms? Currently, we officially manage the following platforms: Ubuntu, Windows, macOS, iOS, and Android.

a.There was no any request. I added this just because I thought it might be useful. While talking with a team member about Windows CI, he recommended tmate. I also was worried about the 15 minutes but figured this could be solved. However, we don't have to worry about it because i will change it to trigger code.
b. I will add it to other platform build scripts as well.

This PR is not urgent, so I will put it on hold first. It can be reopened if necessary.


Realm.Configuration.defaultConfiguration.schemaVersion

ex:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)  {

           let realmVersion:UInt64 = 1
           let defaultConfig = Realm.Configuration.defaultConfiguration
           print("old version:\(defaultConfig),version:\(Realm.Configuration.defaultConfiguration.schemaVersion)")
//there always print 0
            let version = defaultConfig.schemaVersion
            if version != realmVersion {

                if let path = Realm.Configuration.defaultConfiguration.path {
                    try! NSFileManager().removeItemAtPath(path)
                }
            }

            Realm.Configuration.defaultConfiguration = Realm.Configuration.init(
                schemaVersion: realmVersion,
                migrationBlock: { migration, oldSchemaVersion in
                    if (oldSchemaVersion < realmVersion) {
                    }
            })

            print("new version:\(Realm.Configuration.defaultConfiguration),version:\(Realm.Configuration.defaultConfiguration.schemaVersion)")
//there print 1
...
}

App old version is always 0 when the app restart ~
Are there anything wrong to used?

Note that the default configuration is not persisted. It's a Swift struct that's created at runtime. So updates to the default configuration won't be persisted across invocations of your app.
This is why Realm.Configuration.defaultConfiguration.schemaVersion is always zero at app launch.
If you want to determine the schema version of a Realm file on disk, you can use Realm Swift's free function schemaVersionAtPath(_:encryptionKey:error:) to do so.

OK, Thank you~
schemaVersionAtPath(_:encryptionKey:error:)
That 's the answer I need.


Alert when Azure Fileshare is about to run out of disk space

https://github.com/2i2c-org/infrastructure/pull/3085 adds alerts for disk storage being full to GCP clusters. We should add this for Azure as well - https://2i2c.freshdesk.com/a/tickets/1070 was just caused by this.

We need to:

Create a PagerDuty integration (https://www.pagerduty.com/docs/guides/azure-integration-guide/). This will give us a webhook URL
Use terraform to create an alert (https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_metric_alert). The example there has a place for the webhook URL to slot into
tada!

This just happened again :(

We should prioritize this soon - we have this alerting on other cloud providers, and it has meant we haven't had this issue crop up in any hubs there for a while. https://2i2c.freshdesk.com/a/tickets/1410 was the last time this happened in UToronto (earlier this week)

I will be picking this up when I have completed #3908

I believe that I have enough rights to add the itegration in PagerDuty and have done the "correct thing", but would like a double check please.
I added "Microsoft Azure" integration to our "Disk Space" service here: https://2i2c-org.pagerduty.com/service-directory/P5GF7G3/integrations

I think from this documentation, the metric we want is UsedCapacity and unfortunately the units are Bytes, which means we won't be able to define a percentage threshold like we do for GCP.

Thanks @sgibson91 for making progress on this.

have done the "correct thing", but would like a double check please.

I don't think there's any real way for us to know if something is 'correct' or not, but I do think as you make progress you'll find out if it 'works' or not. Given team size and capacity, I suggest that's the approach we take for this task - 'does this work? ok, let us document what we did and move on. If not, debug and then if necessary, ask for help'.

I think from this documentation, the metric we want is UsedCapacity and unfortunately the units are Bytes, which means we won't be able to define a percentage threshold like we do for GCP.

I learned how to multiply numbers in terraform from this stack overflow thread which means we can use a fraction between 0 and 1 for a threshold.

I ended up needing to bump the version of the Azure terraform provider in order to not get errors from terraform plan. Specifically, the following error was a blocker:
│ Error: retrieving Cluster: (Managed Cluster Name "hub-cluster" / Resource Group "2i2c-utoronto-cluster"): containerservice.ManagedClustersClient#Get: Failure responding to request: StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="NoRegisteredProviderFound" Message="No registered resource provider found for location 'canadacentral' and API version '2022-01-02-preview' for type 'managedClusters'. The supported api-versions are '2017-08-31, 2018-03-31, 2019-02-01, 2019-04-01, 2019-06-01, 2019-08-01, 2019-10-01, 2019-11-01, 2020-01-01, 2020-02-01, 2020-03-01, 2020-04-01, 2020-06-01, 2020-07-01, 2020-09-01, 2020-11-01, 2020-12-01, 2021-02-01, 2021-03-01, 2021-05-01, 2021-07-01, 2021-08-01, 2021-09-01, 2021-10-01, 2022-01-01, 2022-02-01, 2022-03-01, 2022-04-01, 2022-06-01, 2022-07-01, 2022-07-02-preview, 2022-08-01, 2022-08-02-preview, 2022-08-03-preview, 2022-09-01, 2022-09-02-preview, 2022-10-02-preview, 2022-11-01, 2022-11-02-preview, 2023-01-01, 2023-01-02-preview, 2023-02-01, 2023-02-02-preview, 2023-03-01, 2023-03-02-preview, 2023-04-01, 2023-04-02-preview, 2023-05-01, 2023-05-02-preview, 2023-06-01, 2023-06-02-preview, 2023-07-01, 2023-07-02-preview, 2023-08-01, 2023-08-02-preview, 2023-09-01, 2023-09-02-preview, 2023-10-01, 2023-10-02-preview, 2023-11-01, 2023-11-02-preview, 2024-01-01, 2024-01-02-preview, 2024-02-01, 2024-02-02-preview, 2024-03-02-preview, 2024-04-02-preview'. The supported locations are 'australiacentral, australiacentral2, australiaeast, australiasoutheast, brazilsouth, brazilsoutheast, canadacentral, canadaeast, centralindia, centralus, eastasia, eastus, eastus2, francecentral, francesouth, germanynorth, germanywestcentral, israelcentral, italynorth, japaneast, japanwest, jioindiacentral, jioindiawest, koreacentral, koreasouth, mexicocentral, northcentralus, northeurope, norwayeast, norwaywest, polandcentral, qatarcentral, southafricanorth, southafricawest, southcentralus, southindia, southeastasia, spaincentral, swedencentral, switzerlandnorth, switzerlandwest, uaecentral, uaenorth, uksouth, ukwest, westcentralus, westeurope, westus, westus2, westus3'."
│
│   with azurerm_kubernetes_cluster.jupyterhub,
│   on main.tf line 82, in resource "azurerm_kubernetes_cluster" "jupyterhub":
│   82: resource "azurerm_kubernetes_cluster" "jupyterhub" {

However, bumping the version caused some yak-shaving. Specifically we will now have a deprecation warning for a variable.
│ Warning: Argument is deprecated
│
│   with azurerm_kubernetes_cluster.jupyterhub,
│   on main.tf line 146, in resource "azurerm_kubernetes_cluster" "jupyterhub":
│  146:     node_taints = concat([], var.node_pools["core"][0].taints)
│
│ This field will be removed in v4.0 of the Azure Provider since the AKS API doesn't allow arbitrary node taints on the default node pool

Plan output with a targeted command to avoid issue with NFS share
$ tf plan -var-file=projects/$CLUSTER_NAME.tfvars -out=$CLUSTER_NAME -target=azurerm_monitor_action_group.alerts -target=azurerm_monitor_metric_alert.disk_space_full_alert

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create
  ~ update in-place

Terraform will perform the following actions:

  # azurerm_monitor_action_group.alerts will be created
  + resource "azurerm_monitor_action_group" "alerts" {
      + enabled             = true
      + id                  = (known after apply)
      + location            = "global"
      + name                = "AlertsActionGroup"
      + resource_group_name = "2i2c-utoronto-cluster"
      + short_name          = "alertaction"

      + webhook_receiver {
          + name        = "callpagerdutyapi"
          + service_uri = "https://events.pagerduty.com/integration/5ebdc22d2399400cd0560e450b579333/enqueue"
        }
    }

  # azurerm_monitor_metric_alert.disk_space_full_alert will be created
  + resource "azurerm_monitor_metric_alert" "disk_space_full_alert" {
      + auto_mitigate            = true
      + description              = "Action will be triggered when used disk space is > 7372.8 GB."
      + enabled                  = true
      + frequency                = "PT1M"
      + id                       = (known after apply)
      + name                     = "Used disk space > 7372.8 GB on ead3521a-d994-4a44-a68d-b16e35642d5b"
      + resource_group_name      = "2i2c-utoronto-cluster"
      + scopes                   = [
          + "/subscriptions/ead3521a-d994-4a44-a68d-b16e35642d5b/resourceGroups/2i2c-utoronto-cluster/providers/Microsoft.Storage/storageAccounts/2i2cutorontohubstorage",
        ]
      + severity                 = 3
      + target_resource_location = (known after apply)
      + target_resource_type     = (known after apply)
      + window_size              = "PT5M"

      + action {
          + action_group_id = (known after apply)
        }

      + criteria {
          + aggregation            = "Average"
          + metric_name            = "UsedCapacity"
          + metric_namespace       = "Microsoft.Storage/storageAccounts"
          + operator               = "GreaterThan"
          + skip_metric_validation = false
          + threshold              =<PHONE_NUMBER>000
        }
    }

  # azurerm_storage_account.homes will be updated in-place
  ~ resource "azurerm_storage_account" "homes" {
      ~ allow_nested_items_to_be_public   = false -> true
        id                                = "/subscriptions/ead3521a-d994-4a44-a68d-b16e35642d5b/resourceGroups/2i2c-utoronto-cluster/providers/Microsoft.Storage/storageAccounts/2i2cutorontohubstorage"
      ~ min_tls_version                   = "TLS1_0" -> "TLS1_2"
        name                              = "2i2cutorontohubstorage"
        tags                              = {}
        # (28 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

Plan: 2 to add, 1 to change, 0 to destroy.
╷
│ Warning: Resource targeting is in effect
│
│ You are creating a plan with the -target option, which means that the result of this plan may not represent all of the changes requested by the current configuration.
│
│ The -target option is not for routine use, and is provided only for exceptional situations such as recovering from errors or mistakes, or when Terraform specifically suggests to
│ use it as part of an error message.
╵
╷
│ Warning: Failed to decode resource from state
│
│ Error decoding "azurerm_container_registry.container_registry" from prior state: unsupported attribute "georeplication_locations"
╵
╷
│ Warning: Failed to decode resource from state
│
│ Error decoding "azurerm_kubernetes_cluster.jupyterhub" from prior state: unsupported attribute "addon_profile"
╵
╷
│ Warning: Failed to decode resource from state
│
│ Error decoding "azurerm_kubernetes_cluster_node_pool.user_pool[\"usere8sv5\"]" from prior state: unsupported attribute "availability_zones"
╵


Go kpt fn SDK isGVK function errantly returns true when the groups do not match

Expected behavior
IsGVK does not return true for K8s service with group: "", version: "v1" and kind: "Service" when checking for a knative service with group: "serving.knative.dev", version: "v1" and kind: "Service"
Actual behavior
IsGVK returns true for K8s service with group: "", version: "v1" and kind: "Service" when checking for a knative service with group: "serving.knative.dev", version: "v1" and kind: "Service"
Information
obj.IsGVK("serving.knative.dev", "v1", "Service") returns true errantly when the obj is a K8s service.  The function checks that both the object group and parameter group are not empty before performing an equality check.  In the case of a service there is no group and consequently the logic short cuts before the comparison that would return the appropriate false.  I see from the function comment that the empty string as a parameter should match any group which seems reasonable.  The object group should be strictly respected though and not match any group parameter it would seem.
Steps to reproduce the behavior
when obj is a k8s service similar to below:
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: some-service
  name: some-service
spec:
  clusterIP: None
  ports:
    - name: postgresdb
      port: 5432
  selector:
    app.kubernetes.io/name: some-service
  type: ClusterIP

obj.IsGVK("serving.knative.dev", "v1", "Service")

We updated to the latest version of the SDK and the new functions fix the issue reported here.


refactor!: remove returned ssl property

This changeset removes the property ssl: false that was set to the returned object of the Connector.getOptions() method.
This should fix type problems when using the connector alongside the mysql2 in TypeScript, since that defined value is incompatible with the type definitions for that driver.
Fixes: https://github.com/GoogleCloudPlatform/cloud-sql-nodejs-connector/issues/116

Does this mean we're going to have customers tripping over setting ssl to true then?

This should fix type problems when using the connector alongside the mysql2

How can we take this from "this should" to "this will", can we add another integration test?

How can we take this from "this should" to "this will", can we add another integration test?

I already have a branch ready to send a follow up PR once this lands 😊 good catch though!

Does this mean we're going to have customers tripping over setting ssl to true then?

that is still possible today, it shouldn't change how it works today

I already have a branch ready to send a follow up PR once this lands 😊 good catch though!

I still think it would be beneficial to have the tests with this fix. That way we are 100% sure this is WAI and not causing an unforeseen regressions.


Update to Fyne v2 and the new RunNative API

This library looks super interesting and i was working with it but the Fyne usage is really old now.
I hope you find this PR helpful :).
The new RunNative API is a little more work because we abstracted many native API hooks behind one entry instead of exposing per-platform API.
see https://github.com/fyne-io/fyne/pull/4545

Apologies @jeandeaual the first commit had some errors. I have now fixed them and tested on simulator:

@andydotxyz Thank you very much for updating the Fyne example to the latest version of the library.
I haven't kept up with the latest changes in Fyne, so that's a great help.

Thanks for merging this, and for the great library - we are using it in the translation work of Fyne to be released in v2.5.0 https://github.com/fyne-io/fyne/pull/4545


Model weights release

Hello! I think the work you've done for language-table and interactive language is really interesting, and I was wondering if you will be releasing the final weights used in the demo for interactive language. It would be extremely helpful for my research, as I'm interested in replicating the results presented in the demo.
Thank you for your time and great work!

+1! Would be great to have an idea about a potential release sometime in the future. cc @ayzaan

Will work on this and keep you updated!

Thanks!!

I appreciate it, thank you!

Hi @ayzaan! I was wondering if there were any updates on this. Thank you!

Great, thanks a lot!


Consider renaming to swc-ephys

The smallest of small suggestions, but every other repo we have uses hyphens, and it would be great if these were consistent.

That's a good idea, maybe now is a good time to think of a better name, I was thinking of adding to PyPI soon for easy installation. I am terrible at names though :'D, some ideas:

SpikeRunner
eceFlow
SpikeFlow
SpikeShepard

🤷

I like both spikeflow and spikerunner. I also like not having swc in the name, so that its clear that others can use it.


Staged Test Network Plan

I would like to outline some proposed structure for how we roll out our test network.
The goal of this test network is to iterate towards the full functionality necessary for the Chain History network.
Phases
Phase Zero: Overlay Only
During this phase we will simply establish our ability to establish a stable overlay network using the Portal Wire Protocol messages.

A: Clients support can be externally configured in some way to specify bootnodes.
B: Clients can use use the Portal Wire Protocol using the protocol identifier: 0x500B (History Network)
C: Clients can send and receive PING/PONG messages using the overlay protocol

"fake" radius information in the payload

D: Clients can send and respond to FINDNODE/FOUNDNODES messages using the overlay protocol.
E: Clients periodically check the liveliness of nodes in their routing table and evict unreachable nodes
F: Clients actively populate their routing table by exploring the DHT (typically via random exploration using the recursive find nodes algorithm)
G: Client has published instructions on how to build, configure, and launch a node for the test network.

In this phase, each team will be responsible for deploying however many nodes they wish.  Each team may supply the ENR records for any stable "bootnodes" they will be operating.
What we are testing:

Client interoperability and stability

Message encoding and decoding for PING/PONG/FINDNODE/FOUNDNODES

Healthy overlay network

Do clients populate and maintain their routing tables as expected.
Can we navigate the network as expected to find nodes the closest nodes to a location.

Client
A
B
C
D
E
F
G

Fluffy
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

Trin
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

Ultralight
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

Phase One: Simple Content Retrieval
During this phase we will be testing the ability to find and retrieve content stored in the network by other nodes.

A. Clients have a basic implementation of a content database

The database can be manually populated with data
support for looking up a piece of content by it's content-id

B.  Clients have support for the content-key format for headers referenced by their block hash.
C.  Clients support a subset of the functionality for serving FINDCONTENT requests

Clients only need to support responding when the payload can be returned within the CONTENT message response.
Clients do not need to support uTP based transmission at this stage

D.  A client can be launched with a pre-populated database of content

In this phase we will populate our test network with nodes which have had their content databases pre-populated.
We will likely do something like pre-loading the first 1 million block headers

What we are testing

The ability for nodes to traverse the DHT and find the nodes which have the content they need

Any block header in the first million blocks should be retrievable by its block hash.

The basic transmission of content without uTP

Client
A
B
C
D

Fluffy
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

Trin
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

Ultralight
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

Phase Two: Gossip
During this phase we will build out the mechanisms needed for gossip, including use of the uTP protocol.

A. Clients support uTP

Listening for inbound connections
Establishing outbound connections
Receiving data sent over the uTP stream

B. Client support for gossip

Responding to OFFER messages if the content is of interest
Establishing outbound connection upon receiving an ACCEPT message and sending the data over uTP
Listening for an inbound connection after sending an ACCEPT message and receiving the data over uTP
Support for the block header content-key and validation of the block header.
Upon successful receipt of new content, performing neighborhood gossip.

C. Client support for the POKE mechanic.

Tracking of the nodes along the search path which did not have the content but should have been interested.
Once content was successfully retrieved, offering it to nodes along the search path.

D. Non critical but related functionality

Management of the content database, eviction when full based on radius
Validation that offered headers are indeed part of the canonical chain (depends on header accumulator)

What we are testing

uTP based transmission of content
The effective spread of new content using gossip
The passive replication of existing content using POKE mechanic.

Client
A
B
C
D.i
D.ii

Fluffy
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:pizza:

Trin
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:pizza:

Ultralight
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:question:
:heavy_check_mark:

Phase Three: Head Tracking

TODO: we can no longer simply follow the chain with the highest TDD after merge.  Need to implement light protocol for Eth2

NOTE: establish the "correct" solution and then look for a quick solution that will get us the needed functionality quickly.

Phase Four: Full Content Transmission
During this phase we will flesh out the remaining functionality for transmission of content, specifically, large payloads that must be sent over uTP

A. Clients support CONTENT response that contain a uTP connection ID

Upon receipt of a CONTENT response with a uTP connection-id, the client initiates a uTP stream and receives the content payload over the stream.

B. Clients serve FINDCONTENT requests for all content types (headers, bodies, receipt bundles, master and epoch accumulators)
C. Clients support block body and receipt bundle content types
D. Received block body and receipt content is validated using the block header.

What we are testing

support for remaining content types (bodies and receipt bundles)
clients implement full support for FINDCONTENT/CONTENT including full uTP based content transmission.

Client
A
B
C
D

Fluffy
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

Trin
:heavy_check_mark:
:pizza:
:heavy_check_mark:
:heavy_check_mark:

Ultralight
:heavy_check_mark:
:heavy_check_mark:
:pizza:
:heavy_check_mark:

Phase Five: The Road To Production

TODO: what is left?

NOTE: visibility into the state of the network is probably valuable at this stage.

NOTE: verifying cross client compatibility will need to be done

Proposal for DevConnect goals:

Each client has documentation on how to install and launch a node which will connect to the current testnet bootnodes.
Ultralight has some documentation on how to launch and run the in-browser stuff.
Hosting of at least a subset of the header chain available via the testnet.

3. Hosting of at least a subset of the header chain available via the testnet.

Does this includes 1) and 2) from Phase Two: Gossip?

Does this include 1) and 2) from Phase Two: Gossip?

I think it can be done in whatever the fastest/quickest way that works is which doesn't diverge too far from the existing roadmap.  Don't want us doing extra work that doesn't lead us towards the final product... but if we can have uTP streams by then in any capacity then huzzah!

Have updated for Ultralight

As have I for Fluffy

Updated for Trin

is :pizza: a no? partial?

is :pizza: a no? partial?

Partial in our case

is pizza a no? partial?

Partial/in progress for Trin. Updated POKE with :x: as It is not yet implemented.

POKE in trin is merged, I updated the table

Closing as this is completed since a while for all clients mentioned in the issue tracker.


Dropdown menu open

Hello Sir,
I want to show tour at bootstrap dropdown submenu. On show event i am toggle dropdown and it will append open class but don't know after hopscotch box show dropdown close.
Please help me on this to resolve this issues.
Thanks

Sorry, I'm confused... so, you have a dropdown and you want to have it open and close depending on the tour, correct?
I'm unclear on the details of how to integrate with Bootstrap, but it sounds like you're on the right track with toggling using whichever API that provides. On the Hopscotch side of things, you'll want to hook into the onNext and/or onShow events to open and close the dropdown.
I hope this helps!


Added port to bandit ssh command

Apparently they've changed the bandit server so it listens on port 2220 now...

Thank you @mavaa from the past!


AddRequestData

Reproduction steps
I am using the Matter protocol to send the OnOff Cluster command. After building the command path, I try to call the AddRequestData function to add the command data (onCommand), but the command fails to send. Here is the error log:
I (11057) MatterController: 按钮按下，时间: 11057194 微秒
I (11247) MatterController: 按钮松开，时间: 189996 微秒
I (11247) MatterController: 切换灯具状态，当前状态: OFF
I (11257) app_driver: 按钮被按下，切换灯具状态
I (11257) app_driver: 当前的 Node ID: 0x5164
I (11267) app_driver: 开始查找或建立会话.........
I (11267) chip[DIS]: Lookup started for 1A2869E20AC7B3F0-0000000000005164
I (11277) app_driver: 查找或建立会话的请求已发送, 回调地址: 0x3fc98f78
I (11277) MatterController: 灯具状态切换完成!!!!!!!!!!
I (11467) chip[DIS]: Checking node lookup status for 1A2869E20AC7B3F0-0000000000005164 after 200 ms
I (12037) chip[DIS]: UDP:[FE80::1291:A8FF:FE1F:9D88%st1]:5540: new best score: 7 (for 1A2869E20AC7B3F0-0000000000005164)
I (12037) chip[DIS]: UDP:<IP_ADDRESS>%st1:5540: score has not improved: 2 (for 1A2869E20AC7B3F0-0000000000005164)
I (12047) chip[DIS]: Checking node lookup status for 1A2869E20AC7B3F0-0000000000005164 after 786 ms
I (12067) chip[SC]: Initiating session on local FabricIndex 1 from 0x0000000000007283 -> 0x0000000000005164
I (12127) chip[EM]: <<< [E:55130i S:0 M:65955700] (U) Msg TX to 0:0000000000000000 [0000] [UDP:[FE80::1291:A8FF:FE1F:9D88%st1]:5540] --- Type 0000:30 (SecureChannel:CASE_Sigma1) (B:234)
I (12147) chip[SC]: Sent Sigma1 msg to <0000000000005164, 1>
I (12707) chip[EM]: Retransmitting MessageCounter:65955700 on exchange 55130i Send Cnt 1
I (12717) chip[EM]: >>> [E:55130i S:0 M:211836383 (Ack:65955700)] (U) Msg RX from 0:0000000000000000 [0000] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:26)
I (12737) chip[EM]: >>> [E:55130i S:0 M:211836384 (Ack:65955700)] (U) Msg RX from 0:0000000000000000 [0000] --- Type 0000:33 (SecureChannel:CASE_Sigma2Resume) (B:100)
I (12747) chip[EM]: <<< [E:55130i S:0 M:65955701 (Ack:211836384)] (U) Msg TX to 0:0000000000000000 [0000] [UDP:[FE80::1291:A8FF:FE1F:9D88%st1]:5540] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:26)
I (12787) chip[EM]: <<< [E:55130i S:0 M:65955702 (Ack:211836384)] (U) Msg TX to 0:0000000000000000 [0000] [UDP:[FE80::1291:A8FF:FE1F:9D88%st1]:5540] --- Type 0000:40 (SecureChannel:StatusReport) (B:34)
I (12807) chip[SC]: SecureSession[0x3fc9b7c8, LSID:33467]: State change 'kEstablishing' --> 'kActive'
I (12817) app_driver: 成功与设备建立会话: Node ID 0x5164
I (12817) app_driver: 准备发送命令: 打开 到 endpoint 2
I (12827) app_driver: 命令路径信息: endpointId: 2, ClusterId: 6, CommandId: 1
I (12837) app_driver: PrepareCommand 成功
I (12837) app_driver: 发送打开命令: endpointId: 2, ClusterId: 6, CommandId: 1
E (12847) app_driver: AddRequestData 失败: Error CHIP:0x00000003
E (12847) app_driver: 发送控制命令失败: Error CHIP:0x00000003
I (12857) chip[EM]: >>> [E:55130i S:0 M:211836385 (Ack:65955700)] (U) Msg RX from 0:0000000000000000 [0000] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:26)
I (12947) chip[EM]: >>> [E:55130i S:0 M:211836386 (Ack:65955702)] (U) Msg RX from 0:0000000000000000 [0000] --- Type 0000:10 (SecureChannel:StandaloneAck) (B:26)

Create CommandSender and callback objects.
Call PrepareCommand to prepare the command path.
Call AddRequestData to add command data for On/Off Cluster.
Failed to send command.

Is there something I'm missing when using AddRequestData? Is there something else I'm not considering that may be causing the command to fail? Thanks for your help!
Bug prevalence
Once or twice a week
GitHub hash of the SDK that was being used
5.0.2
Platform
esp32
Platform Version(s)
No response
Type
Core SDK Crash
Anything else?

AddRequestData() will call the PrepareCommand() to encode the command path to the command payload, so you don't need to call it before AddRequestData().

Yes, in my original code, I did call the PrepareCommand() function before using AddRequestData(), but after listening to your advice, I removed the PrepareCommand() function. Now it still has the same problem, and it cannot be sent successfully. The error code is still Error CHIP: 0x00000003. I don't know what to do about this. I hope to get your advice. Thank you.

AddRequestData() will call the PrepareCommand() to encode the command path to the command payload, so you don't need to call it before AddRequestData().AddRequestData()将调用PrepareCommand()将命令路径编码到命令负载，因此您无需在AddRequestData()之前调用它。

Yes, in my original code, I did call the PrepareCommand() function before using AddRequestData(), but after listening to your advice, I removed the PrepareCommand() function. Now it still has the same problem, and it cannot be sent successfully. The error code is still Error CHIP: 0x00000003. I don't know what to do about this. I hope to get your advice. Thank you.

AddRequestData() will call the PrepareCommand() to encode the command path to the command payload, so you don't need to call it before AddRequestData().AddRequestData()将调用PrepareCommand()将命令路径编码到命令负载，因此您无需在AddRequestData()之前调用它。

Yes, in my original code, I did call the PrepareCommand() function before using AddRequestData(), but after listening to your advice, I removed the PrepareCommand() function. Now it still has the same problem, and it cannot be sent successfully. The error code is still Error CHIP: 0x00000003. I don't know what to do about this. I hope to get your advice. Thank you.

AddRequestData() will call the PrepareCommand() to encode the command path to the command payload, so you don't need to call it before AddRequestData().

Sorry, now my AddRequestData() function has no problem, but when I finished loading the control command, my FinishCommand() function had a problem again. The specific error code is as follows: E (16768) app_driver: FinishCommand failed: Error CHIP:0x00000003
E (16778) app_driver: Send control command failed: Error CHIP:0x00000003
Sorry to bother you. I really hope you can take the time to guide me in your busy schedule. Thank you very much!!!

No need to call Finish either. AddRequestData calls both prepare and finish for you.
Prepare and Finish are offered for more complex reason, but is strongly discouraged to use as most use cases should be able to use AddRequestData directly

Prepare and Finish are offered for more complex reason, but is strongly discouraged to use as most use cases should be able to use AddRequestData directly
Hello, after I removed the FinishCommand() function as you suggested, the program ran normally, but when I sent a command to the device, the following log record appeared on the device:

Is this because my control end does not have sufficient permissions to access the device? But what I don't understand is: if I use chip-tool to bind my controller to the device, I can achieve this operation, but now I want to control the devices of different nodes separately, how can I do it? I hope you can give some suggestions, thank you very much! !


feat: Import htmlSafe from @ember/template, not @ember/string.

As far as I can tell, this is supposed to still just be deprecated, but it was giving a warning to the console in my 3.28 app:
WARNING in ./node_modules/ember-cli-showdown/components/markdown-to-html.js 42:11-19
export 'htmlSafe' (imported as 'htmlSafe') was not found in '@ember/string' (possible exports: camelize, capitalize, classify, dasherize, decamelize, getString, getStrings, setStrings, underscore, w)

but crashing in practice:
Uncaught (in promise) TypeError: (0 , _ember_string__WEBPACK_IMPORTED_MODULE_2__.htmlSafe) is not a function
    at Class.eval (markdown-to-html.js:56)
    at index.js:1937
    at untrack (validator.js:843)
    at ComputedProperty.get (index.js:1936)
    at Class.getter [as html] (index.js:1026)
    at getPossibleMandatoryProxyValue (index.js:1327)
    at _getProp (index.js:1392)
    at reference.js:214
    at reference.js:162
    at track (validator.js:827)

Possibly related to my using embroider on the app?

Latest version breaks on Ember 3.27 as well without Embroider. @mansona can we get a release of this please?

This also breaks our app

This is very strange 🙈  I can't see any reason why this isn't failing tests before this change 🙃
anyway, the change is good! thanks for the contribution


Wrong base_path for CamelCased EndPoints

The base_path for TicketGroups is "ticketgroups", which is incorrect, resulting in a 301 when listing, showing, etc.
# tevo = valid TicketEvolution::Connection
tevo.ticket_groups.base_path
 => "/ticketgroups"

I'm afraid I know nothing about submitting a patch or writing gems, or I would attempt, but for now, this code seems to solve the issue for me in my Rails app.  The difference is the underscore method:
module TicketEvolution
  class Endpoint < Base
    def base_path
      [].tap do |parts|
        parts << parent.base_path if parent.kind_of? TicketEvolution::Endpoint
        parts << "/"+self.class.to_s.split('::').last.underscore.downcase.pluralize
        parts << "/#{self.id}" if self.respond_to?(:id) and self.id.present?
      end.join
    end

    def endpoint_name
      self.class.name.demodulize.underscore.downcase
    end
  end
end

Hope this helps.

Forgot this (objects won't build from a list otherwise):
module TicketEvolution
  module List
    def build_for_list(response)
      TicketEvolution::Collection.build_from_response(response, self.class.name.demodulize.underscore.downcase, singular_class)
    end
  end
end


I need Container.Bind(typeof(ITickable)).To()

Hello from Japan.
The update of zenject is finished. so I was looking for an active project. now found reflex.
The zenject features that I use a lot in my projects are interfaces such as ITickable, IInitializable, IDisposable.
Are there any plans to implement any of the above features?

Hello 👋
Sure, tbh, its a feature I'm working right now. I'm taking a look on unity's PlayerLoopSystem to understand if I could take advantage of this APIs in order to have this IInitializable, ITickable and IDisposable.
I think, that in two or less weeks this feature is about to be finished.

I'm glad to know that there are plans to add more features.
I don't understand the issue close timing.
I'll leave it to you to decide when to close it.
Thank you.

Update, I investigated the PlayerLoopSystem APIs, and yes they are enough for us to inject a method in the Unity update loop.

Opening a discussion, knowing that we only have one context (ProjectContext), is it valid that we can implement the IDisposable interface, so that the Dispose method is called when the application is closing? Since unity already gives us an event on that (Application.quitting)?

@edo0159 Can you describe your usages of IInitializable, ITickable and IDisposable?
And why IInitializable over constructor?

Opening a discussion, knowing that we only have one context (ProjectContext), is it valid that we can implement the IDisposable interface, so that the Dispose method is called when the application is closing? Since unity already gives us an event on that (Application.quitting)?

I was under the misapprehension that reflex implemented scene cotext. When there is only one context, I think Dispose at the close of the app is fine.

@edo0159 Can you describe your usages of IInitializable, ITickable and IDisposable? And why IInitializable over constructor?

As you know, when you inherit from MonoBehaviour, we have to attach it to a gameObject.
IInitializable, etc. is what I use when I want to use some of the MonoBehaviour features in pure c#.
For example, if I only want to use Update(), it is convenient to just implement the ITickable interface in pure c#.

why IInitializable over constructor
In zenject, IInitializable is executed after Awake.
I may want to use Awake to do initialization that is not managed by zenject, and then use IInitializable to do the initialization.
This cannot be done in the constructor.

Translated with DeepL

Update: This feature it is in my testing phase, it will be deployed at the end of this week 😁


Fixing Broken Links

Some broken links are fixed in the documentation.

Thanks! I was just furiously typing and not double checking!


Staging to Main

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[Release-1.27] - K3s etcd snapshot reconcile consumes excessive memory when a large number of snapshots are present

Backport fix for

#10450

Validated on release-1.27 branch with commit 112a185c346faafc8e2e5fe68fdb52e33aafabbd
Environment Details

Infrastructure

[x] Cloud
[ ] Hosted

Node(s) CPU architecture, OS, and Version:

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"

$ uname -m
x86_64

Setup Size: 4Gb Memory, 2vCPU, 30G disc size.
Cluster Configuration:

HA: 3 server/ 1 agent

Config.yaml:

token: xxxx
cluster-init: true
write-kubeconfig-mode: "0644"
node-external-ip: <IP_ADDRESS>
node-label:
- k3s-upgrade=server

etcd-snapshot-retention: 255
etcd-snapshot-schedule-cron: "* * * * *"
etcd-s3: true
etcd-s3-access-key: <access_key>
etcd-s3-secret-key: <secret_key>
etcd-s3-bucket: <bucket>
etcd-s3-folder: <folder>
etcd-s3-region: <region>

Testing Steps

Copy config.yaml

$ sudo mkdir -p /etc/rancher/k3s && sudo cp config.yaml /etc/rancher/k3s

Install k3s

curl -sfL https://get.k3s.io | sudo INSTALL_K3S_COMMIT='112a185c346faafc8e2e5fe68fdb52e33aafabbd' sh -s - server

Verify Cluster Status:

kubectl get nodes -o wide
kubectl get pods -A

Apply the k3s extra metadata here:

kubectl apply -f https://gist.githubusercontent.com/aganesh-suse/52c3d6c3d7fe70141fa3a49431ac0032/raw/20039a159ab0f5fce1930f5ec12f6afc2b034784/k3s-etcd-snapshot-extra-metadata.yaml

Monitor the memory usage of k3s.service, while taking snapshots every 1 minute for upto 255 snapshots.

for (( I=0; I < "${ON_DEMAND_SNAPSHOT_COUNT}"; I++ ))
do
    sudo k3s etcd-snapshot save
    sleep 5
done

write_mem_usage_k3s_to_file () {
    while true; do
        echo "$(top -b -n 1 | grep k3s)"  | tee -a top-output.log
        sleep 1
    done
}

ttyplot_k3s_memory () {
    K3S_PID=$(ps aux | grep 'k3s' | head -n 1 | awk '{print $2}')
    while :; do grep -oP '^VmRSS:\s+\K\d+' /proc/$K3S_PID/status \
    | numfmt --from-unit Ki --to-unit Mi; sleep 1; done | ttyplot -u Mi
}

P.S: We run out of disc space before running out of memory space by ~280 snapshots, so capping the snapshot count to 255 for testing purposes.
Replication Results:

k3s version used for replication:

$ k3s -v
k3s version v1.27.16+k3s1 (a45cef49)
go version go1.22.5

Validation Results:

k3s version used for validation:

$ k3s -v
k3s version v1.27.16+k3s-112a185c (112a185c)
go version go1.22.5

Memory Usage Comparison Results
Plot to compare memory usage between released version and latest commit:
Compare % Memory, Max Memory used in Mb, Avg Memory in Mb for both released version and latest commit for various snapshot counts - 120, 150, 170, 200, 230, 250, 255.
          v1.27.16        |  release-1.27 commit: 112a185c
Snaps   %M  Max     Avg     %M   Max    Avg
100     47  2049    1842    41  1655    1555
120     53  2073    1980    48  1914    1770
150     62  2451    2336    56  2175    2040
170     63  2655    2475    59  2342    2248
200     70  2737    2416    52  2080    1927
230     76  3045    2855    56  2412    2170
250     83  3240    3022    60  2726    2455
255     83  3240    3120    70  2846    2547

Observations
Memory wise, till about 120 snapshots, the new commit is 2% lesser than the older vesion memory usage.
On an average, the difference starts increasing to ~5% till 200 snapshots, then to ~10+% lesser memory usage for more than 200 snapshots (conservatively).


Add :none to typespec for interrupt direction

Using :none appears to be the preferred means of unsetting the
interrupt callback for a pin, but using it and running mix dialyzer on
a project results in the following error:
The call 'Elixir.ElixirALE.GPIO':set_int(interrupt_pid@1::any(),'none') breaks the contract (pid(),int_direction()) -> 'ok' | {'error',term()}

Thanks!


Feature: Paging for Get-GlobalAddressList

Problem: Get-GlobalAddressList makes only one request to the server to fetch records.  If the server has more records than the server is willing to serve, there is no way to fetch the remaining records.
Solution: Paging.  I've added two parameters to Get-GlobalAddressList, StartRow and MaxRows.  These two new parameters allow you to specify where in the list you want to start downloading from (StartRow) and how many records you want to download (MaxRows) per request.  The script will continue downloading records until there are no more records to download.

@dafthack I'm curious why the parsing of the web requests response isn't using the built in json parser.  Was there a technical reason for it not using a parser or is it just how things ended up?


JSON API

To flesh out changes from #17.
I'm going to think of this as more of a conversation than a full spec in one shot.
I've written up docs over in the wiki where I did this work. In the wiki I gave examples to show what the GQL string syntax for a part of a query looks like along with the equivalent JSON and SQL. If you read the wiki with those goggles on while thinking about the JSON API it may seem more relevant. I'll summarize some here though.
I'll use the term filter because I think we have some context around that term. And when I refer to a filter I'll be speaking about a JSON object (which could have been created by calling gql.parse() on a string).
A filter is an array of JSON objects, each of which represents a condition. In the special case that a filter contains only a single condition it will be a single JSON object and not an array of objects.
Conditions
The conditions in a filter are related by boolean logic, either AND or OR. AND conditions look like {title: 'Hello World!'} while OR conditions looks like {$or: {title:Hello World!'}}. When the filter is an array of objects it's expected that the first element in the array is NOT an $or condition.
Each condition is made up of a property, a comparison operator and a value.
The simplest condition is an equals condition which is simply {title: Home}.
Other types of conditions are all written in a similar way. For example: less than is written like this {amount: {$lt: 5}}. A like comparison is written like this: {title: {$like: 'om'}}. Greater than or equals looks like this: {created_at: {$gte: '2016-01-01'}}.
See the wiki doc for comparison operators for the full set of operators.
Conditions containing an array for the value are interpreted as IN conditions. They will be converted to IN clauses when passed through gql.applyTo(...).
Negated Conditions
Conditions can be negated. All negative conditions are mapped in the following way: {$not: {featured: true}}.
Remember that the $not is always outside the property, condition and value. It's done this way because it allows the same string syntax (for GQL strings) and JSON structure for negation of nested filters as well as single conditions.
Nested Filters (operator precedence)
Conditions can be grouped together with their own relative boolean logic and then that set of conditions can be nested within another set of conditions. The nested set of conditions would be represented as an array. That would look like this: [{author_id: 5}, [{featured: true}, {$or: {created_at: {$gt: '2016-01-01'}}}]]. In this example the second element in the outer array is also an array which represents a clause containing two conditions related to one another by OR boolean logic.

Hey @laran 👋
I'm sorry that you haven't got a reply. Thanks for your effort of writing this up 🙂
GQL was replaced by NQL. GQL is deprecated now.
NQL is the new and better GQL. It makes use of the MongoDB's Query JSON format, which is explained here. If you have any questions or ideas, feel free to raise an issue here.