Test should fail but it passes

I wonder if rswag really tests something or is just used to generate the documentation.
Here is a simple example:
#spec/integration/languages_spec.rb

require 'swagger_helper'

describe "Languages API" do

  path '/languages/{language.id}' do
    get 'Retrieves a language tag by its ID' do
      tags 'Languages'
      security [ oauth2: [] ]
      parameter name: :id, in: :path, type: :string
      parameter name: :Authorization, in: :header, type: :string

      response '200', 'Language found' do
        schema type: :object,
          properties: {
            id:  { type: :integer },
            tag: { type: :string }
          },
          required: ['id']

        let!(:language) { create(:language, tag: 'tag-1') }
        let(:user) { create(:user) }
        let(:headers) { valid_headers(user.username) }
        let(:Authorization) { headers['Authorization'] }

        run_test! do |response|
          data = JSON.parse(response.body)
          expect(data['attributes']['tag']).to eq('tag-2')
        end
      end

      response '401', 'Authentication failed' do
        run_test!
      end
    end
  end

end

Here is the output when running rake rswag:specs:swaggerize:
/Users/Serguei/.rvm/rubies/ruby-2.5.0/bin/ruby -I/Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rspec-core-3.7.1/lib:/Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rspec-support-3.7.1/lib /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rspec-core-3.7.1/exe/rspec --pattern spec/requests/\*\*/\*_spec.rb,\ spec/api/\*\*/\*_spec.rb,\ spec/integration/\*\*/\*_spec.rb --format Rswag::Specs::SwaggerFormatter --dry-run --order defined
Generating Swagger docs ...
Swagger doc generated at /Users/Serguei/projects/decastore/decastore-api/swagger/v1/swagger.json

All tests (2) are passing. Weird because the first one should not, - I created a language with tag: 'tag-1' but tested the response for `tag: 'tag-2'.
More of that, if I use RSpec runner to execute the above test rspec spec/integration/languages_spec.rb, it fails with no related reason:
Failures:

  1) Languages API /languages/{language.id} get Language found returns a 200 response
     Failure/Error:
       raise WrongScopeError,
             "`#{name}` is not available from within an example (e.g. an " \
             "`it` block) or from constructs that run in the scope of an " \
             "example (e.g. `before`, `let`, etc). It is only available " \
             "on an example group (e.g. a `describe` or `context` block)."

       `id` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:66:in `block (2 levels) in add_path'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:65:in `each'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:65:in `block in add_path'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:64:in `tap'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:64:in `add_path'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:19:in `block in build_request'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:17:in `tap'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:17:in `build_request'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/example_helpers.rb:9:in `submit_request'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/example_group_helpers.rb:87:in `block in run_test!'

  2) Languages API /languages/{language.id} get Authentication failed returns a 401 response
     Failure/Error:
       raise WrongScopeError,
             "`#{name}` is not available from within an example (e.g. an " \
             "`it` block) or from constructs that run in the scope of an " \
             "example (e.g. `before`, `let`, etc). It is only available " \
             "on an example group (e.g. a `describe` or `context` block)."

       `id` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:66:in `block (2 levels) in add_path'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:65:in `each'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:65:in `block in add_path'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:64:in `tap'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:64:in `add_path'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:19:in `block in build_request'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:17:in `tap'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/request_factory.rb:17:in `build_request'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/example_helpers.rb:9:in `submit_request'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/example_group_helpers.rb:87:in `block in run_test!'

Finished in 0.24972 seconds (files took 1.1 seconds to load)
2 examples, 2 failures

Failed examples:

rspec ./spec/integration/languages_spec.rb:12 # Languages API /languages/{language.id} get Language found returns a 200 response
rspec ./spec/integration/languages_spec.rb:31 # Languages API /languages/{language.id} get Authentication failed returns a 401 response

The provided in README integration test example DOES NOT contain RSpec prefix for describe block. If I add it:
RSpec.describe "Languages API" do

  path '/languages/{id}' do
    get 'Retrieves a language tag by its ID' do
...

the error message is different:
1) Languages API /languages/{id} get Language found returns a 200 response
     Failure/Error: raise UnexpectedResponse, "Expected response body to match schema: #{errors[0]}" if errors.any?

     Rswag::Specs::UnexpectedResponse:
       Expected response body to match schema: The property '#/' did not contain a required property of 'id' in schema 980d621b-6289-58db-9a7f-69b705750e27
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/response_validator.rb:46:in `validate_body!'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/response_validator.rb:19:in `validate!'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/example_helpers.rb:31:in `assert_response_matches_metadata'
     # /Users/Serguei/.rvm/gems/ruby-2.5.0/gems/rswag-specs-2.0.5/lib/rswag/specs/example_group_helpers.rb:91:in `block in run_test!'
...

I created a separate branch on a classic Rails API project to reproduce the issue.
What's wrong with that ? Thank you.

I'm having exactly the same issue...does anyone have a clue?

@belgoros one of your errors is due to this line:
      parameter name: :id, in: :path, type: :string

You need to assign an ID somewhere, via a let, because path parameters are required. The error message isn't clear, I think you'll need to change your path:
path '/languages/{id}' do

And add a let for the id so it gets passed through with the request:
let(:id) { language.id }

@jaydorsey thank you for your response. Here the latest implementation:
#spec/integration/languages_spec.rb

describe "Languages API" do
  let(:language) { create(:language) }
  let(:user) { create(:user) }
  let(:headers) { valid_headers(user.username) }
  let(:Authorization) { headers['Authorization'] }
...

path '/languages/{id}' do
    get 'Retrieves a language by ID' do
      tags 'Languages'
      security [ oauth2: [] ]
      parameter name: :id, in: :path, type: :string
      parameter name: :Authorization, in: :header, type: :string

      response '200', 'Language found' do
        schema type: :object,
          properties: {
            data: {
              '$ref' => '#/definitions/language'
            }
          },

        required: ['id']
        run_test!
      end

      response '404', 'Language not found' do
        schema '$ref' => '#/definitions/errors_object'

        let(:user) { create(:user) }
        let(:headers) { valid_headers(user.username) }
        let(:Authorization) { headers['Authorization'] }
        let(:id) { 'invalid' }

        run_test!
      end
    end
  end
end

I'm setting the id in let, it still fails as follows:
Failures:

  1) Languages API /languages/{id} get Language found returns a 200 response
     Failure/Error: raise UnexpectedResponse, "Expected response body to match schema: #{errors[0]}" if errors.any?

     Rswag::Specs::UnexpectedResponse:
       Expected response body to match schema: The property '#/' did not contain a required property of 'id' in schema 6452aecc-ca60-5f85-9c71-0a9cbaee7e84
     # /Users/Serguei/.rvm/gems/ruby-2.6.1/gems/rswag-specs-2.0.5/lib/rswag/specs/response_validator.rb:46:in `validate_body!'
     # /Users/Serguei/.rvm/gems/ruby-2.6.1/gems/rswag-specs-2.0.5/lib/rswag/specs/response_validator.rb:19:in `validate!'
     # /Users/Serguei/.rvm/gems/ruby-2.6.1/gems/rswag-specs-2.0.5/lib/rswag/specs/example_helpers.rb:31:in `assert_response_matches_metadata'
     # /Users/Serguei/.rvm/gems/ruby-2.6.1/gems/rswag-specs-2.0.5/lib/rswag/specs/example_group_helpers.rb:91:in `block in run_test!'

Finished in 0.60187 seconds (files took 1.07 seconds to load)
3 examples, 1 failure

Failed examples:

rspec ./spec/integration/languages_spec.rb:41 # Languages API /languages/{id} get Language found returns a 200 response

You're still missing an ID in the first example (200)
It should look closer to this:
path '/languages/{id}' do
    get 'Retrieves a language by ID' do
      tags 'Languages'
      security [ oauth2: [] ]
      parameter name: :id, in: :path, type: :string
      parameter name: :Authorization, in: :header, type: :string

      response '200', 'Language found' do
        let(:id) { language.id } # HERE
        schema type: :object,
          properties: {
            data: {
              '$ref' => '#/definitions/language'
            }
          },

        required: ['id']
        run_test!
      end

      response '404', 'Language not found' do
        schema '$ref' => '#/definitions/errors_object'

        let(:user) { create(:user) }
        let(:headers) { valid_headers(user.username) }
        let(:Authorization) { headers['Authorization'] }
        let(:id) { 'invalid' }

        run_test!
      end
    end
  end
end

Any time you have a :path parameter, you must assign a value for rswag to substitute it for when it runs the specs
The same goes for any param marked required: true, you have to use a let (or maybe an ivar works too, idk, I use let for everything).

Also, I'm not 100% sure that schema is correct, for that type of request/response. You're doing a 200, based on a specified path with an ID. Usually I've only used the schema parameter when I'm submitting some kind of JSON (via POST or PUT). When you do a GET, you're just hitting a path with potential optional query parameters (which you don't have in this example) and headers (which you do, and you've assigned)
If you need to send JSON in the body along with your request, it's not really a GET at that point, it's a POST or a PUT (and then you could add a schema)

@jaydorsey Hmm, weird and looks like a duplication, - why should I declare id inside of path block if it is already declared in the upper level, - describe?  Another point - why is only id that rswag can't see in the failing test ? There are also Authorization which is also used in path block and declared outside of it ?

I think, the problem is that rswag testing does not work properly with the JSON response schema, especially in JSON API format. It generates nevertheless the documentation, no matter if the tests pass or not. The only solution I found for the moment is to comment out run_test in failing examples after generating the documentation with rake rswag:specs:swaggerize to have the tests passing, - anyway, the same behaviour has already been covered with RSpec requests specs.

why should I declare id inside of path block if it is already declared in the upper level

You declare where it "goes" here:
path '/languages/{id}' do

You have to define what to replace it with inside (or in an outer scope) a response block. Much like you defined it for your invalid test:
let(:id) { 'invalid' }

There's a snippet of code somewhere inside rswag that basically says "Replace any path variables with the instance variable you assigned", and if you don't assign it, you get the error you've been getting.

Another point - why is only id that rswag can't see in the failing test ?

Some of the error messages that bubble up either a) don't, or b) aren't clear (they get swallowed by rswag and raise an error, but don't quite clearly translate that to what the issue is with your setup/configuration)

the error is still the same and points clearly to the response schema

Can you comment out your response schema, and change your test block to this:
run_test! do
  puts response.body
end

And paste your output here? I'm not using the response schema validation but I'd be very surprised if it didn't work. The first step would be to look at your actual response output.

It generates nevertheless the documentation, no matter if the tests pass or not.

This is the same behavior I've observed so I think it's working as designed (but may not be working as expected)

Now that I look at it, your example might be failing because you failed to define the headers inside the request. You did so for the 404 example. Is there a reason why you don't use those let assignments for headers/authorization in one of the outer blocks so they're available for both the 200 and 404 response example?
path '/languages/{id}' do
    get 'Retrieves a language by ID' do
      tags 'Languages'
      security [ oauth2: [] ]
      parameter name: :id, in: :path, type: :string
      parameter name: :Authorization, in: :header, type: :string

      # Define users & header here so both response examples get a logged in user
      let(:user) { create(:user) }
      let(:headers) { valid_headers(user.username) }
      let(:Authorization) { headers['Authorization'] }

      response '200', 'Language found' do
        schema type: :object,
          properties: {
            data: {
              '$ref' => '#/definitions/language'
            }
          },

        required: ['id']
        let(:id) { language.id } # HERE

        run_test!
      end

      response '404', 'Language not found' do
        schema '$ref' => '#/definitions/errors_object'

        let(:id) { 'invalid' }

        run_test!
      end
    end
  end
end

@jaydorsey As I mentioned earlier, all the parameters are declared in the very upper, describe block:
describe "Languages API" do
let(:language) { create(:language) }
  let(:user) { create(:user) }
  let(:headers) { valid_headers(user.username) }
  let(:Authorization) { headers['Authorization'] }
...

and are available for all the below blocks.

@jaydorsey As I mentioned earlier, all the parameters are declared in the very upper, describe block:
describe "Languages API" do
let(:language) { create(:language) }
  let(:user) { create(:user) }
  let(:headers) { valid_headers(user.username) }
  let(:Authorization) { headers['Authorization'] }
...

and are available for all the below blocks.

Sorry, I was looking off of my snippet (which didn't include that piece). The id parameter isn't defined in that block

@vittoriabitton you should post your code snippet so we can look at it. Probably as a separate issue, or a stackoverflow post (i'm not sure which the gem author prefers)


RevEng: Warnings for skipped table

At present when we encounter index/fk from a table which is not included by user, we generate "warning" that we couldn't find the table. That means for a skipped table we would generate multiple warnings even though that was user intent. Should we remove this unnecessary warnings?

Surprisingly we debug output for columns for such table but not for other objects.


EXIF rotation and accessible colab for image completion with more features

hi, like others, i prepared a colab with more accessible GUI and presets here:
https://gist.github.com/eyaler/0cee9a71f5dd3fdfa9c0c03656ebdd4c
this is oriented for easily doing batch experiments and you can see some results here:
https://twitter.com/eyaler/status/1468682110860992521
there are some very simple things you may want to take from the notebook as fixing image rotation due to EXIF:
im = ImageOps.exif_transpose(Image.open(file))
and fixing the aspect ratio in post-process back to the original (although it would be better to use non-square encoding).
thanks fur rudalle!

Really cool stuff! Outpainting was the one thing I really missed in the original implementation, is it possible to add a custom mask instead of just cropping the image? Or is there a technical limitation that prevents that?


Go version used in V3.7.0

Hi, I need information about go version used in v3.7.0 branch/tag/
I did helm version and it prints:
helm version
version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb4014fe60267ec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.8"}

but in the source code, I see: GoVersion: "go1.13.10"
https://github.com/helm/helm/blob/v3.7.0/cmd/helm/version.go#L36
This is a description string and looks like needs to be updated.
Could you please confirm that the go version used in 3.7.0 is indeed go1.16.8?

I think this relates to: https://github.com/helm/helm/security/advisories/GHSA-cjjc-xp8v-855w

Affected  versions due to above CVE are:  2.0.0-2.16.7,3.0.0-3.0.3
Also, It says Helm 3.1.0 and newer are compiled against Go 1.13.7+.
I need to know which go version is used to compile helm 3.7.0
is GoVersion:"go1.16.8" correct?

Thanks for the confirmation!

Closing this issue as answered. Please feel free to comment here and let us know if you have further questions. Thanks!


Add color profile to training

This is the PR that allows ICC profiles to be used during training.

[x] ICC profile is applied in the dataset
[x] H5ImageFileWriter needs to be able to embed icc_profile

[x] Add possibility to embed the icc_profile

Furthermore it also fixes #43.

@jonasteuwen.. this PR also fixes {#16}. It would be nice to add it in the PR description.


Make Fake Data

I've created an R script to make fake paper and fake review data.  It uses a names database and a college affiliation database to create a humans database. These humans then write papers, with articles taken from an article database, and review each other's articles. The reviews are collections of sentences taken from a sentence database. So it's all nonsensical, but should have many of the features we need to get started testing @i-am-sijia code. Please have a look.

TODO:

make a sha1 hash for the human unique id
update variable names to match the protobuffer
make a boolean for presentation and publication
add paper abstracts and bodies
see if there are more common university databases

Bringing version 0 to master


Change Zammad ticket type

Short description
Allow Zammad users to answer to chat messages / tickets.
Proposed changes
Set the Zammad ticket type to "web" instead of "chat".
Side effects
None. This should only affect Zammad.
Resolved issues
Fixes: https://github.com/digitalfabrik/integreat-chat/issues/20

Pull Request Review Guidelines

Issues now have the reply link:

... which returns valid messages to the front end:


AttributeError: 'Wav2VecCtc' object has no attribute 'remove_pretraining_modules'

Dear authors of wav2vec2,
Thank you for the great work and for open-source the code and model.
I have question regarding to the  fine-tuning the wav2v model code with my own dataset.  I followed exactly what it said:
$ fairseq-hydra-train
distributed_training.distributed_port=$PORT
task.data=/path/to/data
model.w2v_path=/path/to/model.pt
--config-path /path/to/fairseq-py/examples/wav2vec/config/finetuning
--config-name base_100h
I have successfully  run the code with  path/to/model.pt  to be Wav2Vec 2.0 Base | No finetuning (the first model in the table) and Wav2Vec 2.0 Large (LV-60) | No finetuning (the 9th-row model in the table)
However, I could not run it with any other models.  it returns the following error.  Looks like those already finetuned models have no "remove_pretraining_modules". I am not sure how to fix it.  It would be great if you have any hints.
Thank you very much for your help.
Best,
Shirley

[2020-11-20 18:18:32,657][fairseq.data.audio.raw_audio_dataset][INFO] - loaded 2748, skipped 0 samples
Traceback (most recent call last):
  File “/home/fairseq/fairseq_cli/hydra_train.py", line 35, in hydra_main
    distributed_utils.call_main(cfg, pre_main)
  File “/home/fairseq/fairseq/distributed_utils.py", line 334, in call_main
    main(cfg, **kwargs)
  File “/home/fairseq/fairseq_cli/train.py", line 74, in main
    model = task.build_model(cfg.model)
  File “/home/fairseq/fairseq/tasks/audio_pretraining.py", line 200, in build_model
    model = super().build_model(model_cfg)
  File “/home/fairseq/fairseq/tasks/fairseq_task.py", line 282, in build_model
    model = models.build_model(cfg, self)
  File “/home/fairseq/fairseq/models/__init__.py", line 86, in build_model
    return model.build_model(cfg, task)
  File “/home/fairseq/fairseq/models/wav2vec/wav2vec2_asr.py", line 147, in build_model
    w2v_encoder = Wav2VecEncoder(cfg, task.target_dictionary)
  File “/home/fairseq/fairseq/models/wav2vec/wav2vec2_asr.py", line 304, in __init__
    model.remove_pretraining_modules()
  File "/root/miniconda3/envs/py36/lib/python3.6/site-packages/torch/nn/modules/module.py", line 594, in __getattr__
    type(self).__name__, name))
AttributeError: 'Wav2VecCtc' object has no attribute 'remove_pretraining_modules'

We figured it out! those fine-tuned model should be modified as checkpoint_last and put to the checkpoint folder!

wav2vec_small_960h.pt still has such problem.

i'm facing the same problem, have you solved the problem?

hi @xwuShirley ,i'm facing the same problem,what do you mean the checkpoint folder?

same question

hi @xwuShirley ,i'm facing the same problem,what do you mean the checkpoint folder?

checkpoint.restore_file=/path/to/finetuned/model

hi @xwuShirley ,i'm facing the same problem,what do you mean the checkpoint folder?

checkpoint.restore_file=/path/to/finetuned/model

u can reset the checkpoints:save_dir and restore_file in finetune config file

We figured it out. Those fine-tuned models should be modified as checkpoint_last and put to the checkpoint folder!

Hi, Could you please shed light on how you modify the fine-tuned model to checkpoint_last?
Thanks

A more detailed explanation will help me too.

A more detailed explanation will help me too.

fairseq-hydra-train task.data=/u01/wangfangyuan/wfy_udisk/librispeech/LibriSpeech/test-clean model.w2v_path=/u01/wangfangyuan/svn/Fairseq/fairseq/models_wav2vec2/wav2vec_small.pt --config-dir examples/wav2vec/config/finetuning --config-name base_1h

fairseq-hydra-train task.data=/u01/wangfangyuan/wfy_udisk/librispeech/LibriSpeech/test-clean model.w2v_path=/u01/wangfangyuan/svn/Fairseq/fairseq/models_wav2vec2/wav2vec_small.pt --config-dir examples/wav2vec/config/finetuning --config-name base_1h

Did anyone fix it?  I am finetuning the wav2vec2_vox_960_new.pt with my own corpus and I am a newbie to fairseq. I wonder what is your w2v_path? I thought it should also be the path to wav2vec2_vox_960_new.pt. Could you please explain that?

 Hi,
    You are right, the "w2v_path" can be set as wav2vec2_vox_960_new.pt or another pretrained model trained by yourself.
    All in all, you should make sure the model used here is a wav2vec model not a wav2vec_ctc model.
    Good luck!
------------------ 原始邮件 ------------------
发件人:                                                                                "pytorch/fairseq"                                                                                @.>;
发送时间: 2021年4月10日(星期六) 上午10:12
@.>;
<EMAIL_ADDRESS>主题: Re: [pytorch/fairseq] AttributeError: 'Wav2VecCtc' object has no attribute 'remove_pretraining_modules' (#2929)
@ksingla025, in hydra config you do like this:
checkpoint:   finetune_from_model: /hdd/fairseq/eval/wav2vec2_vox_960h_new.pt   no_epoch_checkpoints: true   best_checkpoint_metric: wer .... model:   _name: wav2vec_ctc   w2v_path: /hdd/fairseq/eval/wav2vec_vox_new.pt   apply_mask: true   mask_prob: 0.5   mask_channel_prob: 0.5   mask_channel_length: 64   layerdrop: 0.1   activation_dropout: 0.1   feature_grad_mult: 0.0   freeze_finetune_updates: 10000
Hi, Nick. I am finetuning the wav2vec2_vox_960_new.pt with my own corpus and I am a newbie to fairseq. I wonder what is your w2v_path? I thought it should also be the path to wav2vec2_vox_960_new.pt. Could you please explain that?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.


[HELP] Cannot activate production Vector

Describe the issue:
What are you running wire-pod on?

[OS]: Tried with macOS 10.15.7, and on Debian 12 (VM)
[Hardware]: Intel Mac Mine Late 2012.

Are you setting up a prod (regular) bot or a dev/OSKR (unlocked) bot?
Production bot
What steps have you tried?
With both the macOS and Debian installs (trying Debian first, then macOS):

I was able to access the wire-pod interface at http://escapepod.local:8080.

from the wire-pod machine, and from other machines on the network, and from my iPhone

Was able to pair to the Vector using https://vector.techshop82.com/ in an incognito (or regular) Chrome window using a Mac mini 2018.
Was able to connect Vector to wifi (image shows networking info on Vector screen)
Was able to refresh Vector with "ep" firmware (shows <IP_ADDRESS>76ep, 00700ede) at the top-right once paired.
After pressing "ACTIVATE", I get the message "Error logging in. The bot is likely unable to communicate with your wire-pod instance. Make sure you followed all of the steps and try again."

the vector shows the "V" inside the phone on-screen
Downloading logs from the bot, I see in run/update-engine/error, "Failed to open URL: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>"

My wifi setup is an Apple AirPort Extreme 802.11ac wifi router (broadcasting 2.4 and 5GHz with the same SSID) in bridge mode connected to the actual router.
The Mac running wire-pod has wifi disabled, and is hardwired to the actual router.

data/boot.log is attached below
Looking at terminal output on the wire-pod Mac machine, nothing is printed during this process; just shows "wire-pod started successfully"
~/wire-pod/chipper/jdocs contains only "placeholder"
Everything listed here was precisely the same behavior when trying from the Debian 12 VM.

Thanks in advanced for your work on this. Hope the info here is helpful.
boot.log

Looking into the vector's logs in data/diagnostics/logs/log.txt, I see that the vector cannot find escapepod.local, even though I can resolve http://escapepod.local:8080 from any other machine on the network.
12-25 21:58:19.965 info vic-switchboard 2159 2159 vic-switchboard: Received cloud session authorization request.
12-25 21:58:20.068 info vic-switchboard 2159 2159 vic-switchboard: Received message from token_server: 4
12-25 21:58:20.068 info vic-switchboard 2159 2159 vic-switchboard: CloudRequest JWT Response Handler
12-25 21:58:20.700 info vic-engine 2138 2138 vic-engine: @action.play_animationanim_lookatphone_loop_01ag_lookatphone_loopOnboardingLookAtPhoneLoopHighStim441562512
12-25 21:58:23.879 info vic-engine 2138 2138 vic-engine: @action.play_animationanim_lookatphone_loop_01ag_lookatphone_loopOnboardingLookAtPhoneLoopHighStim441565692
12-25 21:58:25.085 info logwrapper 2139 2139 vic-cloud: Token queue error: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp: lookup escapepod.local: no such host"
12-25 21:58:25.085 info logwrapper 2139 2139 vic-cloud: Error handling token request: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp: lookup escapepod.local: no such host"

Have you tried the latest commit? I just pushed a bunch of code which should help Vector resolve to escapepod.local. wire-pod, in the latest commit, registers itself as a service rather than relying on the computer's mDNS capabilities

Thanks @kercre123. I just pulled, reinstalled, and restarted the wire-pod machine. It's still accessible to every other device on my network at escapepod.local, but the Vector continues to error and the logs show the same "no such host" in the error. I might try installing wire-pod on a Windows machine to see if that works, but I don't know why it would fix this issue since everything else appears to be working...

Unfortunately, no. I got covered up with work and so I've been letting it sit for a while. This project is very actively maintained, so I was crossing my fingers that one of the updates might fix the issue. Otherwise, at some point I'll just buy a micro PC or an r-pi to see if that helps.


Devel

Release Description

Release of 0.7.0 admiral
Release Checklist

[x] Version number has been updated
[x] Description file updated with New Developers (if applicable)
[x] NEWS.md has been updated, issues linked where appropriate and formatted correctly
[ ] Ensure Test Coverage Badge is Green and on Readme
[ ] Ensure CMD Checks are passing and says Passing Badge on Readme
[ ] GitHub actions on this PR are all passing
[ ] First release to CRAN - devtools::build() and work through prompts
[ ] Incorporate feedback from CRAN and then do a GitHub release
[ ] Website is deployed and visual checks for integrity completed
[ ] Prepare and Post announcements for Linked-In and Slack Channels for Release

Clean up Checklist

[ ] Delete branches that are stale or abandoned or leftover from a Pull Request
[ ] Triage and close issues that were not closed properly via PRs that made it into release
[ ] Close Pull Requests that are stale
[ ] Set up and increment News/Changelog Skeleton
[ ] Retire labels specific to a time-period (testing feedback) if no longer in use
[ ] Remove Users with no activity for 12 months from Repository

@dinakar29 Can you take a look at the failing "Man Pages" workflow. Not sure what's wrong there...

@dinakar29 Can you take a look at the failing "Man Pages" workflow. Not sure what's wrong there...

Taking a look now

Ah it's a bug in the workflow. Fix incoming in a separate PR.

Ah it's a bug in the workflow. Fix incoming in a separate PR.

@dinakar29  Do you know how to fix our code coverage and rmd check badges?  I've been messing around with it a bit to no avail.
I can review PR once you have it ready.

I actually will not be able to fix your CodeCoverage badge as your repo is using a third party service (https://app.codecov.io/gh/pharmaverse/admiral?branch=devel) for code coverage.
I can fix the R CMD check badge, though, since it's GH actions.

I actually will not be able to fix your CodeCoverage badge as your repo is using a third party service (https://app.codecov.io/gh/pharmaverse/admiral?branch=devel) for code coverage.

yeah it seems we need admins to of the pharmaverse ogranization to make this happen @pharmaverse/core-team

I can fix the R CMD check badge, though, since it's GH actions.

please and thank you.

Here ya go: https://github.com/pharmaverse/admiral/pull/1161

@bms63 @dinakar29 i accepted the "Request to install Codecov in pharmaverse" email and chose admiral and admiralonco repos. let me know if anything else needed from a pharmaverse org admin for this.

@bms63 @dinakar29 i accepted the "Request to install Codecov in pharmaverse" email and chose admiral and admiralonco repos. let me know if anything else needed from a pharmaverse org admin for this.

@rossfarrugia - it looks like the Codecov report was published to Roche-GSK/admiral. I believe some additional settings need to change on the codecov side.
Also, I'd be wary of using codecov given they've been breached via a massive supply chain attack which affected a large number of OSS projects recently. My recommendation is that you do not use their services, but totally up to you if you accept the risks and prefer it over something else.

thanks @dinakar29 for the advice! i've revoked access for now then and will wait for @bms63 & @thomas-neitmann to comment. maybe we can leave out of this release and make a call on future strategy after if possible?

thanks @dinakar29 for the advice! i've revoked access for now then and will wait for @bms63 & @thomas-neitmann to comment. maybe we can leave out of this release and make a call on future strategy after if possible?

Is there an alternative service to use for codecov?  We have it set up for metatools, so if we don't want to use it for admiral and admiralonco for the attack issues, then maybe we need to remove it off metatools?
Looking over this report - https://blog.gitguardian.com/codecov-supply-chain-breach/  It seems they were trying to get tokens and secret keys  in private git repos using codecov as a way to get into them.  Do you think this is an issue for us?  I look into it a bit more, but I feel like this is a big issue for us.  @thomas-neitmann


fix redundancy in chatManager class

The getMessageChainTo()  method in the MessageTree class currently returns an array that already includes the message itself, so no need to push it again into the messages array.

The code is a bit confusing here and should probably be rewritten to make it more clear, but because getMessageChainTo() is passed message.parentID (as opposed to message.id) it returns the list of messages ending with the previous message - the one being replied to - and not the new message.
The MessageTree class stores messages in a tree structure, where each message keeps track of its parent (the message it was a reply to) and replies (may have multiple replies if the user edited or regenerated a message). getMessageChainTo() scans up through the tree to find the series of messages leading to the new message, not including the new message, and not including any messages on other 'branches' of the tree (like older edits). Hope that makes sense.


Add Array::shrink_to_fit(&mut self)

Which issue does this PR close?

Closes #6360

Rationale for this change
Concatenating many arrow buffers incrementally can lead to situations where the buffers are using much more memory than they need (their capacity is larger than their lengths).
Example:
use arrow::{
    array::{Array, ArrayRef, ListArray, PrimitiveArray},
    buffer::OffsetBuffer,
    datatypes::{Field, UInt8Type},
};

fn main() {
    let array0: PrimitiveArray<UInt8Type> = (0..200 * 300)
        .map(|v| (v % 255) as u8)
        .collect::<Vec<_>>()
        .into();
    let array0: ArrayRef = Arc::new(array0);

    let (global, local) = memory_use(|| {
        let concatenated = concatenate(array0.clone());
        dbg!(concatenated.data_type());
        eprintln!("expected: ~{}", how_many_bytes(concatenated.clone()));
        concatenated
    });
    eprintln!("global: {global} bytes");
    eprintln!("local: {local} bytes");

    eprintln!("---");

    let array1 = ListArray::new(
        Field::new_list_field(array0.data_type().clone(), false).into(),
        OffsetBuffer::from_lengths(std::iter::once(array0.len())),
        array0.clone(),
        None,
    );
    let array1: ArrayRef = Arc::new(array1);

    let (global, local) = memory_use(|| {
        let concatenated = concatenate(array1.clone()).shrink_to_fit();
        dbg!(concatenated.data_type());
        eprintln!("expected: ~{}", how_many_bytes(concatenated.clone()));
        concatenated
    });
    eprintln!("global: {global} bytes");
    eprintln!("local: {local} bytes");
}

fn concatenate(array: ArrayRef) -> ArrayRef {
    let mut concatenated = array.clone();

    for _ in 0..1000 {
        concatenated = arrow::compute::kernels::concat::concat(&[&*concatenated, &*array]).unwrap();
    }

    concatenated
}

fn how_many_bytes(array: ArrayRef) -> u64 {
    let mut array = array;
    loop {
        match array.data_type() {
            arrow::datatypes::DataType::UInt8 => break,
            arrow::datatypes::DataType::List(_) => {
                let list = array.as_any().downcast_ref::<ListArray>().unwrap();
                array = list.values().clone();
            }
            _ => unreachable!(),
        }
    }

    array.len() as _
}

// --- Memory tracking ---

use std::sync::{
    atomic::{AtomicUsize, Ordering::Relaxed},
    Arc,
};

static LIVE_BYTES_GLOBAL: AtomicUsize = AtomicUsize::new(0);

thread_local! {
    static LIVE_BYTES_IN_THREAD: AtomicUsize = const { AtomicUsize::new(0)  } ;
}

pub struct TrackingAllocator {
    allocator: std::alloc::System,
}

#[global_allocator]
pub static GLOBAL_ALLOCATOR: TrackingAllocator = TrackingAllocator {
    allocator: std::alloc::System,
};

#[allow(unsafe_code)]
// SAFETY:
// We just do book-keeping and then let another allocator do all the actual work.
unsafe impl std::alloc::GlobalAlloc for TrackingAllocator {
    #[allow(clippy::let_and_return)]
    unsafe fn alloc(&self, layout: std::alloc::Layout) -> *mut u8 {
        LIVE_BYTES_IN_THREAD.with(|bytes| bytes.fetch_add(layout.size(), Relaxed));
        LIVE_BYTES_GLOBAL.fetch_add(layout.size(), Relaxed);

        // SAFETY:
        // Just deferring
        unsafe { self.allocator.alloc(layout) }
    }

    unsafe fn dealloc(&self, ptr: *mut u8, layout: std::alloc::Layout) {
        LIVE_BYTES_IN_THREAD.with(|bytes| bytes.fetch_sub(layout.size(), Relaxed));
        LIVE_BYTES_GLOBAL.fetch_sub(layout.size(), Relaxed);

        // SAFETY:
        // Just deferring
        unsafe { self.allocator.dealloc(ptr, layout) };
    }
}

fn live_bytes_local() -> usize {
    LIVE_BYTES_IN_THREAD.with(|bytes| bytes.load(Relaxed))
}

fn live_bytes_global() -> usize {
    LIVE_BYTES_GLOBAL.load(Relaxed)
}

/// Returns `(num_bytes_allocated, num_bytes_allocated_by_this_thread)`.
fn memory_use<R>(run: impl Fn() -> R) -> (usize, usize) {
    let used_bytes_start_local = live_bytes_local();
    let used_bytes_start_global = live_bytes_global();
    let ret = run();
    let bytes_used_local = live_bytes_local() - used_bytes_start_local;
    let bytes_used_global = live_bytes_global() - used_bytes_start_global;
    drop(ret);
    (bytes_used_global, bytes_used_local)
}

If you run this you will see 12 MB is used for 6 MB of data.
Adding a call to the new .shrink_to_fit(); on concatenated removes the memory overhead.
What changes are included in this PR?
This PR adds shrink_to_fit(&mu self) to Array and all buffers.
It is best-effort.
Are there any user-facing changes?
trait Array now has a fn shrink_to_fit(&mut self) { }.

I've added a test to make sure the shrink_to_fit call actually returns memory to global allocator, as is its job.
This works with the current code, but if I try to use std::alloc::realloc the memory is never returned. It is as if the realloc call succeeds without actually freeing up the extra memory. Here is the diff for what I tried:
diff --git a/arrow-buffer/src/buffer/immutable.rs b/arrow-buffer/src/buffer/immutable.rs
index 40625329a..70a100734 100644
--- a/arrow-buffer/src/buffer/immutable.rs
+++ b/arrow-buffer/src/buffer/immutable.rs
@@ -173,7 +173,15 @@ impl Buffer {
     ///
     /// If the capacity is already less than or equal to the desired capacity, this is a no-op.
     pub fn shrink_to_fit(&mut self) {
-        if self.len() < self.capacity() {
+        let desired_capacity = self.len();
+        if desired_capacity < self.capacity() {
+            if let Some(bytes) = Arc::get_mut(&mut self.data) {
+                if bytes.try_realloc(desired_capacity).is_ok() {
+                    return;
+                }
+            }
+
+            // Fallback:
             *self = Self::from_vec(self.as_slice().to_vec())
         }
     }
diff --git a/arrow-buffer/src/bytes.rs b/arrow-buffer/src/bytes.rs
index ba61342d8..e616ee7c0 100644
--- a/arrow-buffer/src/bytes.rs
+++ b/arrow-buffer/src/bytes.rs
@@ -96,6 +96,27 @@ impl Bytes {
         }
     }

+    /// Try to reallocate the underlying memory region to a new size (smaller or larger).
+    ///
+    /// Returns `Err(())` if the reallocation failed.
+    /// Only works for bytes allocated with the standard allocator.
+    pub fn try_realloc(&mut self, new_len: usize) -> Result<(), ()> {
+        if let Deallocation::Standard(layout) = self.deallocation {
+            if let Ok(new_layout) = std::alloc::Layout::from_size_align(new_len, layout.align()) {
+                let new_ptr =
+                    unsafe { std::alloc::realloc(self.ptr.as_mut(), new_layout, new_len) };
+                if let Some(ptr) = NonNull::new(new_ptr) {
+                    self.ptr = ptr;
+                    self.len = new_len;
+                    self.deallocation = Deallocation::Standard(new_layout);
+                    return Ok(());
+                }
+            }
+        }
+
+        Err(())
+    }
+
     #[inline]
     pub(crate) fn deallocation(&self) -> &Deallocation {
         &self.deallocation

What do you think about adding a struct ShrinkPolicy parameter to shrink_to_fit? That would allow us to add custom options in the future without breaking backwards compatibility. We could start with
#[non_exhaustive]
#[derive(Debug, Default)]
pub struct ShrinkPolicy {}

Options I could see us adding in the future:

What to do with shared ArrayRef
What to do with shared Buffer

What do you think about adding a struct ShrinkPolicy parameter to shrink_to_fit? That would allow us to add custom options in the future without breaking backwards compatibility.

It is an idea with merit, but I think let's keep shrink_to_fit simple. More complex logic to recompute minimal array representations belongs in arrow-select, we want to keep arrow-array as lightweight as possible.

How are you measuring this? Many allocators, glibc especially, hang onto memory that isn't in use to avoid thrashing the TLB. They will reuse it, they just won't give it back to the system.

I install an allocator and note down all calls to it. But I realized I had a bug in my call to realloc - I need to give it the layout of the previous allocation, but I gave it the layout to the new allocation. Fixing that bug makes the realloc path work 👍

Good idea with realloc - thanks for the swift feedback. I think this PR is ready for a final review now!

Btw, this is not a breaking change, so this could be added to an arrow 0.53.x patch release (which I would greatly appreciate 🙏)

MIRI caught a couple of bugs in my unsafe code. I pushed some fixes and test improvements.

Looks good to me


About timestamp synchronization

Hello, this is a great job. Thank you for your contributions to the community!
After reading your paper, I would like to ask how the timestamp soft synchronization in the paper is implemented?
I am integrating avia and mid-360. When I use PTPd to perform soft synchronization between the two network ports, there seems to be a delay of about 3 seconds. The topic:/livox/lidar released after merging the point cloud does not seem to be accepted by the algorithm. Is this because the time is not synchronized properly?
I look forward to your reply.


I added colors

Your code is great, the documentation was not colorized, i colorized it.

Thanks!


Add badges

From https://github.com/spmeesseman/vscode-taskexplorer/blob/master/README.md
[![GitHub issues open](https://img.shields.io/github/issues-raw/spmeesseman/vscode%2dtaskexplorer.svg?logo=github)](https://github.com/spmeesseman/vscode-taskexplorer/issues)
[![GitHub issues closed](https://img.shields.io/github/issues-closed-raw/spmeesseman/vscode%2dtaskexplorer.svg?logo=github)](https://github.com/spmeesseman/vscode-taskexplorer/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/spmeesseman/vscode%2dtaskexplorer.svg?logo=github)](https://github.com/spmeesseman/vscode-taskexplorer/pulls)
[![GitHub last commit](https://img.shields.io/github/last-commit/spmeesseman/vscode%2dtaskexplorer.svg?logo=github)](https://github.com/spmeesseman/vscode-taskexplorer)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

Done


Still maintained?

I see this project hasn’t been updated in over 2 years – is anyone aware of any alternative curated lists? I’ve found Discord listings hard to navigate as the search isn’t always giving super relevant results for my search terms compared to this list.

Hello.

this project hasn’t been updated in over 2 years

Slow update is somewhat intentional given that we don't add new communities unless they meet a certain activity level, or it'd not be an awesome list ;) Having said that, it is missing a few categories of servers (notably no OpenAI/ChatGPT related server). Though I don't expect many existing servers would be replaced by new, emerging ones.
But I expect to come back soon. I'm hoping I'll be able to add some of the obvious missing ones.
If you have some immediate suggestions, feel free to contribute or let me know (:

Thanks @mhxion! I think that answers my question. I guess I would have expected you / other maintainers to close the PRs for communities that don’t meet criteria rather than leave them open? I have a specific community in mind I’d like to add but I’ll check with them first whether that’s ok with them.

I guess I would have expected you / other maintainers to close the PRs for communities that don’t meet criteria rather than leave them open?

That's on me! I intend to tend to them soon. Every PR with new server submission gets manually reviewed.

I have a specific community in mind I’d like to add

Sure : )

but I’ll check with them first whether that’s ok with them.

On that: The way I see it though, as long as a community is public, can be found via Google search, there's nothing wrong with adding it to the list without the owner's/staff's explicit acknowledgement. Awesome lists are essentially site aggregators. We still take the "ask for forgiveness later" approach here though. We let the staff know after we've added their community, and ask them to report to us if they wish their community to be removed from the list. And so far no one has : )

comeback: #115


Goodbye Message

When the bot says goodbye, when the user inputs some text, the bot says goodbye again. Upon user input again the bot says that it doesn't understand. Should default to doesn't understand immediately after the bot says goodbye.

There was a duplicate follow up intent on the goodbye message - now deleted


MAS coin unit standard

Context
*Describe / explain why we should do this: motivations, context or other info.
MAS coin has 9 decimals. This issue is about writing a standard that describe how are handle coin amounts.
How to
*List the step-by-step to get it do if needed (optional)
proposal
10^-9 MAS = 0,000 000 001 MAS = 1 nMAS (nano Massa)

related to https://github.com/massalabs/massa-web3/pull/109

https://github.com/massalabs/massa-standards/pull/28 The MR for the units standard

To consider this issue done, I think the standard created should be listed and shared broadly so everyone in the company knows where it is.
Maybe adding it into "Notion/Massa All/Procedure/ ?"
@Thykof what do you think? Feel free to suggest another way of doing (wondering is listing it on the github read me wouldn't be more efficient as it will cover internat & external needs at the same time.... how are other companies doing usually?)

we definitely need to update the list in the readme at least.

we definitely need to update the list in the readme at least.

The read me needs to be updated indeed...

@SlnPons @Thykof this was done in #35

thanks!


Replace PadDataset with RightPadDataset

Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos, doc improvements)
[x] Did you read the contributor guideline?
[x] Did you make sure to update the docs?
[x] Did you write any new necessary tests?

What does this PR do?
replace PadDataset with RightPadDataset
Did you have fun?
Make sure you had fun coding 🙃

Merged in adbd89fd4be9e68100bf9a4ba9eed1e7fb2e4040


<EMAIL_ADDRESS>is not in the npm registry.

Description
Upon doing npm install for just the lit-html package, I get following error:
<EMAIL_ADDRESS>is not in the npm registry.
Aims to create bndle for just lit-html seperately.

Actual Results
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/internal-scripts - Not found
npm ERR! 404
npm ERR! 404<EMAIL_ADDRESS>is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 It was specified as a dependency of 'lit-html'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

The build intruction are :

Follow them blindly, should solve the issue.


Y U NO SQUASH PRS?

Trying to follow the gRPC commit history is a futile exercise. Sometimes a single PR has 10+ commits. That's a lot of noise. It also makes GH's release comparison feature a lot less useful, because this way you're much more likely to go over the limit of 250 commits max per diff.
Compare and contrast to the Kubernetes project, where reviewers are adamant (quite the understatement) about whole sets of changes getting rebased into one commit (or, rarely, two, and only for specific scenarios).
Can we have either a new policy of rebasing changes before merging? Or allowing squashing in the project's GitHub UI? See
https://github.com/blog/2141-squash-your-commits

I would agree that a series of commits such as {"testing this", "nope, didn't work, let's try that instead", "oh, typo", "nope, that was actually right"} is indeed noise. But having a single 10k loc commit isn't helping either. Some would actually rather point at the advantage of having more than one commit per PR as a plus in readability, in order to be able to decompose a heavy PR into multiple subcommits that are all logically divided, and proceed through the code review in a logical manner.
The current opinion I have, and the one I've been trying to preach around here, is to decompose commits to the order of {"fixing bug", "adding test for fix", "adding documentation for the fix"}.
But the fact of the matter is, this is more of a holy war discussion than an actual problem, akin to "vi vs emacs", and I don't believe this repository is a useful place to have it.

Should I move this to the list, then? The 10K LOC example is probably the exception in Kubernetes that I was referring to. Kubernetes uses auto-generated code and it was checked in, until recently. It was customary, when an API definition change resulted in massive diffs in the autogen code, to have all of that in a commit of its own, while the changes in hand-written logic that dealt with the new spec would be a separate one. Similar exceptions are given for large refactoring changes, to make reviews easier under GH's horrible UI.
I disagree that this is a holy war. It's code hygiene like the Style Guide and it only takes a "decider" to make the call. Kubernetes is a much larger project than gRPC and, despite all of its growing pains, squashing has been the least troubles. This from the guy that has "I rebase code all the time" under "What I do" on the Kubernetes Slack. :-)
Personally, I do not care which policy gets picked (one commit, up to three, etc.), as long as there is one.


Update nexus-connector-settings-reference.md

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the maintainers.
What Type of PR is This?

[ x] Issue
[ ] Feature
[ ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

https://harness.atlassian.net/browse/DOC-2488

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ ] Tested Locally
[ ] Optional Screen Shoot.

Preview environment: https://ci.pr.harness.io/pr-510


Nested slots and wrong hierarchy

First of all: Damn, Vue made it fun to code again!
I have a Column component:
<template>

    <slot></slot>

</template>

A Row:
<template>

    <slot></slot>

</template>

A Container:
<template>

    <slot></slot>

</template>

And finally a Layout component:
<template>

    <container inner>
      <row align-items="center">
        <column type="text">
          <slot name="text"></slot>
        </column>
        <column type="image" gutterless>
          <slot name="image"></slot>
        </column>
      </row>
    </container>

</template>

Then used:
<layout>
  <text slot="text">Hello there</text>
  <hero-image slot="image"></hero-image>
</layout>

The DOM output is as expected:
- Layout
   - Container
      - Row
         - Column
            - [content]
         - Column
            - [content]

However, The Vue devtools shows the hierarchy wrong:
- Layout
   - Container
      - Row
         - Column
         - Column
   - [content]
   - [content]

I guess it's all the nested slots. I've ensured that all elements are closed properly - and again there's nothing wrong with the DOM output.
Just a minor thing that nags me!

I think this is intentional. At least it depends on what the component tree in devtools is supposed to show:

should it show the the $parent tree, which will be similar to the resulting DOM tree, or
should it show the context in which child component is evaluated

Currently, it behaves like the second option. As your can see,  in your example, the text-slot and hero components are evaluated in the context of the layout component.
This information would be lost when your place it in the end position according to the $parent tree / DOM tree.


Cannot drop database "TestGatewayDocs" because it is currently in use.

I followed Tutorial: Connect to on-premises data in SQL Server. In the end I tried to clean resource but I encountered issue: Cannot drop database "TestGatewayDocs" because it is currently in use. I deleted geteway related objects from my Power Bi Service: geteway instance, dataset, and report. Also I uninstalled on-premise from my pc. However, it still shows the same error message.

Thanks for your comment, @jeffzdli. This looks like a support request rather than documentation feedback. You might find a solution in the Power BI Community, found at https://community.powerbi.com. If not, you can get support by going to https://support.powerbi.com.


how to use createBuffersAndAttributesFromArrays when a buffer both used in vertex buffer and storage buffer?

i want to create a buffer to use in vertex buffer and storage buffer
struct Node {
position : vec2f,
size : f32,
};
struct Edge {
srouceNodeIndex : f32,
targetNodeIndex : f32,
};
in edge shader , nodesBuffer used as storeage bindGroup
in node shader , nodesBuffer used as vertexBuffer
i have two questions
1 if vertex buffer don't need allow the alignment requirements rules?
2 how to use
step1 wgh.makeShaderDataDefinitions('@group(0) @binding(1) var<storage, read_write> points : array<Node>')
step2 values = wgh.makeStructuredView(defs.storages.points) and values.set([{position:[1,1], size:1},{position:[2,2], size:2}])
step3 wgh.createBuffersAndAttributesFromArrays how??? i need arrayStride and attributes

if vertex buffer don't need allow the alignment requirements rules?
vertex buffers have their own rules

2 how to use
step1 wgh.makeShaderDataDefinitions('@group(0) @binding(1) var<storage, read_write> points : array')
step2 values = wgh.makeStructuredView(defs.storages.points) and values.set([{position:[1,1], size:1},{position:[2,2], size:2}])
step3 wgh.createBuffersAndAttributesFromArrays how??? i need arrayStride and attributes
using createBuffersAndAttributesFromArrays and makeShaderDataDefinitions together doesn't make a lot of sense I think? createBuffersAndAttributesFromArrays takes a set of arrays and no info from the shaders. It creates buffers and assigns attributes based on the types of typedarrays or other metadata passed in. This is because attributes in the shader are always vec4f or vec4u or vec4i (you can declare them as other types but the attribute itself always supplies 4 values. If you don't provide data they are 0,0,0,1
Example: in shader
// declare an attribute at 1 of 3 values
@location(1) p: vec3f,

In pipeline
// supply only 2 values from 8bit signed bytes
{ shaderLocation: 1, format: 'snorm8x2', offset: 0 }

The data being supplied is 2bytes per vertex but nothing in the shader says "2bytes". That's entirely decided by the pipeline so there is no connection. Further, the shader asked for 3 values (vec3f) but we only supplied 2 so the 3rd value will be 0. If we'd asked for 4 values (vec4f) the 4th value would be 1 because attributes default to 0,0,0,1
It's hard to know what to recommend. makeShaderDataDefinitions is really designed around uniforms as they are often a hodgepodge/collection of inputs of different types.
In any case, I don't know how much help these functions are for your use case. Here's one try
import {vec3, mat4} from 'https://webgpufundamentals.org/3rdparty/wgpu-matrix.module.js';
import {
  makeShaderDataDefinitions,
  makeStructuredView,
  getSizeAndAlignmentOfUnsizedArrayElement,
} from 'https://greggman.github.io/webgpu-utils/dist/1.x/webgpu-utils.module.js';

async function main() {
  const adapter = await navigator.gpu?.requestAdapter();
  const device = await adapter?.requestDevice();
  if (!device) {
    fail('need webgpu');
    return;
  }

  const canvas = document.querySelector('canvas');
  const context = canvas.getContext('webgpu');

  const presentationFormat = navigator.gpu.getPreferredCanvasFormat(adapter);

  context.configure({
    alphaMode: "opaque",
    format: presentationFormat,
    device,
  });

  const shaderSrc = `
  struct Node {
    @location(0) position : vec2f,
    @location(1) size : f32,
  };
  struct Edge {
    srouceNodeIndex : u32,
    targetNodeIndex : u32,
  };

  struct MyVSOutput {
    @builtin(position) position: vec4f,
    @location(0) size: f32,
  };

  @vertex fn vsLines(v: Node) -> MyVSOutput {
    var vsOut: MyVSOutput;
    vsOut.position = vec4f(v.position, 0, 1);
    vsOut.size = v.size;
    return vsOut;
  }

  @vertex fn vsPoints(
      @builtin(vertex_index) vNdx: u32,
      @builtin(instance_index) iNdx: u32,
  ) -> MyVSOutput {
    let pos = array(
      vec2f(-0.5, -0.5),
      vec2f( 0.5, -0.5),
      vec2f(-0.5,  0.5),
      vec2f(-0.5,  0.5),
      vec2f( 0.5, -0.5),
      vec2f( 0.5,  0.5),
    );
    let node = nodes[iNdx];
    var vsOut: MyVSOutput;
    vsOut.position = vec4f(pos[vNdx] * node.size + node.position, 0, 1);
    return vsOut;
  }

  @group(0) @binding(0) var<storage> nodes: array<Node>;
  @group(0) @binding(1) var<storage> edges: array<Edge>;

  @fragment
  fn fsLines(v: MyVSOutput) -> @location(0) vec4<f32> {
    return vec4f(1,0,0,1);
  }

  @fragment
  fn fsPoints(v: MyVSOutput) -> @location(0) vec4<f32> {
    return vec4f(0,1,1,1);
  }
  `;

  const shaderModule = device.createShaderModule({code: shaderSrc});

  const defs = makeShaderDataDefinitions(shaderSrc);
  const {size: nodeSize} = getSizeAndAlignmentOfUnsizedArrayElement(defs.storages.nodes);
  const {size: edgeSize} = getSizeAndAlignmentOfUnsizedArrayElement(defs.storages.edges);

  const numNodes = 6;
  const numEdges = 5;
  const nodeArrayBuffer = new ArrayBuffer(numNodes * nodeSize);
  const edgeArrayBuffer = new ArrayBuffer(numEdges * edgeSize);

  const nodes = makeStructuredView(defs.storages.nodes, nodeArrayBuffer);
  const edges = makeStructuredView(defs.storages.edges, edgeArrayBuffer);

  nodes.set([
    { position: [-0.5, -0.5], size: 0.1 },
    { position: [ 0.5, -0.5], size: 0.2 },
    { position: [-0.5,  0  ], size: 0.3 },
    { position: [ 0.5,  0  ], size: 0.2 },
    { position: [-0.5,  0.5], size: 0.1 },
    { position: [ 0.5,  0.5], size: 0.2 },
  ]);

  edges.set([
    { srouceNodeIndex: 0, targetNodeIndex: 1 },
    { srouceNodeIndex: 1, targetNodeIndex: 3 },
    { srouceNodeIndex: 3, targetNodeIndex: 2 },
    { srouceNodeIndex: 2, targetNodeIndex: 4 },
    { srouceNodeIndex: 4, targetNodeIndex: 5 },
  ]);

  const nodeBuffer = device.createBuffer({
    label: 'nodes',
    size: nodes.arrayBuffer.byteLength,
    usage: GPUBufferUsage.VERTEX | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
  });
  const edgeBuffer = device.createBuffer({
    label: 'edges',
    size: edges.arrayBuffer.byteLength,
    usage: GPUBufferUsage.INDEX | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
  });

  device.queue.writeBuffer(nodeBuffer, 0, nodes.arrayBuffer);
  device.queue.writeBuffer(edgeBuffer, 0, edges.arrayBuffer);

  const linesPipeline = device.createRenderPipeline({
    label: 'lines',
    layout: 'auto',
    vertex: {
      module: shaderModule,
      entryPoint: 'vsLines',
      buffers: [
        {
          arrayStride: nodeSize,
          attributes: [
            { shaderLocation: 0, format: 'float32x2', offset: nodes.views[0].position.byteOffset },
            { shaderLocation: 1, format: 'float32', offset: nodes.views[0].size.byteOffset },
          ],
        }
      ]
    },
    fragment: {
      module: shaderModule,
      entryPoint: 'fsLines',
      targets: [
        {format: presentationFormat},
      ],
    },
    primitive: {
      topology: 'line-list',
    },
  });

  const pointsPipeline = device.createRenderPipeline({
    label: 'points',
    layout: 'auto',
    vertex: {
      module: shaderModule,
      entryPoint: 'vsPoints',
    },
    fragment: {
      module: shaderModule,
      entryPoint: 'fsPoints',
      targets: [
        {format: presentationFormat},
      ],
    },
  });

  const bindGroup = device.createBindGroup({
    layout: pointsPipeline.getBindGroupLayout(0),
    entries: [
      { binding: 0, resource: { buffer: nodeBuffer } },
    ],
  });

  const renderPassDescriptor = {
    colorAttachments: [
      {
        // view: undefined, // Assigned later
        // resolveTarget: undefined, // Assigned Later
        clearValue: [0.2, 0.2, 0.2, 1],
        loadOp: 'clear',
        storeOp: 'store',
      },
    ],
  };

  function render(time) {
    time *= 0.001;

    const canvasTexture = context.getCurrentTexture();
    renderPassDescriptor.colorAttachments[0].view = canvasTexture.createView();

    const commandEncoder = device.createCommandEncoder();
    const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

    passEncoder.setPipeline(linesPipeline);
    passEncoder.setVertexBuffer(0, nodeBuffer);
    passEncoder.setIndexBuffer(edgeBuffer, 'uint32');
    passEncoder.drawIndexed(numEdges * 2);

    passEncoder.setPipeline(pointsPipeline);
    passEncoder.setBindGroup(0, bindGroup);
    passEncoder.draw(6, numNodes);

    passEncoder.end();

    device.queue.submit([commandEncoder.finish()]);

    requestAnimationFrame(render);
  }
  requestAnimationFrame(render);

  const observer = new ResizeObserver(entries => {
    for (const entry of entries) {
      const canvas = entry.target;
      const width = entry.contentBoxSize[0].inlineSize;
      const height = entry.contentBoxSize[0].blockSize;
      canvas.width = Math.max(1, Math.min(width, device.limits.maxTextureDimension2D));
      canvas.height = Math.max(1, Math.min(height, device.limits.maxTextureDimension2D));
    }
  });
  observer.observe(canvas);
}

function fail(msg) {
  const elem = document.querySelector('#fail');
  const contentElem = elem.querySelector('.content');
  elem.style.display = '';
  contentElem.textContent = msg;
}

main();

Live:
https://jsgist.org/?src=a42d67ebc7f13e30759f3efd16963308
There's just too many unknowns though. For example, if you want to be able to share the bindGroup across pipelines then you'd need make a bindgroupLayout and a pipelineLayout. webgpu-utils can help with that but one of the pipelines didn't use the buffers via pipeline at all. It only used them via vertex buffers/index buffers

I truly appreciate the time you've taken to write these examples. I'm working on a graph visualization project, and these two examples have been incredibly helpful to me. Thank you!

Modify this fragment shader to make the rectangle circular
What's wrong with this code? Why isn't it working?


Updating header to match design

This updates the hero section of the landing page.

Minimizes a portion of the spacing on the header as the font is bigger than in the design and is pushing content below the fold.

Adds the bottom margin to the features found in the hero section so that they are not sitting on the break.

Intended:

Actual:

Updated:

Looks good to me. Thanks @nftchance !


[cleanup] Cleanup misc - Part 2

[x] I have followed (at least) the PR section of the contributing guide.

Bundle size will be reported once CircleCI build #1247 finishes.

  Generated by :no_entry_sign: dangerJS against 34aca1e986afae9753f91a8f2f1264d6653f13e5

Bundle size will be reported once CircleCI build #1271 finishes.

  Generated by :no_entry_sign: dangerJS against f26b62a5ffe8404664dcb26841a102e0008cfa79


Unable to retrieve Current Account

I was able to pull the current account in deploying new store address last week but the funds are not enough. Now I'm trying to deploy again but this time the current account is now showing been refreshing for couple of minutes now.
Token is inserted and not locked.
I also tried both while being logged and not logged in Ledger Live

the code hasn't changed between last week and now, has your environment changed?
which browser are you using?

I'm using the same machine, browser, network and token as to last friday's issue (https://github.com/OpenCerts/admin-website/issues/64).
Since it's a funding issue, i wanted to make sure that the same ETH address will be provided by the admin site before sending the funds, unfortunately no address is being shown, i already done a restart twice.

Strange, now after lunch the current account is now showing, I have to navigate to Ethereum > Use wallet to view accounts in the token, then click refresh on the admin site. Not sure if that really solve the issue.

yea that's actually intended behaviour - you need to be in the ethereum app

Thanks for the quick response.


Adds HELM_OCI_DATE_EPOCH wich can be use to reproducibly push a Helm chart to an OCI registry

Currently, when using helm push, the creation time of the Helm tar file is used. This makes it impossible to push the same chart twice reproducibly. This PR introduces HELM_OCI_DATE_EPOCH to overwrite the timestamp used.
What this PR does / why we need it:
This environment variable allows us to reproducibly create and push a Helm chart:
$ helm pull jetstack/cert-manager
$ HELM_OCI_DATE_EPOCH=0 helm push ./cert-manager-v1.15.3.tgz oci://localhost:5000/test123
Pushed: localhost:5000/test123/cert-manager:v1.15.3
Digest: sha256:ce96368a62b8c8a68518df374e853677210ffd7f34ca8eb57112eb6ac28b61c8
$ touch cert-manager-v1.15.3.tgz
$ HELM_OCI_DATE_EPOCH=0 helm push ./cert-manager-v1.15.3.tgz oci://localhost:5000/test123
Pushed: localhost:5000/test123/cert-manager:v1.15.3
Digest: sha256:ce96368a62b8c8a68518df374e853677210ffd7f34ca8eb57112eb6ac28b61c8

Wouldn't it be easier to just change the create time of the file?

I thought Ctim was ctime, so I may be off

As I know, ctime is rarely used at Linux and mtime (mod time) is more common.

Part of the confusion here I think, is that the ctime.Created() function is returning st_ctim (on Linux systems). Which, as @inteon correctly points out, the "Time of last status change" (man stat). And so not really a "created" time IMHO.
If I had to speculate, the intend was to return the time the Chart's archive was "created". Which semantically I think corresponds to the files modified time.

Wouldn't it be easier to just change the createmodified time of the file?

Overall, I think this is a simpler proposal. This can be done like e.g. touch -m -t<PHONE_NUMBER>00.00 chart.tar.gz. But it would have to be agreed that the "Time of last status change" is not the correct way to determined a charts "created" time. And e.g. the chart files "modified" time was.

@sabre1041 -- thoughts on the above?

@sabre1041 -- thoughts on the above?

#12903 was introduced to achieve a constant creation time based on the time the package was created. I agree that the best approach forward is to correct the existing behavior instead of introducing a workaround/new functionality

I created: https://github.com/helm/helm/pull/13376 (which changes the behavior to utilize the files modified time)


Fix CI by disabling unused options from action

Closes https://github.com/godotengine/godot-cpp-template/issues/26

Looks great. Thanks for the quick fix PR! Only changed the title a bit


Can't use in VN server

I don't know why but when I used in VN/Garena server, I can't used any features.

i can use all features on TH/Garena

Try to set the path of your client in the config/clientPath.txt file

which files I have to set, LeagueClient.exe or LeagueClientUX.exe ?


No dynamic binding of CSS files possible on build

I am using vue-head to enable users to freely switch themes, and even write their own themes in a provided textarea.
vue-head is getting the neccessary CSS for injection like so:
head: {
  link(){
    if(this.getTheme != 'Custom'){
      return [
        {
          rel: 'stylesheet',
          name: 'theme',
          href: require('./assets/css/'+this.theme)
        }
      ]
    }
  }
}

this.theme being a vuex state that stores the name of the theme.
During npm run serve it works like expected, however when doing npm run build and deploying this to a webserver, it breaks functionality and won't switch to new files at all. This was also tested with<EMAIL_ADDRESS>which provides the same results.
I'm using an unmodified vue-cli setup with webpack as the build tool.

One thing I noticed: the injection in the <head> part is listed as <link rel="stylesheet" href="[object Object]"> which I'm pretty sure is not what it should look like. I'll continue testing.

So during npm run serve the requested CSS is being pushed as an inline-style, after npm run build this doesn't happen anymore.
(And I'm sorry but I'm going to spam this comment section until I figured out why this doesn't work the way it should)

Issue most likely caused by webpack's bundling mechanic. I'm guessing vue-head can't find the file anymore since it got combined into a file it's not looking at. Testing testing testing :eyes:

I'm sorry for the delay in replying.
Can you play an example online or repository?

Ah sorry, I think I found the reason this is happening;
Like I said before, webpack finds all seperate theme files (the CSS I'm trying to inject dynamically) and combines them into one file. Now in my case all CSS selectors are called the same which means that my frontend can't differentiate between the individual styles anymore.
I need to try and force webpack to not bundle those files, it should work fine then. I'll get back at you some time soon when I did that. Should be either this or next week.
Good plugin so far tho :)

@n4n0GH
Awesome.
Thanks for using.


Fix chainguard image references as per issue 442

fixes: https://github.com/spiffe/helm-charts/issues/442

We agreed the following. Took from meeting notes.
- Immutable image references - Decided to go with Version@shasum except where version is not available and then latest@shasum will be used.

Both @mrsabath and I raised our concerns on the latest tag which we both have blocked in our clusters. E.g. we have kyverno policies that block latest tags e.g.
Can you please lock the bash image on the 5.2.15@sha256:......

Can you please read the issue chainguard created? They have made the decision for us and are forcing the issue. Either you'll need to adapt your policy to allow latest with shas, or we will have to switch away from chainguard entirely.

We agreed the following. Took from meeting notes.

Immutable image references - Decided to go with Version@shasum except where version is not available and then latest@shasum will be used.

Both @mrsabath and I raised our concerns on the latest tag which we both have blocked in our clusters. E.g. we have kyverno policies that block latest tags e.g.

Can you please lock the bash image on the 5.2.15@sha256:......

Can you please read the issue chainguard created? They have made the decision for us and are forcing the issue. Either you'll need to adapt your policy to allow latest with shas, or we will have to switch away from chainguard entirely.

Do you have a link to the issue?

Oh 🤦  found it.


refactor: Make FedimintServer Send and Sync

I'm working on something else, and this is blocking me.
Dealing with Unpin and !Send things in async seems like something we should avoid anyway.

Maybe you can describe the problem you are trying to solve in an issue so we can try to find another solution? Maybe it's related to  #172?

Rust's async pretty much forces into Sync, or at least Send, even when it's not needed. In tests we're using Rc<RefCell<>> over FedimintServer  and block_on hacks because of it.
I agree that sending from one thread is best and safest. We can still do it, and keep this struct Send and Sync for async and testing sake. The lock is taken there in very few places and it's easy to prove that that it won't lead to a deadlocks.

These block_on hacks btw totally don't work and just mask legitimate errors of holding RefCell borrowed over await points. Sending them into block_on doesn't change anything. At least that's my understanding.
With Send FedimintServer I want to refactor tests to speed then up significantly by running per federation ops in separate tasks, and not just joins, because joins on cpu intensive operations don't give any parallelism . For this I need Sync, or I'll have to invent even more weird juggling and hacks.

These block_on hacks btw totally don't work and just mask legitimate errors of holding RefCell borrowed over await points. Sending them into block_on doesn't change anything. At least that's my understanding.
With Send FedimintServer I want to refactor tests to speed then up significantly by running per federation ops in separate tasks, and not just joins, because joins on cpu intensive operations don't give any parallelism . For this I need Sync, or I'll have to invent even more weird juggling and hacks.
I'll give you Nx speedup in test times, but I need this struct to be at least Send. There slow crypto is not a problem. The problem is that all runs on one thread.

These block_on hacks btw totally don't work and just mask legitimate errors of holding RefCell borrowed over await points. Sending them into block_on doesn't change anything. At least that's my understanding.
With Send FedimintServer I want to refactor tests to speed then up significantly by running per federation ops in separate tasks, and not just joins, because joins on cpu intensive operations don't give any parallelism . For this I need Sync, or I'll have to invent even more weird juggling and hacks.
I'll give you Nx speedup in test times, but I need this struct to be at least Send. There slow crypto is not a problem. The problem is that all runs on one thread.
Anyway, I'll have to test PR speedup in top of it, we can be bargain then.

I agree send-ness should be a goal. Let's see how we can make it work without making the network stack sync.

@elsirion

I agree send-ness should be a goal. Let's see how we can make it work without making the network stack sync.

Actually, now that I think about it. I need it Sync. In tests we keep list of FederationServers as a collection. If we want to run operations on them actually in parallel (even CPU bound, like crypot), we need to spawn some tasks.
The nicest way to do that is just to have them Sync in Arc, so the Arc<FederationServer> is Send. Then we can clone, send to a task, join_all on all the tasks, and job done. At no point anything synchronous is done on these types.
In production code, you don't even need to put FederationServer in a Arc, and keep using it from a single thread-only, in a serialized way. The fact that is Sync, can be a little secret.
When you look at what was used to achieve Sync, it's only:
    outgoing: Mutex<Option<Sender<T>>>,
    incoming: Mutex<Option<Receiver<T>>>,

So the lock is taken when doing outgoing.lock().await.send() and incoming.lock().await.recv() (ignoring Option for now).
AFAICT this does not change the blocking behavior in any meaningful way, and can't introduce any deadlocks, even if it was to be used from multiple threads (which again, is not, and we don't need to do it).
One exception here is a ban operation, which (if were to be ran from another thread), could block, if any other message was received.
The Mutex on outgoing is even unnecessary for sending, as this type is Sync anyway. I only added it there to allow setting the whole thing to None and disconnect the peer tread.
If you are really worried about someone accidentally changing architecture and starting new threads because FedimintServer is now Sync, we could possibly wrap it in some struct IForbidSync that has some !Sync field, and Derefs to FedimintServer.
I guess it might be possible to still spawn tasks per FedimintServer without that Sync, e.g. by disassembling the container holding them, taking ownership, sending to a task, and then return ownership back to the main thread doing the join_all, but that seems terrible. Or maybe putting FedimintServers in their own threads to begin with, and then sending them commands to do? Again - seems like a lot of complexity, where an Arc would work just fine.

I'll give you Nx speedup in test times

I actually have that change and will clean it up and push, and it does parallelize per-server epoch processing, but given that it's only one of many things going on, it is not as significant as I thought. Only some tests get 20% faster or so.
However even without the speedup removing Rc<RefCell<_>> and block_on calls is quite nice with it.

I was also considering if putting the heaviest crypto operations into spawn_blocking wouldn't be a good idea generally. https://docs.rs/tokio/latest/tokio/index.html#cpu-bound-tasks-and-blocking-code

Actually, now that I think about it. I need it Sync. In tests we keep list of FederationServers as a collection. If we want to run operations on them actually in parallel (even CPU bound, like crypot), we need to spawn some tasks.

That's exactly why I wanted to get to the bottom of the problem. I don't think you even need Syncness for this and you don't need to spawn tasks thanks to async rust's primitives.
let mut container = vec![1, 2, 3, 4];

{
    let mut mutating_futures = container.iter_mut()
        .map(|mut_ref| async move {
            sleep(Duration::from_millis(10 - *mut_ref)).await;
            println!("Doubling number {mut_ref}");
            *mut_ref *= 2;
        })
        .collect::<futures::stream::FuturesUnordered<_>>();

    let before = std::time::Instant::now();
    while let Some(()) = mutating_futures.next().await {}
    println!("Operation took {}ms (would take 30ms without parallelism)", before.elapsed().as_millis());
}

println!("{container:?}");

Output:
Doubling number 4
Doubling number 3
Doubling number 2
Doubling number 1
Operation took 9ms (would take 30ms without parallelism)
[2, 4, 6, 8]

And even if it was useful for tests, if there is no clear general architectural benefit to a change (that writing tests sometimes leads to), then the tests should adapt instead of the production code. Making the main code more fragile, less misuse-resistant or less readable (with the mentioned workarounds) just to make the test suite a bit faster/easier to write would be to cut off your nose to spite your face imo.

We discussed on Discord, and I'll pursue a route of making it just Send, and then using Arc<Mutex<Send>> instead, which will allow me to get rid of Rc<RefCell<FedmingServerver>> and using spawn just fine.
We probably want to use spawn_blocking for CPU-heavy workloads as well.

then the tests should adapt instead of the production code.

A bit of an off-topic point , but can't agree. :P . You can't test a non-testable code well with no amount of work on the test side.
The code under test needs to go hand in hand with the needs of the test, otherwise it's a dissaster. That was/is a whole premise of TDD - to drive a good software architecture early on, by enforcing test-ability constrains very early on (upfront).

We probably want to use spawn_blocking for CPU-heavy workloads as well.

Related to #1110.
Closing since the new approach will be fundamentally different and this discussion will be mostly unrelated, so better to make it a new PR.

#1599 is (part of) the outcome of this discussion.


[cluster-test] Fail cluster test if performance step failed

Cluster test used to not fail if performance evaluation stage failed, and just reported it as 'No performance data'
This diff change it - if perf step fails, or if validators fail to recover after this step, cluster test will fail and won't tag image as nightly_tested

@bors-libra r+

:pushpin: Commit a32f4c2 has been approved by ankushagarwal

:hourglass: Testing commit a32f4c2d4c8ed774daba9c95554dd6f1c4db5d37 with merge 286e0d53af057ebead6859cd86fd91824adc6e94...

:sunny: Test successful - checks-circle_commit_workflow
Approved by: ankushagarwal
Pushing 286e0d53af057ebead6859cd86fd91824adc6e94 to master...


broken microsoft accounts + broken devops

Environment

Server - Azure Pipelines

When I went to add a new pipeline, suddenly I discovered I can't do it, too bad I didn't catch the error, it was telling something like zero is not equal to one or along those lines - totally unrelated to the real problem.
I suspected it had to do with auth, perhaps a stale connection. So I sign out from devops. and try to sign in again.  I get this:

Your account has been temporarily suspended
Someone may have used your account <my email> to send out a lot of junk messages or done something else that violates the Microsoft Services Agreement.
What do you need to do?
We'll send a verification code to your phone.  After you enter the code, you can sign in.

OK, sure, next screen:
Enter your phone number, and we'll send you a security code
We'll send a verification code in a text message. This helps us eliminate spam – we won't give out your number. The code will expire in about 10 minutes.
We cannot send a text message to this number.

How can I fix this is the system refuses to send the verification code to a normal phone number?
How am I supposed to be able to access DevOps if you have an unreliable foundation?
Seriously, please give us an option to sign up with a non-microsoft account.
I invested hours setting up and configuring azure pipelines, and now I'm locked out.
The only reason I opened a microsoft account is to use it for DevOps. I haven't touched it ever since I opened it.  :(
Please kindly fix.

OK, a friend allowed me to use his account and I got the account unblocked.
I still can't add a new pipeline, I get:
https://dev.azure.com/fastdotai/fastai/_apps/hub/ms.vss-build-web.ci-designer-hub?sourceProvider=github&telemetrySession=[session id removed]

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
Select a repository
Grant Azure Pipelines permission to access your GitHub repositories to continue.

And the previous authentication set up is gone. Now if I choose to Auth. it gives me the repositories, except I get this error:
You selected a public repository, but this is not a public project. Go to project settings to change the visibility of the project. Learn more

@bryanmacfarlane, FYI, we, users, have no option to re-open tickets on this repo's issue.
I don't see any repository to open issues against to help with Azure DevOps setup in general - i.e. in particular managing new pipelines
https://github.com/Microsoft?utf8=✓&q=azure&type=&language=

so far I have been helped with this type of issues on this issue tracker.

If you could point me to the correct one to use instead I'd be happy to move it there.
Thank you.

General azure devops issues go to the developer community here:
https://developercommunity.visualstudio.com/spaces/21/index.html
If the issue is with one of the tasks in the repo, we are always happy to re-open.  Let us know.

That was very helpful, @bryanmacfarlane. I now posted it where you suggested. Thank you.

Let me know if you don't get traction.


SNAP2s need to be power cycled every ~2 weeks

There seems to be some problem on the ublaze side of the SNAP2 that causes it to lockup/stop talking to the Ultrascale that happens every ~2 weeks.  I last power cycled the boards on 2023 Sep 9.

I cycled them again on 2024 Jan 2.  At that point it looks like they had had problems for about 9 days (no new health checks), so maybe 2023 Dec 24?

Health checks haven't updated in 93 hours but this seems to be a different problem.  Looks to be software related on task processor.  Snaps still seem to be programming and functioning as normal.

Seems to have happened again today (2024 Feb 5).  Power cycling.

Hrm, that doesn't seem to have worked.  Trying to power cycle the GPS/clock synthesize now.

This morning I found snap01 unresponsive (but only snap01, snap02 was fine).  Power cycling them brought both up.

snap01 has become unresponsive to pings again.  Power cycle for the win.

Things are acting a little strange (see most recent comments in #30) so I'm going to try power cycling the snap2s.


Task/g56 expose serialization methods

Issue #56
Added:

Utility/TransactionMapping

createFromDTO(dataJson: object): Transaction
createFromPayload(dataBytes: string): Transaction

Transaction - new methods

Transaction.toJSON(): string - create JSON object from Transaction class.
Transaction.serialize(): string - serialize Transaction (unsigned payload)

@evias  I managed to fixed the bug in RegisterNamespaceTransaction now.
All done!

Pull Request Test Coverage Report for Build 261

237 of 253 (93.68%)  changed or added relevant lines in 13 files are covered.
72 unchanged lines in 1 file lost coverage.
Overall coverage increased (+3.3%) to 75.11%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/core/utils/TransactionMapping.ts
4
5
80.0%

src/model/account/PublicAccount.ts
0
1
0.0%

src/model/transaction/AggregateTransactionCosignature.ts
0
1
0.0%

src/model/transaction/SignedTransaction.ts
0
1
0.0%

src/model/transaction/Transaction.ts
7
8
87.5%

src/infrastructure/transaction/SerializeTransactionToJSON.ts
31
33
93.94%

src/infrastructure/transaction/CreateTransactionFromPayload.ts
189
198
95.45%

Files with Coverage Reduction
New Missed Lines
%

src/infrastructure/Listener.ts
72
28.34%

Totals

Change from base Build 245:
3.3%

Covered Lines:
1298

Relevant Lines:
1581

💛  - Coveralls


Update query.py

Add option for regex in template query

Thank you for contributing to openstack-infra/grafyaml!
openstack-infra/grafyaml uses Gerrit for code review.
If you have never contributed to OpenStack before make sure you have read the
getting started documentation:
https://docs.openstack.org/infra/manual/developers.html#getting-started
Otherwise please visit
https://docs.openstack.org/infra/manual/developers.html#development-workflow
and follow the instructions there to upload your change to Gerrit.


[FEATURE]Idea flow related to Adding Admin feature #5

Hi ,I am interested in solving this issue.
Here what we can do is edit the user model containing email and role.
Role can have two values : user and admin. (The roles will not get asked during the signup form filling, default value will be user)
To make the role as admin, the maintainer/admin of the site should be the first to register/signup
Through mongoose it is possible and I would like contributing to implement this logic, if there is a single maintainer/admin.
While authorizing, we can give the user who owns the camp information card and user with role : admin ,access for edit and delete buttons.
Kindly let me know if there are multiple admins/maintainers.
Thankyou.
Issue #5

Hi @preranah7 ,
Thank you for your interest in solving this issue and for the detailed proposal. Your approach aligns well with what we are looking for, particularly the logic around assigning roles and authorizing actions like edit and delete.
However, we require the admin feature to support multiple administrators. If you have any suggestions on how this could be extended to accommodate multiple admins while retaining the core functionality, we would greatly appreciate your input.
Thank you again for your contribution, and I look forward to hearing your thoughts.

Hey @preranah7 ,
Let's proceed with the idea of adding the role field in the schema, with "user" as the default value. This role can be updated by the first admin directly through the database.
For the roles, the permissions should be structured as follows:
User:

Can view and add reviews to any campgrounds
Can add new campgrounds
Can edit/delete their own campgrounds

Admin:

Can view, edit, and delete any campground
Can add new campgrounds
Can remove any review

This should give us a clear distinction between the two roles and the permissions they hold.
Looking forward to seeing your implementation!

Sure @Vignesh025.
Thankyou.


[release 1.18] Fix issue with dual-stack iptables6 rules when using istio-cni plugin…

Fixes https://github.com/istio/istio/issues/47055
Cherry-pick of https://github.com/istio/istio/pull/46630

@adams-shaun: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@adams-shaun: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test unit-tests-arm64

gencheck_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test gencheck

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@adams-shaun: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test unit-tests-arm64

gencheck_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test gencheck

lint_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@adams-shaun: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test unit-tests-arm64

gencheck_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test gencheck

lint_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test lint

unit-tests_istio_release-1.18
62ecb06fc12c2421a8171fcb2d14e87564689228
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Add a --repos option to grep through only the selected repositories and not all of them

cc @Sudha247

Thank you! This works very well.


it seems that an import is missing in utils.ts

Buffer is not declared
https://github.com/NftEyez/sol-rayz/blob/main/packages/sol-rayz/src/utils.ts
npm i buffer
then :
import { Buffer } from 'buffer';

hey Quentin!
Do you have any error/warning about it in your editor or browser?
I believe TS uses this type in such case:
https://microsoft.github.io/PowerBI-JavaScript/classes/_node_modules__types_node_globals_d_.buffer.html
I don't think you need to install/use this package, because is not assumed to be used here.

Yeah actually i had to import this package i had this error :
Uncaught (in promise): ReferenceError: assignment to undeclared variable Buffer
In my angular project

I see, then probably quick fix will be to install node.js types like this:
npm install --save @types/node

I will look into the package and will fix as well

Same issus with utils.js for me.
Here is the error message.
ModuleNotFoundError
Could not find module in path: 'assert/assert.js' relative to<EMAIL_ADDRESS>https://codesandbox.io/s/awesome-smoke-3rmpj?file=/src/App.js

@jamland It looks the types fix doesn't work, because the error is coming from the javascript files. Here is the error in my console:
Uncaught ReferenceError: Buffer is not defined
at<EMAIL_ADDRESS>(utils.ts:21:1)
at Object.options.factory (react refresh:6:1)
at webpack_require (bootstrap:24:1)
at fn (hot module replacement:61:1)
at<EMAIL_ADDRESS>(getParsedNftAccountsByOwner.ts:4:1)
at Object.options.factory (react refresh:6:1)
at webpack_require (bootstrap:24:1)
at fn (hot module replacement:61:1)
at<EMAIL_ADDRESS>(index.ts:1:1)
at Object.options.factory (react refresh:6:1)

@dino-rodriguez thank you for the note. I suppose your and other webpack might have different config, so it doesn't include Buffer. As a fix, I have replaced Buffer  with TextEncoder.
Please update packages to the latest version and try again (0.10.0)

@bayo-net looks like you have a different issue. Hard to say, but for sure you don't need to install assert. The package doesn't use it. looks weird..
But try to update the package anyway.

I am still having same issue on 0.10.2 @jamland. I think it's webpack problem on @solana/spl-name-service package. It uses webpack v3 but my project uses v5.

@burkarddev , Same issue with me. @jamland Please provide solution.

the issue occurs because webpack 5 doesn't provide Buffer and other Node.js global objects by default now.
I've updated our code respectively but we use 3rd party packages @solana/spl-name-service which still uses Buffer. I will check if solana team going to update this package or if I can commit to it.
So far, the simplest solution will be not to use webpack 5.
Read similar issue here --->
https://github.com/solana-labs/wallet-adapter/issues/241.
Additionally, here is boilerplate Next.js / React.JS template I use myself, which work well with this package and other solana tools
https://github.com/thuglabs/create-dapp-solana-nextjs