Auto build packages

Use yarn workspaces foreach to build packages in topological order.
See  yarn workspaces foreach docs for more usage information https://yarnpkg.com/cli/workspaces/foreach and this comment.
If you have any troubles with build-in features, just use https://yarn.build (see also https://github.com/yarnpkg/berry/issues/3466) plugin.

See also: https://github.com/yarnpkg/berry/issues/3466 and https://yarn.build

Example:
{
  "build": "yarn workspaces foreach --topological-dev --parallel --exclude root run build",
  "build:src": "yarn workspaces foreach --topological-dev --parallel --exclude root run build:src"
}


unpack(): Type N: not enough input

Recently started seeing this in the logs after upgrading Cassandra to 1.0.6 ...
PHP Warning:  unpack(): Type N: not enough input, need 4, have 1 in /htdocs/include/ext/phpcassa-0.8.a.2/columnfamily.php on line 1010
As it is a warning, I'm not that bothered, but have seen a similar error posted to the PHPCassa group on January 17, 2012 .. https://groups.google.com/forum/?hl=en_US#!topic/phpcassa/jAfDYEsGyN0 ...

Should be resolved by this: https://github.com/thobbs/phpcassa/commit/b2549f97ec49774c70af73f13b2883a303f4787b


Switched the deprecated Trollop gem for Optimist

I know that there is another PR open for this but there was a lot going on in there. So here is a PR that just switches Trollop to Optimist.

Thanks, Stuart!


U of Toronto new cluster terraform config

Part of https://github.com/2i2c-org/infrastructure/issues/853#event-5669228358
( The config of the original cluster is here )

Do you have the output of terraform plan?

Sorry for missing this question @sgibson91. No output yet, still at the init terraform step. Will come back with details.

@sgibson91, turning global_container_registry_name and global_storage_account_name to all lowercase letters, made terraform plan happy.
I'm pasting the output here:

Acquiring state lock. This may take a few moments...

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

Terraform will perform the following actions:

  # azurerm_container_registry.container_registry will be created
  + resource "azurerm_container_registry" "container_registry" {
      + admin_enabled                 = true
      + admin_password                = (sensitive value)
      + admin_username                = (known after apply)
      + encryption                    = (known after apply)
      + georeplication_locations      = (known after apply)
      + georeplications               = (known after apply)
      + id                            = (known after apply)
      + location                      = "canadacentral"
      + login_server                  = (known after apply)
      + name                          = "2i2cutorontohubregistry"
      + network_rule_bypass_option    = "AzureServices"
      + network_rule_set              = (known after apply)
      + public_network_access_enabled = true
      + resource_group_name           = "2i2c-utoronto-cluster"
      + retention_policy              = (known after apply)
      + sku                           = "premium"
      + storage_account_id            = (known after apply)
      + trust_policy                  = (known after apply)
      + zone_redundancy_enabled       = false

      + identity {
          + identity_ids = (known after apply)
          + principal_id = (known after apply)
          + tenant_id    = (known after apply)
          + type         = (known after apply)
        }
    }

  # azurerm_kubernetes_cluster.jupyterhub will be created
  + resource "azurerm_kubernetes_cluster" "jupyterhub" {
      + dns_prefix                          = "k8s"
      + fqdn                                = (known after apply)
      + id                                  = (known after apply)
      + kube_admin_config                   = (known after apply)
      + kube_admin_config_raw               = (sensitive value)
      + kube_config                         = (known after apply)
      + kube_config_raw                     = (sensitive value)
      + kubernetes_version                  = "1.20.7"
      + location                            = "canadacentral"
      + name                                = "hub-cluster"
      + node_resource_group                 = (known after apply)
      + portal_fqdn                         = (known after apply)
      + private_cluster_enabled             = (known after apply)
      + private_cluster_public_fqdn_enabled = false
      + private_dns_zone_id                 = (known after apply)
      + private_fqdn                        = (known after apply)
      + private_link_enabled                = (known after apply)
      + resource_group_name                 = "2i2c-utoronto-cluster"
      + sku_tier                            = "Free"

      + addon_profile {
          + aci_connector_linux {
              + enabled     = (known after apply)
              + subnet_name = (known after apply)
            }

          + azure_policy {
              + enabled = (known after apply)
            }

          + http_application_routing {
              + enabled                            = (known after apply)
              + http_application_routing_zone_name = (known after apply)
            }

          + ingress_application_gateway {
              + effective_gateway_id                 = (known after apply)
              + enabled                              = (known after apply)
              + gateway_id                           = (known after apply)
              + gateway_name                         = (known after apply)
              + ingress_application_gateway_identity = (known after apply)
              + subnet_cidr                          = (known after apply)
              + subnet_id                            = (known after apply)
            }

          + kube_dashboard {
              + enabled = (known after apply)
            }

          + oms_agent {
              + enabled                    = (known after apply)
              + log_analytics_workspace_id = (known after apply)
              + oms_agent_identity         = (known after apply)
            }

          + open_service_mesh {
              + enabled = (known after apply)
            }
        }

      + auto_scaler_profile {
          + balance_similar_node_groups      = false
          + empty_bulk_delete_max            = (known after apply)
          + expander                         = (known after apply)
          + max_graceful_termination_sec     = (known after apply)
          + max_node_provisioning_time       = "15m"
          + max_unready_nodes                = 3
          + max_unready_percentage           = 45
          + new_pod_scale_up_delay           = (known after apply)
          + scale_down_delay_after_add       = (known after apply)
          + scale_down_delay_after_delete    = (known after apply)
          + scale_down_delay_after_failure   = (known after apply)
          + scale_down_unneeded              = (known after apply)
          + scale_down_unready               = (known after apply)
          + scale_down_utilization_threshold = (known after apply)
          + scan_interval                    = (known after apply)
          + skip_nodes_with_local_storage    = true
          + skip_nodes_with_system_pods      = true
        }

      + default_node_pool {
          + enable_auto_scaling  = true
          + kubelet_disk_type    = (known after apply)
          + max_count            = 10
          + max_pods             = (known after apply)
          + min_count            = 1
          + name                 = "core"
          + node_count           = 1
          + node_labels          = {
              + "hub.jupyter.org/node-purpose" = "core"
              + "k8s.dask.org/node-purpose"    = "core"
            }
          + orchestrator_version = "1.20.7"
          + os_disk_size_gb      = 40
          + os_disk_type         = "Managed"
          + os_sku               = (known after apply)
          + type                 = "VirtualMachineScaleSets"
          + ultra_ssd_enabled    = false
          + vm_size              = "Standard_E4s_v3"
          + vnet_subnet_id       = (known after apply)
        }

      + identity {
          + principal_id = (known after apply)
          + tenant_id    = (known after apply)
          + type         = "SystemAssigned"
        }

      + kubelet_identity {
          + client_id                 = (known after apply)
          + object_id                 = (known after apply)
          + user_assigned_identity_id = (known after apply)
        }

      + linux_profile {
          + admin_username = "hub-admin"

          + ssh_key {
              + key_data = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQJ4h39UYNi1wybxAH+jCFkNK2aqRcuhDkQSMx0Hak5xkbt3KnT3cOwAgUP1Vt/SjhltSTuxpOHxiAKCRnjwRk60SxKhUNzPHih2nkfYTmBBjmLfdepDPSke/E0VWvTDIEXz/L8vW8aI0QGPXnXyqzEDO9+U1buheBlxB0diFAD3vEp2SqBOw+z7UgrGxXPdP+2b3AV+X6sOtd6uSzpV8Qvdh+QAkd4r7h9JrkFvkrUzNFAGMjlTb0Lz7qAlo4ynjEwzVN2I1i7cVDKgsGz9ZG/8yZfXXx+INr9jYtYogNZ63ajKR/dfjNPovydhuz5zQvQyxpokJNsTqt1CiWEUNj georgiana@georgiana"
            }
        }

      + network_profile {
          + dns_service_ip     = (known after apply)
          + docker_bridge_cidr = (known after apply)
          + load_balancer_sku  = "standard"
          + network_mode       = (known after apply)
          + network_plugin     = "kubenet"
          + network_policy     = "calico"
          + outbound_type      = "loadBalancer"
          + pod_cidr           = (known after apply)
          + service_cidr       = (known after apply)

          + load_balancer_profile {
              + effective_outbound_ips    = (known after apply)
              + idle_timeout_in_minutes   = (known after apply)
              + managed_outbound_ip_count = (known after apply)
              + outbound_ip_address_ids   = (known after apply)
              + outbound_ip_prefix_ids    = (known after apply)
              + outbound_ports_allocated  = (known after apply)
            }

          + nat_gateway_profile {
              + effective_outbound_ips    = (known after apply)
              + idle_timeout_in_minutes   = (known after apply)
              + managed_outbound_ip_count = (known after apply)
            }
        }

      + role_based_access_control {
          + enabled = (known after apply)

          + azure_active_directory {
              + admin_group_object_ids = (known after apply)
              + azure_rbac_enabled     = (known after apply)
              + client_app_id          = (known after apply)
              + managed                = (known after apply)
              + server_app_id          = (known after apply)
              + server_app_secret      = (sensitive value)
              + tenant_id              = (known after apply)
            }
        }

      + windows_profile {
          + admin_password = (sensitive value)
          + admin_username = (known after apply)
          + license        = (known after apply)
        }
    }

  # azurerm_kubernetes_cluster_node_pool.user_pool["default"] will be created
  + resource "azurerm_kubernetes_cluster_node_pool" "user_pool" {
      + enable_auto_scaling   = true
      + eviction_policy       = (known after apply)
      + id                    = (known after apply)
      + kubelet_disk_type     = (known after apply)
      + kubernetes_cluster_id = (known after apply)
      + max_count             = 100
      + max_pods              = (known after apply)
      + min_count             = 1
      + mode                  = "User"
      + name                  = "nbdefault"
      + node_count            = (known after apply)
      + node_labels           = {
          + "hub.jupyter.org/node-purpose" = "user"
          + "hub.jupyter.org/node-size"    = "Standard_E8s_v3"
          + "k8s.dask.org/node-purpose"    = "scheduler"
        }
      + node_taints           = [
          + "hub.jupyter.org_dedicated=user:NoSchedule",
        ]
      + orchestrator_version  = "1.20.7"
      + os_disk_size_gb       = 200
      + os_disk_type          = "Managed"
      + os_sku                = (known after apply)
      + os_type               = "Linux"
      + priority              = "Regular"
      + spot_max_price        = -1
      + ultra_ssd_enabled     = false
      + vm_size               = "Standard_E8s_v3"
      + vnet_subnet_id        = (known after apply)
    }

  # azurerm_resource_group.jupyterhub will be created
  + resource "azurerm_resource_group" "jupyterhub" {
      + id       = (known after apply)
      + location = "canadacentral"
      + name     = "2i2c-utoronto-cluster"
    }

  # azurerm_storage_account.homes will be created
  + resource "azurerm_storage_account" "homes" {
      + access_tier                      = (known after apply)
      + account_kind                     = "StorageV2"
      + account_replication_type         = "LRS"
      + account_tier                     = "Standard"
      + allow_blob_public_access         = false
      + enable_https_traffic_only        = true
      + id                               = (known after apply)
      + is_hns_enabled                   = false
      + large_file_share_enabled         = (known after apply)
      + location                         = "canadacentral"
      + min_tls_version                  = "TLS1_0"
      + name                             = "2i2cutorontohubstorage"
      + nfsv3_enabled                    = false
      + primary_access_key               = (sensitive value)
      + primary_blob_connection_string   = (sensitive value)
      + primary_blob_endpoint            = (known after apply)
      + primary_blob_host                = (known after apply)
      + primary_connection_string        = (sensitive value)
      + primary_dfs_endpoint             = (known after apply)
      + primary_dfs_host                 = (known after apply)
      + primary_file_endpoint            = (known after apply)
      + primary_file_host                = (known after apply)
      + primary_location                 = (known after apply)
      + primary_queue_endpoint           = (known after apply)
      + primary_queue_host               = (known after apply)
      + primary_table_endpoint           = (known after apply)
      + primary_table_host               = (known after apply)
      + primary_web_endpoint             = (known after apply)
      + primary_web_host                 = (known after apply)
      + queue_encryption_key_type        = "Service"
      + resource_group_name              = "2i2c-utoronto-cluster"
      + secondary_access_key             = (sensitive value)
      + secondary_blob_connection_string = (sensitive value)
      + secondary_blob_endpoint          = (known after apply)
      + secondary_blob_host              = (known after apply)
      + secondary_connection_string      = (sensitive value)
      + secondary_dfs_endpoint           = (known after apply)
      + secondary_dfs_host               = (known after apply)
      + secondary_file_endpoint          = (known after apply)
      + secondary_file_host              = (known after apply)
      + secondary_location               = (known after apply)
      + secondary_queue_endpoint         = (known after apply)
      + secondary_queue_host             = (known after apply)
      + secondary_table_endpoint         = (known after apply)
      + secondary_table_host             = (known after apply)
      + secondary_web_endpoint           = (known after apply)
      + secondary_web_host               = (known after apply)
      + shared_access_key_enabled        = true
      + table_encryption_key_type        = "Service"

      + blob_properties {
          + change_feed_enabled      = (known after apply)
          + default_service_version  = (known after apply)
          + last_access_time_enabled = (known after apply)
          + versioning_enabled       = (known after apply)

          + container_delete_retention_policy {
              + days = (known after apply)
            }

          + cors_rule {
              + allowed_headers    = (known after apply)
              + allowed_methods    = (known after apply)
              + allowed_origins    = (known after apply)
              + exposed_headers    = (known after apply)
              + max_age_in_seconds = (known after apply)
            }

          + delete_retention_policy {
              + days = (known after apply)
            }
        }

      + identity {
          + identity_ids = (known after apply)
          + principal_id = (known after apply)
          + tenant_id    = (known after apply)
          + type         = (known after apply)
        }

      + network_rules {
          + bypass                     = (known after apply)
          + default_action             = (known after apply)
          + ip_rules                   = (known after apply)
          + virtual_network_subnet_ids = (known after apply)

          + private_link_access {
              + endpoint_resource_id = (known after apply)
              + endpoint_tenant_id   = (known after apply)
            }
        }

      + queue_properties {
          + cors_rule {
              + allowed_headers    = (known after apply)
              + allowed_methods    = (known after apply)
              + allowed_origins    = (known after apply)
              + exposed_headers    = (known after apply)
              + max_age_in_seconds = (known after apply)
            }

          + hour_metrics {
              + enabled               = (known after apply)
              + include_apis          = (known after apply)
              + retention_policy_days = (known after apply)
              + version               = (known after apply)
            }

          + logging {
              + delete                = (known after apply)
              + read                  = (known after apply)
              + retention_policy_days = (known after apply)
              + version               = (known after apply)
              + write                 = (known after apply)
            }

          + minute_metrics {
              + enabled               = (known after apply)
              + include_apis          = (known after apply)
              + retention_policy_days = (known after apply)
              + version               = (known after apply)
            }
        }

      + routing {
          + choice                      = (known after apply)
          + publish_internet_endpoints  = (known after apply)
          + publish_microsoft_endpoints = (known after apply)
        }

      + share_properties {
          + cors_rule {
              + allowed_headers    = (known after apply)
              + allowed_methods    = (known after apply)
              + allowed_origins    = (known after apply)
              + exposed_headers    = (known after apply)
              + max_age_in_seconds = (known after apply)
            }

          + retention_policy {
              + days = (known after apply)
            }

          + smb {
              + authentication_types            = (known after apply)
              + channel_encryption_type         = (known after apply)
              + kerberos_ticket_encryption_type = (known after apply)
              + versions                        = (known after apply)
            }
        }
    }

  # azurerm_storage_share.homes will be created
  + resource "azurerm_storage_share" "homes" {
      + enabled_protocol     = "SMB"
      + id                   = (known after apply)
      + metadata             = (known after apply)
      + name                 = "homes"
      + quota                = 100
      + resource_manager_id  = (known after apply)
      + storage_account_name = "2i2cutorontohubstorage"
      + url                  = (known after apply)
    }

  # azurerm_subnet.node_subnet will be created
  + resource "azurerm_subnet" "node_subnet" {
      + address_prefix                                 = (known after apply)
      + address_prefixes                               = [
          + "<IP_ADDRESS>/16",
        ]
      + enforce_private_link_endpoint_network_policies = false
      + enforce_private_link_service_network_policies  = false
      + id                                             = (known after apply)
      + name                                           = "k8s-nodes-subnet"
      + resource_group_name                            = "2i2c-utoronto-cluster"
      + virtual_network_name                           = "k8s-network"
    }

  # azurerm_virtual_network.jupyterhub will be created
  + resource "azurerm_virtual_network" "jupyterhub" {
      + address_space         = [
          + "<IP_ADDRESS>/8",
        ]
      + dns_servers           = (known after apply)
      + guid                  = (known after apply)
      + id                    = (known after apply)
      + location              = "canadacentral"
      + name                  = "k8s-network"
      + resource_group_name   = "2i2c-utoronto-cluster"
      + subnet                = (known after apply)
      + vm_protection_enabled = false
    }

  # kubernetes_namespace.homes will be created
  + resource "kubernetes_namespace" "homes" {
      + id = (known after apply)

      + metadata {
          + generation       = (known after apply)
          + name             = "azure-file"
          + resource_version = (known after apply)
          + uid              = (known after apply)
        }
    }

  # kubernetes_secret.homes will be created
  + resource "kubernetes_secret" "homes" {
      + data = (sensitive value)
      + id   = (known after apply)
      + type = "Opaque"

      + metadata {
          + generation       = (known after apply)
          + name             = "access-credentials"
          + namespace        = "azure-file"
          + resource_version = (known after apply)
          + uid              = (known after apply)
        }
    }

Plan: 10 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + kubeconfig            = (sensitive value)
  + registry_creds_config = (sensitive value)

Thanks @sgibson91! The steps would then be, merge and then :arrow_right: terraform apply? :crossed_fingers:

@GeorgianaElena i think we terraform apply and then merge. In case something happens that's not revealed by the plan step :)

Just ran terraform apply successfully and added the cluster access credentials! There is a new cluster :tada:
Merging this :rocket:


hepl: UToggle + useDark

Description
components/darkToggle.vue

Executing the event toggleDark, it seems like the UToggle default animation isn't working. Am I using it incorrectly?

You can see from the official nuxt demo.

You can see from the official nuxt demo. https://ui.nuxt.com/getting-started/examples#colormodebutton
My example:

Thank you!

In this case, the most important thing is not to forget to add the
<ClientOnly></ClientOnly>


ECR login fails

~ (aws:rean-gov-sd)(kc)$ img login  https://<redacted>.dkr.ecr.us-gov-west-1.amazonaws.com
Username (AWS):
Password:
getting registry token failed: basic auth required
~ (aws:rean-gov-sd)(kc)$ echo $?

probably related to https://github.com/genuinetools/img/issues/79

and #106

opened one unified issue for this :) #128


Update README.md

Add debugging advice

@scholtes1953 What I was actually looking for was for you to update the actual yarn-site.xml in docker_files so that consumers of this don't even need to worry about it.

Ok. I wasn't sure it was a default we wanted.
—
Sent from Mailbox
On Fri, Sep 18, 2015 at 3:53 PM, oxtoacart<EMAIL_ADDRESS>wrote:

@scholtes1953 What I was actually looking for was for you to update the actual yarn-site.xml in docker_files so that consumers of this don't even need to worry about it.
Reply to this email directly or view it on GitHub:
https://github.com/oxtoacart/docker-cloudera-quickstart/pull/3#issuecomment-141566552


CPU usage is verrrrrry high

Overview
I have 4 Lottie animations on my page. I downloaded them from lottiefiles.com but after adding these animations the CPU usage of the page and my system increased a lot. It's always between 80% to 100% and the laptop fan is working constantly but after closing the page everything is OK. Is it normal with Lottie animations? This is just a small personal website with 4 small Lottie animations. Also, the size of my animation files is between 70 KB to 350 KB.
I also tried to set subframe to false to save some CPU but that's not improve anything:
<Player
                lottieRef={instance => {
                  instance.setSubframe(false)
                }}
                autoplay
                loop
                src={item.animationUrl}
                className="h-[250px] w-[250px]"
              />

Any suggestions for improving the page and CPU performance?
Consuming repo

What repo were you working in when this issue occurred?

...
Labels

[ ] Add the Type: Bug label to this issue.

I also encounter this issue, not only the CPU usage also the memory is too big.
when I disabled all my Lottie animations my web app has about 200mb memory but when I enabled it reaches 400mb - 500mb on initial load then will reach 1GB+ after a few seconds.
I have a dynamic number of Lottie animations.

We are running into similar issue, where CPU and GPU usage is going beyond acceptable, even when using only 2 lottie files and not much of other stuff going on the page.
Without lottie, CPU is at around 10% and GPU around 20%, while running about 30 chrome tabs, slack, vs-code, terminals and the web app itself.
With lottie, CPU usage jumps to about 60-70% and GPU goes to 80%.
Something seems off with the way the resources are consumed, 2 small files shouldn't increase usage of resources as much as it currently does.
Would be great to hear something from maintainers, since this issue soon to be 2 months old and 0 replies.

Hi @BabakScript It could be good to go per animation and see which one is causing large CPU usage, 350kb is on the large size for Lotties.
You can also create an issue on the lottie-web repo and upload your files to get help with your animations and see why they're causing large CPU usage: https://github.com/airbnb/lottie-web

I am experiencing the same high CPU usage - there was a suggestion here: https://github.com/airbnb/lottie-web/issues/2427#issuecomment-761683698
Not sure how this can be applied lottie-react?

@deshario9 Does your animation use a repeater? This is from the docs
animationData: an Object with the exported animation data. Note: If your animation contains repeaters and you plan to call loadAnimation multiple times with the same animation, please deep clone the object before passing it (see https://github.com/airbnb/lottie-web/issues/1159 and https://github.com/airbnb/lottie-web/issues/2151.)

Any plan to fix this issue?

Any updates here?

Any updates?


Convert Instruction.name to be read-only.

Summary
Following from some discussion in #7087 , moves Instruction.name to be a getter-only @property. The hope here is to indicate to users that Instruction.name is uniquely meaningful to the transpiler in identifying the operation type and can have unexpected consequences if changed, especially, that it not be changed to conflict with the Instruction's type, e.g. in @nkanazawa1989 's example
cx = CXGate()
cx.name = "ry"

will confuse several places in terra.
Details and comments
WIP for discussion:

Sufficiently useful in helping users avoide above pitfall?
Performance impact of additional @property?
Look into existing usage (two in qiskit/, two more in test/)
Should a corresponding @name.setter be introduced with a deprecation warning?

This PR is rather stale now and would likely need a lot more work if we decide to go this way, so in the interests of end-of-year tidying up, I'll close it for now. Feel free to re-open it if you want to take it further from this base.
Replacing a core attribute like name with a property could potentially have negative effects on performance (since we check it a lot), so that's something we'll need to check if we take this forwards.


OMX viewer

The AequilibraE plugin for QGIS also has an OMX viewer, which might be a good alternative.
I have not found a way to issue a pull request for the Wiki content on this repo, so that is why I am filling this issue.
The description of the capability and how to get it to work is documented here: https://www.xl-optim.com/displaying-omx-matrix-in-qgis/

Done, thanks https://github.com/osPlanning/omx/wiki/OMX-Viewer


Update quick start to include index.md

It can be confusing if you only follow the quick start and navigate to localhost:8080 to see Cannot GET / so I included index.md.
I also updated cache data. from twitter.

also, do you mind if I would put Tip reference to use auto-reload to command-line-usage doc next to command eleventy --serve for convenient development. It is plugin for browser,watches and reload your tab.
https://github.com/blaise-io/live-reload

Hmm, I agree with you that it is confusing. I’m not sure I want to add another command line step to the Quick Start though. I’d rather add a little note that highlights where the output file is going and what URL you should open on your web server.
I kinda wonder if --serve should be the command listed on the quick guide so we can be explicit about URL they should go to (e.g. http://localhost:8080/README/index.html)

Well, I agree that the quick start should be as short as possible. I also think that we need to explain the difference between index and every other page. It could be done by note instead of direct command. My goal was just to not have initial confusion of empty page when starting out with eleventy as I had.
but I can make changes you suggested.


fix missing catch variable for windows + node 14

Summary
Using windows + node 14, I got this error

Test plan
...

Thanks for the PR! However, this shouldn't be necessary - optional catch binding works for node 10 and newer. Are you sure you're using Node 14?

maybe not.. maybe its 8 :(


Add Spec Run To CI

Super Green

I thought automated specs would be a good PR #200
@bkiahstroud I renamed the Rubocop to be lint / rubocop since "Kind of thing / Thing" made more sense to me. Let me know if you want that switched back.

yes you need the .gitkeep - it forces the directory to exist as git does not keep track of directories, only stuff in directories.


bump vulnerable path-to-regexp to fixed version (dev deps)

Summary

Nothing serious, because dev-deps but I thought we might just fix it right away.
Linked issue(s)

Involved parts of the project

Dev/Tests/Lint/Docs
Added tests?

OAuth2 standard

Reproduction

I got an outdated master branch so this was already fixed


[IOTDB-3359] Refactor the serialization interface for the consensus layer to avoid hard-coding size ByteBuffers

Coverage decreased (-0.09%) to 44.494% when pulling 64fff52d526730a4a0a616a693f5a6ab19cec89f on jira3359 into 6c10edff06fc427573799de9ade0ffcf3a119cf5 on master.


issue with noip-renew.sh

Hi,
After configuring the package on my RPI, I am facing this error message:
File "./noip-renew.py", line 35
print(f"[{self.time_string_formatter}] - {msg}")
^
SyntaxError: invalid syntax
All dependancies with Python have been installed before the configuration of the no-ip account.
Thanks for you help!
Regards
Edit: I made the test with the noip-renew.py, and had exactly the same error message

Hi @LordDarkneo,
Can you type the following into your terminal and let me know what it says? It sounds like you’re missing Python 3.6+
python3 —version
Thanks!
Ryan

The command retuned... Python not installed 👍
I am installing the 3.6.5 and pip, I'll see how it goes ! Thanks for prompt support ;)

Hi,
After Python3 installation, I stil have exactly the same issue...
The command python3 -version gives me
pi@octopi:~/noip-renew $ python3 -version Unknown option: -e usage: python3.6 [option] ... [-c cmd | -m mod | file | -] [arg] ... Try python -h' for more information.
`
The command python3 -V returns Python 3.6.5

Hey @LordDarkneo,
The command is actually python3 --version for whatever reason when I typed it from my phone it came out incorrectly. It's the same as typing `python3 -V though, so that's good. We've established you have a working installation of Python3. Can I ask you to run the following commands and report back with the output, please?
sudo apt-get -y install chromium-chromedriver
sudo apt-get -y install chromium-browser
sudo apt-get -y install python3
sudo apt -y install python3-pip
sudo python3 -m pip install selenium

The above are all of the requirements for pi running a debian derivative (such as OctoPrint) as far as I'm aware. This will tell us if they're installed or not.
It still looks like for whatever reason the script isn't finding/using your python3 installation. It looks like it's trying to use your python2 installation instead.
A couple of final questions which may help us work this out:

Are you using the latest version of this script? (1.1)
How are you calling the script when this failure occurs?

Thanks
Ryan

Hi!
Hereunder the results:
sudo apt-get -y install chromium-chromedriver
Reading package lists... Done Building dependency tree Reading state information... Done chromium-chromedriver is already the newest version (72.0.3626.121-0+rpt4). 0 upgraded, 0 newly installed, 0 to remove and 131 not upgraded.
sudo apt-get -y install chromium-browser
Reading package lists... Done Building dependency tree Reading state information... Done chromium-browser is already the newest version (72.0.3626.121-0+rpt4). 0 upgraded, 0 newly installed, 0 to remove and 131 not upgraded.
sudo apt-get -y install python3
Reading package lists... Done Building dependency tree Reading state information... Done python3 is already the newest version (3.5.3-1). 0 upgraded, 0 newly installed, 0 to remove and 131 not upgraded.
==> What's strange here is why is it pointing to the 3.5 installation? As I installed the 3.6....
sudo python3 -m pip install selenium
Requirement already satisfied: selenium in /usr/local/lib/python3.5/dist-packages Requirement already satisfied: urllib3 in /usr/lib/python3/dist-packages (from selenium)
For the script version, I cloned the repo yesterday, thus I guess I have the 1.1 version..
And the calling script is just the step 3 in the documentation: ./noip-renew.sh

@LordDarkneo,
I believe it’s something to do with the way you’ve installed the new version of python. No worries though. The fix is:

uninstall noip-renew completely
before installing again, edit setup.sh (nano setup.sh or whichever editor you prefer)
there should be a line near the top which says PYTHON=python3 change this to read PYTHON=python3.6 - this will point the script at the correct version :)
Install the script and once it’s done, type noip-renew-pi and that should run the script.

Let me know how you get on!

Thanks again for your support... I have uninstalled the app, edited the setup.sh, and started the installation once again.. And I am facing the same strange thing:
python3 is already the newest version (3.5.3-1). 0 upgraded, 0 newly installed, 0 to remove and 131 not upgraded. Reading package lists... Done Building dependency tree Reading state information... Done chromium-browser is already the newest version (72.0.3626.121-0+rpt4). 0 upgraded, 0 newly installed, 0 to remove and 131 not upgraded. Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package python3.6-pip E: Couldn't find any package by glob 'python3.6-pip' E: Couldn't find any package by regex 'python3.6-pip'
I think there's kind of an issue with my installation of Python (seems to be installed for pi, but not for the user installation the script)

@LordDarkneo - That last error is my fault. I forgot that changing the PYTHON variable to a particular version required another small adjustment to the code. So you're running as user pi, right?
Anyway, if you could edit the setup.sh script again so your PYTHON=python.3.6 (which you've done already) but also on line 49 it says $SUDO apt -y install $PYTHON-pip, we wait it to read $SUDO apt -y install python3-pip. That will get you through the installer at least, and will make sure that selenium is installed against the correct version of python/pip too.

Great! Issue solved (it seems)! At last the script connects (I was planning to sudo install python).
Thanks for your support (I am having the message  No hosts or host table rows not found , I'll check the other ticket ;)


Installer tests fail with random errors

Issue description
Current master passes installer test on Hydra but for me on two different physical machines with different configurations build fails. There's more, they fail with random errors, different each time.
Examples:
machine# error: anonymous function at /tmp/root/nix/store/8ikvwg07ly32jhwx9fnhknz3xrqgvmdf-nixos-17.03.git.183eeb3/nixos/pkgs/development/libraries/libsndfile/default.nix:1:1 called with unexpected argument ‘Carbon’, at /tmp/root/nix/store/8ikvwg07ly32jhwx9fnhknz3xrqgvmdf-nixos-17.03.git.183eeb3/nixos/lib/customisation.nix:56:12
machine# (use ‘--show-trace’ to show detailed location information)

machine# missing /nix/store/kmbrk8ggg9lxyrq06s7by9iigw0m4zr1-systemd-232/example/systemd/user/basic.target
machine# builder for ‘/nix/store/2l4j5awx03ll0kn5mjv9ijxi9dgdsyng-user-units.drv’ failed with exit code 1
machine# cannot build derivation ‘/nix/store/alivhi6kns4ks9rddcns2887pd9h7m93-etc.drv’: 1 dependencies couldn't be built
machine# building path(s) ‘/nix/store/ldgzhmmpvkgrq7wv5w5yywcwi433xhjb-users-groups.json’
machine# cannot build derivation ‘/nix/store/89cpcsf0gszg3k074a5qabib3z5xkrd5-nixos-system-nixos-17.03.git.183eeb3.drv’: 1 dependencies couldn't be built
machine# error: build of ‘/nix/store/89cpcsf0gszg3k074a5qabib3z5xkrd5-nixos-system-nixos-17.03.git.183eeb3.drv’ failed

machine# /nix/store/f4x7al7cj75qpq2fralpx2zpcw66bvjx-nix-1.11.6/bin/nix-store: error while loading shared libraries: liblzma.so.5: cannot open shared object file: No such file or directory
machine: exit status 127

machine# copy-from-other-stores.pl: error: path ‘/nix/store/yrsknywymm8w3cm94k2x1gc050mbk6j9-systemd-232-dev’ is not valid
machine# copy-from-other-stores.pl: error: path ‘/nix/store/7x3rvfr5267knix95ny0nvp1sm0w9qqa-libusb-1.0.20-dev’ is not valid
machine# copy-from-other-stores.pl: error: path ‘/nix/store/3w715phcnk0prpfqbzawn1g1s6rwxkvk-libxml2-2.9.4-dev’ is not valid
machine# copy-from-other-stores.pl: error: path ‘/nix/store/fai84p66ck5md3kbf8hqwkx0rggssha3-libxslt-1.1.29-dev’ is not valid
machine# copy-from-other-stores.pl: error: path ‘/nix/store/arlnb1fiywskba1xrdf8n4rmnqadkv1x-zlib-1.2.11-dev’ is not valid
machine# building path(s) ‘/nix/store/w3y63q62a4y99m9j51zx05acspw1wxkq-pkg-config-0.29.tar.gz’
machine# copy-from-other-stores.pl: error: path ‘/nix/store/fbcb8723p24y871cdfla0y9jli4spaxx-hook’ is not valid
machine# copy-from-other-stores.pl: error: path ‘/nix/store/vp9x3smmg0wxgsqj3zlhb1nspggjfxdc-libtool-2.4.6-lib’ is not valid
machine# copy-from-other-stores.pl: error: path ‘/nix/store/mq1310msj618b4dws4s23z6mmx80y521-cyrus-sasl-2.5.10’ is not valid

machine# downloading ‘https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.tar.gz’...
machine# error: unable to download ‘https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.tar.gz’: Couldn't resolve host name (6)
machine# builder for ‘/nix/store/bnyvm9fdz4178i26j37yd081nrn12mnp-pkg-config-0.29.tar.gz.drv’ failed with exit code 1

Related: https://github.com/NixOS/nixpkgs/pull/18689 -- both me and @domenkozar experienced this a long time ago.
Steps to reproduce

nix-build -A tests.installer.simple.x86_64-linux nixos/release.nix

Technical details

System: (NixOS: nixos-version, Ubuntu/Fedora: lsb_release -a, ...) a9584c9510771f96594b4461e9ea546a75bf59d4
Nix version: (run nix-env --version) 1.11.6
Nixpkgs version: (run nix-instantiate --eval '<nixpkgs>' -A lib.nixpkgsVersion) 183eeb3c0fdac8de3146aedaa6028b474f96db6f

Works for me, with one caveat - quite often some of the reboots done by the test take a quite a bit of time, e.g:
machine# [    0.000000] Zone ranges:
machine# [    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
machine# [    0.000000]   DMA32    [mem 0x0000000001000000-0x000000002ffddfff]
machine# [    0.000000]   Normal   empty
machine# [    0.000000] Movable zone start for each n
machine# [    0.000000] tsc: Detected 2593.994 MHz processor
machine# [   76.867607] Calibrating delay loop (skipped) preset value.. 5187.98 BogoMIPS (lpj=2593994)
machine# [   76.868478] pid_max: default: 32768 minimum: 301
machine# [   76.868987] ACPI: Core revision 20160831
machine# [   76.870146] ACPI: 1 ACPI AML tables successfully acquired and loaded
machine# [   76.870830] Security Framework initialized

That doesn't ever seem to happen on the first boot, only on subsequent boots of the same VM. IIRC I can see those in the hydra logs as well.
Re: the random failures: I have observed that to happen when nested virtualization is used.

@dezgeg,
 ~  cat /sys/module/kvm_intel/parameters/nested
N

Am I safe with this (I haven't dealt with nested virt before)?
Anyway, I agree that this feels like something kernel or hardware-related...

By nested virtualization I mean running nix-build -A tests.installer.simple.x86_64-linux nixos/release.nix in a virtual machine (in my case, something managed by VMWare VCenter)

No, nothing like this (I feared that we nest VMs somewhere inside tests).

Interesting. Maybe it could be a filesystem problem after all if the ones that cause problems don't have inodes that fit in 32-bits unlike they often do in ext4 (which is what I have).
Does this branch show funky/random behaviour on the directory listing hack I added? https://github.com/dezgeg/nixpkgs/tree/install-debug-hack

...
machine# can't open ./doit.cpp: 24
machine# can't open ./nixpkgs: 24
machine: exit status 0
error: command `sleep 1; cd $(readlink -f $(nix-instantiate --find-file nixpkgs)) && /nix/store/a2p5f0vpzfgd94rqjadkibkkrax71lbr-hack . >&2' unexpectedly succeeded at /nix/store/xw6r66wjxjplk1vidzi1rcv8r1432h3z-nixos-test-driver/lib/perl5/site_perl/Machine.pm line 352, <__ANONIO__> line 380.

24 = too many open files, which seems legit. Before a flurry of those errors it opened files successfully which also seems okay.

Hm, I think that usually it fails after first nixos-install run. Maybe if I stick that test a little bit later...

Yes, that is expected. But what I was wondering if that output is consistent (i.e. running nix-build again) gives different results and if some other weirdness is apparent (i.e. files seem to be belonging to a wrong directory or something like that).

I'm running another test right now (run hack after nixos-install) but I think nothing that caught the eye, and it seemed to be consistent too. I'll recheck.

Nope, it fails on same files and overall looks okay (I haven't checked the entire tree but...).

I have a crazy idea to parse error message from nixos-install and read all mentioned files to standard input. Will try this when get from work.

I pushed to that branch a kernel patch that I think might be a problem in the 9p client. At least it didn't break anything for me...

You, sir, are awesome :D This has actually fixed my problem! I'm still testing on the second machine but I can't reproduce this bug on the first one anymore.

Can't reproduce on both machines now. Thank you very much!

Okay, great. I will submit a proper patch to LKML and keep this open until it hits the 4.9 stable.

If it wents through review in LKML I think we want to backport it to our kernels.

I now had problems like this on master, in the installer test in particular.  It often ended called with unexpected argument and the exact error was always different.

Haven't had much response from LKML, guess time to ping again soon... https://patchwork.kernel.org/patch/9585901/ if we want to pick it to nixpkgs.

Still no upstream response, guess time for a second ping... Anyway, applied to master for now (among with yet another pile of 9p fixes) in https://github.com/NixOS/nixpkgs/commit/ed41d50e9fe3d942cfde37e84de781c096309e5b.

Hmm, one test on 17.03 started to fail reliably with
path ‘...-nixos-system-machine-17.03pre-git’ is not valid

The Hydra logs show that this started precisely after kernel updates, including 4.9.29 -> 4.9.30, but this seems to depend on the host kernel anyway – I can't reproduce the error locally (4.9.29 ATM).

I also can't reproduce that failure with 4.11.3 kernel (different NixOS machine).

Okay, great. I will submit a proper patch to LKML and keep this open until it hits the 4.9 stable.
Still no upstream response, guess time for a second ping

Still not accepted by upstream?

They are in since v4.15: https://github.com/torvalds/linux/commit/d18bee424b129aa4755268feeeb1ee16cbde6afa and backported to older stables.

Hm. but we still have the patch in nixpkgs and its application does not fail

Only for linux_mptcp_93 and linux_samus_4_12.


JLayers docstring needs update

Currently the docstring of JLayer see: https://wikunia.github.io/Javis.jl/stable/references/#Javis.@JLayer-Tuple{Expr,Int64,Int64,Any,QuoteNode,Expr}
misses the transparent inside the function arguments and I think we should write :transparent and :opaque as code
The docstring of to_layer_m should also me updated and maybe we should call it _to_layer as it is an internal method that is normally not called by the user?
Maybe you @Sov-trotter can fix this :wink:

Just want to also point out that for the example in the docstring, the object is at red_ball = Object(20:60, (args...)->object(O, "red"), Point(50,0)) might be confusing, since there is no object function defined in the example.
Maybe consider replacing object with circle or other shapes, or adding the object function into the docstring's example itself?

Yes good point. I think we might want to use JCircle when possible to also remove the explicit anonymous functions everywhere

I think we might want to use JCircle when possible to also remove the explicit anonymous functions everywhere

@Wikunia I am not sure if I can agree on that one. This would present shorthands as mainstream Javis way of defining objects which is not good as shorthands are just an easy way of representing anonymous functions.
It's like giving a mathematical formula without it's proof. :sweat_smile:

I think it makes sense to start with the anonymous functions in the tutorials as we do. However for docstrings it should be preferably be all possible without defining specific functions in each of them. Another option would be to use JShape to be more general as one doesn't really need the anonymous function anymore when one can use JShape.


Update to use the simplified JSON building process on resin-artik

This implements resin-os/resin-yocto-scripts#31
Signed-off-by: Eugene Mirotin<EMAIL_ADDRESS>@agherzan @floion

LGTM


Changed way of getting list of available pokemon

Hi! I thought this was better, so I tried.
This PR change the list of available pokemon from backgrounds folder to pokemon.yml.
Please excuse my poor English.

Hi, thank you very much for spending time with this!
I'm a bit away from the project but your PR is very welcome.


Typo in property name MatchesPostion

" MatchesPostion" should be MatchesPosition (or MatchPosition?) .
Defined in SearchResult and PaginatedSearchResult.

Hello @leotohill thank you for the report.
For anyone seeing this, feel free to update the repo and make a PR ❤


Update MMM-Tools.js

danish line insert "da: "translations/da.json","

push to master ;)
thx for your purpose

You welcome
Assassins from you Forum here 😉


Add chmod and related definitions

fixes #47
Only a draft, criticism is welcome.

Here's an idea: if we return the updated permissions, they could be examined by calling chmod id. What do you think?

For consistency with Unix, I'd probably leave that for a separate stat command

chmod has a -v option that allows me to see if the mode was changed, what it was and what it became. So it'd make sense to return something.

Oh, I didn't realize that chmod could do that!  In that case, that makes a lot of sense to return the permissions from chmod

Any ideas to further improve the definition? Or can it be merged?

Looks good!  Thanks for writing that up!

One last thing before I release this.  I was thinking of changing chmod slightly to not return the Bool value indicating whether or not the value was changed.  My reasoning is that (A) chmod doesn't actually tell whether the file changed, (B) the user can easily do this test themselves just by using (/=), and (C) the Bool is sort of weakly typed; you don't really know what it means unless you read the documentation.

I don't have a strong opinion on the topic, but here are some thoughts.
(A) Agreed, but it's strictly an improvement.
(B) That would require more IO operations, thus hurt performance. I don't have any benchmarks, but it was my main motivation for adding this Bool value. Alternatively, we could return both old and new permissions (but it doesn't fit what the user could expect from chmod).
(C) Agreed, but that's probably better than a specialized type until we get a proper Boolish typeclass.
So if you don't care that in some rare cases users would be forced to perform more IO than necessary (hurting the performance), feel free to remove this Bool value.
Possible solution: define chmod' that returns the Bool value and chmod that doesn't.

Given that chmod -v returns both old and new permissions, I think we should just change that to (Permissions, Permissions).

Oh yeah, I forgot that the user wouldn't have the old permissions.  Is there any Unix utility equivalent to Directory.getPermissions that we could add?  It seems like it would be more straightforward for the user to get the old permissions directly instead of indirectly through chmod

I suppose stat is used for that purpose.

Then how about chmod just returns a single Permissions for now and we save the retrieval of the old permissions for a future stat function?

I'm fine with it, but there are still two counter-arguments:

chmod -v returns both old and new permissions, so should we.
The chmod function performs Directory.getPermissions, which is a disk IO operation. What if it's a network file system so each operation has a big cost? If perform IO, we better not throw the result away.

So I'd rather return (old, new) :: (Permissions, Permission), but I don't insist.

What if we were to deviate from the Unix model slightly and provide getmod and setmod in addition to chmod?
getmod :: IO Permissions
setmod :: Permissions -> IO Permissions
chmod  :: (Permissions -> Permissions) -> IO Permissions

Then if the user wanted to update permissions while retrieving the old permissions using minimal IO operations, they would write:
oldPerm <- getmod
newPerm <- setmod (rwo oldPerm)

Having a getter and setter would also be useful when the modification function is not pure, as chmod requires.

@Gabriel439 Yes, this solution seems to address all raised concerns.

Alright I added getmod and setmod and uploaded the most recent changes to Hackage (including the MonadIO generalizations and a corresponding section in the tutorial)


tub nicer error on missing tap

Currently what happens when you try to run $ tub test/ in a module missing the local tap install is a ENOENT throw:
$ tub test/

events.js:82
      throw er; // Unhandled 'error' event
            ^
Error: spawn ENOENT
    at exports._errnoException (util.js:683:11)
    at Process.ChildProcess._handle.onexit (child_process.js:861:32)
    at child_process.js:1009:20
    at process._tickCallback (node.js:664:11)
    at Function.Module.runMain (module.js:492:11)
    at startup (node.js:123:16)
    at node.js:1128:3

Should probably make this nicer.

No longer relevant after #4 is closed.


[SUPPORT] FLINK Could not load table option properties .hoodie/.aux/table_option.properties

Flink 1.14.4
Hudi 0.11.0
create table use flink sql
//...
tableEnv.executeSql("create table t1(uuid varchar(20),name varchar(10),age int,ts timestamp(3),`partition` varchar(20)) PARTITIONED BY (`partition`) with ('connector' = 'hudi','path' = '/tmp/hudi-demo/dev')")

table_option.properties not generated!!!
when read the table use HoodieCatalog throw an exception
val catalogOptions = new java.util.HashMap[String, String]()
  catalogOptions.put(CATALOG_PATH.key, "/tmp/hudi-demo")
  // catalogOptions.put(DEFAULT_DATABASE.key, "dev")
  val hoodieCatalog: HoodieCatalog = new HoodieCatalog("hudi", Configuration.fromMap(catalogOptions))
  hoodieCatalog.open

  tableEnv.registerCatalog("hudi", hoodieCatalog)
  tableEnv.useCatalog("hudi")
  tableEnv.useDatabase("dev")

  val tablePath = new ObjectPath("dev", "t1")  // throw an exception <------------------------

Exception in thread "main" org.apache.hudi.exception.HoodieIOException: Could not load table option properties from hdfs://nameservice1/hoodie/data/dev/ods_equipment_data/.hoodie/.aux/table_option.properties

This is a know issue, only the table created from flink HoodieCatalog would generates the table_option.properties file, which is a special aux file for the catalog.
We are planning to re-design the catalog to interact with the HMS directly.


Add a new split way in split_v_op.cc

Now tensorflow has two way to split tensor.

Split tensor by single thread.
Split tensor by multi-thread.
The current data split method is not very uniform, like:

We should add a new parallel split way. like:

example:
import tensorflow as tf
import time
sess_config = tf.ConfigProto(allow_soft_placement=False,
                             log_device_placement=True)

count = 3
keys = tf.random_uniform(shape=[4800, 107, 9], dtype=tf.int64, maxval=int(1e8))
arr = []
for i in range(0, 30):
  arr.append(1)
arr.append(77)
ret = tf.split(keys, arr, axis=1)

sess = tf.Session(config = sess_config)

start = time.time()
for i in range(0, 10):
    _ = sess.run(ret)
print('split_v seconds: %f' % (time.time() - start))

performance: 0.308505s vs 0.188766s

I am happy to contribute my code

The issue will move to closed status once the PR is merged.

Moving this to closed status as pr is merged.


Update metadata in 'preview-vscontainers'

Update the metadata in YAML file to accommodate recent breaking changes to the interactive tutorial format.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.publish.config.json
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-add-docker-files.png
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-add-platform.png
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-docker-build.png
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-port.png
:white_check_mark:Succeeded

docs-ref-conceptual/node-vscode-deployment-container.yml
:white_check_mark:Succeeded

docs-ref-conceptual/node-vscode-deployment-zip.yml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.publish.config.json
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-add-docker-files.png
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-add-platform.png
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-docker-build.png
:white_check_mark:Succeeded

docs-ref-conceptual/media/vscode-deployment/vscode-deployment-port.png
:white_check_mark:Succeeded

docs-ref-conceptual/node-vscode-deployment-container.yml
:white_check_mark:Succeeded

docs-ref-conceptual/node-vscode-deployment-zip.yml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


[EPIC] Gravitino event listener bus system

Describe the proposal
Gravitino event listener bus system allows users to add pluggable hooks to changing events, like record audit logs, double write to different catalogs in the Iceberg REST server, etc.  and we need to support async and sync mode for different scene
Task list

[x] #2413
[x] #2766
[x] #2767
[x] #2769

@FANNG1 Cool. can this help to collect the audit log as I mentioned in https://github.com/datastrato/gravitino/issues/2061?

yes, saving audit log is one of the design target.

@FANNG1 can you please add all the subtasks to the task list above.


create full tensor extraction script

[x] create full tensor extraction scripts
[x] add documentation
[x] add test as needed

No tests were added since it is mostly revolving around file i/o and there is a proper execption handling.


Outlet icon back to switch after latest update

After latest update the outlet types that I had turned back to showing the switch icon and I can't change it from the home app to outlet again.
Thanks!

Same for me.

Sorry! Fixed in 3.0.0


fix(rum): instrument options page

sampleRUM currently fails due to the missing sidekick object.

:tada: This PR is included in version 6.47.2 :tada:
The release is available on:

GitHub release
v6.47.2

Your semantic-release bot :package::rocket:


De-duplicate chooseWorker function in dynamic pools

PR Checklist

[x] Please add a description of your changes.
[ ] We need your changes to come with unit tests in order to keep this project in quality and easy to maintain.
[x] Please add a link to the open issue or task that this pull request will resolve.
[ ] Add a note to the changelog to indicate the change.

Does this PR introduce a breaking change?

[ ] Yes
[x] No

If yes please indicate it and migration info into the CHANGELOG.md file.

closes #122
This PR changes the way chooseWorker in dynamic pools is implemented via the usage of registerWorkerMessageListener

@pioardi Current solution is kinda working, but we have 5 @ts-expect-error in it... :slightly_frowning_face:
That's not really TS friendly
@jerome-benoit Do you know some ticks here?

Please retry analysis of this Pull-Request directly on SonarCloud.

@pioardi I think I cannot do this on my own :slightly_frowning_face:

@jerome-benoit Do you know some tricks here?

I will have a look next week.
Be patient, I will have a lot of works to do next week regarding my paid work.

I will have a look next week.
Be patient, I will have a lot of works to do next week regarding my paid work.

Yes, I have to pay attention to it a bit.
Currently I get also paid for working on OpenSource if it's helpful for my company and I don't have other heavy tasks to do.
And we rely on poolifier with our website crawler! Improving this library just improve our own crawler. That's why I'm working so hard on this project :smiley: :rocket:
Beside that, it is fun to work with you and pioardi :slightly_smiling_face:

I will have a look next week.
Be patient, I will have a lot of works to do next week regarding my paid work.

Yes, I have to pay attention to it a bit.
Currently I get also paid for working on OpenSource if it's helpful for my company and I don't have other heavy tasks to do.

I'm working on a FOSS SAP project, but FOSS or not, it's time consuming ;)
I will ask if SAP have a similar policy regarding work on external FOSS projects used inside SAP softwares.

Beside that, it is fun to work with you and pioardi 🙂

:-)

@jerome-benoit  @Shinigami92  we are doing a really nice and fun work on this project :) I unfortunately do not have time during my paid job to look to much into this particular project but I am doing my best to follow any change, I am happy that we are creating a community, projects with great community are the ones that has more long term success.
Said that we could look for companies that wants to sponsor this, coming soon we can put our project on https://opencollective.com or something like that and get funds


Fix husky setup affecting installs

Postinstall runs when consumers run npm install as well, which is only meant for development.

#392


Flame.util.initialDimensions not found anymore)

hi how should i replace functions ?1.0.0-releasecandidate.12
Current bug behaviour

after update this function is not found any more
Expected behaviour

Steps to reproduce
upgrade to version
Flutter doctor output

Flame.util.initialDimensions
  crown = Sprite('c'),

The getter 'util' isn't defined for the type 'Flame'.
Try importing the library that defines 'util', correcting the name to the name of an existing getter, or defining a getter or field named 'util'.

The argument type 'String' can't be assigned to the parameter type 'Image'. # More environment information

This function don't exists anymore, you can use the size attribute from the Game class instead


api:events: add message field to inform users what is happening

Right now all fields in Tetragon events are generated from code,
the only exception is the policy_name which does not inform users
what is going on from a high perspective.
This optional "message" field if present in Tracing Policies will be
copied and printed in the final generated event.
We want to inform users what is really happening, why this event was
generated? it is not obvious to non technical users.
An optional abstracted could be easy to read something like:
"message": "Kernel module requested and is being loaded automatically"
"message": "Kernel module is being loaded"
As we want to capture new users, the policy_name is not enough and
strictly speaking it has its own purpose, using abstracted messages
or logs appeals to more users.
The down side of this is our generated events may grow in size, thus
the new "message" field will be chopped to 256 characters only.
In future if the event size is really a problem, we can start shipping
default field filters, that hide these fields from the source before
even constructing the event.
This was split from https://github.com/cilium/tetragon/pull/1921 to get it merged

LGTM once the static checks are all okay.

Thanks @kevsecurity , I ended up adding code and properly escaping the field, PTAL again and if it is green I merge it

we can start shipping default field filters

Hmm, I think it will start to be necessary. I suppose the message field is useful for alert use-cases, when TracingPolicy is effectively an alert definition. Is this the reasoning behind it? For users who are treating TracingPolicies more like a logging/audit configuration, this field seems to be effectively duplicating the policy name (as both are provided by the user).

we can start shipping default field filters

Hmm, I think it will start to be necessary. I suppose the message field is useful for alert use-cases, when TracingPolicy is

The message field filters could be that, but I was referring in case users complain about events length then we can reduce it with fields filters. Now I'm not aware if a user already complained here about this. I'm seeing it from the other side, be user friendly first get them to understand what's happening use the policies first, then we can deal with rest.

effectively an alert definition. Is this the reasoning behind it? For users who are treating TracingPolicies more like a logging/audit > configuration, this field seems to be effectively duplicating the policy name (as both are provided by the user).

Be more user friendly, there is only one tracing policy name by multiple hooks function names and both don't really tell users what's happening. Policy name is another thing, you can't express thing with it.
The PR has this example which are totally two different things from security perspective :
"message": "Kernel module requested and is being loaded automatically"
"message": "Kernel module is being loaded"

Be more user friendly, there is only one tracing policy name by multiple hooks function names and both don't really tell users what's happening. Policy name is another thing, you can't express thing with it.

This makes sense, thanks for the answer.


It's always logging, even when IDE is in minimized

I tried this in Phpstorm and Sublime, It's always logging and increasing the working time, even when I'm not in the IDE, and it's minimized

Are other plugins installed in Phpstorm and Sublime besides WakaTime?
If you turn on debug mode, how often and what file is being logged to your ~/.wakatime.log file and Sublime Console?
How to turn on Debug Mode

I removed all sublime plugins.
I have only package control and WakaTime.
At 10:16 I opened sublime and added 1 line to a file.
It added 5 minutes immediately after opening sublime.
Then I minimized it for 5 minutes ...
Then I back to sublime and removed that line, and it added 5 minutes again!

Try changing your Timeout setting in your Preferences to 5 minutes:
https://wakatime.com/settings/preferences
Here's more info about the way WakaTime tracks coding activity using Heartbeats:
https://wakatime.com/faq#afk


Installation issue

Problem Encountered
When I try to install this plugin using this command shopify plugins install plugin-theme-component I am getting this error Error: plugin-theme-component does not exist in the registry.
Context (please complete the following information):
I am using Windows 11

Collection Repository: [e.g. components]
CLI Version: 3.70.0
Node Version: 23.3.0
NPM Version: 10.9.0

To Reproduce

Open terminal
Run command ``shopify plugins install plugin-theme-component`
See error

I just realized you're using the default Windows command prompt, not Ubuntu. We don't currently support Windows out of the box, in which case I would recommend you install the Windows Subsystem for Linux (WSL). Let me know how it goes :)


WorkerException: error in Web Worker #976509285: /workers/solver_worker.dart.js: error / [object Event]

I got the dart js command to run this time. Turns out, the SDK (that we made) that the solver classes depend on was depending on dart:ui classes for unrelated sections of the api.
I guess the dart js command isn't smart enough to tree-shake all the code that isn't being used by our api accessors.
Point is, I made a copy of the sdk and stripped it down heavely to only bare-minimum data without relying on any dart:ui or flutter code, and it worked. I compiled the js file and moved it into the web folder, but it's crashing and the error message is not useful unfortunately.
Maybe it's because it's a js file compiled from a completely separate and incompatible copy of the sdk, but in any case, an error message would go a long way.
Here's the ouput after running the project in a chrome browser:
WorkerException: error in Web Worker #976509285: /workers/solver_worker.dart.js: error / [object Event]
dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 906:28                get current
packages/squadron/src/worker_exception.dart 7:55                                  new
packages/squadron/src/browser/channel.dart 223:11                                 <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37230:58                              <fn>
dart-sdk/lib/async/zone.dart 1444:13                                              _rootRunUnary
dart-sdk/lib/async/zone.dart 1335:19                                              runUnary
dart-sdk/lib/async/zone.dart 1244:7                                               runUnaryGuarded
dart-sdk/lib/async/zone.dart 1281:26                                              <fn>

It's almost definitely because its from a separate project.  🤞 But better errors would go a long way

I split off our API and now all the files ONLY depend on dart and the dart js commands works FLAWLESSLY.
I am still, however, getting the EXACT same error. The error message suggests creating new workers is failing for some reason. I'm assuming it's unable to locate the file?

Ah, the issue was this:

because the generated file goes into the root of the /web folder, not /web/workers.
Despite this, now I'm getting a new error
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49      throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 84:3        castError
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 452:10  cast
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart 367:9        as
packages/squadron/src/browser/channel.dart 63:18                                  <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37230:58                              <fn>
dart-sdk/lib/async/zone.dart 1444:13                                              _rootRunUnary
dart-sdk/lib/async/zone.dart 1335:19                                              runUnary
dart-sdk/lib/async/zone.dart 1244:7                                               runUnaryGuarded
dart-sdk/lib/async/zone.dart 1281:26                                              <fn>

Hi Saad, I'll have a look, will keep you posted. Could you post the definition of the service interface + service implementation? It looks like something (the ServiceImpl?) is returning a Map where the expected result would be a Future. Or maybe an 'async' is missing on one side or unexpected on the other?

That would be very unusual since the vm (macos window) app runs perfectly, why would the worker behave with a different exception like this?
In any case, here is the ServiceImpl:
import 'dart:async';

import 'package:squadron/squadron.dart';

import '../position_manager_thread.dart';

abstract class SolverService {
  FutureOr<Map<String, dynamic>> initRoot(Map<String, dynamic> rootNodeJson);

  FutureOr<Map<String, dynamic>> performLayout(
    Set<Map<String, dynamic>> nodesReference,
    Set<String> createdNodes,
    Set<String> removedNodes,
    Set<String> adoptedNodes,
    Set<String> droppedNodes,
    Set<String> changedNodes,
  );

  static const cmdPerformLayout = 1;
  static const cmdInitRoot = 2;
}

class SolverServiceImpl implements SolverService, WorkerService {
  final PositionManagerThread positionManager =
      PositionManagerThread(notifier: (pos) => print(pos));

  @override
  FutureOr<Map<String, dynamic>> initRoot(Map<String, dynamic> rootNodeJson) =>
      positionManager.initRoot(rootNodeJson).toJson();

  @override
  FutureOr<Map<String, dynamic>> performLayout(
    Set<Map<String, dynamic>> nodesReference,
    Set<String> createdNodes,
    Set<String> removedNodes,
    Set<String> adoptedNodes,
    Set<String> droppedNodes,
    Set<String> changedNodes,
  ) async {
    return positionManager
        .performLayout(
          nodesReference,
          createdNodes,
          removedNodes,
          adoptedNodes,
          droppedNodes,
          changedNodes,
        )
        .toJson();
  }

  @override
  late final Map<int, CommandHandler> operations = {
    SolverService.cmdPerformLayout: (WorkerRequest r) => performLayout(
          rebuildSet<Map<String, dynamic>>(r.args[0]),
          rebuildSet<String>(r.args[1]),
          rebuildSet<String>(r.args[2]),
          rebuildSet<String>(r.args[3]),
          rebuildSet<String>(r.args[4]),
          rebuildSet<String>(r.args[5]),
        ),
    SolverService.cmdInitRoot: (WorkerRequest r) => initRoot(
          rebuildMap(r.args[0]),
        ),
  };

  static Set<T> rebuildSet<T>(List items) => items.cast<T>().toSet();

  static Map<String, dynamic> rebuildMap(Map dict) =>
      dict.map((key, value) => MapEntry<String, dynamic>(key, value));

  static Set<Map<String, dynamic>> rebuildMapSet(List<Map> items) => items
      .map((item) => rebuildMap(item))
      .cast<Map<String, dynamic>>()
      .toSet();
}

pool
// this is a helper file to expose Squadron workers and worker pools as a SolverService

import 'dart:async';

import 'package:squadron/squadron.dart';

import 'solver_service.dart';

// Implementation of SolverService as a Squadron worker
class SolverWorker extends Worker implements SolverService {
  SolverWorker(dynamic entryPoint, {String? id, List args = const []})
      : super(entryPoint, id: id, args: args);

  @override
  FutureOr<Map<String, dynamic>> initRoot(Map<String, dynamic> rootNodeJson) {
    return send(
      SolverService.cmdInitRoot,
      [
        rootNodeJson,
      ],
    );
  }

  @override
  FutureOr<Map<String, dynamic>> performLayout(
    Set<Map<String, dynamic>> nodes,
    Set<String> createdNodes,
    Set<String> removedNodes,
    Set<String> adoptedNodes,
    Set<String> droppedNodes,
    Set<String> changedNodes,
  ) {
    return send(
      SolverService.cmdPerformLayout,
      [
        nodes.toList(),
        createdNodes.toList(),
        removedNodes.toList(),
        adoptedNodes.toList(),
        droppedNodes.toList(),
        changedNodes.toList(),
      ],
    );
  }
}

and the browser activator + worker
import '../solver_worker_pool.dart' show SolverWorker;

SolverWorker createWorker() => SolverWorker('/solver_worker.dart.js');

import 'package:squadron/squadron_service.dart';

import '../solver_service.dart';

void main() => run((startRequest) => SolverServiceImpl());

I see your point but maybe there's a difference in Squadron's behavior between native and browser. Typically the Channel implementation is different. The native version can maybe cope with the situation but not the browser? I'll check my code.
In the meantime I see a difference between initRoot and performLayout in SolverServiceImpl: both return a FutureOr<Map>, both results are produced by a call to toJson(), but one is marked async and not the other. FutureOr<T> is a strange beast in Dart, analogous to a TypeScript union type, meaning that it can be a T or a Future<T>. I try to handle this situation in the code but maybe something slipped through... From my experience I believe FutureOr is good to use for abstract methods where you may accept sync or async implementations. But I try to avoid it for concrete implementations and prefer to use the appropriate T or Future.
What is toJson()? I suspect it's a sync method? Can you try this in SolverServiceImpl:
   @override
   Map<String, dynamic> initRoot(Map<String, dynamic> rootNodeJson) =>
      positionManager.initRoot(rootNodeJson).toJson();

   @override
   Map<String, dynamic> performLayout( ... ) /* no async */ =>
      positionManager.performLayout( ... ).toJson();

On my side I will investigate why it works on native but not on browser.

You are totally correct that I'm missing an async! Incredible eye you have!
I also hate FutureOr as it is ambiguous while I prefer strongly and explicitly typed code.
In any case, I removed the async from performLayout because you are correct, it is a synchronous function adn the whole point is to make it asynchronous via isolates/workers.
Unfortunately, it still throws an error
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49      throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 84:3        castError
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 452:10  cast
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart 367:9        as
packages/squadron/src/browser/channel.dart 63:18                                  <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37277:58                              <fn>
dart-sdk/lib/async/zone.dart 1442:13                                              _rootRunUnary
dart-sdk/lib/async/zone.dart 1335:19                                              runUnary
dart-sdk/lib/async/zone.dart 1244:7                                               runUnaryGuarded
dart-sdk/lib/async/zone.dart 1281:26                                              <fn>

I'm going to do something you suggested previously in my last issue and that's to remove the generic types.

Yes, Isolates can be forgiving as it will accept strong types when code runs in the same process. I believe JavaScript is not :-(

Just thinking, did you recompile the Web worker after removing the async? Any change that impacts code running in a Web worker requires rebuilding it.

I did, yes. Still need some time to remove generics though and I heavily suspect it's the issue because the error message seems to be a casting error

Seems to be working now!! I'll report if I find any new issues :)

Great news!
FYI the latest version of Squadron includes logging capabilities to help you debug worker code. It can be difficult with JavaScrip workers because they are not connected to the Dart debugger.
Typically you would do this:
void main() => run((startRequest) {
   Squadron.logLevel = SquadronLogLevel.ALL; // optional, the log level set in your main app will be applied in workers by default
   Squadron.logger = ConsoleSquadronLogger(); // logs to browser console
   return SolverServiceImpl();
});

And in your service code you can then use Squadron.info(), Squadron.warning(), ect. to see what's going on.
In you main app, set the log level as appropriate, it will be passed on to the workers when they start up. In you main app and in Isolate workers, you can use DevSquadronLogger instead of ConsoleSquadronLogger.

Excellent to know!! Add this to the main pub page :) I'll be using this for sure.
You should add everything we've learned in the best issues into the pub page actually!

Will sure do! And don't hesitate to like the package on pub.dev ;-) or github... or both!!


Tiered storage migration is slow and fails frequently

Describe the bug
I've been using tiered migration feature since it was added in 2.28, but after updating to 2.35 and later to 2.39 my setup experience problems with migration. It is usually really slow now and often ends up with failure.
I'm using 5GB volumes with 010 replication. Volumes are copied approximately 5 minutes per volume (which is too slow for a 1Gbps network) and often ends up like this:
master: localhost:9333 filer: localhost:8888
I0413 15:05:19 15470 masterclient.go:126] redirected to leader <IP_ADDRESS>:9333
> > collect ssd volumes quiet for: 1 seconds
tier move volumes: [6326 6299 6323 6348 6329 6328 6304 6302 6298 6317]
moving volume 6326 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6326 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6326 on <IP_ADDRESS>:8080 ...
2021/04/13 15:05:19 copying volume 6326 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6326: move volume 6326 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6326 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unknown desc = failed to copy /var/lib/weed/volume/offline-photo-2021-04-07_6326.dat file: receiving /var/lib/weed/volume/offline-photo-2021-04-07_6326.dat: rpc error: code = Unavailable desc = transport is closing
moving volume 6299 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6299 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6299 on <IP_ADDRESS>:8080 ...
2021/04/13 15:11:06 copying volume 6299 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6299: move volume 6299 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6299 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unknown desc = failed to copy /var/lib/weed/volume/offline-photo-2021-04-07_6299.dat file: receiving /var/lib/weed/volume/offline-photo-2021-04-07_6299.dat: rpc error: code = Unavailable desc = transport is closing
moving volume 6323 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6323 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6323 on <IP_ADDRESS>:8080 ...
2021/04/13 15:16:32 copying volume 6323 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6323: move volume 6323 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6323 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = transport is closing
moving volume 6348 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6348 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6348 on <IP_ADDRESS>:8080 ...
2021/04/13 15:22:41 copying volume 6348 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6348: move volume 6348 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6348 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = transport is closing
moving volume 6329 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6329 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6329 on <IP_ADDRESS>:8080 ...
2021/04/13 15:28:24 copying volume 6329 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6329: move volume 6329 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6329 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = transport is closing
moving volume 6328 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6328 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6328 on <IP_ADDRESS>:8080 ...
2021/04/13 15:33:51 copying volume 6328 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6328: move volume 6328 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6328 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = timed out waiting for server handshake
moving volume 6304 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6304 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6304 on <IP_ADDRESS>:8080 ...
2021/04/13 15:34:11 copying volume 6304 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6304: move volume 6304 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6304 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = timed out waiting for server handshake
moving volume 6302 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6302 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6302 on <IP_ADDRESS>:8080 ...
2021/04/13 15:34:11 copying volume 6302 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6302: move volume 6302 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6302 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = timed out waiting for server handshake
moving volume 6298 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6298 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6298 on <IP_ADDRESS>:8080 ...
2021/04/13 15:34:11 copying volume 6298 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6298: move volume 6298 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6298 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = timed out waiting for server handshake
moving volume 6317 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080 with disk type hdd ...
markVolumeReadonly 6317 on <IP_ADDRESS>:8080 ...
markVolumeReadonly 6317 on <IP_ADDRESS>:8080 ...
2021/04/13 15:34:11 copying volume 6317 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080
tier move volume 6317: move volume 6317 <IP_ADDRESS>:8080 => <IP_ADDRESS>:8080 : copy volume 6317 from <IP_ADDRESS>:8080 to <IP_ADDRESS>:8080: rpc error: code = Unavailable desc = timed out waiting for server handshake

<IP_ADDRESS>  and <IP_ADDRESS> are NVMe SSD servers, <IP_ADDRESS> has plane ol' HDDs.
On <IP_ADDRESS> logs aren't very helpful:
Apr 13 15:11:06 wv-offline-02 weed[13833]: I0413 15:11:06 13833 volume_grpc_client_to_master.go:208] Volume Server Failed to talk with master <IP_ADDRESS>:9333: EOF
Apr 13 15:11:06 wv-offline-02 weed[13833]: I0413 15:11:06 13833 volume_grpc_client_to_master.go:76] heartbeat error: EOF
Apr 13 15:11:13 wv-offline-02 weed[13833]: I0413 15:11:13 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333
Apr 13 15:11:17 wv-offline-02 weed[13833]: I0413 15:11:15 13833 volume_grpc_client_to_master.go:135] Volume Server found a new master newLeader: <IP_ADDRESS>:9333 instead of <IP_ADDRESS>:9333
Apr 13 15:11:28 wv-offline-02 weed[13833]: I0413 15:11:20 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333
Apr 13 15:16:33 wv-offline-02 weed[13833]: I0413 15:16:33 13833 volume_grpc_client_to_master.go:208] Volume Server Failed to talk with master <IP_ADDRESS>:9333: EOF
Apr 13 15:16:33 wv-offline-02 weed[13833]: I0413 15:16:33 13833 volume_grpc_client_to_master.go:76] heartbeat error: EOF
Apr 13 15:16:39 wv-offline-02 weed[13833]: I0413 15:16:39 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333
Apr 13 15:23:18 wv-offline-02 weed[13833]: I0413 15:23:17 13833 volume_grpc_client_to_master.go:208] Volume Server Failed to talk with master <IP_ADDRESS>:9333: EOF
Apr 13 15:23:18 wv-offline-02 weed[13833]: I0413 15:23:18 13833 volume_grpc_client_to_master.go:76] heartbeat error: EOF
Apr 13 15:23:27 wv-offline-02 weed[13833]: I0413 15:23:27 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333
Apr 13 15:23:30 wv-offline-02 weed[13833]: I0413 15:23:30 13833 volume_grpc_client_to_master.go:135] Volume Server found a new master newLeader: <IP_ADDRESS>:9333 instead of <IP_ADDRESS>:9333
Apr 13 15:23:34 wv-offline-02 weed[13833]: I0413 15:23:34 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333
Apr 13 15:28:38 wv-offline-02 weed[13833]: I0413 15:28:38 13833 volume_grpc_client_to_master.go:208] Volume Server Failed to talk with master <IP_ADDRESS>:9333: EOF
Apr 13 15:28:38 wv-offline-02 weed[13833]: I0413 15:28:38 13833 volume_grpc_client_to_master.go:76] heartbeat error: EOF
Apr 13 15:28:44 wv-offline-02 weed[13833]: I0413 15:28:44 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333
Apr 13 15:34:30 wv-offline-02 weed[13833]: I0413 15:34:30 13833 volume_grpc_client_to_master.go:208] Volume Server Failed to talk with master <IP_ADDRESS>:9333: EOF
Apr 13 15:34:30 wv-offline-02 weed[13833]: I0413 15:34:30 13833 volume_grpc_client_to_master.go:76] heartbeat error: EOF
Apr 13 15:34:36 wv-offline-02 weed[13833]: I0413 15:34:36 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333
Apr 13 15:34:37 wv-offline-02 weed[13833]: I0413 15:34:37 13833 volume_grpc_client_to_master.go:135] Volume Server found a new master newLeader: <IP_ADDRESS>:9333 instead of <IP_ADDRESS>:9333
Apr 13 15:34:40 wv-offline-02 weed[13833]: I0413 15:34:40 13833 volume_grpc_client_to_master.go:114] Heartbeat to: <IP_ADDRESS>:9333

On the current leader master it looks like the destination volume server is considered dead and some point and got readded.
Apr 13 15:10:55 wm-offline-01 weed[32384]: I0413 15:10:55 32384 topology_event_handling.go:65] Removing Volume 2157 from the dead volume server <IP_ADDRESS>:8080
Apr 13 15:10:55 wm-offline-01 weed[32384]: I0413 15:10:55 32384 volume_layout.go:369] Volume 2157 has 1 replica, less than required 2
Apr 13 15:10:55 wm-offline-01 weed[32384]: I0413 15:10:55 32384 volume_layout.go:343] Volume 2157 becomes unwritable
Apr 13 15:10:55 wm-offline-01 weed[32384]: I0413 15:10:55 32384 topology_event_handling.go:65] Removing Volume 4979 from the dead volume server <IP_ADDRESS>:8080
Apr 13 15:10:55 wm-offline-01 weed[32384]: I0413 15:10:55 32384 volume_layout.go:369] Volume 4979 has 1 replica, less than required 2
Apr 13 15:10:55 wm-offline-01 weed[32384]: I0413 15:10:55 32384 node.go:234] topo:dc1:sx001 removes <IP_ADDRESS>:8080
Apr 13 15:10:55 wm-offline-01 weed[32384]: I0413 15:10:55 32384 master_grpc_server.go:29] unregister disconnected volume server <IP_ADDRESS>:8080
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 node.go:222] topo:dc1:sx001 adds child <IP_ADDRESS>:8080
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 node.go:222] topo:dc1:sx001:<IP_ADDRESS>:8080 adds child
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 master_grpc_server.go:71] added volume server <IP_ADDRESS>:8080
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 volume_layout.go:355] Volume 2367 becomes writable
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 volume_layout.go:355] Volume 4718 becomes writable
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 volume_layout.go:355] Volume 1772 becomes writable
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 volume_layout.go:355] Volume 637 becomes writable
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 volume_layout.go:355] Volume 4609 becomes writable
Apr 13 15:11:33 wm-offline-01 weed[32384]: I0413 15:11:33 32384 volume_layout.go:355] Volume 108 becomes writable

Also I've noticed that volume.fix.replication is also MUCH slower than it was and also often ends with failure. Everything was much faster and did work on 2.28. So it must be some kind of new option I've missed or something like that?
System Setup

OS version: Debian 10.9
output of weed version: version 30GB 2.39 742ab1e linux amd64
if using filer, show the content of filer.toml:

[leveldb2]
# local on disk, mostly for simple single-machine setup, fairly scalable
# faster than previous leveldb, recommended.
enabled = true
dir = "/var/lib/weed/filer"                                       # directory to store level db files

There seems no change related to this feature. Possible to do a binary search to locate the first version with the slowness?
wv-offline-02 seems disconnecting from the masters about every 5 minutes. Was it happening only when volume is moving? How was the resource usage?

I could try previous versions, if they are compatible between each other. Probably something happened between 2.28 and 2.35.

Was it happening only when volume is moving? How was the resource usage?
Yup, otherwise everything looks stable. load average: 5.23, 4.83, 3.06, not a huge deal for an 8 core server...

should be safe to change to any version.

So, I have played around with different versions. Looks like seaweedfs by itself wasn't responsible for slowdowns. The main reason appears to be swapping on volume server, where swap was on the same drive as the data. I have disabled swap completely and now replication and migrations are blazing fast again. But sometimes cause weed to OOM on some volume servers.
However, while playing with versions and migrations I was faced a nasty bug which caused me data loss.

When it is fast, what is the copying speed?

~70 MB/s


[Add] Proper title and description to all routes SEO focused

Proper title and description to all routes It may improve the user experience
eg:-

http://localhost:3000/ - not valid title and description
http://localhost:3000/dashboard - same not valid title
remaining pages...

The title should be "Dashboard"

@ompharate assign me

can you help me with this:- authMiddleware' is deprecated.ts(6385)
authMiddleware.d.ts(85, 4): The declaration was marked as deprecated here.
this causing compilation error and doesn't display the page.

@DeadpoolX7  have you set up the .env file correctly?

Unassign me,


Removed abandoned laminas/laminas-mime

Fix https://github.com/hyperf/hyperf/issues/7171

Missing update CHANGELOG.md.

+1 can this be merged please 🙏
Blocks upgrading laravel-hyperf project to PHP 8.4

+1 can this be merged please 🙏
Blocks upgrading laravel-hyperf project to PHP 8.4

@limingxinleo


Mr. N. Gary Rooke, who is not a member, is being captured as Mr. N

See CREC-2010-06-10-pt1-PgE1074-3.xml

It appears the regex is counting the period (.) as a stop.


Add Bubble Tea UI with two viewports to GitOps Run

Closes #2933
WIP

Closed as put on hold, indefinitely.
Please do not delete the PR branch, it contains the latest Bubble Tea CLI UI. We may need it in the future.


Add deprecated field to ContainerService GetAccessProfile 2020/04/01 API swagger

Customers are expected to use ListClusterAdminCredentials / ListClusterUserCredentials API instead. There are two different API for cluster user/admin role.
ListClusterAdminCredentials - https://docs.microsoft.com/en-us/rest/api/aks/managedclusters/listclusteradmincredentials
ListClusterUserCredentials - https://docs.microsoft.com/en-us/rest/api/aks/managedclusters/listclusterusercredentials
Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[x] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

/azp run automation - sdk

Can one of the admins verify this patch?

/azp run automation - sdk

Signing off from ARM side.

@yungezz can you please help merge the PR? Let me know if there's anything else blocking it.


Trouble connecting to Influx

Hey, I recently set up an instance of InfluxDB on my local network. I'm trying to connect but Influx isn't receiving any data. Do you have an example of a configuration that works? For example, I'm not sure if server url requires http:// or not, among other.
My database is able to be pinged with a curl my.local.ip/ping and it responds accurately, so I'm not sure how my runelite configuration could be messed up (server url http://my.local.ip password correct username correct database correct)
Thanks in advance! I think an anonymized version of your configuration would be helpful for the README.

You should check in ~/.runelite/logs to see if you can figure out the error message.
The server URL should include http or https (depending on how you're hosting).
For example, my config has https://influxdb.my.host for the server URL.  If you have it on a non-default-for-the-protocol port then you'll need to make sure you set that with https://influxdb.my.host:8443.

I've identified the following bug when running on an official build of runelite:
java.lang.NoSuchMethodError: okhttp3.HttpUrl.get(Ljava/lang/String;)Lokhttp3/HttpUrl;
	at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:458)
	at org.influxdb.impl.InfluxDBImpl.<init>(InfluxDBImpl.java:178)
	at org.influxdb.impl.InfluxDBImpl.<init>(InfluxDBImpl.java:123)
	at org.influxdb.impl.InfluxDBImpl.<init>(InfluxDBImpl.java:187)
	at org.influxdb.InfluxDBFactory.connect(InfluxDBFactory.java:48)
	at net.machpi.runelite.influxdb.write.InfluxWriter.getInflux(InfluxWriter.java:60)
	at net.machpi.runelite.influxdb.write.InfluxWriter.access$000(InfluxWriter.java:20)
	at net.machpi.runelite.influxdb.write.InfluxWriter$ThrottledWriter.flush(InfluxWriter.java:152)
	at net.machpi.runelite.influxdb.write.InfluxWriter$Writer.flush(InfluxWriter.java:111)

I'll work on fixing it.

Fixed by https://github.com/Equinox-/runelite-influxdb/commit/532aabc6ff171d2e75861981b02cdfd7d0c3eefa
Will verify once https://github.com/runelite/plugin-hub/pull/316 goes through

Thanks! I can verify that this is working now. cheers!


"Possibly misspelt word 'fromkeys'" error shouldn't be showing up

One of our users pointed out this error:

Open https://hyperskill.org/learn/step/11104
Submit the following code:

# the list with classes; please, do not modify it
groups = ['1A', '1B', '1C', '2A', '2B', '2C', '3A', '3B', '3C']

kg_dict = dict.fromkeys(groups, None)
for i in range(int(input())):
    kg_dict[groups[i]] = int(input())
print(kg_dict)

The code style error Possibly misspelt word 'fromkeys' shouldn't be showing up.
This bug appeared for the first time on production (main branch) about a month ago (23 days ago).

@GirZ0n also please add some words from plotly:
yanchor
yaxes
xanchor
xaxes
showline
linewidth
linecolor
bgcolor
barmode


Bug Report: Week 7 crash

After "Ugh" cutscene game crashing
Yoshi Engine V 1.9.1, Windows

Fixed.
Make sure the selected skin actually exists for both the notes and boyfriend.