SQLite3 Connection getIndexData()

This is a rewrite of system/Database/SQLite3/Connection::_indexData().
SQLite doesn't show indexes on tables created with INTEGER PRIMARY KEY AUTO_INCREMENT. This PR looks for primary keys that don't appear in the normal index lookup and adds it to the return of the method.
In the test database creation of the users table the current implementation won't return any index.
        $this->forge->addField([
            'id'         => ['type' => 'INTEGER', 'constraint' => 3, 'auto_increment' => true],
            'name'       => ['type' => 'VARCHAR', 'constraint' => 80],
            'email'      => ['type' => 'VARCHAR', 'constraint' => 100],
            'country'    => ['type' => 'VARCHAR', 'constraint' => 40],
            'created_at' => ['type' => 'DATETIME', 'null' => true],
            'updated_at' => ['type' => 'DATETIME', 'null' => true],
            'deleted_at' => ['type' => 'DATETIME', 'null' => true],
        ])->addKey('id', true)->createTable('user', true);

However if you wrote it like the following it would show up in the indexes:
        $this->forge->addField([
            'id'         => ['type' => 'INTEGER', 'constraint' => 3],
            'name'       => ['type' => 'VARCHAR', 'constraint' => 80],
            'email'      => ['type' => 'VARCHAR', 'constraint' => 100],
            'country'    => ['type' => 'VARCHAR', 'constraint' => 40],
            'created_at' => ['type' => 'DATETIME', 'null' => true],
            'updated_at' => ['type' => 'DATETIME', 'null' => true],
            'deleted_at' => ['type' => 'DATETIME', 'null' => true],
        ])->addKey('id', true)->createTable('user', true);

With this PR both cases will return indexes for primary key.
The need is to get a comprehensive list of database constraints. This will be useful in adding upsert() to the database.
Furthermore, this method doesn't use nested queries like the current implementation and requires only one database call.
Checklist:

[x] Securely signed commits
[x] Component(s) with PHPDoc blocks, only if necessary or adds value
[x] Unit testing, with >80% coverage
[ ] User guide updated
[x] Conforms to style guide

Also, this adds the field index type - which all the other databases have. This tells whether the index is unique, primary, foreign, etc.
And something happened when rebasing my project.. There should  only be two files changed. Not sure what happend.

Any idea how all these other commits got here? Any idea how to fix?

Under the current implementation this:
        $this->forge->addField([
            'id'         => ['type' => 'INTEGER', 'constraint' => 3, 'auto_increment' => true],
            'name'       => ['type' => 'VARCHAR', 'constraint' => 80],
            'email'      => ['type' => 'VARCHAR', 'constraint' => 100],
            'country'    => ['type' => 'VARCHAR', 'constraint' => 40],
            'created_at' => ['type' => 'DATETIME', 'null' => true],
            'updated_at' => ['type' => 'DATETIME', 'null' => true],
            'deleted_at' => ['type' => 'DATETIME', 'null' => true],
        ])->addKey(['id', 'email'], true)->createTable('user', true);

will list an index for email but not for id. I know its an odd combination but interesting behavior.

Any idea how all these other commits got here? Any idea how to fix?

Rebase and force push.
git switch SQLiteConnectiongetIndexData
git fetch upstream
git rebase upstream/4.3
git push --force-with-lease origin HEAD

ForgeTest::testCompositeKey() should be updated.

There are a few commits that has nothing to do with this PR like https://github.com/codeigniter4/CodeIgniter4/pull/6207/commits/be0e5812dc8e82bfc917ed85430983ab57a14ee0, https://github.com/codeigniter4/CodeIgniter4/pull/6207/commits/2c731b72888d3423d821269976925a6ecea352be.
Please drop these commits.

@sclubricants Any chance this will also fix https://github.com/codeigniter4/CodeIgniter4/issues/6205 by handling the indexes differently?

There are a few commits that has nothing to do with this PR like be0e581, 2c731b7. Please drop these commits.

How do I drop commits?

@sclubricants Any chance this will also fix #6205 by handling the indexes differently?

I don't think this would affect anything with that. This affects only INTEGER AUTO_INCREMENT PRIMARY KEY. ..and also adds in the type UNIQUE, PRIMARY

Its important to note that something like the following would likely cause an error:
        $keys = $db->getIndexData('tablename');

        foreach ($keys as $key) {
            // if($key->name != 'PRIMARY')
            $forge->dropKey('tablename', $key->name);
        }

SQLite's handling of things the way they do creates a pseudo index but its not an index for the purposes of calling database commands. If you check that the index isn't name PRIMARY then the rest should be ok.
In the unlikely case such as:
        $this->forge->addField([
            'id'         => ['type' => 'INTEGER', 'constraint' => 3, 'auto_increment' => true],
            'name'       => ['type' => 'VARCHAR', 'constraint' => 80],
            'email'      => ['type' => 'VARCHAR', 'constraint' => 100],
            'country'    => ['type' => 'VARCHAR', 'constraint' => 40],
            'created_at' => ['type' => 'DATETIME', 'null' => true],
            'updated_at' => ['type' => 'DATETIME', 'null' => true],
            'deleted_at' => ['type' => 'DATETIME', 'null' => true],
        ])->addKey(['id', 'email'], true)->createTable('user', true);

The id column doesn't get an index but the email column does. The way I wrote it the primary key index will assume the name of the email index but include both fields and have a type PRIMARY

How do I drop commits?

git rebase -i
https://opensource.com/article/22/4/manage-git-commits-rebase-i-command

I tried
git fetch upstream
git checkout master
fatal: 'master' matched multiple (2) remote tracking branches

$ git remote -v
origin  https://github.com/sclubricants/CodeIgniter4.git (fetch)
origin  https://github.com/sclubricants/CodeIgniter4.git (push)
upstream        https://github.com/codeigniter4/CodeIgniter4.git (fetch)
upstream        https://github.com/codeigniter4/CodeIgniter4.git (push)

It seems you deleted SQLiteConnectiongetIndexData branch in your repository.


feat: Add GCP deprecation notice

Review Type Requested (choose one):

[ ] Glance - superficial check (from domain experts)
[x] Logic - thorough check (from everybody doing review)

Summary
Adds a check to see if the user is attempting to use the GCP Testnet.
Task/Issue reference
Implements #131
Details
The check is triggered when the GCP RPC endpoint is used. It fatally stops the program and instructs the user how to migrate to the new Testnet.
For example, when the chain ID and GCP RPC endpoint are set:
This testnet has been deprecated. Please remove all environment variables for RPC URL, chain ID, and contract addresses.

Your environment currently contains:

(web3.Web3Options) {
 RpcURL: (string) (len=30) "ws://testnet.lilypad.tech:8546",
 PrivateKey: (string) (len=5) "*****",
 ChainID: (int) 1337,
 ControllerAddress: (string) "",
 PaymentsAddress: (string) "",
 StorageAddress: (string) "",
 UsersAddress: (string) "",
 TokenAddress: (string) "",
 MediationAddress: (string) "",
 JobCreatorAddress: (string) "",
 Service: (system.Service) (len=11) "job-creator"
}

The new testnet environment will be set by default, and you will only need to set your private key.

How to test this code?
Run the run command in any environment that uses the old endpoint. This can be forced with a command line option:
go run . run cowsay:v0.0.1 -i Message=moo --web3-rpc-url ws://testnet.lilypad.tech:8546

🍬 (sweet) Before you merge can you clear a confusion I have: why do you some times check options.Offer.Services and one other time options.Services? I couldn't figure this one out

The placement of Services is different depending on the command that is run. For example, in the mediator it is at the top level:
https://github.com/Lilypad-Tech/lilypad/blob/d5f16cadbed8f9b8223192357f9ccf9eb068d522/pkg/options/mediator.go#L11-L19
The job-creator has it nested one level deep. At the top level we have Offer:
https://github.com/Lilypad-Tech/lilypad/blob/d5f16cadbed8f9b8223192357f9ccf9eb068d522/pkg/options/job-creator.go#L12-L20
And Offer has Services:
https://github.com/Lilypad-Tech/lilypad/blob/d5f16cadbed8f9b8223192357f9ccf9eb068d522/pkg/options/job-creator.go#L28-L38


rocmPackages: use CMake 3.9.2 when building clr

Fixes #305641.
Description of changes
Ensure CMake 3.9.2 is used to build clr, both for ROCm 5 and 6. The changes can be reverted once CMake 3.9.2 lands in unstable, if desired.
I have tested that rocsparse (5 and 6), rocfft (6), and composable_kernel (6) all build.
See #305641 for more details.
cc @mschwaig
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 306375 run on x86_64-linux 1

12 packages marked as broken and skipped:

rocmPackages.llvm.flang
rocmPackages.llvm.flang.doc
rocmPackages.llvm.flang.info
rocmPackages.llvm.flang.man
rocmPackages.migraphx
rocmPackages.mivisionx
rocmPackages.mivisionx-cpu
rocmPackages.mivisionx-hip
rocmPackages_5.llvm.flang
rocmPackages_5.llvm.flang.doc
rocmPackages_5.llvm.flang.info
rocmPackages_5.llvm.flang.man

1 package failed to build:

rocmPackages_5.rocprofiler

82 packages built:

blender-hip
magma (magma-hip ,magma_2_7_2)
magma.test (magma-hip.test ,magma_2_7_2.test)
magma_2_6_2
magma_2_6_2.test
opensyclWithRocm
python311Packages.torchWithRocm
python311Packages.torchWithRocm.cxxdev
python311Packages.torchWithRocm.dev
python311Packages.torchWithRocm.dist
python311Packages.torchWithRocm.lib
python312Packages.torchWithRocm
python312Packages.torchWithRocm.cxxdev
python312Packages.torchWithRocm.dev
python312Packages.torchWithRocm.dist
python312Packages.torchWithRocm.lib
rocmPackages.clr
rocmPackages.clr.icd
rocmPackages.composable_kernel
rocmPackages.hipblas
rocmPackages.hipcub
rocmPackages.hipfft
rocmPackages.hiprand
rocmPackages.hipsolver
rocmPackages.hipsparse
rocmPackages.llvm.mlir
rocmPackages.miopen
rocmPackages.rccl
rocmPackages.rocalution
rocmPackages.rocblas
rocmPackages.rocfft
rocmPackages.rocmlir
rocmPackages.rocmlir-rock
rocmPackages.rocmlir.external
rocmPackages.rocprim
rocmPackages.rocprofiler
rocmPackages.rocr-debug-agent
rocmPackages.rocrand
rocmPackages.rocsolver
rocmPackages.rocsparse
rocmPackages.rocthrust
rocmPackages.roctracer
rocmPackages.rocwmma
rocmPackages.rpp (rocmPackages.rpp-hip)
rocmPackages.rpp-cpu
rocmPackages.rpp-opencl
rocmPackages_5.clr
rocmPackages_5.clr.icd
rocmPackages_5.composable_kernel
rocmPackages_5.hipblas
rocmPackages_5.hipcub
rocmPackages_5.hipfft
rocmPackages_5.hiprand
rocmPackages_5.hipsolver
rocmPackages_5.hipsparse
rocmPackages_5.llvm.mlir
rocmPackages_5.migraphx
rocmPackages_5.miopen (rocmPackages_5.miopen-hip)
rocmPackages_5.miopen-opencl
rocmPackages_5.miopengemm
rocmPackages_5.miopengemm.doc
rocmPackages_5.mivisionx (rocmPackages_5.mivisionx-hip)
rocmPackages_5.mivisionx-cpu
rocmPackages_5.mivisionx-opencl
rocmPackages_5.rccl
rocmPackages_5.rocalution
rocmPackages_5.rocblas
rocmPackages_5.rocfft
rocmPackages_5.rocmlir
rocmPackages_5.rocmlir-rock
rocmPackages_5.rocmlir.external
rocmPackages_5.rocprim
rocmPackages_5.rocr-debug-agent
rocmPackages_5.rocsolver
rocmPackages_5.rocsparse
rocmPackages_5.rocthrust
rocmPackages_5.roctracer
rocmPackages_5.rocwmma
rocmPackages_5.rpp (rocmPackages_5.rpp-hip)
rocmPackages_5.rpp-cpu
rocmPackages_5.rpp-opencl
zluda

I have some unknown issue with the rocprofiler being flaky locally, so this is as good as it gets. LGTM.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/3826

@ulrikstrid do you have time to take a look at this?
I just mentioned this PR on Discourse as well, to spread the review load a bit/in case you are busy.
Thanks for all the reviews.

I'm okay with this since it unblocks rocm until the cmake update has landed in master

Great, thanks.


docs: Update README and add GitHub action

Hello @xakraz
Thank you for this contribution. :)
BTW, I did not know about the Github TOC action.
I start a review.

Thanks. I have approved the changes. :+1:
One last thing that is necessary so that I can merge is about signing your commits. I know it is a little bit annoying, but this is required for all the DETIK projects.

@vincent-zurczak I setup my GPG key on GitHub and signed my commit (squashed by the way).
I hope it is ok now 😄

Thanks! :)


windows init_random

#include <windows.h>
#include <bcrypt.h>
#include <ntstatus.h>
#include <wincred.h>

static void init_random()
{
unsigned char buff[64];
if (g_initialized)
    return;

#ifdef WIN32
{
BCRYPT_ALG_HANDLE hAlg = NULL;
void* hRng = NULL;
NTSTATUS status = 0;
    status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_RNG_ALGORITHM, NULL, 0);
    if (status != STATUS_SUCCESS) {
        goto cleanup;
    }

    status = BCryptGenRandom(hAlg, buff, sizeof(buff), 0);
    if (status != STATUS_SUCCESS) {
        goto cleanup;
    }

    g_initialized = 1;
    RAND_seed(buff, sizeof(buff));

cleanup:
    if (hRng) {
        BCryptCloseAlgorithmProvider((BCRYPT_ALG_HANDLE)hRng, 0);
    }
    if (hAlg) {
        BCryptCloseAlgorithmProvider(hAlg, 0);
    }
}

#else
{
FILE* fp = fopen("/dev/urandom", "rb");
if (fp) {
size_t read = fread(buff, sizeof(buff), 1, fp);
g_initialized = read == 1;
fclose(fp);
}
}
if (g_initialized)
    RAND_seed(buff, sizeof(buff));

#endif
}

Not sure how I missed this issue. I'm not sure I understand the problem and/or solution this issue is intended to convey. Could you turn it into a pull request instead? Admittedly I don't do much Windows development so it's likely that your approach is better. I just can't make it out from the issue text.


Heapster not collecting stats from one node in cluster

Working through getting Kubernetes into production, and trying to figure out why Heapster isn't collecting stats from one node in our test cluster. There are 4 nodes total, and Heapster can't get stats from the node that it's running on.
Heapster logs as follows:
E0323 06:54:12.239208       1 kubelet.go:231] error while getting containers from Kubelet: failed to get all container stats from Kubelet URL "http://<IP_ADDRESS>:10255/stats/container/": Post http://<IP_ADDRESS>:10255/stats/container/: dial tcp <IP_ADDRESS>:10255: getsockopt: connection timed out
W0323 06:54:12.239256       1 manager.go:102] Failed to get kubelet:<IP_ADDRESS>:10255 response in time
W0323 06:54:25.000515       1 manager.go:147] Failed to get all responses in time (got 6/7)

Just those 3 lines repeated for the majority of the logs, the startup section of the logs for heapster look like the following:
I0323 03:13:01.157782       1 heapster.go:71] /heapster --source=kubernetes:https://kubernetes.default --sink=influxdb:http://monitoring-influxdb:8086
I0323 03:13:01.157817       1 heapster.go:72] Heapster version v1.3.0-beta.1
I0323 03:13:01.158090       1 configs.go:61] Using Kubernetes client with master "https://kubernetes.default" and version v1
I0323 03:13:01.158108       1 configs.go:62] Using kubelet port 10255
E0323 03:13:07.195199       1 influxdb.go:238] issues while creating an InfluxDB sink: failed to ping InfluxDB server at "monitoring-influxdb:8086" - Get http://monitoring-influxdb:8086/ping: dial tcp <IP_ADDRESS>:8086: getsockopt: no route to host, will retry on use
I0323 03:13:07.195223       1 influxdb.go:252] created influxdb sink with options: host:monitoring-influxdb:8086 user:root db:k8s
I0323 03:13:07.195269       1 heapster.go:193] Starting with InfluxDB Sink
I0323 03:13:07.195282       1 heapster.go:193] Starting with Metric Sink
I0323 03:13:07.205548       1 heapster.go:105] Starting heapster on port 8082
W0323 03:14:25.000457       1 manager.go:147] Failed to get all responses in time (got 6/7)
I0323 03:14:25.017181       1 influxdb.go:215] Created database "k8s" on influxDB server at "monitoring-influxdb:8086"
W0323 03:15:25.000455       1 manager.go:147] Failed to get all responses in time (got 6/7)

Not sure if it's relevant, but we're using Canal CNI. Also confirmed cAdvisor is running on that host, again unsure if this is relevant.

what's your Heapster configuration look like?  Are you using the old source --sink=kubernetes: or the summary source --sink=kubernetes.summary_api?

I'm using influxdb, and was just testing it out with the default config from the influxdb deployment yaml files:
https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/heapster-deployment.yaml
In case it changes:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: heapster
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: heapster
    spec:
      containers:
      - name: heapster
        image: gcr.io/google_containers/heapster-amd64:v1.3.0-beta.1
        imagePullPolicy: IfNotPresent
        command:
        - /heapster
        - --source=kubernetes:https://kubernetes.default
        - --sink=influxdb:http://monitoring-influxdb:8086

so, first things first, I'd reccomend switching to --source=kubernetes.summary_api.  If I had to guess, based on the error message, what's going on is this: the non-summary API source can require multiple HTTP requests for each node.  Due to something (network congestion, the number of requests, load, etc), Heapster isn't able to complete all of the HTTP requests in a reasonable mount of time.  The summary source uses a single HTTP request per node, so it shouldn't have that problem.

@DirectXMan12 I got the same problem, heapster not collect haft of my nodes. Switching to --source=kubernetes.summary_api not help. And heapster keep printing:
E0414 06:46:19.750431       1 streamwatcher.go:109] Unable to decode an event from the watch stream: object to decode was longer than maximum allowed size
E0414 06:46:19.884893       1 streamwatcher.go:109] Unable to decode an event from the watch stream: object to decode was longer than maximum allowed size
W0414 06:46:19.885646       1 reflector.go:330] k8s.io/heapster/metrics/heapster.go:327: watch of *api.Node ended with: very short watch
E0414 06:46:29.480993       1 streamwatcher.go:109] Unable to decode an event from the watch stream: object to decode was longer than maximum allowed size

I got this too -- important to note that this is only happening in a cluster deployed with canal networking and in a private topology via kops in aws.
Same setup in my public cluster does not have this problem

@kaijparo can pods access the node IPs with canal networking?
@ntquyen what version of Kubernetes are you using?  CoreOS stable version doesn't really tell me anything.  It looks like the watch cache of nodes isn't populating correctly.

I'm having trouble getting an interactive terminal for the heapster pod, but I can get a busybox going and wget the url for the missing node without issue:

/ # wget http://<IP_ADDRESS>:10255/stats/container/
Connecting to <IP_ADDRESS>:10255 (<IP_ADDRESS>:10255)
index.html           100% |***********************************************************************************************************************************************************| 57822   0:00:00 ETA
/ # ls
bin         dev         etc         home        index.html  proc        root        sys         tmp         usr         var
/ # cat index.html
{
"/": {
"name": "/",
"subcontainers": [
{
"name": "/docker"

Hello, I have the same problem with my cluster. Everything else works fine.
In my tests I can connect to the master node running nc from heapster pod, but I can't connect to the worker node running the same nc from the heapster pod.
From heapster pod
/ # wget http://andrea-master-0.muellerpublic.de:39556
Connecting to andrea-master-0.muellerpublic.de:39556 (<IP_ADDRESS>:39556)
wget: error getting response: Connection reset by peer
Master node
root@andrea-master-0:~# nc -l 66 < kubectl-system.sh
invalid connection to [<IP_ADDRESS>] from (UNKNOWN) [<IP_ADDRESS>] 41476
Works

From heapster pod
/ # wget http://andrea-node-0.muellerpublic.de:52339
Connecting to andrea-node-0.muellerpublic.de:52339 (<IP_ADDRESS>:52339)
wget: can't connect to remote host (<IP_ADDRESS>): Connection timed out

The exact error is
2017-04-21T09:21:12.184653499Z W0421 09:21:12.184455       1 manager.go:102] Failed to get kubelet_summary:<IP_ADDRESS>:10255 response in time
2017-04-21T09:21:25.000604903Z W0421 09:21:25.000396       1 manager.go:147] Failed to get all responses in time (got 1/2)
2017-04-21T09:22:12.216373835Z E0421 09:22:12.216138       1 summary.go:97] error while getting metrics summary from Kubelet andrea-node-0.muellerpublic.de(<IP_ADDRESS>:10255): Get http://<IP_ADDRESS>:10255/stats/summary/: dial tcp <IP_ADDRESS>:10255: getsockopt: connection timed out

Versions.
heapster 1.3.0
root@andrea-master-0:~# ksys version
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.4", GitCommit:"7243c69eb523aa4377bce883e7c0dd76b84709a1", GitTreeState:"clean", BuildDate:"2017-03-07T23:53:09Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.4+coreos.0", GitCommit:"97c11b097b1a2b194f1eddca8ce5468fcc83331c", GitTreeState:"clean", BuildDate:"2017-03-08T23:54:21Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}

Hello! We have the same problem.
Failed to get kubelet:<IP_ADDRESS>:10255 response in time W0426 08:41:25.000504       1 manager.go:147] Failed to get all responses in time (got 4/5)
Kubernetes version: v1.6.1+coreos.0
Heapster version: v1.3.0-beta.1
We have 5 nodes in cluster.
We use private network.
As network provider we use flannel.
I found out that the heapster can't collect monitoring data from the node where his pod is placed.
In my case - the heapster pod is placed on node #4.
From node #4 i can telnet self kubelet (port: 10255), but i can't telnet same kubelet from any container on node #4.
From other nodes and other containers placed on other nodes - the problem don't appear (i can telnet kubelet on node #4)

@willtrking  By default Calico blocks traffic from workload endpoints to the host itself with an iptables DROP action. If you want to allow traffic from endpoint to host, set this parameter to ACCEPT:
        - name: calico-node
          image: quay.io/calico/node:v1.1.1
          env:
            - name: FELIX_DEFAULTENDPOINTTOHOSTACTION
              value: "ACCEPT"

@pastushenko You can allow traffic from containers to the host itself using firewall rules especially to the port 10255. (Interfaces: flannel.1, docker0)

@takama - thanks. The problem was fixed by changing firewall rules.

@takama Thank you, my issue was resolved by applying FELIX_DEFAULTENDPOINTTOHOSTACTION=ACCEPT. I think you can close the issue now, because it looks like it's not an issue with Heapster.

@takama Thank you!! Fixed it for me as well

Does anyone have any idea on how to configure FELIX_DEFAULTENDPOINTTOHOSTACTION=ACCEPT if Calico was used to create the Kubernetes cluster using Kops?
kops create cluster --networking calico

for those that kops create cluster --networking canal
kubectl edit ds canal -n kube-system
add the environment variable as per the above with the other environment variables for the container named:
      containers:
      - env:
        - name: DATASTORE_TYPE
          value: kubernetes
 ...
        - name: FELIX_DEFAULTENDPOINTTOHOSTACTION
          value: ACCEPT
        image: calico/node:v1.0.2
        imagePullPolicy: IfNotPresent
        name: calico-node

To make it live you have two optinos, either delete the pods so they recreate or add this to your updatestratergy, replace 'DeleteOnly' with:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate

and it will go and updated it all after saving the edit.

@pastushenko  k8s cluster already close firewalld, how to change firewall rules, Looking forward to your reply, thanks!!!

@pastushenko @willtrking @DirectXMan12
k8s cluster already close firewalld, how to change firewall rules，
Looking forward to your reply, thanks!!!
and I use flanal network,
heapster pods error:
_E0626 15:04:12.278239       1 manager.go:101] Error in scraping containers from kubelet_summary:<IP_ADDRESS>:10255: Get http://<IP_ADDRESS>:10255/stats/summary/: dial tcp <IP_ADDRESS>:10255: getsockopt: connection timed out
W0626 15:04:25.001017       1 manager.go:152] Failed to get all responses in time (got 4/5)
[root@ao-docker01 ~]# kubectl describe hpa
Name:                                                  spider001
Namespace:                                             default
Labels:
Annotations:
CreationTimestamp:                                     Tue, 26 Jun 2018 15:28:21 +0800
Reference:                                             Deployment/spider001
Metrics:                                               ( current / target )
resource cpu on pods  (as a percentage of request):   / 50%
Min replicas:                                          1
Max replicas:                                          6
Conditions:
Type           Status  Reason                   Message

AbleToScale    True    SucceededGetScale        the HPA controller was able to get the target's current scale
ScalingActive  False   FailedGetResourceMetric  the HPA was unable to compute the replica count: unable to get metrics for resource cpu: unable to fetch metrics from resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)
Events:
Type     Reason                        Age                 From                       Message

Warning  FailedComputeMetricsReplicas  15m (x481 over 4h)  horizontal-pod-autoscaler  failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)
Warning  FailedGetResourceMetric       3s (x511 over 4h)   horizontal-pod-autoscaler  unable to get metrics for resource cpu: unable to fetch metrics from resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)


relative time for tasks

As this is a bit hard to read, how about

Format the duration, to milliseconds or something, as the number is really hard to process
like the "Last updated", I would prefer to see:

Enqueued: 2 hours ago
Started: 10 seconds later
Duration: 113ms ( or maybe 5.2s?)
Mostly I want to know:

Are there any tasks still pending
What is the lag between en-queuing and starting.

I usually have something in my code that waits for the task to finish, in part because their web callback url is not configurable at runtime, which is really what I want. (When you're done this task, send me a message...)

Closed as completed.


No preview for JPEG attachment

Hi,
I have an email with a JPEG attachment which does not show a preview. GIF attachments do and JPEG did work in the past as far as I can remember.
I'll send you an EML of such email.

Interesting, but i don't understand why it does not work :(

Did the Eml work with preview on your test setup?

Yes, everything's fine, except preview.

I see the problem, but I do not understand how it can be solved.

https://github.com/RainLoop/rainloop-webmail/blob/master/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php#L8337
$oThumb =@ new \PHPThumb\GD($sFileName); require file $sFileName.
I save imap stream to the memory (\MailSo\Base\StreamWrappers\TempFile) and give file name to lib.
Something wrong with my temporary file stream.
Everything works correctly if I save email attachment in real file.


[BUG] DefaultAzureCredential function when change to azure china, request scope have issue

Library name and version
Azure.Identity Version=<IP_ADDRESS>
Describe the bug
Authenticate to Azure using environment variables:
setx  AZURE_CLIENT_ID "18fe11b***"
setx  AZURE_CLIENT_SECRET "********"
setx  AZURE_TENANT_ID ""
setx  AZURE_SUBSCRIPTION_ID ""
setx  AZURE_AUTHORITY_HOST  "https://login.chinacloudapi.cn/"
// Authenticate
var credential = new DefaultAzureCredential(options);
When request access token, used fiddler capture as below:

The request scope default used  "https://management.azure.com//.default",  But we used Azure China.  It's scope should be https://management.chinacloudapi.cn/
I can't find anything can change this default scope, Can you help fixed ?
Expected behavior
Creating a resource group with name: rgnemv55358852fc35a
Azure.Identity.AuthenticationFailedException: ClientSecretCredential authentication failed: AADSTS500011: The resource principal named https://management.azure.com/ was not found in the tenant named Azure CXP. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant.
Trace ID: 7c05fa24-80e8-4ead-bbc0-bf1caa66c600
Correlation ID: a904d2b7-d7af-49e7-9204-bfa509855ed2
Timestamp: 2022-04-27 06:55:58Z
---> MSAL.NetCore.<IP_ADDRESS>.MsalServiceException:
ErrorCode: invalid_resource
Microsoft.Identity.Client.MsalServiceException: AADSTS500011: The resource principal named https://management.azure.com/ was not found in the tenant named Azure CXP. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant.
Trace ID: 7c05fa24-80e8-4ead-bbc0-bf1caa66c600
Correlation ID: a904d2b7-d7af-49e7-9204-bfa509855ed2
Timestamp: 2022-04-27 06:55:58Z
at Microsoft.Identity.Client.Internal.Requests.RequestBase.HandleTokenRefreshErrorAsync(MsalServiceException e, MsalAccessTokenCacheItem cachedAccessTokenItem)
at Microsoft.Identity.Client.Internal.Requests.ClientCredentialRequest.ExecuteAsync(CancellationToken cancellationToken)
at Microsoft.Identity.Client.Internal.Requests.RequestBase.RunAsync(CancellationToken cancellationToken)
at Microsoft.Identity.Client.ApiConfig.Executors.ConfidentialClientExecutor.ExecuteAsync(AcquireTokenCommonParameters commonParameters, AcquireTokenForClientParameters clientParameters, CancellationToken cancellationToken)
at Azure.Identity.AbstractAcquireTokenParameterBuilderExtensions.ExecuteAsync[T](AbstractAcquireTokenParameterBuilder`1 builder, Boolean async, CancellationToken cancellationToken)
at Azure.Identity.MsalConfidentialClient.AcquireTokenForClientCoreAsync(String[] scopes, String tenantId, Boolean async, CancellationToken cancellationToken)
at Azure.Identity.MsalConfidentialClient.AcquireTokenForClientAsync(String[] scopes, String tenantId, Boolean async, CancellationToken cancellationToken)
at Azure.Identity.ClientSecretCredential.GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken)
StatusCode: 400
ResponseBody: {"error":"invalid_resource","error_description":"AADSTS500011: The resource principal named https://management.azure.com/ was not found in the tenant named Azure CXP. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant.\r\nTrace ID: 7c05fa24-80e8-4ead-bbc0-bf1caa66c600\r\nCorrelation ID: a904d2b7-d7af-49e7-9204-bfa509855ed2\r\nTimestamp: 2022-04-27 06:55:58Z","error_codes":[500011],"timestamp":"2022-04-27 06:55:58Z","trace_id":"7c05fa24-80e8-4ead-bbc0-bf1caa66c600","correlation_id":"a904d2b7-d7af-49e7-9204-bfa509855ed2","error_uri":"https://login.partner.microsoftonline.cn/error?code=500011"}
Headers: Cache-Control: no-store, no-cache
Pragma: no-cache
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
client-request-id: a904d2b7-d7af-49e7-9204-bfa509855ed2
x-ms-request-id: 7c05fa24-80e8-4ead-bbc0-bf1caa66c600
x-ms-ests-server: 2.1.12651.7 - CNE2LR2 ProdSlices
x-ms-clitelem: 1,500011,0,,
X-XSS-Protection: 0
Set-Cookie: fpc=AlNs7Ramu6ZBlsYirOVvB_IX11VZAQAAAP3f-tkOAAAA; expires=Fri, 27-May-2022 06:55:58 GMT; path=/; secure; HttpOnly; SameSite=None, x-ms-gateway-slice=productionb; path=/; secure; samesite=none; httponly, stsservicecookie=estschina; path=/; secure; samesite=none; httponly
Date: Wed, 27 Apr 2022 06:55:58 GMT
--- End of inner exception stack trace ---
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.ClientSecretCredential.GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.EnvironmentCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.EnvironmentCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.EnvironmentCredential.GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] sources, TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.DefaultAzureCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenAsync(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Core.Pipeline.BearerTokenAuthenticationPolicy.AccessTokenCache.GetHeaderValueFromCredentialAsync(TokenRequestContext context, Boolean async, CancellationToken cancellationToken)
at Azure.Core.Pipeline.BearerTokenAuthenticationPolicy.AccessTokenCache.GetHeaderValueAsync(HttpMessage message, TokenRequestContext context, Boolean async)
at Azure.Core.Pipeline.BearerTokenAuthenticationPolicy.AccessTokenCache.GetHeaderValueAsync(HttpMessage message, TokenRequestContext context, Boolean async)
at Azure.Core.Pipeline.BearerTokenAuthenticationPolicy.AuthenticateAndAuthorizeRequestAsync(HttpMessage message, TokenRequestContext context)
at Azure.Core.Pipeline.BearerTokenAuthenticationPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)    at Azure.Core.Pipeline.RedirectPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.RetryPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)    at Azure.Core.Pipeline.RetryPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.ResourceManager.Resources.ResourceGroupsRestOperations.CreateOrUpdateAsync(String resourceGroupName, ResourceGroup parameters, CancellationToken cancellationToken)
at Azure.ResourceManager.Resources.ResourceGroupsOperations.CreateOrUpdateAsync(String resourceGroupName, ResourceGroup parameters, CancellationToken cancellationToken)
at Samples.Utilities.ResourceGroupHelper.CreateOrUpdateResourceGroup(String rgName, String location) in C:\Users\yang\Desktop\azure-samples-net-management\samples\utilities\ResourceGroupHelper.cs:line 33
at CreateAppConfigurationSample.Program.RunSample(DefaultAzureCredential credential) in C:\Users\yang\Desktop\azure-samples-net-management\samples\appconfiguration\create-app-configuration\Program.cs:line 39
at CreateAppConfigurationSample.Program.Main(String[] args) in C:\Users\yang\Desktop\azure-samples-net-management\samples\appconfiguration\create-app-configuration\Program.cs:line 21
C:\Users\yang\Desktop\azure-samples-net-management\samples\appconfiguration\create-app-configuration\bin\Debug\netcoreapp3.1\CreateAppConfigurationSample.exe (process 10452) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Actual behavior
default request scope not change to azure china
Reproduction Steps
chang azure env to azure china. run as below:
` public static async Task Main(string[] args)
{
try
{
//var options = new DefaultAzureCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzureChina };
// Authenticate
var credential = new DefaultAzureCredential();
await RunSample(credential);
}
catch (Exception ex)
{
Utilities.Log(ex);
}
}
    public static async Task RunSample(DefaultAzureCredential credential)
    {
        string subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
        string appConfigName = Utilities.RandomResourceName("appcnfg", 20);
        string rgName = Utilities.RandomResourceName("rgNEMV", 24);
        string region = "ChinaNorth2";

        var appConfigManagementClient = new AppConfigurationManagementClient(subscriptionId, credential);
        var configurationStores = appConfigManagementClient.ConfigurationStores;

        await ResourceGroupHelper.CreateOrUpdateResourceGroup(rgName, region);

        // Create an App Configuration
        Utilities.Log("Creating an App Configuration...");

        var configurationStore = new ConfigurationStore(region, new Sku("free"));

        var rawResult = await configurationStores.StartCreateAsync(rgName, appConfigName, configurationStore);
        var appConfiguration = (await rawResult.WaitForCompletionAsync()).Value;

        Utilities.Log("Created App Configuration");
        Utilities.PrintAppConfiguration(appConfiguration);
    }`

Environment
azure Env: azure china
c# .net6

@yhs666 Sorry you're running into trouble with this. Looks like you're properly setting the AuthorityHost of the credential to target azure china, but you also need to set the Environment on any management plane clients via ArmClientOption or the appropriate derived type for other management plane clients. You didn't include the code which is failing in ResourceGroupHelper.CreateOrUpdateResourceGroup, but here's an example of how to specify the Environment when creating an ArmClient which I'm assuming you're using to create the resource group.
var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzureChina });

var resourceClient = new ArmClient(credential, "<subscription-id>", new ArmClientOptions { Environment = ArmEnvironment.AzureChina });

@schaabs  It's working. Thanks for you update.

@yhs666 glad you were able to get it working, and thanks for reaching out to confirm.


shall I use this within SharePoint site without using the clientid

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: fac3ad92-eb8f-554a-5de3-14c430e594aa
Version Independent ID: fab1ceb3-5110-4452-0a0d-99346cc31230
Content: Integrate Power Automate with websites and apps - Power Automate
Content Source: articles/developer/embed-flow-dev.md
Service: flow
GitHub Login: @MSFTMan
Microsoft Alias: Deonhe

@vbalaji27 Yes, the steps in the document should work. Please let us know if you have a specific issue when you follow the document.


SAK-45520 - Back from triple scrollbars

likely need to start doing this without inline styles

The problem with pulling styles out of context is that someone will decide to do a "redesign", look at the name of a CSS variable and things - heck - I can make that work better.  This is not a look and feel thing - it is a nasty code hack - leave it nearby where the problem occurs to help the next poor soul trying to suss out why CKEditor is also resizing things with timers.


Fix kill conditions

With this PR we improve in several of the termination/kill conditions. The expected behavior:

if the parent process is terminated gracefully, all the remote enforcers exit and clean state.

if the parent process is killed with -9 (or crashes), all the remote enforcers will be terminated as well so that when the parent recovers, they will recover as well.

If the parent dies with -9 or crash, and the remotes are not killed, they will not release the NFQUEUEs and it becomes very hard to recover. This can be potentially solved by killing the
remotes when the parent recovers.

Codecov Report

Merging #231 into master will decrease coverage by 0.05%.
The diff coverage is 15.38%.

@@            Coverage Diff             @@
##           master     #231      +/-   ##
==========================================
- Coverage   52.46%   52.41%   -0.06%
==========================================
  Files          33       33
  Lines        3909     3917       +8
==========================================
+ Hits         2051     2053       +2
- Misses       1659     1665       +6
  Partials      199      199

Impacted Files
Coverage Δ

cmd/remoteenforcer/remoteenforcer_linux.go
0% <0%> (ø)
:arrow_up:

processmon/processmon.go
71.81% <40%> (+0.86%)
:arrow_up:

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 7d70ef6...998951f. Read the comment docs.


made summary/description usage consistent.

Looks good.  Just a nit.. I'd go ahead and delete the top section entirely so the users don't have to. Would do that by moving the “thanks" and "staging description" paragraphs do the "more advice:" text.. and change "more advice:" to "process notes:."

LGTM.

@sarahnovotny merge conflict :/

@sarahnovotny can you take a look at the possible reason of the merge conflict?
PR looks good, but we have to fix the issue before the merging.


Index actor reminders in memory

Index actor reminders per ActorType/ActorId/ReminderName and remove loops that find a reminder.
As per suggestion in:
https://github.com/dapr/dapr/pull/3297#discussion_r667207911

Does the PR merged above close out this issue?


Update README.md

Add code highlight
simplify install instructions on Mac.
Minor grammar updates in README

Coverage remained the same at 100.0% when pulling 3769e42d43f8a6d005189134e6561a48c4c4314e on jason-fox:patch-1 into 8d4efe4c08597ff65706dfa0f03acee2a3c8b1d2 on lets-fiware:main.

Thank you very much! Merged 😄


Creation of the express-tc team

@expressjs/express-tc ... I have created the express-tc team and have added by default all of the owners of the expressjs, pillarjs and jshttp github organizations per the application for the Express project to enter the Node.js Foundation (https://github.com/nodejs/TSC/blob/master/Applications/Express.md). If you do not wish to participate as part of the Express TC, please feel free to remove yourself from the Github team.

These kinds of announcements should really be made in the https://github.com/expressjs/expressjs.github.io respoitory I pointed to a few weeks ago.

I don't recall seeing such a pointer, my apologies. That repo would likely be the better place to keep the higher level governance documents in general. I can get #2871 closed and a new one open against that repo instead if everyone agrees /cc @expressjs/express-tc

It also means that people mainly concerned with governance can subscribe to a repository that is not so noisy.
The repository doesn't have very many issues or commits; we may be better off just making a new repository to replace that one. Perhaps similar to how Node.js has it structured? expressjs/governance? IDK

Works for me. The only requirement is that we need a place to store all this stuff. I'm unfortunately fairly tied up in powerpoint hell trying to get ready for a conference next week so I'll get the PR updated as soon as I can (it may take a few days).
/aside it would be ever so help if github would provide a better way of doing org wide broadcasts/announcements in general so we wouldn't have to use issues at all.


adapter-node responds with pre-rendered assets for non-GET requests

Describe the bug
Given the following scenario:

Using @sveltejs/adapter-node (ver ^1.0.0-next.61)
Enabled export const prerender = true; on a page
Have a POST endpoint handler on the same path as the pre-rendered page

The artifact produced by the node adapter will always respond with the prerendered page to any requests to the shared path, even if the request uses method POST.
Reproduction

Clone https://github.com/moatra/svelte-prerender-bug
npm install
npm run dev

Navigate to the /login page with javascript enabled, and use<EMAIL_ADDRESS>and bar.
Note the successful response with content-type application/json -> The request was served by the endpoint handler.

Kill the dev process
npm run build
node build

Navigate to the /login page with javascript enabled
Open developer console
Submit the login page using<EMAIL_ADDRESS>and bar
Note the "unexpected character at line 1 column 1 of the JSON data" error -> The request was served with the pre-rendered component.

Logs
No response
System Info
❯ npx envinfo --system --binaries --browsers --npmPackages "{svelte,@sveltejs/*,vite}"

  System:
    OS: Linux 5.15 Fedora Linux 35 (Workstation Edition)
    CPU: (16) x64 AMD Ryzen 7 3700X 8-Core Processor
    Memory: 3.43 GB / 31.08 GB
    Container: Yes
    Shell: 5.1.8 - /bin/bash
  Binaries:
    Node: 16.13.0 - /usr/bin/node
    npm: 8.1.0 - /usr/bin/npm
  Browsers:
    Firefox: 95.0.2
  npmPackages:
    @sveltejs/adapter-auto: next => 1.0.0-next.10
    @sveltejs/adapter-node: ^1.0.0-next.61 => 1.0.0-next.61
    @sveltejs/kit: next => 1.0.0-next.225
    svelte: ^3.44.0 => 3.46.0

Severity
blocking an upgrade
Additional Information
The obvious workaround is to disable pre-rendering, but this meets the current suggested guidelines for when to enable pre-rendering.
When GET-ing the page, every user should receive the same response.  It's only once a POST request is made with fallthrough logic that the response should be varied.

The prerendered pages are served here: https://github.com/sveltejs/kit/blob/023b3c99046904bdf1e374a362931caac82186f1/packages/adapter-node/src/handler.js#L86
@lukeed it sounds like sirv is responding to POST requests?

Since #4252 was implemented this is no longer possible, therefore closing this.


Remove extra double quotes from the "Add to Slack" OAuth image alt text

Summary
This PR removes extra double quotes from the "Add to Slack" OAuth image alt text to match similar changes made in https://github.com/slackapi/bolt-python/pull/1170 and https://github.com/slackapi/node-slack-sdk/pull/2044 🔍
From another comment, I believe the current snippet is changing the following in browser:
-
+

But using the single set of double quotes brings the alt text back 🙏 :sparkles:
Category

[x] bolt (Bolt for Java)
[ ] bolt-{sub modules} (Bolt for Java - optional modules)
[ ] slack-api-client (Slack API Clients)
[ ] slack-api-model (Slack API Data Models)
[ ] slack-api-*-kotlin-extension (Kotlin Extensions for Slack API Clients)
[ ] slack-app-backend (The primitive layer of Bolt for Java)

Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you agree to those rules.

@seratch Thank you for the review! And thanks @toofishes for finding this fix in the first place 👏


CI.yml: Add Python 3.10 to the testing

https://pythoninsider.blogspot.com/2021/10/python-3100-is-available.html
"3.10" must be quoted in YAML. https://dev.to/hugovk/the-python-3-1-problem-85g
The other way to do Display Python version would be python -VV (more info) or python -V or python --version (less info).

https://github.com/wechatpy/wechatpy/blob/master/pyproject.toml#L42 Pytest must be upgraded for Python 3.10.

https://github.com/wechatpy/wechatpy/blob/master/pyproject.toml#L42 Pytest must be upgraded for Python 3.10.

Done in https://github.com/wechatpy/wechatpy/commit/b7ef9c89e9deae7ce23c3fa69e972b7c05be76a9.

Codecov Report

Merging #675 (b7ef9c8) into master (3bd5f6a) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head b7ef9c8 differs from pull request most recent head 4f7e63e. Consider uploading reports for the commit 4f7e63e to get more accurate results

@@           Coverage Diff           @@
##           master     #675   +/-   ##
=======================================
  Coverage   75.99%   75.99%
=======================================
  Files         101      101
  Lines        4882     4882
=======================================
  Hits         3710     3710
  Misses       1172     1172

Flag
Coverage Δ

unittests
75.99% <ø> (ø)

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 3bd5f6a...4f7e63e. Read the comment docs.


Making Navigation Bar of Main Page

Hello, I am HacktoberFest participant, I want to work on this section,
once event gets started.

Hey, thanks for your keen gesture..but please wait till the contribution period starts. We will assign this issue to you for sure. Wait till october 1st. Okay?
For now, you can close this issue.


Tab mgmt APIs?

I know as per #9 and #10 that there are definitely tab reading methods but is there any way to create new tabs, and further possibly unload or discard those tabs during creation?
For example I'd like to be able to do something like what the  does but dynamically 😎

For some examples ideally we could use some of these subsys apis to accomplish this:

the tabs discard api that is normally only exposed to js addons

does the Actor.eval() method allow us to call APIs like this?

marionette has an WindoManagerMixin.open_tab() which seems to call the "web driver API" underneath which in turn means calling a self._send_message("WebDriver:NewWindow", body) which is making an underlying protocol request but i have no idea if this protocol or its APIs are accessible over RDP?

Probably more discussion / research results to come..

As far as I know the remote debug protocol is limited at this point (see https://github.com/mozilla/gecko-dev/tree/master/devtools/shared/specs). This limitation can also be seen if firefox connects via RDP with other firefox sessions. However it is possible to manage tabs with a webextension. But I think everything which uses the webextension api would require a separate project to handle all the heavy lifting.
But maybe something better can be utilized to this.

Cool, I'm asking in the webdriver room on matrix to see if anyone has thoughts on an alt approach to a webextension.

@jpramosi could we maybe utilize the WebConsole..evaluate_js_async() stuff?
I'm not sure what access to internal APIs that might have but seems like tabs APIs would likely be in that set no?

Maybe it is possible to evaluate Javascript code in another context (actor or window ID) which is related to a webextension.


test-branch/execute-job/wrong-commit-sha-on-pr/6b0588e2-b21d-43a1-8997-b2b05a4bdc1c

PR for testing 47bd8b174f42d3eb3e45eada0bbb4dcb25b31388

/canonical/self-hosted-runners/run-workflows 931ad21dd9ace68aaa0a7d341e94de96ad93fa6b


Align ADP.IsEmpty -> string.IsNullOrEmpty

This PR simply changes ADP.IsEmpty to string.IsNullOrEmpty to align netfx with netcore
Part of #2953

@cheenamalhotra Could you also run this pipeline? Thx :)

/azp run

@benrr101 IsNullOrEmpty did not exist in .NET Framework 1 😅


[EDQ-409] Change the means of calculating 'total rows' for units and routes

No major changes - just to ensure consistency for metrics

@nishanthpp93 Looks like I accidentally missed something on my ticket for [EDQ-402]. I do not anticipate changing these scripts drastically in the near future so I figured I would make the PR before I forgot.


Expose channel count for FixedChannelPool

Motivation:
We use FixedChannelPool in production, and we believe we have a leak that doesn't return sockets to the pool (but they should be closed), thus blocking us from creating new connections when we need them. I haven't confirmed this yet, but right now I have to resort to reflection to access this field which makes me sad.
Modification:
Expose the acquiredChannelCount field through a getter method.
Result:
Allows introspection of the pool size in FixedChannelPool.

@rockwotj can you please squash your commits and sign our ICLA:
https://netty.io/s/icla
Please let me know once done and I will merge this one. Thanks!

I think make acquiredChannelCount  atomic can not completely fix this bug,
even though AtomicInteger CAS method is atomic, but the following lines of code are not atomic,
so it can not filly solve this problem
if (acquiredChannelCount.get() < maxConnections) {
...
acquiredChannelCount.incrementAndGet();
...
}
On the oter side, I hope FixedChannelPool not useing deque(in SimpleChannelPool), which means I can figure out sockets package based on seq num, how can I do?

This code runs in an single event loop so it doesn't need to be atomic in that situation (note it being a normal int before.

@normanmaurer done.

@rockwotj thanks!
@wsrspirit I dont understand your question. If you think there is any issue please open a new issue as this is not related to this change.


Moving to MySQL

getting the following error:
Unhandled rejection SequelizeDatabaseError: ER_BLOB_CANT_HAVE_DEFAULT: BLOB, TEXT, GEOMETRY or JSON column 'timezone' can't have a default value
Any thoughts?

Fixed by following change:
timezone : {
type         : DataTypes.TEXT,
allowNull    : true,
defaultValue : '',
comment      : 'Timezone current company is located in',
},
in file company.js

Shouldn't this get added to the code?


Bug in ProjectionManager

There is a bug in ProjectionManager relating to filter groups.
This applies to filter groups which produce duplicate results and you are using paging.
To further explain, with easy steps to reproduce:
Imagine a scenario where you have say 20 blog posts.
You want to create a projection with a pager that shows 6 blog posts per page.
When setting up your Query, you want to have 2 filter groups for your blogs i.e. an OR scenario, these filters are not exclusive (i.e. internally they may produce duplicate results).
For example, one filter may say blogs that have a tag of "news" or blogs that have a tag of "cabbages". So a blog tagged with both would be in both sets.
For the sake of simplicity and testing though, let's just set up your filter groups so they are guaranteed to produce 100% duplicates, eg:
ContentType="BlogPost" OR ContentType="BlogPost"
You will find that on the second page of the projection you get zero results. You will also find you get the wrong number of pages (double) in the pager.
Now let's look at the code in ProjectionManager.GetContentItems():
// aggregate the result for each group query
foreach (var contentQuery in GetContentQueries(queryRecord, queryRecord.SortCriteria.OrderBy(sc => sc.Position), tokens)) {
    contentItems.AddRange(contentQuery.Slice(skip, count));
}

as we have a page size of 6, this would return 12 content items (6 from each group)
note the Slice being applied.
a little further down in the code we have:
var ids = contentItems.Select(c => c.Id).ToArray();
var groupQuery = _contentManager.HqlQuery().Where(alias => alias.Named("ci"), x => x.InG("Id", ids));

this returns 6 content items as in fact they are all duplicates.
following on from that, we have:
return groupQuery.Slice(skip, count);
Now, that would work fine on the first page, as skip will be 0, and count will be 6.
But on the second page of the pager, you will have skip of 6 and count of 6.
Which gives you 0 results.
I'm guessing this should be changed to:
return groupQuery.Slice(0, count);
Duplicate results inside the group filters will also cause the pager number of pages to be wrong due to the TotalItemCount being incorrect. This is effectively set via ProjectionManager.GetCount():
// aggregate the result for each group query
return GetContentQueries(queryRecord, Enumerable.Empty<SortCriterionRecord>(), tokens)
    .Sum(contentQuery => contentQuery.Count());

So this needs to be changed to something more like this:
return GetContentQueries(queryRecord, Enumerable.Empty<SortCriterionRecord>(), tokens)
    .SelectMany(contentQuery => contentQuery.List().Select(x => x.Id)).Distinct().Count();

Lazy, untested PR attached with these changes purely for clarity.

This is by design, as soon as you use groups you can't page without having duplicate items issues.
Your changes would load everything in memory, and then page which would have a huge impact on perf.

i don't get it.
how would my changes load everything into memory?
to be clear my code changes are as follows:

change this line:
return groupQuery.Slice(skip, count);  (returns 0 records in scenario)
to this:
return groupQuery.Slice(0, count);  (returns 6 records)
ideally, change this line:
var contentItemsCount = _projectionManager.GetCount(query.Id, part) - part.Record.Skip; (slow)
to this:
var contentItemsCount = contentItems.Count() - part.Record.Skip; (fast)

i don't see how those changes would load anything in memory that isn't already?

I didn't get what you meant at first, but pretty sure you mean this change:
return GetContentQueries(queryRecord, Enumerable.Empty<SortCriterionRecord>(), tokens)     .SelectMany(contentQuery => contentQuery.List().Select(x => x.Id)).Distinct().Count();
That's really why i stated

So this needs to be changed to something more like this
i.e. because i wasn't sure what the best solution was without delving further into the query functionality so was asking for input.

i've put a more performant solution in the PR below. i realise you're unlikely to accept it, but it might help someone else who wants to do an Or group with paging, and/or someone can point out if it they see a problem with the solution.
https://github.com/OrchardCMS/Orchard/pull/8114/files

This looks promising, but making sure that it's not a performance compromise is very important. As a workaround, have you tried setting up the filter groups to be mutually exclusive? It might not always be possible, though.
Even if it's a performance hit (which might be acceptable to an extent), we can try to set it up in a way that the distinct check only happens if there are multiple groups. Probably most Projection Queries have only one filter group, so in those cases this would not affect anything.

filter groups to be mutually exclusive
thanks, i actually tried that first, but it didn't pass all our test scenarios.
we can try to set it up in a way that the distinct check only happens if there are multiple groups.
good idea, i quickly stuck that in (untested), see latest commit to the PR.

Sorry, I missed this code contentQuery.List()

I ran a very quick + basic test.
I created a query based with Content Type "Any" as a filter.
I also created a Group query with Content Type "Any" OR Content Type "Any".
I then put a StopWatch start in ProjectionPartDriver like so:
  var metaData = Services.ContentManager.GetItemMetadata(part.ContentItem);
  Stopwatch stopwatch = new Stopwatch();
  stopwatch.Start();

And added Logger code to output the Elapsed.TotalMilliSeconds:
if (part.Record.DisplayPager) {
    var contentItemsCount = _projectionManager.GetCount(query.Id, part) - part.Record.Skip;
    contentItemsCount = Math.Max(0, contentItemsCount);
    pagerShape.TotalItemCount(contentItemsCount);
}
Logger.Debug("ProjectionDriver Elapsed:" + stopwatch.Elapsed.TotalMilliseconds);

Such that both _projectionManager.GetContentItems() and _projectionManager.GetCount(query.Id, part) are contained in the timer.
I disabled SysCache, and linked up a projection page with a pager to the test, with the setting for "Maximum number of items which can be queried at once" set to unlimited, and 10 items per page.
I loaded up an unrelated page in the site to start up Orchard and removed all scheduled tasks so unrelated db operations did not interfere with the test.
Then I loaded up the Projection Page 20 times with Ctrl+F5.
Tests run with 18365 (published) content items in the database:
With PR changes:
With Group: mean average - 120ms      (range: 115 - 127ms)
Without Group: mean average - 97ms    (range:  95 - 132ms)
Without PR changes:
With Group: mean average - 105ms      (range:  98 - 148ms)
Without Group: mean average - 85ms    (range:  81 - 90ms)
These times are from a debug build running on a fast dev PC.

@jimasp I'm so sorry for coming back to this so late.
This problem came up in one of our client projects, so I applied the changes from your PR and it's working great!


Minor suggestion for status bar

Observed behaviour
Running FB from the command line, I see a progression indication, but the Progress Bar is missing context of where the end of the bar is. I see:
........E..E.E.....
then
........E..E.E.....WW.E.E..E.................E.W....EEEEEEEE
and so on, until finally
.......E..E.E.....WW.E.E..E.................E.W....EEEEEEEEEEEEEE.E.EEE..IEI.....E.EW......W......S..EW...................W...S..........
Expected behaviour
But I would expect:
[........E..E.E.....                                                                                ]

then
[........E..E.E.....WW.E.E..E.................E.W....EEEEEEEE                                                                              ]

and so on, until finally
[........E..E.E.....WW.E.E..E.................E.W....EEEEEEEEEEEEEE.E.EEE..IEI.....E.EW......W......S..EW...................W...S..........]

Resources and exact process needed to replicate
$ cd directory_with_font_files/;
$ fontbakery check-ttf *ttf;

With the current implementation, the check-ttf script has no knowledge of the total number of checks before actually running them, so providing this context, while desirable, it not trivial. I'm not sure if @graphicore new architecture proposal may provide means to compute that total before running the checks, but that would be a good thing to take into consideration. Otherwise, the total number would have to be hardcoded to the script, which would likely lead to a mismatch in the future if we forget to always update the hardcoded value. (So I'm strongly against hardcoding it.)

I agree; but given the checks are numbered, I'm confused about why fb can not len() them

I'm not sure if @graphicore new architecture proposal may provide means to compute that total before running the checks

Will be totally possible :-)

I'm confused about why fb can not len() them

Because fontbakry-check-ttf.py calls each checks explicitly. That's why we need a test-runner.

We can't len() them because they're not a list. The checks are currently invoked in a procedural manner, which is at the core of what Lasse is currently addressing.
I'm happy to postpone this until we review and merge Lasse's refactor.

Okay great :)

@felipesanches I guess this can be closed as the rewrite implements a fancy new status bar

Yep! :-D


Check for breaking update GSL 2.7.1 -> 2.8 in Maths/BSpline.hpp

New version of GSL removes functions gsl_bspline_deriv_eval, gsl_bspline_deriv_eval_nonzero, etc.. There are potentially more breaking changes, but haven't found any yet---everything else seemingly works.

Thanks!
Very annoying they have breaking changes with a minor version update.
It looks like you've caught all the changes


[lexical-table] Fix table selection paste as plain text

Fixes #6541
Before:
Double pasting incorrectly, since it was reading all nodes - rows and cells.
https://github.com/user-attachments/assets/8ddb613e-1a6b-4985-8052-ff51b9b20982
After:
Pasting correctly, since reading only cells.
https://github.com/user-attachments/assets/c1484903-388a-4f96-86f7-fb97322cd8cc

Isn't it expected for the content to be the rows delimited by newlines and the cells delimited by tabs?

One of the more popular editors I tried does it this way - cell per new line, which I think makes more sense to manipulate further if one wanted the output as plain text. Another one I tried does it the way you decribed. I don't mind chaning the paste structure, I'm unsure on the right output layout.

The default behavior of the browser is to copy tables with tabs delimiting cells and newlines delimiting rows

The default behavior of the browser is to copy tables with tabs delimiting cells and newlines delimiting rows

updated,
https://github.com/user-attachments/assets/779b6056-fc94-4b37-bfa3-1edea71bff1c
I'm sure there's a more elegant way to concat correctly, but it does the job.


Extra characters added when formatting gitlab ci with yaml anchors

When formatting a yaml file with anchors, extra characters (!!merge) are added on format which invalidates the file.
This is an issue specifically with the <<: *partial anchor. Or even more specifically the << part of it.
https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html
Before save:
deploy-mr:
  <<: *mr_deployer_config
  script:
  - *set_env_params
  - npm run start
  rules:
  - if: $CI_MERGE_REQUEST_ID && $CI_PIPELINE_SOURCE == "parent_pipeline"

After save:
deploy-mr:
  !!merge <<: *mr_deployer_config
  script:
  - *set_env_params
  - npm run start
  rules:
  - if: $CI_MERGE_REQUEST_ID && $CI_PIPELINE_SOURCE == "parent_pipeline"

Hi!
Sorry for the delay. I have fixed it in the v2 branch and it should be released soon.

The v2 version has been released on VSCode and fix this issue.
Give it a try!


Local LWC

Includes the local file system LWC in the core distribution.
An example of adding a local_file_system mount follows. You can choose any directory with write access for the connectionUri; query-related data will only be written to this directory if a table is prepared (though nihdb will write some version and metadata files upon initialization).
curl -v -X PUT http://localhost:8090/mount/fs/localfs/ -d '{ "local_file_system": { "connectionUri":"/path/to/slamengine/storage/" } }'

You automatically have access to query your entire local file system via the LWC (modulo actual file permissions). To query a local path, omit the leading /. This isn't particularly intuitive; if this were to be user-facing we'd want to change this so it behaves like the terminal.
(v41.5.2-715e2f8) 💪$ select * from `complete/local/path/to/foobar.txt`

Travis build timed out on mongo tests and appveyor had a spurious failure during service tests, restarted both.

@wemrysi green!


ignore meta-data for SQLite using WAL

when enabling WAL for SQLite the files used for journaling change.
See: https://www.sqlite.org/wal.html

Nice, thanks :)


Quest "Static" Softlock

Found an issue with the quest "Static"
If you lose to the Eelektross you get the "do you wanna start this quest now?" prompt and if you hit start quest later you get locked to stage 3 and cannot start it/complete without qd help

Fixed by sending the player to stage 2 instead of stage 1. Should now work correctly.

Closing, since new file has fix.


Update to latest stable Node, Firefox ESR

Two major changes: update from Node 4.2 -> 6.x, and from Iceweasel/Firefox 45.x to Firefox 52, the new ESR.

Thanks a lot!


How to POST a very Big file with 'chunk' mode?

I want to Post to a very big file to the server,  will requests use the "chunk" mode ?
if
>>> f = open("very big file")
>>> requests.post(url, data=f)
From the PreparedRequest.prepare_body method, file length can get from util.super_len,
then the 'Content-Length' will be a number, which make chunk  mode False.
Is these any way to use the chunk mode when post a big file ?
Thank you!

Requests will not chunk the file, but neither will it read it all into memory. Instead, it will "stream" it: that is, send it from the file directly to the network. Do you really specifically need chunked-transfer-encoding here? What does chunked transfer encoding get you that the streaming method does not?

Thank you @Lukasa . My mistake, I thought requests has to read it all into memory before send to network.In fact requests just "stream" it, which is cool.Thank you!

@jchluo in the future, please do not use the issue tracker for questions. Use StackOverflow.


Parking postgrest timeout bug

https://austininnovation.slack.com/archives/CHZE6BC6L/p1732642299568489
TLDR: Was getting timeout errors from postgrest that our query was taking too long. @johnclary found that swapping the order direction reduced our query time dramatically. This fixed the timeout issue I was experiencing.

This was such a surprising result, that the reverse ID ordering aligns with the reverse date sorting and leads to faster processing the chunks of records we're interested in. It makes me want to take another look at our Vision Zero db views.


Can't open solution in Visual Studio 2015 Community

The projects BasicNodesCuda and XmlFeedForwardNetCuda don't load, showing the error in the output:
BrainSimulator\Sources\Modules\BasicNodes\Cuda\BasicNodesCuda.vcxproj : error  : One or more errors occurred.
BrainSimulator\Sources\Modules\XmlFeedForwardNet\Cuda\XmlFeedForwardNetCuda.vcxproj : error  : One or more errors occurred.

Unfortunately nVidia does not support CUDA for VS2015 yet:
https://devtalk.nvidia.com/default/topic/850491/cuda-and-visual-studio-2015/
http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-microsoft-windows/index.html#abstract
To compile CUDA parts, you need to use VS2013.
In theory you can compile all kernels using nvcc and place resulting ptx files to proper folders, but it would be quite tedious.

Ah, I see. Thanks.


Remove previous cadl scripts

Fixes: https://github.com/Azure/azure-sdk-tools/issues/9427

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

@maririos FYI running the script https://github.com/Azure/azure-sdk-tools/blob/main/eng/scripts/Approve-Eng-Common-Sync-PRs.ps1 locally will help approve and tell you the status of all the sync PRs. I should probably update our docs to point at that.


refactor(child-process): IPC via stdio

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#134  👈
#133
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @hi-ogawa and the rest of your teammates on  Graphite

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#134  👈
#133
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @hi-ogawa and the rest of your teammates on  Graphite


Dispute bond description is incorrect

This should depend on which dispute mechanism is used. There's only one dispute round when the mechanism is authorized. @Chralt98 knows more about how bonds increase if the mechanism is court.

Fix will be released with next runtime release


Write transactions on block commit

Description
The transactions in a block are delivered by Tendermint using deliver_tx and in the current implementation they are stored when they are received. In case there is any crash during deliver_tx, end_block or commit the database will be left in an inconsistent state i.e. Tendermint will try to replay the transaction which will only result in failure as some transactions may already be present in the database.
Approach
A possible approach to resolve this would be to write transactions during commit.
/cc @vrde @sbellem

Fixed #2017


Rename the API directory

Description

For maintaining consistency with ingestion_server and analytics, the prefix openverse- has been dropped from the openverse-api subproject to change it to just api.
Testing Instructions

This is a name change so passing tests in CI should be good enough to validate the correctness of the code. Updating the docs is trickier. So a manual review of those changes is good to have.
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Please refer to the successful workflow run. Hopefully it reduces the need to check out and test the PR locally.

@AetherUnbound

I intentionally left the openverse_ in the log directory path because what API referred to in /var/log/api was very ambiguous
the CONTRIBUTING.md file is out of date in a lot of places, that one will need a major rewrite (either as an .md file or in Sphinx as a part of #427).


Article about Agile and Waterfall

https://github.com/nesterone/sf-eng-init-gl-spring-2016/blob/master/00-bootcamp/00-intro/intro.md#exercise-2

Agile Development vs Waterfall Development

Agile
Agile software development is a set of principles for software development that promotes adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change.

Waterfall
In the waterfall model  progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.

Advantages and Disadvantages

Advantages of the Agile Methodology

Allows for changes to be made  after the initial planning

Re-writes to the the program are expected.
Easier to add new features

Clients can add their feedback after the first sprint.
The testing at the end of each sprint ensures that the bugs are caught.
The product could be launched at the end of any cycle.

Disadvantages of Agile Methodology

With a less successful project manager, the project can become a series of code sprints. If this happens, the project is likely to come in late and over budget.
As the initial project doesn’t have a definitive plan, the final product can be grossly different than what was initially intended.

SO, as you can see, the disadvantages isn't so bad. If you know that the project manager is good enough, then you shouldn't care about the first one. Talking about the second disadvantage, it's not such a big problem if we get different product, because all of the changes in program were announced by the product owner, so he needs it.

Advantages of the Waterfall Methodology

A lot of documentation

In the case of employee turnover documentation allows for minimal project impact.

The client knows what to expect (idea, time, cost).

Disadvantages of the Waterfall Methodology

Can’t go back to a previous stage and make changes.

If the requirements are faulty, the project is doomed.
If a requirement error is found, or a change needs to be made, the project has to start from the beginning with all new code
If the client realizes that they need more than they initially thought, and demand change, the project will come in late and impact budget

Bugs existence may have affected how other code was written.

SO, as you can see, the main disadvantage of this methodology is that you can't change anything after the start, so you need to have clear and constant requirements.
What methodology should I use?

Situation
- Waterfall -
- Agile -

There is a clear picture of what the final product should be
Yes
No

Clients won't change the requirements
Yes
No

Definition is more important than speed
Yes
No

Speed is more important than quality
No
Yes

Clients will be able to change the requirements
No
Yes

There is no clear picture
No
Yes

You have skilled developers who are able to think independently
No
Yes

Product is intended for an industry with rapidly changing standards
No
Yes

Author opinion

In my opinion, Agile methodology is better, because you can adapt to the requirements during the development process. Also this methodology is much faster and you will get feedback from the client at the first stages of development.
On the other hand, if you have constant requirements and you need to count all the time and cost - waterfall is better.
To sum up, I think that Agile is often better for companies that work for outsource, because the client more likely will change the requirements.


Update reference to get_all_security_groups_for_vpc() method

Because the get_all_security_groups_for_vpc() method in disco_vpc.py has been moved to disco_vpc_sg_rules.py.

+1

👍


Arduino to Light Strip signal problem

I have the Wiring done as stated here using this ESP8266 this Light Strip and a 74AHCT125.
When I ground the 1OE pin, the lights stop.
When I unplug the 1OE pin, they go kinda to the music but more random than anything.
Plugging directly from RX pin to DIN on the Strip does nothing as well.
The arduino itself seems to be functioning properly, but the signal isn't right.
Please don't mind the poor wiring, it will be all soldered once I see it work.

I don't think you need the quad level shifter, have you tried running without it?


Fix to correctly select the first alive character when a new turn starts

fixes #173

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

7 of 9 (77.78%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 97.493%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/Battle.Logic/Game/Team.cs
7
9
77.78%

Totals

Change from base Build<PHONE_NUMBER>:
-0.1%

Covered Lines:
2607

Relevant Lines:
2666

💛  - Coveralls


Add prometheus scrape annotation

closes #1002

Are there any pods that need to be scraped, weave, kube-proxy anything else?

@dkoshkin kube-proxy does as well.

Can you make this PR more generic and add the annotation to all the pods that need it.

@dkoshkin added to include kube-proxy

please squash this when merging.

LGTM!


Recording metadata using the Bluetooth application

Hi @JonasBchrt,
I hope you are well,
I'm sorry this has taken me so long to post. As we discussed in our meeting last month, when you have the time, could you please add a 'Metadata' section to your Bluetooth app interface. This metadata section should include the following fields:
'Habitat name' - A simple text field asking the user to state the survey habitat. In future it would be useful to encourage choosing habitat names from a dropdown, with names obtained from a standard such as the IUCN Habitat Classification Scheme, but this scheme is still a draft version, and Darwin Core does not enforce a habitat standard, so a written habitat name for now will do.
'Location remarks' - A simple text field asking the user to describe any unexpected characteristics of the deployment environment that they feel may effect results. In most situations this field will be left blank. However, there may be corner cases when the field is needed. For example, the survey design may have strict placement coordinates for the AMI, but the placement is near a large light source and the surveyor wants to make a record of this.
At the end of the section, please add a 'Save metadata' button.
In a second corner case, I can imagine the user repeatedly pressing the 'Save metadata' button out of uncertainty over whether the metadata information has correctly synced. To prevent any crashes, I think the 'Save metadata' button should become locked after each press, until a short timer runs out, or until the Pi relays confirmation of an updated config.json file.
If you have any questions or comments please let me know, thanks.

Added the elements to the App.

It's currently a dummy box that doesn't modify anything on the pi yet. Do you also want me to implement writing to the config.json file on the pi @DylanCarbone now?
If yes, can your remind me of the envisioned fixed path of the config.json on the raspi (and rockpi, if desired)? And the structure of the file? (At least to the extend that allows me to reliably modify these two fields.) A Python or JS snippet would also do the job, up to you. Thanks :)

Hi @JonasBchrt, that looks brilliant, thanks very much for your help!
It would be brilliant if the values could be written to the following fields in the config.json here.
The location of the config.json file varies slightly depending on AMI version, but I would like it to be located in the home/pi or home/bird-pi directory.
You can modify the fields in the config.json file using the following:
with open("/home/bird-pi/config.json", 'r') as file:
        json_config = json.load(file)

json_config["field_observations"]["location_remarks"] = input
json_config["field_observations"]["habitat"] = second_input

The config.json will be stored in the home directory of the raspberry Pi (and only the Raspberry Pi, as we transition away from the Rock Pi).
Please let me know if you have any other questions,
thanks again,
Dylan

Everything should now be implemented in the bluetooth-dev branch here after commit 19833b353c4d26dc2b12a51e3c1f269e704c2cbd
@DylanCarbone

Thank you very much for this Jonas! I will run your implementation when I am next in the office, and close if there are no issues.

Hi @JonasBchrt,
Thanks again for all your help,
I transferred my config.json file to the "home/pi" directory, connected to it via the Bluetooth app, and attempted to transfer habitat name and location remarks metadata. Unfortunately, I was given an error saying it could not read the metadata to the AMI device. Am I taking the wrong approach? I was able to perform other actions, such as to shut down the AMI. If you can spare the time, could we have a quick meeting next Tuesday to sort out this remaining error?
Thanks,
Dylan

Hi @DylanCarbone,
I can't do Tuesday because I am at AIUK, but we can do another time - just find a slot in my calendar.
Can you try not putting a JSON file in the folder? Then, one should be created. I'd be curious if that works. Ultimately, we should read your config.json, of course.

You can also send me your specific config.json and I try. Don't wanna bother you too much.

I tried to reproduce the issue, but couldn't. Here's what I did:

Download config.json from https://github.com/DylanCarbone/ami_setup/blob/32d435e31b2f72b3cef31048fa0e280d3f27b217/config.json#L42C1-L45C6
Place config.json in /home/pi/.
Open Bluetooth app.
Click Connect Ami-Trap and ensure that connection is made.
Enter a string in the field Habitat name (Cookie tin) and a string in the field Location remarks (Lots of cookies).
Click Save metadata.
A green box appears on the top of the website and displays Metadata updated.

Let's have a look together on your system.


Make a new logo

Make a new logo, idk what it should be tho

We found a new icon, just need to make a few adjustments to make it appear correctly on the app icon.

I am happy with the new icon.


build: bump all packages' engines settings

BREAKING CHANGE:
node: >=10.17.0 <12.0.0
npm: >=6.11.3
yarn: >=1.19.1
node v10.17.0 is the latest in the 10.x series and is still in the Active LTS lifecycle. Embark is still not compatible with node's 12.x and 13.x series (because of some dependencies), otherwise it would probably make sense to bump our minimum supported node version all the way to the most recent 12.x release.
npm v6.11.3 is the version that's bundled with node v10.17.0.
yarn v1.19.1 is the most recent version as of the time node v10.17.0 was released.

These are hard to review, but man.. GitHub says "All checks have passed" so 👍 👍 👍 👍


docs: add release image signing guidance

Updates security doc to include release image verification guidance

@susanshi can I get a reack on this?

LGTM. Should we hold on this PR until v1.4.0 released? Some steps are using v1.4.0 as an example

At the last CC we discussed this and decided it's ok to publish since website by default will point to 1.3 versioned docs which will not have this change


Hello, how to show all the closed buffers?

Hello, I want to see all closed buffers in the tabline, but now it only shows the current buffer in tabline. I have set 'set showtabline=2'.

The tabline is the place to show the information of the active window each tabs. The tabline integration of lightline follows the behavior of the default tabline behavior of Vim. If you want to show buffers in tabline, check out lightline-bufferline.

thank you. I have another question, If I use  tabline plugin nvim-bufferline and lightline together, It will show lightline's tabline other nvim-bufferline's, how to close lightline's tabline?

let g:lightline = {
    \ 'enable': {
    \   'tabline': 0
    \ },
    \ }


Improving checker bot

Fixed the comment generation function so it can post a comment in a pull request without en error even if the LLM doesn't provide all sections.
Added to the prompt a request for an explanation as to why the Hugo checking returns False

@evgenydmitriev I just noticed in other PRs that the model gives a response but the bot doesn't post a comment, so I made some changes. I'm continuing to work on your remarks.


Keep selected rows when selecting rows

Issue Type

[x] Enhancement Request

Enhancement idea;
When using the checkbox option and combining it with the search option the following happens;
When checking two rows and than search the two selected rows got forgotten.
This behavior is due to line 897 in component Table.vue that reads;
this.unselectAllInternal(true);
If you unselect this rule it will not flush the options anymore.
Ideally this would be an option of the select options in function initializeSelect.

@jurgenbosch this isn't as straightforward as just removing the reset. The selected row info is based on displayed rows (processed rows). If you remove the reset, as you search, the displayed rows change, the selected info changes to say 'there's nothing selected' even though there are rows selected, they just aren't visible.
It'll take some effort to figure out how to do this without breaking the functionality. I'll keep this open but no ETA on this just yet.

same as #286 going to keep that one and close this.


Better handle parse errors

Improvements:

catch Exception instead of just IOException
include responseCode in error message

GSON parse errors we just being thrown up previously.

Coverage remained the same at 95.946% when pulling 90374d346b52ff35a329c6c6ba7245d91a42194c on tlisonbee:better-error-messages into c2e2b4c65aa6db56d230b9c1d12bcf063fa04dac on Nike-Inc:master.

Opening a new pull request with clean commit history


Save image versions to config.toml so they can be checked into version control

Is your feature request related to a problem? Please describe.
We've got a team of developers all working on the same project. Some of them have access to our Supabase account and some do not (e.g. front-end developers). We want all of them to run the app in their local dev environment (which is one of the massive benefits of the Supabase CLI — every dev can easily spin-up a local dev environment) and we want all of them to be using the same image versions.
In practice this isn't a huge problem for us because a front-end developer using a slightly out-dated version of Supabase rarely causes any issues, but ideally we to ensure everyone has identical dev environments. I could imagine there are scenarios in other organisations (or ours when we get a little larger) where only limited set of developers have full access to their Supabase project for privacy and security reasons. In a scenario like that it'd be crucial for the back-end developers to all be using the same image versions.
Describe the solution you'd like
When supabase link is run the versions are saved into config.toml so they can be checked in to version control.
@sweatybridge in https://github.com/supabase/cli/issues/1702#issuecomment-1849941331 mentioned a problem with this approach:

We probably don't want to add a config field because it will be difficulty to guarantee newer versions of studio and cli will work the every old version of pgmeta. We don't need to worry about backwards compatibility for temporary files since they are not committed to git and may be deleted anytime.

I feel like this is a problem anyway. As I understand it, the CLI has to be compatible with whatever versions could be copied across via supabase link — which I'm assuming means it has to support some pretty old versions? The problem that probably does need to be avoided is one dependency getting pinned to a specific version while others are automatically updating. A simple constraint could be that authors are forced to specify a versions for everything (including studio) or nothing at all (use the CLI's defaults). I'm imaging the CLI does a check as part of supabase start to see if all the versions have been specified and displays an error if something is missing (could suggest running supabase link to fix the problem).
Describe alternatives you've considered
A workaround would be a custom script which sets the versions in their respective .temp files that is part of a team's setup process. This definitely causes the same problem that @sweatybridge called out above.
Additional context
Related issues:

#2391
#1702

The alternative you described fix this issue as you can check the .temp directory into version control if you wish to have consistency across team. Also you can save your supabase version by installing in into your package.json file as a dev-dependency. The issue of this being outdated would then rely on one member of the team keeping this up to date as you would with anything checked into VC.
I don't think saving the version to config.toml is providing anything better than what I've outlined above as it would be doing the same thing.

Also you can save your supabase version by installing in into your package.json file as a dev-dependency.

👍 Yep, already doing that.

The alternative you described fix this issue as you can check the .temp directory into version control if you wish to have consistency across team.

That sounds a little risky right? The name .temp really implies that it's got files in it that should be considered temporary shouldn't be in version control. Currently, it might only have the image version, but I can imagine a developer working on the CLI in the future would assume that putting anything temporary in there is free game (or change the name/location of existing stuff too).
Like I said, this isn't a huge issue for our team right now, just wanted to get a issue tracked it incase others a googling for a solution too. Happy to have for this to be closed if it's a "won't fix" for now.

@haydn I just want it to be clear here that I'm not a Supabase staff and what I stated above was my opinion as a independent contributor. I don't think there would be a problem checking in .temp as a workaround for this issue for now.

CLI has to be compatible with whatever versions could be copied across via supabase link — which I'm assuming means it has to support some pretty old versions

Our platform is really supporting only one version (ie. the latest). We don't force users to upgrade but generally encourage users to do so at their earliest convenience. Although cli has to support some pretty old versions, the number of projects running old versions are actually quite few. Pinning versions in config will likely open the doors to more projects running old versions, which I'm hesitant to support.

The problem that probably does need to be avoided is one dependency getting pinned to a specific version while others are automatically updating

I agree there's an inconsistency currently where some service versions are linked but others are not. Eventually, I'd like to get to a point where all local service versions are synced to their linked project.

where only limited set of developers have full access to their Supabase project for privacy and security reasons

For limiting user access, I think it's better to do it via scoped access tokens. Our API team has already started working on this.

I'm imaging the CLI does a check as part of supabase start to see if all the versions have been specified and displays an error if something is missing (could suggest running supabase link to fix the problem).

Yes, currently cli emits a warning if some service version is outdated and suggest to relink. But I think users tend to ignore it.
Perhaps the solution here is to auto update service image versions on supabase start to match those of the hosted project. See https://github.com/supabase/cli/issues/2465

We don't force users to upgrade but generally encourage users to do so at their earliest convenience.

Wait. There's a way I can turn-off auto updating in a project? I've been caught out twice by an update being applied to the live project which causes something to break in a major way. I'd much prefer to be in control of this. Where's the option for this? Is it only for enterprise customers?

For limiting user access, I think it's better to do it via scoped access tokens. Our API team has already started working on this.

👍 This sounds like a good plan.
However, long term, I'd still like to be able to commit the image versions into a repo. If some CI checks pass for a specific commit I wouldn't expect those checks to arbitrarily fail if they're run again at a later date. If the image versions are being pulled via supabase link as part of those CI checks then they 100% could break at any time (e.g. supabase gen types might produce a different result).
You could argue that those tests should fail if they're out-of-sync with the live project. But why is the live project updating first? I'd much prefer to update the versions I'm using in development first, then apply that change to a staging project and last of all apply it to the production project. The other way around makes no sense. (I can't imagine you've got any enterprise customers who'd be happy with y'all just changing the image versions of a production app without testing it first. 😂) If the only way to synchronise image versions is to use supabase link this workflow is just not possible.

Pinning versions in config will likely open the doors to more projects running old versions, which I'm hesitant to support.

It's 100% true that this would be a big anchor, but I think it's inevitable that Supabase will have customers that are on older version that you must support. I totally understand holding off on this for as long as possible, but I can't see how you avoid this long term.


Henry Ecker: Watch getunlock.cc

Henry Ecker requests the watch of the watch_keyword getunlock\.cc. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

getunlock\.cc has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Ryan M in Charcoal HQ


Support for MIDI panel jack

I assume you mean DIN plug here?
Only issue is that there are some variants of DIN sockets that have slightly different mounting holes and such.
These days I suppose a lot of projects use TRS jacks for midi, as it reduces the footprint a lot.
(best to use the TRS-A pinout as that is now considered the "standard": https://minimidi.world/)

Yes, I mean 5-pin DIN, specifically a panel mounted one.

But which one? as I said there are different types going around that all have different way of mounting.


torusctl: support create volume from another volume's snapshot

fixes https://github.com/coreos/torus/issues/273

usage example
1. prepare snapshot
./torusctl block snapshot list myvol
Volume: myvol
SNAPSHOT NAME  TIMESTAMP
snap1          2016-11-22T02:07:29Z
snap2          2016-11-22T02:07:30Z

2. create volume from another volume's snapshot
./torusctl volume create-block from-snapshot myvol@snap2 newvol --progress
newvol [==========================================================]  100 MB / 100 MB

3. new volume is created from another volume
./torusctl volume list
VOLUME NAME  SIZE    TYPE
newvol       95 MiB  block
myvol        95 MiB  block

i'd love to see this happen - but it does need to be done server side.

I have already moved the code to block package and it could address the concern of command line code. I'm sorry, but could you please elaborate on what you mean the "server side"?

This feature would be incredibly valuable for my team's use-case. We are looking into alternatives such as Ceph or Portworx to create new persistent storage volumes for containers from a base snapshot. Any way we can get eyes on this?