Add MFA, TOTP and OTP authentication adapters

Add authentication adapters for MFA:

One Time Password (OTP)
Time based OTP (TOTP) like Google Authenticator
It has to be an option enabled by the user (during registration?)
It has to be flexible to support/customize how the OTP is sent to the user (email, SMS, etc)

Start from the PR subimitted by @lampi87  (#30
There should be clear documentation on how to extend the adapter to support customized MFA flows

This will require major changes in the login flow.
MFA needs multiple steps, user/credentials login form. If pass then go to next step.  If fail, go back to login with error message. In the next step, validate the 2nd authentication factor.  If pass, then we are done, if failed then stay in that step to validate a corrected 2nd authentication factor.
To make it generic, each step should stay in that step until authentication succeeds.
Currently, LmcUser has a one factor login flow: identity/credentials login form, pass or fail

You may have a look at https://github.com/lampi87/LmcUserOTP
It might not be 100% bullet proof and fully generic. But for my use case it works very well and stable
Enabling OTP, define mobile number or add and verify TOTP token, must be handled by application

Thanks @lampi87
I am working on a more generic version and I am looking at your version to see how this would work.  I would like the 2nd factor to be some sort of plugin and have plugins/adapters for sending messages as well.
LmcUser was designed to have a one step login. In a 2FA situation, if, for example, the code entered in the 2nd step is not valid, it should stay in that step to let the use try again.
Once I have something working, I will be looking at volunteers to try it out.

Additional requirements:

MFA should be optional and the authentication type should be on a user basis.  Obviously, there should only be one authentication type per user.
The authentication should only when all factors have been gathered (password, code, etc).  As such, if the first step is to get username and password, then there should be any validation of the password at that step but only once the second factor has been gathered, for example, via a form to enter the OTP

See also #28


Channel modifiers have stop to work for inverted RGB channels

Hi, after that commit
https://github.com/mcallegari/qlcplus/commit/30ca3f514aa62fd83b06141bd34817b92316b904
i cannot use all machines that have RGB channels with channel modifiers set to "invert"
them have stop to do right colors.
i have made a video where is present the issue
http://www.tolmino.it/onnik/VID-20151102-WA0015.mp4

Tolmino, can you please post somewhere your qxw file?

here:
http://www.tolmino.it/onnik/TOUR_2014_con_Midi_no_peperoni_input.qxw

the devices are Mini Wash Led 3W

The problem here is caused by slider 59 and 60. If you pull them down, the colors are OK.
Somehow the slider emit their values even in design mode.
Another problem found is that simple desk shows values after modifiers, while it should before modifiers and maybe also before GM.

Jano, can you simple revert ?

Tolmino,
I don't think that commit is problem. So far I believe the commit is correct.
The problem you see (255 210 000) is caused by your slider 59 (controlling green channels, at 45 = 255-210) and slider 60 (blue channels, at 255 = 255 - 0) -AND- the fact that sliders send their value even in design mode (which is not caused by my commit, but seems it's been there for a longer time).
So: to fix your color buttons, just pull down both sliders to zero in operate mode, and you'll be fine.
Please comment whether that helps or not.

Right Jano.... we don't see that sliders because anybody has add them when light designer wasn't working.

Can we close this issue then?

Yes, you can


Wrong scrolling in CanPan method

There are two HScrolls in the line 4839 of ImageBox.cs and one of them should be VScroll.
https://github.com/cyotek/Cyotek.Windows.Forms.ImageBox/blob/f1d2f4871d03fc0f96ee960ea757468b64a71a00/Cyotek.Windows.Forms.ImageBox/ImageBox.cs#L4839

Well... drat.
Thanks for finding that bit of stupidity!

A user complained panning was not working after resizing the application window with the ImageBox.
After digging around the source code of mine, for about an hour, then this repository, I found that.
Would you please take the trouble to release a new NuGet package when you fix this?

Hello,
I reproduced it using the demo and I've pushed a fixed, including a new package - 1.3.1.
It isn't present in the multi target branch (yet!) though so there's no updated 2.0 package.

Thank you very much for the quick response!


Option to treat other metric suffixes the same as _total

Background: We have a Springboot app running on K8s, which exposes metrics to be scraped by Prometheus and visualised in Grafana. We are currently retro-fitting HPA based on custom metrics. (By the way, thank you for the invaluable help your walkthrough has provided).
Our app already exposes counter-type metrics which could be used the same way as (example) http_requests_total, however the suffix is different (_count in our case). I am not a dev as such, and to my understanding, the way these metrics have been exposed, it would be rather difficult for us to change the suffix to _total (or anything other than _count).
Long story short, it would be beneficial if we could treat another suffix the same way _total is being treated. Is there a way to do that without changing the adapter code?

These are likely to be from a histogram or summary.
On Thu, 22 Feb 2018, 04:50 Alex<EMAIL_ADDRESS>wrote:

Background: We have a Springboot app running on K8s, which exposes metrics
to be scraped by Prometheus and visualised in Grafana. We are currently
retro-fitting HPA based on custom metrics. (By the way, thank you for the
invaluable help your walkthrough has provided).
Our app already exposes counter-type metrics which could be used the same
way as (example) http_requests_total, however the suffix is different
(_count in our case). I am not a dev as such, and to my understanding, the
way these metrics have been exposed, it would be rather difficult for us to
change the suffix to _total (or anything other than _count).
Long story short, it would be beneficial if we could treat another suffix
the same way _total is being treated. Is there a way to do that without
changing the adapter code?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/DirectXMan12/k8s-prometheus-adapter/issues/48, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAEo83Ts2VjFEvuCsDmbZ-rRbqsBlj1xks5tXPIngaJpZM4SOvL1
.

I've got a PR that makes things much more customizable (#46), so it should enable your usecase.  Can you see if that helps your issue?

Hi @DirectXMan12
that PR looks interesting, I've just cloned it and built a local image.
Do you have an example of how to set up and apply the config file? I assume the file format would be yaml?

ah, yeah, sorry.  I appear to have forgotten to check in the default config -- it's just generated internally right now for compatibility reasons.  I'll check in an example configuration with some comments explaining how things work.

There should be a sample configuration under docs now.

Thank you for that.
I will close this for now. I haven't had time or opportunity to test this in-depth. Will get back to you when I do.


[FEAT-REQ] key

It is really useful and most update.
I have very small enhancement request. If you accept name and children from props. It could be easy for us to pass any kind of data in our own structure.
it will reduce conversion to name and children.

Hey there! 👋
Thank you for your kind words! 😊
I appreciate your enhancement request. However, I'm not entirely sure I understand the specific changes you're suggesting. Could you please provide an example of what you mean by accepting name and children from props and how it would help with passing any kind of data in your own structure? Additionally, an example of the data structure you are requesting would be very helpful.
The current structure of the tree data:
export interface TreeNode {
    id: string;
    name: string;
    children?: TreeNode[];
    [key: string]: any;
}

is already designed to accurately represent the Tree View structure, so understanding your perspective would be very helpful.
Thanks again for your feedback and looking forward to your example! 🙏


EC2 Terminates the instance as soon it is ready if vagrant-aws-extras plugin is installed

I am using Vagrant v1.8.1 on OSX Capitan. I think, I have hit a bug. My EC2 instance terminates if I have vagrant-aws-extras plugin installed but unused.
The below code worked when I uninstalled vagrant-aws-extras
Here are my files and logs.
$ cat config/north_california.yml
---
aws:
  ami               : 'ami-d5ea86b5'
  subnet_id         : 'subnet-31f5eb77'
  access_key_id     : ''
  secret_access_key : ''
  keypair_name      : 'vagrant_test'
  security_groups   : ["my-test"]
  region            : 'us-west-1'
  availability_zone : 'us-west-1b'
  pemfile           : 'vagrant_test.pem'
  user_data         : "#!/bin/bash\necho 'Defaults:ec2-user !requiretty' > /etc/sudoers.d/999-vagrant-cloud-init-requiretty && #!/bin/bash\necho 'Defaults:root !requiretty' >> /etc/sudoers.d/999-vagrant-cloud-init-requiretty && chmod 440 /etc/sudoers.d/999-vagrant-cloud-init-requiretty \n"
$

$ cat Vagrantfile
require 'yaml'
if File.exist?("config/north_california.yml")
  aws_config  = YAML.load_file("config/north_california.yml")["aws"]
  pemfile     = aws_config["pemfile"]
end

boxes = [
  {
    :name           =>  'instance-01',
    :primary        =>  'true',
    :instance_type  =>  't2.micro',
    :elastic_ip     =>  false
  },
]

VAGRANTFILE_API_VERSION = "2"
BOX_TIMEOUT             = 180

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  boxes.each do |box|
    config.vm.define box[:name], primary: box[:primary] do |config|
      config.vm.box                 = "aws-amazon-linux"
      config.vm.box_url             = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"

      config.vm.hostname            = box[:name]
      config.vm.boot_timeout        = BOX_TIMEOUT

      config.vm.provider :aws do |aws, override|
        override.ssh.private_key_path = pemfile
        override.ssh.username         = "ec2-user"
        override.ssh.forward_agent    = true

        aws.user_data                 = aws_config["user_data"]
        aws.access_key_id             = aws_config["access_key_id"]
        aws.secret_access_key         = aws_config["secret_access_key"]
        aws.keypair_name              = aws_config["keypair_name"]
        aws.security_groups           = aws_config["security_groups"]
        aws.region                    = aws_config["region"]
        aws.ami                       = aws_config["ami"]
        aws.instance_ready_timeout    = BOX_TIMEOUT
        aws.instance_type             = box[:instance_type]
        aws.elastic_ip                = box[:elastic_ip]

        aws.tags = {
          'Name' => 'My Vagrant Box',
          'Team' => 'devops',
          'Status' => 'active'
        }
      end
    end
  end
end
$

Here are the logs in debug mode.
==> instance-01: Machine is booted and ready for use!
 INFO warden: Calling IN action: #<Proc:0x00000100c8ce80@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::Call:0x00000105820dd8>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000100a3db48>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Extras::Action::DNS::ProviderIsAWS:0x00000100a35970>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Extras::Action::DNS::ProviderIsAWS:0x00000100a35970>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Warden:0x00000103c858d0>
 INFO warden: Calling IN action: #<Proc:0x00000103c2da68@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000103c85858>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ReadSSHInfo:0x00000103d55058>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Extras::Action::DNS::ConnectAWS:0x00000103d17c30>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Extras::Action::DNS::Set:0x00000103cdecf0>
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Calling recover: #<Vagrant::Action::Builtin::Call:0x00000105820dd8>
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Calling recover: #<Vagrant::Action::Builtin::Call:0x00000105820e50>
 INFO warden: Beginning recovery process...
 INFO warden: Calling recover: #<VagrantPlugins::AWS::Action::RunInstance:0x00000100cc63b0>
 INFO machine: Calling action: read_state on provider AWS (i-239f8391)
 INFO interface: Machine: action ["read_state", "start", {:target=>:"instance-01"}]
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 1 hooks defined.
 INFO runner: Running action: machine_action_read_state #<Vagrant::Action::Builder:0x000001038a0058>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::ConfigValidate:0x0000010387bfa0>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x0000010387bf78>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ReadState:0x000001038195d0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ReadState:0x000001038195d0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x0000010387bf78>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::ConfigValidate:0x0000010387bfa0>
 INFO interface: Machine: action ["read_state", "end", {:target=>:"instance-01"}]
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000100911d50>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::Call:0x0000010085df08>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000105a70bb0>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::DestroyConfirm:0x00000105a59820>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::DestroyConfirm:0x00000105a59820>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Warden:0x000001021ede28>
 INFO warden: Calling IN action: #<Proc:0x000001058e8018@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::ConfigValidate:0x000001021eddb0>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::Call:0x000001021edd88>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000103f00ce0>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::IsCreated:0x00000103ef0d40>
 INFO machine: Calling action: read_state on provider AWS (i-239f8391)
 INFO interface: Machine: action ["read_state", "start", {:target=>:"instance-01"}]
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 1 hooks defined.
 INFO runner: Running action: machine_action_read_state #<Vagrant::Action::Builder:0x00000103e2ad20>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::ConfigValidate:0x00000103e1b910>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000103e1b8e8>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ReadState:0x00000105d227a0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ReadState:0x00000105d227a0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000103e1b8e8>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::ConfigValidate:0x00000103e1b910>
 INFO interface: Machine: action ["read_state", "end", {:target=>:"instance-01"}]
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::IsCreated:0x00000103ef0d40>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Warden:0x00000100a46478>
 INFO warden: Calling IN action: #<Proc:0x00000105963e98@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000100a463b0>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ElbDeregisterInstance:0x00000102284c60>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::TerminateInstance:0x0000010286a210>
 INFO interface: info: Terminating the instance...
 INFO interface: info: ==> instance-01: Terminating the instance...
==> instance-01: Terminating the instance...

 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO environment: Released process lock: machine-action-7c72967d40acb4ecd239569bc18216c4
 INFO environment: Running hook: environment_unload
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 1 hooks defined.
 INFO runner: Running action: environment_unload #<Vagrant::Action::Builder:0x00000103d92db8>
/Users/vikas/.vagrant.d/gems/gems/vagrant-aws-extras-0.1.0/lib/vagrant-aws-extras/action/dns.rb:61:in `call': undefined method `records' for nil:NilClass (NoMethodError)
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-extras-0.1.0/lib/vagrant-aws-extras/action/dns.rb:50:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/read_ssh_info.rb:17:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/connect_aws.rb:43:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/run_instance.rb:213:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/elb_register_instance.rb:16:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/warn_networks.rb:14:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/synced_folders.rb:87:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/provision.rb:80:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/connect_aws.rb:43:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/box_check_outdated.rb:36:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/config_validate.rb:25:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/handle_box.rb:56:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:224:in `action_raw`
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:199:in `block in action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:561:in `lock'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:185:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:185:in `action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/batch_action.rb:82:in `block (2 levels) in run'

Related:

mitchellh/vagrant/issues/7244
mitchellh/vagrant/issues/1482

See also: Why does this AWS instance provisioned by Vagrant terminate as soon as it comes up?


FR: add 'Open in new tab' entry to note right-click menu

Hi!
As there are tabs in the newest Obsidian builds it will be great to have 'Open in new tab' entry to note right-click menu.

Thanks!

I second this, it would be very neat if the TagFolder list reacted to Shift/Strg + left-clicks by opening new tabs/windows accordingly :)

Thank you for your idea! It will probably be useful. And, sorry for being away a bit long.
 I would still be looking for Obsidian-alternatives if not for the free work you provide via this Add-On! I really appreciate what you do here :)


Add send() override in AlchemyProvider()

This PR adds the method header for Enhanced APIs and send(). This is not the most optimal since this doesn't allow tracking some core namespace calls, but opens the door for a future refactor.
Changes:

copy over JsonRpcProvider.send() as _send() in order to add add header into the ConnectionInfo (this avoids needing to copy everything in the fetchJson() chain of calls.
fix a bug where providing the URL doesn't pass in the network

todo for another PR:

we can get more accurate method headers by overriding perform() to pass the method header, but we can postpone that until we need to capture method headers for one of those methods.

Tested manually and verified that headers are landing in imply.

Looks good!


BGPLVM error in expectation when passing in slice

Run into this when debugging a failure in the GPLVM notebook.
When passing in slice for active dimensions code fails with cholesky error.
When passing in active dimensions as lists, the code works. (change fHmmm to False)
@markvdw any idea on how to debug this further?
import GPflow
from GPflow import ekernels
from GPflow import kernels
import numpy as np
import pods
pods.datasets.overide_manual_authorize = True  # dont ask to authorize
np.random.seed(42)
GPflow.settings.numerics.quadrature = 'error'  # throw error if quadrature is used for kernel expectations
data = pods.datasets.oil_100()
Y = data['X']
Q = 5
M = 10  # number of inducing pts
N = Y.shape[0]
X_mean = GPflow.gplvm.PCA_reduce(Y, Q) # Initialise via PCA
Z = np.random.permutation(X_mean.copy())[:M]

fHmmm = True
if(fHmmm):
    k = ekernels.Add([ekernels.RBF(3, ARD=True, active_dims=slice(0,3)),
                  ekernels.Linear(2, ARD=False, active_dims=slice(3,5))])
else:
    k = ekernels.Add([ekernels.RBF(3, ARD=True, active_dims=[0,1,2]),
                  ekernels.Linear(2, ARD=False, active_dims=[3, 4])])

m = GPflow.gplvm.BayesianGPLVM(X_mean=X_mean, X_var=0.1*np.ones((N, Q)), Y=Y,
                                kern=k, M=M, Z=Z)
m.likelihood.variance = 0.01
m.optimize(disp=True, max_iters=100)

Ok, the code is a bit complicated here, since there are quite a few cases. I suspect the error is in Add.eKzxKxz().
Your kernels work on separate dimensions and the GPLVM is initialised as with Xcov being factorised over dimensions. In the case where active_dims is a list, we can determine that the kernel works on separate dimensions, and so ekernels.py:191 should be taken. This is simple and works as you mention.
When active_dims is a slice, things are more complicated. There is an analytic expression for the cross terms only for the case where all dimensions are shared. Currently we test for this by checking active_dims is a slice.  This is where the error is. We should be checking that it's a slice that covers all dimensions, and falls back to quadrature if not.
So there are two solutions:

Check whether active_dims covers all dimensions for both kernels in ekernels.py:221
Modify the code in Add.Linear_RBF_eKxzKzx(). This shouldn't be too difficult.

The short term solution for you is to not use slices but lists :)

This is actually still an issue - moreover, there seems to be a bug in the expectations code, even the fHmmm = False branch doesn't work! I've updated the MWE to work with gpflow2.

It's been a while but yes that's probably due to active_dims not being always supported for kernel expectations (#614). @st--  could you post the error the revised MWE produces?

For the fHmmm = False case (analytic expectation), the traceback (without the tf.function, cut to the relevant part) is:
  File "/home/st/Code/gpflow2/gpflow/models/gplvm.py", line 148, in log_likelihood
    (self.kernel, self.inducing_variable)),
  File "/home/st/Code/gpflow2/gpflow/expectations/expectations.py", line 54, in expectation
    return dispatch.expectation(p, obj1, feat1, obj2, feat2, nghp=nghp)
  File "/home/st/anaconda3/envs/gpflow2/lib/python3.7/site-packages/multipledispatch/dispatcher.py", line 278, in __call__
    return func(*args, **kwargs)
  File "/home/st/Code/gpflow2/gpflow/expectations/sums.py", line 82, in _E
    crossexps.append(expectation(p, (k1, feat1), (k1, feat1), nghp=nghp))
  File "/home/st/Code/gpflow2/gpflow/expectations/expectations.py", line 54, in expectation
    return dispatch.expectation(p, obj1, feat1, obj2, feat2, nghp=nghp)
  File "/home/st/anaconda3/envs/gpflow2/lib/python3.7/site-packages/multipledispatch/dispatcher.py", line 278, in __call__
    return func(*args, **kwargs)
  File "/home/st/Code/gpflow2/gpflow/expectations/squared_exponentials.py", line 138, in _E
    if kern1.on_separate_dims(kern2) and isinstance(p, DiagonalGaussian):  # no joint expectations required
  File "/home/st/Code/gpflow2/gpflow/kernels/base.py", line 68, in on_separate_dims
    if self.active_dims is None or other.active_dims:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

For fHmmm = True (quadrature case), the code is super slow and memory hungry - presumably due to constructing 100^5 = 1e10 quadrature points! (Changing latent_dim to 2 and amending active_dims to be slice(0, 1) and slice(1, 2) respectively does seem to run fine.)

hmm the error message above can only occur if other.active_dims is a numpy array (which is not supported I guess). This is unrelated to the expectations code I think? It seems like it might be something to do with tf 1 -> tf 2

actually, upon further inspection, shouldn't line 68 in kernels/base.py be:
if self.active_dims is None or other.active_dims is None:

instead of:
if self.active_dims is None or other.active_dims:

?

Good catch, I think that is definitely a bug. Fixed in #1178.
I guess the active_dims=slice(...) issue remains open though?

yes of course. I'll have a look once I update to gpflow2 (in the next few days). Though I think supporting active_dims is not a 1-minute fix for analytic expectations unfortunately. If somebody needs this and is willing to implement it, I'd be happy to provide assistance

@ialong hi did you have a chance to look at this in GPflow 2 ? would be great if you could confirm whether or not this is still an issue in the gpflow 2.0 release. Thanks :)

Hi @st-- unfortunately I have not been using GPflow much these days (and have not upgraded to GPflow 2 yet in the end). If people need this I can have a look after the NeurIPS deadline. Maybe the best course of action for now is simply to raise an error message saying slices are not supported as active_dims, only lists?

kernel expectations are a bit of a rabbit hole so I want to make sure that if I put my hands on them I have enough time to do it properly. Very easy to introduce new bugs otherwise

Makes sense! if you do want to look at it after NeurIPS that'd be great, and join us on the gpflow.slack.com chat (invite link in the README.md) if you want to stay in touch with the gpflow community :)


Add Header checkstyle module to ensure that the required Apache License header is present for java classes

During work on the https://github.com/instancio/instancio/pull/483 I forgot to add Apache License header for new created java class. I found this mistake during creation of pull request...
To ensure that this required header is present on all java classes I offer to add the current checkstyle rule

@nedis-ua, great suggestion! Thank you for adding this.


Adding debug symbols and metadata for profiling kernels

Issue: #592
We want to have some debug symbols that would allow us to profile the LLVM IR kernels. Consider adding these.

Just a minor note: for #548, we need to add comment/annotation to the loop body:
$ → cat hh.1.s
....
# LLVM-MCA-BEGIN Body
LBB0_2:                                 ## %for.body
                                        ## =>This Inner Loop Header: Depth=1
	movq	%rsp, %rax
	addq	$-16, %rax
	movq	%rax, %rsp
	movq	%rsp, %rax
	addq	$-16, %rax
	movq	%rax, %rsp
	movq	-16(%rbp), %rax
	movslq	-4(%rbp), %rcx
	movq	(%rax), %rdx
	movq	8(%rax), %rsi
	movq	16(%rax), %rax
	vmovsd	(%rdx,%rcx,8), %xmm0            ## xmm0 = mem[0],zero
	vsubsd	(%rax,%rcx,8), %xmm0, %xmm0
	vdivsd	(%rsi,%rcx,8), %xmm0, %xmm0
	vmovsd	%xmm0, (%rax,%rcx,8)
	incl	-4(%rbp)
	movq	-16(%rbp), %rax
	movl	-4(%rbp), %ecx
	cmpl	92(%rax), %ecx
	jl	LBB0_2
# LLVM-MCA-END

In case this is minor/easy to do with few lines. Otherwise don't worry for now.

Do you mean annotation that it is a loop? In this case, I have actually made a ticket for that yesterday: #607. (Also: #606). In LLVM there is llvm.loop metadata that Clang emits, so that on I we know that the basic blocks are from the loop 👍
Or you mean debug symbols/metadata in general for profiling?

May be I shouldn't have mixed the topic in this ticket. Let's get debug symbols/metadata in general for profiling for JIT kernels, as we discussed. I will add separate ticket regarding my comment above (this is very minor/low priority thing)


Accommodate new api changes

There have been some upstream changes in the elasticsearch ecosystem (not sure if it's the gem or the 2.0 elasticsearch api) which require some modifications. Issues occurred using elasticsearch-{api,transport} 1.0.17 with elasticsearch-drain 0.0.5 against a 2.0.0 elasticsearch cluster.
1 - (timeout units) - fixed in 4e26005
/var/lib/gems/2.1.0/gems/elasticsearch-transport-1.0.17/lib/elasticsearch/transport/transport/base.rb:201:in `__raise_transport_error': [400] {"error":{"root_cause":[{"type":"parse_exception","reason":"Failed to parse setting [timeout] with value [60] as a time value: unit is missing or unrecognized"}],"type":"parse_exception","reason":"Failed to parse setting [timeout] with value [60] as a time value: unit is missing or unrecognized"},"status":400} (Elasticsearch::Transport::Transport::Errors::BadRequest)
	from /var/lib/gems/2.1.0/gems/elasticsearch-transport-1.0.17/lib/elasticsearch/transport/transport/base.rb:312:in `perform_request'
	from /var/lib/gems/2.1.0/gems/elasticsearch-transport-1.0.17/lib/elasticsearch/transport/transport/http/faraday.rb:20:in `perform_request'
	from /var/lib/gems/2.1.0/gems/elasticsearch-transport-1.0.17/lib/elasticsearch/transport/client.rb:128:in `perform_request'
	from /var/lib/gems/2.1.0/gems/elasticsearch-api-1.0.17/lib/elasticsearch/api/namespace/common.rb:21:in `perform_request'
	from /var/lib/gems/2.1.0/gems/elasticsearch-api-1.0.17/lib/elasticsearch/api/actions/cluster/health.rb:49:in `health'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/cluster.rb:18:in `health'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/cluster.rb:22:in `healthy?'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/cli.rb:31:in `ensure_cluster_healthy'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/cli.rb:19:in `asg'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/bin/drain:3:in `<top (required)>'
	from /usr/local/bin/drain:23:in `load'
	from /usr/local/bin/drain:23:in `<main>'

2 - (ipaddresses no longer need to be modified) - f27eebd
/var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/node.rb:85:in `address': undefined method `[]' for nil:NilClass (NoMethodError)
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/node.rb:56:in `ipaddress'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/nodes.rb:42:in `block in nodes_in_asg'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/nodes.rb:42:in `each'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/nodes.rb:42:in `find_all'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/nodes.rb:42:in `nodes_in_asg'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain.rb:55:in `active_nodes_in_asg'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/lib/elasticsearch/drain/cli.rb:20:in `asg'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
	from /var/lib/gems/2.1.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
	from /var/lib/gems/2.1.0/gems/elasticsearch-drain-0.0.5/bin/drain:3:in `<top (required)>'
	from /usr/local/bin/drain:23:in `load'
	from /usr/local/bin/drain:23:in `<main>'

Thanks @asebastian-r7.  We need to keep compatibility with 1.7.x for a while, the tests are failing on this branch.  I am currently working on a refactor of the test suite to support multiple versions of the server.  I hope to have something working in the coming days.
In the meantime, you might push this to a temp branch if others need the 2.x compatibility.


"en" is duplicated in "allLanguages"

Describe the bug
With the following configuration, en is duplicated in allLanguages. If you rely on that value e.g to generate alternate links it will be an issue.
const nextI18nConfig = {
  localePath: 'static/locales',
  otherLanguages: ['de', 'fr', 'en'],
  detection: {
    lookupCookie: 'lang',
    checkWhitelist: true,
    order: ['querystring', 'cookie', 'header'],
    caches: ['cookie']
  },
  localeSubpaths: {
    de: 'de',
    en: 'en',
    fr: 'fr'
  },
  debug: process.env.LCA_I18N_DEBUG === '1'
};

results in
i18n.options.allLanguages = ['de', 'fr', 'en', 'en']

Occurs in next-i18next version
2.0.0
Steps to reproduce
Use the config above
Expected behaviour
en should not be duplicated

You haven't set a default language, and English is the default language by default.

I think you didn't understand the issue. My question is: Why is en two times in the list ['de', 'fr', 'en', 'en'] ? A duplicate should not be passed.

Ah I think I see what you mean. The short answer is because it was unintentionally passed twice by the user. We don't do any deduping. Not sure it makes sense to get that involved in data sanitisation. What are your thoughts?

I would dedupe allLanguages property.
I see there is a comment about duplication but we don't dedupe it.
https://github.com/isaachinman/next-i18next/blob/b2efc642ed374a3be7bf4ea3b90007ef2319d892/src/config/create-config.ts#L18-L19

That comment is about users not having to duplicate default values - not the way you interpreted it.
I would be happy to see a PR that dedupes the array as long as it has test coverage. Thanks!

Please reopen, I will create a PR.


Incorrect default encoding

The site http://eckva.net does not set encoding in its Content-type header. I believe this module default to an incorrect encoding (ASCII) in such cases, as that site works fine in browsers, Perl 5's version of the module, and Perl 6's Cro::HTTP::Client:
perl -MLWP::Simple -wlE 'say get "http://eckva.net"'
`[...] <proper content> [...]

$ perl6 -MLWP::Simple -e 'say LWP::Simple.get: "http://eckva.net"'
Will not decode invalid ASCII (code point > 127 found)
  in method parse_response at /home/zoffix/rakudo/install/share/perl6/site/sources/5144DC413A3D6FEA44A2A1547406118DCF6B244D (LWP::Simple) line 328
  in method make_request at /home/zoffix/rakudo/install/share/perl6/site/sources/5144DC413A3D6FEA44A2A1547406118DCF6B244D (LWP::Simple) line 262
  in method request_shell at /home/zoffix/rakudo/install/share/perl6/site/sources/5144DC413A3D6FEA44A2A1547406118DCF6B244D (LWP::Simple) line 84
  in method get at /home/zoffix/rakudo/install/share/perl6/site/sources/5144DC413A3D6FEA44A2A1547406118DCF6B244D (LWP::Simple) line 31
  in block <unit> at -e line 1

$ perl6 -v
This is Rakudo version 2018.05-54-g148d7c5 built on MoarVM version 2018.05-57-g89dee3b
implementing Perl 6.c.

$ zef info LWP::Simple
- Identity: LWP::Simple:ver<0.103>:auth<Cosimo Streppone>

Changing it to latin-1 seems to work and it all passes all the tests.  Though I'm not actually seeing where the non-ASCII character is coming from with that URL.
I'll go with that fix and see how it goes.


:wrench: Fix positioning of secondary sidebar when scrolling

@rowanc1 brought this to my attention somewhere.

Huh, testing this was difficult. I'm not sure why setting top via the JSX style attribute behaves as expected, but setting the same value via tailwind classes does not. I assume it's a priority thing. In any case, I noticed that we lost the useThemeTop logic. I didn't see why we added that to begin with, but I assume it's all in the effort to be more consistent.
I've just eye-balled the vertical position thereafter; the TOC is using flex, whereas the secondary nav container is block display. So, it's approximate.

@agoose77 how were you setting the tailwind class exactly?

@agoose77 how were you setting the tailwind class exactly?

In the className attribute of the JSX.

@agoose77 ok I just wondered if you were using an arbitrary value pattern? like:
{`p-2 some-class top-[${top}px] border ...`}
As tailwind cannot compile that to a class name at build time, in those circumstance using style is best

book-theme looks great 👍🏼
article-theme looks worse though?

It's not aligned with content top or anything else.
while previously it looks good alignment wise

Hmm, I see your point. Maybe let's revert that; I'll check the rationale when next at my pc.

Latest:
book-theme

article-theme


MIRI_REPLACE_LIBRS_IF_NOT_TEST: also apply to crates.io crates

This is needed to make https://github.com/rust-lang/compiler-builtins/pull/586 work.

@bors r+

:pushpin: Commit dd418ac07a54600c699b2ef00e39f4a6761b7be2 has been approved by RalfJung
It is now in the queue for this repository.

:hourglass: Testing commit dd418ac07a54600c699b2ef00e39f4a6761b7be2 with merge b132051bfd2059d357a5bdc768777a13ab057349...

:sunny: Test successful - checks-actions
Approved by: RalfJung
Pushing b132051bfd2059d357a5bdc768777a13ab057349 to master...


Accuracy for Common Corruptions.

Hi Hendrycks!
May I ask one more thing?
Your reply to Adversarial helped me a lot.

Can you tell me how to change corruption strengths for CIFAR-10-C?
I downloaded Cifar-10-C from the link provided in https://github.com/hendrycks/robustness.
However, there seems to be nothing related to corruption strengths.

Can you provide your exact performance in common corruption setting?
And Did you report best accuracy? or the accuracy from the last epoch?
Since if Cifar-10-C dataset contain all five corruption strengths, then the epoch 86 seems to be most similar with your results. However, clean accuracy doesn't seem to reach 95.5% at all with WRN40-2. Can you provide how to reproduce your settings?
corrupt acc :  [53.946000000000005, 64.344, 57.306000000000004, 67.526, 58.382, 84.642, 79.41, 79.276, 71.054, 79.024, 83.966, 83.89, 93.55799999999999, 91.96600000000001, 82.48, 73.512, 83.636, 87.90599999999999, 81.658]
Epoch  86 |Time   150 |Tr Loss 0.0477 |Te Loss 0.884 |Test acc  |corrupt mean acc 76.71

corrupt acc :  [51.488, 62.674, 57.668, 66.06, 57.348, 84.75399999999999, 78.518, 78.544, 71.41199999999999, 78.74799999999999, 84.206, 85.49600000000001, 93.95599999999999, 92.78999999999999, 84.552, 72.418, 83.418, 87.768, 80.138]
Epoch 100 |Time   150 |Tr Loss 0.0261 |Te Loss 1.010 |Test acc  |corrupt mean acc 76.42

Thanks a lot, again!

Sorry clean accuracy problem was from my mistake. Can you give me a little help for just above questions?

However, there seems to be nothing related to corruption strengths.

The first 10K have the lowest corruption strength, and the last 10K examples have the highest corruption strength.

or the accuracy from the last epoch?
Since I use the cosine learning rate, I just use the model at the last epoch.


merge functionality

is there a  db.merge_link/node functionality that would check if the node or link attributes were the same for an already existing node or link before inserting. this is very useful to avoid polluting a graph with duplicates

Hello @ositaunus,
Currently, our driver does not have a merge_link or merge_node functionality that performs checks for duplicate node or link attributes before inserting. The purpose of our driver is to serve as an interface for the database. While we aim to make it as user-friendly as possible, adding such functionality is presently outside our scope.
The link function is essentially shorthand for inserting a new edge into an edge collection. However, you can implement the checks yourself before calling it by using has_edge and has_vertex functions to determine if a node or link already exists.
While we understand the usefulness of a merge functionality to prevent duplicate entries, the flexibility of our current design allows users to define their own requirements for what constitutes a duplicate. Nevertheless, we appreciate your feedback and will consider it for future updates.
Please checkout our Graphs examples for more information.


Wikidata label typo

Event end_date was not appearing as the variable was name ?end_dateLabel and end_date is not a literal, but datetime so Label makes no sense.
Hence change, in order for new mapping.
There might be a few more of this coming in today. Hence is probably better to wait before creating a release.
Related to https://github.com/TIBHannover/confiDent-SPARQL-wikidata/issues/33

rectified other properties' aeon:WikidataLabel  suffering from the same predicament


unable to import orbax.checkpoint

Hi, I am unable to import orbax.checkpoint.
----> 1 import orbax.checkpoint

File ~/.local/lib/python3.10/site-packages/orbax/checkpoint/__init__.py:20
     17 import functools
     19 from orbax.checkpoint import aggregate_handlers
---> 20 from orbax.checkpoint import checkpoint_utils
     21 from orbax.checkpoint import lazy_utils
     22 from orbax.checkpoint import msgpack_utils

File ~/.local/lib/python3.10/site-packages/orbax/checkpoint/checkpoint_utils.py:25
     23 from jax.sharding import Mesh
     24 import numpy as np
---> 25 from orbax.checkpoint import type_handlers
     26 from orbax.checkpoint import utils
     29 PyTree = Any

File ~/.local/lib/python3.10/site-packages/orbax/checkpoint/type_handlers.py:49
     44     raise ValueError('Coordinator address not set.')
     45   return coordinator_address.split(':')[0]
     48 def create_coordinator_server_and_context() -> (
---> 49     Tuple[ts.Context, Optional[ts.ocdbt.DistributedCoordinatorServer]]
     50 ):
     51   """Creates OCDBT coordinator and Tensorstore context.
     52
     53   This function must be called at the start of the program across all processes
   (...)
     70     Tuple of ts.Context and OCDBT coordinator server object.
     71   """
     72   jax_global_state = jax._src.distributed.global_state  # pylint: disable=protected-access

AttributeError: module 'tensorstore' has no attribute 'ocdbt'

Here are the following versions:
In [13]: sys.version
Out[13]: '3.10.10 (main, Mar  5 2023, 22:26:53) [GCC 12.2.1 20230201]'

In [14]: jax.__version__
Out[14]: '0.4.8'

In [15]: orbax.__version__
Out[15]: '0.1.7'

on: Kernel: x86_64 Linux 6.2.13-arch1-1

This is caused by the tensorstore package having an out of date version. Can you upgrade tensorstore to the latest version? (This should be done automatically when you install orbax-checkpoint, not sure why that's not happening.)

That so


Added basic application performing WBFM demodulation using liquid-dsp

An example performing WBFM demodulation.
The example app has to blocks:

Resampler
WBFMDemod

Let me know if this approach (using liquid-dsp via bindgen) is acceptable. The example is fully functional - I can listen to FM radio stations using my RTLSDR. There are audio buffer underruns, but probably due to audio sink misconfiguration.

I agree that FFI bindings should be separated. I don't know if you seen, but the crate you mention is essentially empty. It only pulls in the bindgen bindings from here. Both crates don't seem to be actively maintained either.
I can create a separate repo with my bindgen bindings, but not sure about the high-level interface. I'm still learning Rust and I'm not sure how much time I will be able to spend on this in the future. Maybe you could add a repo for this in FutureSDR with maybe a sketch of a interface you envision?
Maybe we could start adding blocks using FFI bindings directly and refactor as we go?

Small update. I've found two more repos that seem to be more complete regarding the high-level interface:

https://github.com/cubehub/rust-liquid-dsp - interface example
https://github.com/RamiHg/rust-liquid-dsp - interface example

Let me know what you think.


Dynamic Trees not Recognized

I updated Dynamic Trees to the latest 1.16.5 version, but Minecraft kept crashing. It cannot seem to recognize this version.
DynamicTrees-1.16.5-0.10.0-Beta31.jar
Java Build 1.8.0_321-b07
Windows 11
crash-2022-01-28_10.56.31-fml.txt

		Currently, dynamictrees is not installed```

Dynamic Trees was installed. For some reason, it's not being recognized.

Well according to Forge it isn't. I would suggest you confirm it is placed in the correct mod folder and if you're certain make sure Forge is updated as the only other possibility I can think of is that it's a Forge issue.

Okay


Gnome Doesn't Play Nice w/ setres (xrandr)

Gnome doesn't want to play nice with the setres script when trying to switch to a custom resolution (such as 1280x850 on a Chromebook Pixel). Similar results when attempting to pick a custom resolution using xrandr --output eDP1 --mode . It flickers to the specified resolution but immediately switches back. You can then manually go select the resolution from the Display activity, but that's not ideal - I'm trying to script this for a remote desktop scenario.
Interestingly, after setting the custom mode of 1280x850, the same thing happens when trying to switch back to a standard resolution.
As a side note, xrandr --output eDP1 --auto --scale 0.5x0.5 works without needing to add a custom mode for 1280x850, but is tangibly fuzzier due to what I'm guessing is a software filter vs hardware filter.

What if you just do the --addmode part of the setres script, and then issue whatever gnome-settings command is necessary to switch the resolution "the gnome way"?

I haven't had any luck finding a command to switch the resolution "the gnome way", unfortunately.

Hmm So I've discovered that if you deactivate the xrandr gnome-settings-daemon plugin:
gsettings set org.gnome.settings-daemon.plugins.xrandr active false
...then do your xrandr command, the custom resolution sticks.
I'm guessing this has other ramifications but I don't know what they are. Also, using gsettings to reactivating the xrandr daemon plugin will instantly punt you back out of the custom resolution.

Well, that probably makes the GUI not work for changing display settings.  If you're happy with setres, then that's probably fine...

A Gnome dev mentioned taking a look at fixing this someday, and mentioned we could do a couple of things to work around it in the meantime without disabling the xrandr daemon plugin:

Explicitly tell mutter directly that we want a new configuration by using the org.gnome.Mutter.DisplayConfig D-Bus interface, via gdbus or dbus-send. This is theoretically the most 'correct' way to accomplish this, but it looks pretty complex and my google-fu tells me no one's actually managed to do this yet via shell script.

Modify ~/.config/monitors.xml to show our new resolution and then make the xrandr change.

This file is apparently Gnome's source-of-truth for monitor resolutions, so it's what gets loaded upon login and when things like monitor hot-plugging happens. If we trust users not to do anything too horrible with setres, we could just permanently modify the file. If we want setres changes to be temporary, we could modify the file, call xrandr, and revert the file from a backup a few seconds later so if anything goes horribly wrong, a logout/login would restore the old resolution. This is a double-edge sword though because plugging in an external monitor would also trigger a reversion.
I have a working prototype of option 2 that I could polish up a bit and submit a pull request for if you're interested.

I think people would find option 2 very useful, but that behavior should be behind a flag for setres.  Maybe -w to write the config to monitors.xml?

That sounds reasonable, but I think if [ "$XDG_CURRENT_DESKTOP" = "GNOME" ]; then modify xml + xrandr + restore xml backup should be the default behavior without the -w flag; otherwise the script just won't work at all for Gnome unless users go out of their way to do something about it.
I guess we could just try to tell Gnome users when they run the script why it's not working and that they need to use the -w flag, but that's not going to win any UX awards... and we'd probably need to do it with a desktop notification via dbus in case people are relying on the script echoing an xrandr mode and nothing else.

That would make sense short-term.  Long-term it may make more sense if the script detects that the mode setting was immediately reverted, and then tries again with -w set.  I imagine Gnome isn't/won't be the only platform with that kind of behavior.

Closing. Please re-open if this issue is still a concern.


[BUG] glb-parser issue in 1.55

Description
I have an issue while opening my project (https://playcanvas.com/project/924053/overview/3d-skate-tricks) with last release candidate (1.55), and it works fine in previous version.

The createMorphTargetCurves function seems to be in glb-parser (https://github.com/playcanvas/engine/blob/7c8f8982a9f0d9be57565e5afc84e030dd83d48d/src/resources/parser/glb-parser.js)

Can confirm, likely related to https://github.com/playcanvas/engine/pull/4327.

I just downloaded a glb of @vogloblinsky's project which triggers this error:
Armature_s_popshoveit_L_guy-caucasian.blend.glb.zip
The validation report:

I'm sure the engine shouldn't just crash with an error but error out friendly or try to parse what is possible.
In this case that would be:
    const createMorphTargetCurves = (curve, node, entityPath) =>  {
      if (!outputMap[curve.output]) {
        //debugger;
        console.log("!outputMap[curve.output]");
        return;
      }

Then the model still loads, but I have no clue how it is supposed to look:

If you can share the original file (e.g. blend for Blender) it would be easier to work it out.

@kungfooman I just send you the model by email.

Just for information, there are many animations in the model, and one attached in the Armature prefixed c_, and one for the skateboard, prefixed s_

I use fbx format for exporting from blender and import in Playcanvas?

Thanks @ellthompson for this quick fix !

Closed this issue with the fix suggested by @kungfooman . Thanks to both of you for looking into this.


Move uma, recovery and user endpoints as jars pack inside dispatcher

Removes  api#identity#oauth2#uma#permission#v1.0.war, api#identity#oauth2#uma#permission#v1.0.war, api#identity#recovery#v0.9.war and api#identity#user#v1.0.war from webapps and deploy them as jars inside API rest dispatcher
Related to https://github.com/wso2/product-is/issues/11425

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/679480618

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/679480618
Status: success


Unnecessary RUnlock panics Wash

The issue's at https://github.com/puppetlabs/wash/blob/master/activity/core.go#L147.

Under what circumstances did this panic happen?

tree kubernetes. It's pretty random.


Dimension [Measure] was not found in the data model of cube

Steps to reproduce
I was able to display the pivot table in sequence simulation -> measures.
However, when I switch to measures -> simulation sequence, I get the below error:

Environment

atoti: 0.6.1
Operating System: win32

Hi Hui Fang, thanks for raising the issue. We can reproduce this easily.


chore: change set-output to environment file

From the missing reference (in shared library) in python unit tests, I think bumping the dependency versions in:

cpp here

python here.
while ensuring that cpp and python are in sync will solve it.

Let's also follow what we did for other repositories (e.g. https://github.com/open-space-collective/open-space-toolkit-physics/pull/104).


WIP: Shwap prototype

Prototype for shwap protocol and storage. Contain all changes required for shwap implementation. This PR is not meant for merge. All changes will be extracted from prototype into smaller and nicer PRs.
Based on: https://github.com/celestiaorg/celestia-node/pull/2675
Tracking issue: https://github.com/celestiaorg/celestia-node/issues/2971

We merged #3675, so can close this one


pypodman commit: options "--change", "-f" and "--message" don't take effect

kind bug
Description
After fix #1743 , pypodman commit can run without any error and a commited image can be created. But options --change, -f docker and --message don't take effect.
Steps to reproduce the issue:
On Remote:
root@rhel8-1 ~]# podman ps -a
CONTAINER ID   IMAGE                             COMMAND     CREATED          STATUS                     PORTS   NAMES         IS INFRA
afacc34a5e9a   docker.io/library/fedora:latest   /bin/bash   13 seconds ago   Exited (0) 4 seconds ago           test-commit   false

On Host:

~/.local/bin/pypodman -l root --host <IP_ADDRESS> commit --change ENTRYPOINT=/bin/sh --change LABEL=blue=image --message "commit test msg" -f docker test-commit image-commited

~/.local/bin/pypodman -l root --host <IP_ADDRESS> inspect image-commited

Describe the results you received:
[
 { ......
   "Comment": "",
   ......
    "ContainerConfig": {
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "TERM=xterm",
                "HOSTNAME=",
                "container=podman",
                "FBR=f29",
                "DISTTAG=f29container",
                "FGC=f29"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "WorkingDir": "/"
        },
   ......
  "Labels": null,
   ......
 }
]

Describe the results you expected:
I did the same thing with podman commit --change ENTRYPOINT=/bin/sh --change LABEL=blue=image --message "commit test msg" -f docker test-commit image-commited1 on Remote:
{
  .......
  "comment": "commit test msg",
  .......
  "containerconfig": {
    "env": [
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
      "TERM=xterm",
      "HOSTNAME=",
      "container=podman",
      "FBR=f29",
      "DISTTAG=f29container",
      "FGC=f29"
    ],
    "entrypoint": [
      "/bin/sh"
    ],
    "cmd": [
      "/bin/bash"
    ],
    "workingdir": "/",
    "labels": {
      "blue": "image"
    }
  },
  .......
  "labels": {
    "blue": "image"
  },
  .......
}

Additional information you deem important (e.g. issue happens only occasionally):
Besides, on host if I execute the pypodman command without -f docker, the image should not be created and a error message should be printed. But the fact is above wrong image can be still created.
If I do this on remote with podman:
[root@rhel8-1 ~]# podman commit --change ENTRYPOINT=/bin/sh --change LABEL=blue=image --message "commit test msg" test-commit image-commited
messages are only compatible with the docker image format (-f docker)

This result probably tells us option -f can not work too.
And, I test option --author as well, it can work properly.
Additional environment details (AWS, VirtualBox, physical, etc.):

@jwhonce PTAL


prevents directory listing and redirects to lendingbot.html

Prevents directory listing and redirects to lendingbot.html.
TESTING STAGE

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have read CONTRIBUTING.md
[x] I fully understand Github Flow.
[x] My code adheres to the code style of this project.
[ ] I have updated the documentation in /docs if I have changed the config, arguments, logic in how the bot works, or anything that understandably needs a documentation change.
[ ] I have updated the config file accordingly if my change requires a new configuration setting or changes an existing one.
[x] I have tested the bot with no issues for 24 continuous hours. If issues were experienced, they have been patched and tested again.

are you sure that not having a index.html-file is not intentional ?

@tamaskan Sadly I don't remember why I decided not to add an index.html or to actually name the file index.html. Might have had an idea but can't think of one now.

I'd suggest just renaming the lendingbot.html file to index.html. Given the very specific filename it is otherwise really easy to find running instances of the bot with a simple Google search. I also recommend adding a robots.txt to prevent crawlers from indexing the bot site regardless. The contents should be
User-agent: *
Disallow: /

Otherwise there are still easy ways to find the bot.

there is only 1 reason i can imagine: you put the lendingbot.html beside your important index.html and upon a forced git pull the important index.html get replaced

@tamaskan well this PR will create an index.html - which means that won't be possible anymore.
Ah! I remember, reason was I was running it locally (without a webserver), so I gave it a meaningful name.

mystery solved :-)


Check if slider is already initialized

I have a function whose callback is the initialization of lightslider. Normally I'm expecting this function to only execute once but in any case the function is executed more than once, lightslider gets re-initialized. This produces multiple pagers at the bottom (all working).
So is there a way to check if lightslider is initialized before and if not, initialize it. Here's the code that I have:
$('#split-form-trigger').leanModal({
    ready: function() {
      $('#split-form').lightSlider({
	item: 1,
	speed: 500,
	controls: false
      });
    }
  });

I don't know leanModal but you could just use a variable
var isLightSliderInitialized = false;
$('#split-form-trigger').leanModal({
    ready: function() {
      if (isLightSliderInitialized) return;
      $('#split-form').lightSlider({
	item: 1,
	speed: 500,
	controls: false,
        onSliderLoad: function(el) { isLightSliderInitialized = true; }
      });
    }
  });

@microcipcip Thanks mate. That was excellent. By the way leanModal was a function to trigger a modal/popup


Add TLS authentication end to end tests

Motivation
Now we don't have end to end test for tls authentication.
Modifications

Changed AuthTls.cc

from
tlsCertificates_ = params["tlsCertificates"];
tlsPrivateKey_ = params["tlsPrivateKey"];

to
tlsCertificates_ = params["tlsCertFile"];
tlsPrivateKey_ = params["tlsKeyFile"];

to make it same as Java auth plugin's api.

Add certification & key files for authentication
Add tls authentication test for java client.
Add tls authentication test for c++ client.

Result
We can test tls authentication plugin.

👍


Bump Pyflakes to 1.1.0

pyflakes.messages.ImportStarUsage only got introduced in v 1.1.0
Fixes https://github.com/myint/autoflake/issues/21

Coverage increased (+98.6%) to 98.58% when pulling 47b0efaa5741130ac84c5cc3fad168f90c0b7ddc on adhikasp:bump-pyflakes into e9caac4321cf215e95de7e7ec0ea1db770308bfd on myint:master.

Thanks guys!


side bar search dose not sync with find text in file

VSCode Version: Version 1.19.0 (1.19.0)
OS Version: MacOS 10.13.2 (17C88)

Steps to Reproduce:

Search some text in the file view panel, either by highlight the text then press ctrl-e, or by press ctrl-f and type in the text.
Now click the search magnifying glass on the side bar to show the global search bar, the search text in step 1 is not in the global search field.

Expected behavior:
The text in the global search field should sync with the text in the edit find search field. It was this way two versions back.

Reproduces without extensions: Yes

The two have never synced, but previously the search viewlet was more aggressive about taking text that's selected in the editor. I restored that behavior recently in https://github.com/Microsoft/vscode/issues/38854, so you should see the same thing in Insiders shortly.


请问这里的代码大概会在什么时间开源，标记一下，届时前来参考学习

When will the code of this work be released? I have marked here, and would come back at its birth time.

Hi, @Jctrp !
The code is released at the end of June 2022. Thank you for your interest!


JSON dictionary on networking error

It could be useful to receive, in the same way when the communication is correct, the JSON parsed into a Dictionary also for some network requests terminated with different codes like 300<= CODE <= 499
Now I'm parsing manually the response.data using NSJSONSerialization, but it could be useful if the library does it for us.
Thanks

Hi @dalu93!
You can already do this with custom response serializers or manually parsing the response data yourself. Since responses can vary so widely for various error status codes, we cannot generalize the handling in Alamofire much more than we already have. If you have specific cases you need to handle, you'll need to use more advanced techniques to handle the errors gracefully. Please check out the Custom Response Serializers section of the README for more info.
Cheers. 🍻


fix(tools): venv detection use VIRTUAL_ENV environment variable (IDFGH-13545)

Hi,
Here is a simple fix for #12036
This is required for Nix "venv"-like way.

Hello @nim65s , thank you for submitting this. It looks like this would fix using nix python derivations, will test.
VIRTUAL_ENV is not a perfect way to detect a virtual environment, as you could still run virtual environments scripts directly, without activating it, and it would not be set, but in this case, that should be irellevant.


Add TextEmbedder Task

🚀 Feature
Using https://github.com/UKPLab/sentence-transformers create a Flash Task for embedding sentences. Sentence Transformers also supports fine-tuning the model onto your own set of data, to improve semantic embedding representations.
Motivation
It's common to require text search, and sentence-transformers provides great results + an API to fine-tune/predict to get sentence representations out. It could also be paired with FAISS really simply to provide fast/accurate search results across large datasets.

@SeanNaren can I take this up?

hey @abhijithneilabraham absolutely! please do :) more than happy to assist if you need help!

How do you propose I do this? Open a new module  named embeddings inside https://github.com/PyTorchLightning/lightning-flash/tree/master/flash/text and return sentence embeddings?

Yep exactly! It would also be possible to fine-tune the model as well on new data, which would be awesome


Can not type space in some text elements

E.g. check sehl-utopia branch in the hydrogen-may project and navigate to /products/builder-tote
And try to edit text like here: https://screenshot.click/29-39-8dqak-7eklf.mp4

This is due to Hydrogen's Typography using text-wrap: pretty as a defaut (check out new/Text.js)

This truncates and does not allow inserting spaces. If you override it with the prop wrap='wrap' on the heading, for example - you will see that it works.


Fixed broken links to CONTRIBUTING.md

What changed?
Links in README.md to CONTRIBUTING.md were broken, when the latter was moved to the .github subfolder. This PR fixes the links.
This fixes #2425.

@thoemmi :+1:


2 notebooks to analyse metadata from bechdeltest.com and IMDB

Investigate correlations between Bechdel test results and the director gender (over years)
Investigate correlations between Bechdel test results and most frequently used words in movie titles/overviews

Perfect

I close this pull request and add the two notebooks on a new analysis branch


Feat/add app autoscaling target

This adds support for reverse references.  It might be useful to look at the commits separately when reviewing.

LGTM! Does this need updates to the contributing docs - maybe just pointing to this resource as an example.

Yes, good point.  I've updated the docs.


Possible small documentation issue - SessionTimeout

I've been using "BlockRebalanceOnPoll" with default client settings, and I've noticed that some records take longer than the default allowed period.
In the docs here, it says "ensure your [SessionTimeout][ST] is long enough to encompass any processing you do between polls" but here, it says "group member is kicked from the group because it exceeded the rebalance timeout".
It seems to me, that I just need to increase the rebalance timeout to accommodate the longer processing time, but wanted to check if I was missing something because of the docs. Is there any downsides other than longer rebalancing if I increase this to 5 minutes (assuming its less than "max.poll.interval.ms")?
Thanks for all your work on this, it's definitely my favourite Kafka client.

heartbeat interval: time between your client checking in
session timeout: time broker allows your client to go without a heartbeat until the broker kicks your client from the group
rebalance timeout: once a rebalance begins, how long your client can go without issuing JoinGroup (i.e., you can block a rebalance with OnPartitionsRevoked, but you must return before the rebalance timeout). I think the maximum rebalance timeout of the group is chosen

The downside of bumping the rebalance is that the entire group might be waiting on your one member to finish whatever it's doing before the group can continue -- this has a bit of a "stop the world" effect. That's less true in the new world of cooperative consuming, so bumping the rebalance timeout might be fine.
Closing for now but if you have another question we can reopen -- or if you have a doc improvement suggestion.

Thanks for replying.
I'll open a PR to change the document to say: "ensure your [RebalanceTimeout][RT] is long enough to encompass any processing you do between polls" instead of SessionTimeout.

OH I see what you mean, yes, good catch that needs to be fixed.


Prevent caching of wordsearch webserver component+data requests

For example, if I add a new alphabet to alphabets.json I don't want the cached version to be used, but should fetch a new one from the server.

I've not tested the solution, but it seems straightforward to just add cache: false to these jquery ajax requests.


Fix typo and delete unnecessary spaces

typo: Github -> GitHub
delete unnecessary spaces: As Markdown syntax, there was a large amount of half-width spaces that did not affect the display, so I deleted it

@changeworld : Thanks for your contribution! The author, @hrasheed-msft, has been notified to review your proposed change.

Verified editorial fix and layout in GitHub.


"Slice index out of range" after some use

After some use - after an hour or so, sometimes more, sometimes less - cortile would regularly crash with the following error:
Aug 15 07:38:47 thinkpad-linux cortile[2683]: panic: reflect: slice index out of range [recovered]
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         panic: reflect: slice index out of range
Aug 15 07:38:47 thinkpad-linux cortile[2683]: goroutine 85 [running]:
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.(*encodeState).marshal.func1()
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:326 +0x6e
Aug 15 07:38:47 thinkpad-linux cortile[2683]: panic({0x83c020, 0x97fc60})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/runtime/panic.go:884 +0x213
Aug 15 07:38:47 thinkpad-linux cortile[2683]: reflect.Value.Index({0x834740?, 0xc000492a08?, 0xc0000a06d8?}, 0x3733323731000000?)
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/reflect/value.go:1414 +0x16d
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.arrayEncoder.encode({0x544475?}, 0xc00011c080, {0x834740?, 0xc000492a08?, 0xd?}, {0x70?, 0x38?})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:914 +0xae
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.sliceEncoder.encode({0xc000296c60?}, 0xc00011c080, {0x834740?, 0xc000492a08?, 0xc0004929f0?}, {0xa?, 0x0?})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:887 +0x32f
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.structEncoder.encode({{{0xc0003ba000?, 0x2?, 0x1?}, 0xc0003b85a0?}}, 0xc00011c080, {0x878a80?, 0xc0004929f0?, 0x41126b?}, {0x0, 0x1})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:759 +0x1f4
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.ptrEncoder.encode({0xc0005e6000?}, 0xc00011c080, {0x82d6c0?, 0xc0004929f0?, 0x82d6c0?}, {0x11?, 0x0?})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:943 +0x21c
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.(*encodeState).reflectValue(0xc0006a3c30?, {0x82d6c0?, 0xc0004929f0?, 0x8ea42b?}, {0x40?, 0xec?})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:358 +0x78
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.(*encodeState).marshal(0xc0002c6db5?, {0x82d6c0?, 0xc0004929f0?}, {0x0?, 0x43?})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:330 +0xfa
Aug 15 07:38:47 thinkpad-linux cortile[2683]: encoding/json.Marshal({0x82d6c0, 0xc0004929f0})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /opt/hostedtoolcache/go/1.20.14/x64/src/encoding/json/encode.go:161 +0xe5
Aug 15 07:38:47 thinkpad-linux cortile[2683]: github.com/leukipp/cortile/v2/input.structToMap({0x82d6c0, 0xc0004929f0})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /home/runner/work/cortile/cortile/input/dbusbinding.go:506 +0x3e
Aug 15 07:38:47 thinkpad-linux cortile[2683]: github.com/leukipp/cortile/v2/input.SetProperty({0x8ce6c3, 0x7}, {0x82d6c0?, 0xc0004929f0?})
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /home/runner/work/cortile/cortile/input/dbusbinding.go:496 +0x59
Aug 15 07:38:47 thinkpad-linux cortile[2683]: github.com/leukipp/cortile/v2/input.event(0xc0003f7840?, 0xc00041a040)
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /home/runner/work/cortile/cortile/input/dbusbinding.go:221 +0x1e5
Aug 15 07:38:47 thinkpad-linux cortile[2683]: created by github.com/leukipp/cortile/v2/input.BindDbus
Aug 15 07:38:47 thinkpad-linux cortile[2683]:         /home/runner/work/cortile/cortile/input/dbusbinding.go:186 +0xbf
Aug 15 07:38:47 thinkpad-linux systemd[2675]: cortile.service: Main process exited, code=exited

cortile.service:
[Unit]
Description=window tiling manager
After=graphical.target

[Service]
Environment=DISPLAY=:0
ExecStart=/usr/local/bin/cortile -cache 0
Restart=on-abnormal

[Install]
WantedBy=default.target

config.toml:
################################################################################
#                                                                              #
#           https://github.com/leukipp/cortile/blob/main/config.toml           #
#                                                                              #
################################################################################

#################################### Tiling ####################################

# Tiling will be enabled on application start if set to true (true | false).
tiling_enabled = true

# Initial tiling layout ("vertical-left" | "vertical-right" | "horizontal-top" | "horizontal-bottom" | "maximized" | "fullscreen").
tiling_layout = "vertical-left"

# An overlay window is displayed for this time period [ms] when the layout was changed (0 = disabled).
#tiling_gui = 1500
tiling_gui = 0

# Menu entries in systray which shows the tiling state as icon ([] = disabled).
# tiling_icon = [
#   ["ACTION", "TEXT"] = ["action strings from [keys] section", "text to show in the menu"],
#   ["", ""] = "show a separator line",
# ]
tiling_icon = [
    ["toggle", "Enabled"],
    ["", ""],
    ["master_increase", "Add Master"],
    ["master_decrease", "Remove Master"],
    ["", ""],
    ["slave_increase", "Add Slave"],
    ["slave_decrease", "Remove Slave"],
    ["", ""],
    ["reset", "Reset"],
    ["exit", "Exit"],
]

#################################### Window ####################################

# Regex RE2 syntax to ignore windows (WM_CLASS string can be found by running `xprop WM_CLASS`).
# window_ignore = [
#   ["WM_CLASS", "WM_NAME"] = ["ignore all windows with this class", "but allow those with this name"]
# ]
window_ignore = [
    ["nm.*", ""],
    ["gcr.*", ""],
    ["polkit.*", ""],
    ["wrapper.*", ""],
    ["lightdm.*", ""],
    ["blueman.*", ""],
    ["pavucontrol.*", ""],
    ["arandr.*", ""],
    ["gnome-calculator.*", ""],
    ["speedcrunch.*", ""],
    ["veracrypt.*", ""],
    ["firefox.*", ".*Mozilla Firefox"],
]

# Maximum number of allowed master windows (0 - 5).
window_masters_max = 3

# Maximum number of allowed slave windows (1 - 5).
#window_slaves_max = 3
window_slaves_max = 2

# How much space should be left between windows (0 - 100).
#window_gap_size = 10
window_gap_size = 0

# Window decorations will be removed if set to false (true | false).
#window_decoration = true
window_decoration = false

################################## Proportion ##################################

# How much to increment/decrement master-slave area (0.0 - 1.0).
proportion_step = 0.01

# Minimum window width/height in proportion to workspace (0.0 - 1.0).
proportion_min = 0.2

##################################### Edge #####################################

# Margin of the tiling area ([top, right, bottom, left]).
edge_margin = [0, 0, 0, 0]

# Margin of the tiling area on primary screen ([top, right, bottom, left]).
edge_margin_primary = [0, 0, 0, 0]

# Width and height of a hot-corner area within the edge corners (0 - 100).
edge_corner_size = 4

# Width or height of a hot-corner area within the edge centers (0 - 100).
edge_center_size = 100

################################################################################
[colors]                             # RGBA color values used for ui elements. #
################################################################################

# Layout window text color.
gui_text = [255, 255, 255, 255]

# Layout window background color.
gui_background = [30, 30, 40, 255]

# Layout slave client rectangle color.
gui_client_slave = [58, 58, 78, 255]

# Layout master client rectangle color.
gui_client_master = [98, 98, 128, 255]

# Systray icon background color.
icon_background = [0, 0, 0, 0]

# Systray icon foreground color.
icon_foreground = [255, 255, 255, 255]

################################################################################
[keys]                            # Key symbols can be found by running `xev`. #
################################################################################

# Enable tiling on the current screen (Home = Fn_Left).
enable = "Control-Shift-Home"

# Disable tiling on the current screen (End = Fn_Right).
disable = "Control-Shift-End"

# Disable tiling and restore windows on the current screen.
restore = "Control-Shift-R"

# Toggle between enable and disable on the current screen.
toggle = "Control-Shift-T"

# Reset layouts to default proportions (BackSpace = Delete_Left)
reset = "Control-Shift-BackSpace"

# Cycles through next layouts (Next = Page_Down).
cycle_next = "Control-Shift-Next"

# Cycles through previous layouts (Prior = Page_Up).
cycle_previous = "Control-Shift-Prior"

# Activates the maximized layout (Space = Blank).
layout_maximized = "Control-Shift-Space"

# Activates the fullscreen layout (Space = Blank).
# layout_fullscreen = "Control-Shift-Return"

# Activates the vertical-left layout (Left = Arrow_Left).
layout_vertical_left = "Control-Shift-Left"

# Activates the vertical-right layout (Right = Arrow_Right).
layout_vertical_right = "Control-Shift-Right"

# Activates the horizontal-top layout (Up = Arrow_Up).
layout_horizontal_top = "Control-Shift-Up"

# Activates the horizontal-bottom layout (Down = Arrow_Down).
layout_horizontal_bottom = "Control-Shift-Down"

# Make the active window a master (KP_5 = Num_5).
#master_make = "Control-Shift-KP_5"
master_make = "Control-Shift-2"

# Make the next window a master (KP_6 = Num_6).
#master_make_next = "Control-Shift-KP_6"
master_make_next = "Control-Shift-3"

# Make the previous window a master (KP_4 = Num_4).
#master_make_previous = "Control-Shift-KP_4"
master_make_previous = "Control-Shift-1"

# Increase the number of masters (KP_Add = Num_+).
master_increase = "Control-Shift-KP_Add"

# Decrease the number of masters (KP_Subtract = Num_-).
master_decrease = "Control-Shift-KP_Subtract"

# Increase the number of slaves (Plus = +).
slave_increase = "Control-Shift-Plus"

# Decrease the number of slaves (Minus = -).
slave_decrease = "Control-Shift-Minus"

# Increase the proportion of master-slave area (KP_3 = Num_3).
#proportion_increase = "Control-Shift-KP_3"
proportion_increase = "Mod1-Right"

# Decrease the proportion of master-slave area (KP_1 = Num_1).
#proportion_decrease = "Control-Shift-KP_1"
proportion_decrease = "Mod1-Left"

# Moves focus to the next window (KP_2 = Num_2).
#window_next = "Control-Shift-KP_2"

# Moves focus to the previous window (KP_8 = Num_8).
#window_previous = "Control-Shift-KP_8"

# The commands above will affect all screens if this key is pressed in addition (Mod1 = Alt_L).
mod_screens = "Mod1"

# The commands above will affect all workspaces if this key is pressed in addition (Mod4 = Super_L).
mod_workspaces = "Mod4"

################################################################################
[corners]                   # Action strings from [keys] or external commands. #
################################################################################

# Corner at top left.
#top_left = "window_previous"
top_left = ""

# Corner at top center.
top_center = ""

# Corner at top right.
top_right = "master_make"

# Corner at center right.
center_right = ""

# Corner at bottom right.
#bottom_right = "proportion_increase"
bottom_right = ""

# Corner at bottom center.
bottom_center = ""

# Corner at bottom left.
#bottom_left = "proportion_decrease"
bottom_left = ""

# Corner at center left.
center_left = ""

################################################################################
[systray]                   # Action strings from [keys] or external commands. #
################################################################################

# Icon left click with pointer.
click_left = ""

# Icon middle click with pointer.
click_middle = ""

# Icon right click with pointer.
click_right = ""

# Icon vertical scroll up with pointer.
scroll_up = "cycle_previous"

# Icon vertical scroll down with pointer.
scroll_down = "cycle_next"

# Icon horizontal scroll left with pointer.
scroll_left = "proportion_decrease"

# Icon horizontal scroll right with pointer.
scroll_right = "proportion_increase"

Currently running cortile v2.5.0-ad15ebd.

Seems related: https://github.com/owasp-amass/amass/issues/566#issuecomment-947946043
I just made a commit on the develop branch, which could fix this.
Please follow the install instructions for development and install cortile from remote branch:
go install github.com/leukipp/cortile@develop

Since I'm in the middle of development the branch may be unstable or incompatible with your current config.yaml.
But give it a try and let me know if the crash still occurs.

Thanks! Installed, will let you know how it goes.
PS: Regarding the config, true, I noticed immediately that window_decoration = false currently has no effect. :P

I think I was to fast and the update will not help.
Please run go install again with the latest develop branch, as I did a lot of changes to the codebase, which could fix this problem to.

PS: Regarding the config, true, I noticed immediately that window_decoration = false currently has no effect. :P

See https://github.com/leukipp/cortile/issues/62#issue-2447124286, last sentence.

Please check v2.5.1.

@leukipp have been using cortile v2.5.1 for several hours and not a single crash. :)


ValidationException: TF237124: Work Item is not ready to save

The errors are getting too obscure for me to debug simply by reading and applying common sense.
I have checked that both source and destination accounts have a project using TFVC and custom CMMI. I have checked that the work items in the custom CMMIs are identical with no missing fields.
I have checked the area paths are similar (given differences in project name).
I have checked the default and custom teams are present and that the custom team has project default area as default area including sub-areas (same as source).
I have deleted the destination project and started from scratch, twice.
These lines seem pertinent:
WorkItemMigrationContext: 1 - Invalid: 801-Task-System.AreaPath
WorkItemMigrationContext: 1 - Invalid: 801-Task-System.IterationPath
WorkItemMigrationContext: ...FAILED to Save
There is a date used that doesn't exist:
Revised Date: 01/01/9999 00:00:00
Error:
WorkItemMigrationContext: Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException: TF237124: Work Item is not ready to save
at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem.Save(SaveFlags saveFlags)
at VstsSyncMigrator.Engine.WorkItemMigrationContext.InternalExecute() in D:\a\1\s\src\VstsSyncMigrator.Core\Execution\MigrationContext\WorkItemMigrationContext.cs:line 125
Excerpt from output:
λ vstssyncmigrator.exe execute -c vstsbulkeditor.json [Info]: vstssyncmigrator [Info]: Running version detected as <IP_ADDRESS> [Info]: Telemitery Enabled: True [Info]: SessionID: 2e1c3173-1be5-40d1-b82b-77cdeba7cb8e
`WorkItemMigrationContext: 1 - Migrating: 801-Task
WorkItemMigrationContext: ... BuildingWorkItemMigrationContext: Dependancy: TeamService - NewWorkItem - 18/06/2018 15:16:54 - 00:00:00 - True
WorkItemMigrationContext: FieldMapOnNewWorkItem: 18/06/2018 15:16:54 - 00:00:00
Runnin Field Map: MultiValueConditionalMap
[SKIPPED] Not all source and target fields exist
Runnin Field Map: FieldBlankMap
Runnin Field Map: FieldValueMap
[UPDATE] field set to default value 801:System.State to 0:System.State
Runnin Field Map: FieldToFieldMap
Runnin Field Map: FieldToTagFieldMap
[UPDATE] field tagged 801:System.State to 0:Tag with foramt of ScrumState:{0}
Runnin Field Map: FieldMergeMap
[UPDATE] field merged 801:System.Description+Microsoft.VSTS.Common.AcceptanceCriteria to 0:System.Description
Runnin Field Map: RegexFieldMap
Runnin Field Map: FieldValuetoTagMap
Runnin Field Map: TreeToTagFieldMap
WorkItemMigrationContext: 1 - Invalid: 801-Task-System.AreaPath
WorkItemMigrationContext: 1 - Invalid: 801-Task-System.IterationPath
WorkItemMigrationContext: ...FAILED to Save
WorkItemMigrationContext: agileIoNswAgile.ReflectedWorkItemId | https://tindall.visualstudio.com/NetScribe/_workitems/edit/801
WorkItemMigrationContext: Microsoft.VSTS.CMMI.RequiresTest | No
WorkItemMigrationContext: Microsoft.VSTS.CMMI.RequiresReview | No
WorkItemMigrationContext: Microsoft.VSTS.CMMI.TaskType | Planned
WorkItemMigrationContext: Microsoft.VSTS.CMMI.Blocked | No
WorkItemMigrationContext: Microsoft.VSTS.Common.Discipline |
WorkItemMigrationContext: Microsoft.VSTS.Common.Triage | Pending
WorkItemMigrationContext: Microsoft.VSTS.Common.AcceptanceCriteria |
WorkItemMigrationContext: Microsoft.VSTS.Scheduling.FinishDate |
WorkItemMigrationContext: Microsoft.VSTS.Scheduling.StartDate |
WorkItemMigrationContext: Microsoft.VSTS.Build.IntegrationBuild |
WorkItemMigrationContext: Microsoft.VSTS.Common.StackRank |<PHONE_NUMBER>
WorkItemMigrationContext: Microsoft.VSTS.Common.Priority | 2
WorkItemMigrationContext: Microsoft.VSTS.Common.ClosedBy |
WorkItemMigrationContext: Microsoft.VSTS.Common.ClosedDate |
WorkItemMigrationContext: Microsoft.VSTS.Common.ResolvedReason | Investigate
WorkItemMigrationContext: Microsoft.VSTS.Common.ResolvedBy | Ayman Moukhtar
WorkItemMigrationContext: Microsoft.VSTS.Common.ResolvedDate |
WorkItemMigrationContext: Microsoft.VSTS.Common.ActivatedBy | Ayman Moukhtar
WorkItemMigrationContext: Microsoft.VSTS.Common.ActivatedDate |
WorkItemMigrationContext: Microsoft.VSTS.Common.StateChangeDate |
WorkItemMigrationContext: Microsoft.VSTS.Scheduling.CompletedWork |
WorkItemMigrationContext: Microsoft.VSTS.Scheduling.OriginalEstimate | 1
WorkItemMigrationContext: Microsoft.VSTS.Scheduling.RemainingWork | 1
WorkItemMigrationContext: System.BoardLane |
WorkItemMigrationContext: System.BoardColumnDone |
WorkItemMigrationContext: System.BoardColumn |
WorkItemMigrationContext: System.Tags | ;ScrumState:Resolved
WorkItemMigrationContext: System.RelatedLinkCount | 0
WorkItemMigrationContext: System.History | Comments from previous work item: Fields from previous Work Item:ReflectedWorkItemId:
Requires Test: No
Requires Review: No
Task Type: Planned
Blocked: No
Discipline:
Triage: Pending
Acceptance Criteria:
Finish Date: null
Start Date: null
Completed Work: null
Original Estimate: 1
Resolved Reason: Investigate
Resolved By: Ayman Moukhtar
Resolved Date: 24/02/2017 17:16:44
Activated By: Ayman Moukhtar
Activated Date: 24/02/2017 17:16:39
State Change Date: 24/02/2017 17:16:44
Stack Rank:<PHONE_NUMBER>
Priority: 2
Closed By:
Closed Date: null
Remaining Work: 1
Integration Build:
Board Lane:
Board Column Done: null
Board Column:
Tags:
Related Link Count: 1
History:
Description:
Created By: karim mostafa
Created Date: 27/12/2016 17:34:49
Work Item Type: Task
Assigned To: Ayman Moukhtar
Reason: Complete and Requires Review/Test
Changed By: Ayman Moukhtar
Rev: 10
Watermark: 6613
Authorized Date: 24/02/2017 17:16:44
State: Resolved
Title: Ensure the system must capture the UTC date and time when an auditable event occurs
Authorized As: Unknown user
Area ID: 81779
ID: 801
Changed Date: 24/02/2017 17:16:44
Revised Date: 01/01/9999 00:00:00
Area Path: NetScribe
Node Name: NetScribe
Attached File Count: 0
Hyperlink Count: 0
Team Project: NetScribe
External Link Count: 0
Iteration ID: 81779
Iteration Path: NetScribe
 Migrated by VSTS/TFS Sync Migration Tool open source.
WorkItemMigrationContext: System.Description | Acceptance Criteria##DONE##
WorkItemMigrationContext: System.CreatedBy | karim mostafa
WorkItemMigrationContext: System.CreatedDate | 27/12/2016 17:34:49
WorkItemMigrationContext: System.WorkItemType | Task
WorkItemMigrationContext: System.AssignedTo | Ayman Moukhtar
WorkItemMigrationContext: System.Reason | Complete and Requires Review/Test
WorkItemMigrationContext: System.ChangedBy | Ayman Moukhtar
WorkItemMigrationContext: System.Rev |
WorkItemMigrationContext: System.Watermark |
WorkItemMigrationContext: System.AuthorizedDate |
WorkItemMigrationContext: System.State | New
WorkItemMigrationContext: System.Title | Ensure the system must capture the UTC date and time when an auditable event occurs
WorkItemMigrationContext: System.AuthorizedAs |
WorkItemMigrationContext: System.AreaId | 288
WorkItemMigrationContext: System.Id | 0
WorkItemMigrationContext: System.ChangedDate | 24/02/2017 17:16:44
WorkItemMigrationContext: System.RevisedDate |
WorkItemMigrationContext: System.AreaPath | NetScribeWeb\NetScribe
WorkItemMigrationContext: System.NodeName | NetScribeWeb
WorkItemMigrationContext: System.AttachedFileCount | 0
WorkItemMigrationContext: System.HyperLinkCount | 0
WorkItemMigrationContext: System.TeamProject | NetScribeWeb
WorkItemMigrationContext: System.ExternalLinkCount | 0
WorkItemMigrationContext: System.IterationId | 288
WorkItemMigrationContext: System.IterationPath | NetScribeWeb\NetScribe
WorkItemMigrationContext: Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException: TF237124: Work Item is not ready to save
   at Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem.Save(SaveFlags saveFlags)
   at VstsSyncMigrator.Engine.WorkItemMigrationContext.InternalExecute() in D:\a\1\s\src\VstsSyncMigrator.Core\Execution\MigrationContext\WorkItemMigrationContext.cs:line 125
WorkItemMigrationContext: Average time of 0:322 seconds per work item and 0 hours 0 minutes 0:000 seconds estimated to completion
WorkItemMigrationContext: DONE in 0 hours 4 minutes 39:733 seconds - 858 Items, 0 Imported, 0 Skipped, 858 Failures
vstssyncmigrator.exe Information: 0 :  Migration Context Complete WorkItemMigrationContext
[Info]: Run complete...
[Info]: -------------------------------END------------------------------
[Info]: Duration: 00:04:40.2184607
[Info]: End Time: 18/06/2018 15:12:14`

The most likely reasons for this error is that the Area or Iteration paths were:

Not migrated
Migrated with different switches for AppendProjectName between the Node and Work Item migrators

Can you verify that they match and that the Area and Iteration paths were migrated?

Hello there, I am seeing a similar issue. I am migrating a project from TFS to VSTS. The source and destination have different projects so when I use the NodeStructureMigrationConfig processor, I set the PrefixProjectToNodes as false.
Then when I move on to migrating the workitems using the WorkItemRevisionReplayMigrationConfig processor I get the above mentioned error on some of my work items.
But if I use WorkItemMigrationConfig processor I don't get any errors with the Area / Iteration paths

Ok, the replay migrator moves history, so if you have invalid iteration or area paths in the history you will get this.
I did some work a while ago to mitigate it. What version of the tool are you using?

oh ok, gotcha. I am using <IP_ADDRESS>

That should be the latest... Can you download the code and have the debugger stop when it gets there and see what the issue is?
-MrHinsh
Martin Hinshelwood | naked Agility Ltd. |http://nkdagility.com
Professional Scrum Trainer & DevOps Expert |+44 7811 164 522
Enabling a continuous flow of value with a union of processes, practices, and tools. We have deep expertise in Visual Studio, Team Services, Azure, Scrum, & Kanban.

From: umell<EMAIL_ADDRESS>Sent: Tuesday, June 19, 2018 4:53:37 AM
To: nkdAgility/vsts-sync-migration
Cc: Martin Hinshelwood nkdAgility.com; Comment
Subject: Re: [nkdAgility/vsts-sync-migration] ValidationException: TF237124: Work Item is not ready to save (#143)
oh ok, gotcha. I am using <IP_ADDRESS>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/nkdAgility/vsts-sync-migration/issues/143#issuecomment-398266451, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AE9uR3lSxeVpMaDsJlb9aF6VKmgn6-wMks5t-HXBgaJpZM4Ur-WD.

The iteration paths appear to have been created, and there are the same number of entries.
However I had to create the area paths by hand; moving a custom team to use the default team area, and the custom team area as a sub-area.
The differences in the paths are account name and project name, e.g.
source: https://account1.visualstudio.com/project
destination: https://account2.visualstudio.com/newProject

The account is not used in area/iterarion path and the project name is automatically removed.
It's likey that there were renames in the past that you had to manually create. The tool is supposed to set the iteration/area path to the root if its not found. Looks like we are not capturing all cases..

@MrHinsh Thank you for your continued support.
Which of the processors is responsible for the migration of area/iteration paths?

this is the one that does areas and iteration paths
"VstsSyncMigrator.Engine.Configuration.Processing.NodeStructuresMigrationConfig",

@umell Thanks, I thought so, and it's at the top of my run list.

I found the issue: The logic on _foundNodes.Contains(nodePath) needs a not (!) symbol to do the lookup
https://github.com/nkdAgility/vsts-sync-migration/blob/4073952cf04b0d71f0ee7deee0960ae04f43532c/src/VstsSyncMigrator.Core/Execution/MigrationContext/WorkItemRevisionReplayMigrationContext.cs#L339

@dpiessens do you want to fix it and submit a pull request. You found it, you should get the credit!

@dpiessens Thank you for your diligence, I'll test this as soon as it is available.

@MrHinsh hi,
Sorry for writing in that issue, don't want to create a new one.
Is there a way to get rid off such kind of comments in migrated stories?

No, but If you want to make it a switch and submit a pull request I would happily take a contribution.