valgrind test fails

$ brew test valgrind -v
Testing valgrind
==> /home/comp/chengxu/usr/Cellar/valgrind/3.10.1/bin/valgrind ls -l
==26998== Memcheck, a memory error detector
==26998== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==26998== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==26998== Command: ls -l
==26998==

valgrind:  Fatal error at startup: a function redirection
valgrind:  which is mandatory for this platform-tool combination
valgrind:  cannot be set up.  Details of the redirection are:
valgrind:
valgrind:  A must-be-redirected function
valgrind:  whose name matches the pattern:      strlen
valgrind:  in an object with soname matching:   ld-linux-x86-64.so.2
valgrind:  was not found whilst processing
valgrind:  symbols from the object with soname: ld-linux-x86-64.so.2
valgrind:
valgrind:  Possible fixes: (1, short term): install glibc's debuginfo
valgrind:  package on this machine.  (2, longer term): ask the packagers
valgrind:  for your Linux distribution to please in future ship a non-
valgrind:  stripped ld.so (or whatever the dynamic linker .so is called)
valgrind:  that exports the above-named function using the standard
valgrind:  calling conventions for this platform.  The package you need
valgrind:  to install for fix (1) is called
valgrind:
valgrind:    On Debian, Ubuntu:                 libc6-dbg
valgrind:    On SuSE, openSuSE, Fedora, RHEL:   glibc-debuginfo
valgrind:
valgrind:  Cannot continue -- exiting now.  Sorry.

Error: valgrind: failed
Failed executing: /home/comp/chengxu/usr/Cellar/valgrind/3.10.1/bin/valgrind ls -l

Okay. The fix, as it suggest, is for the glibc package to install the debug info for ld-linux-x86-64.so.2 or to not strip ld-linux-x86-64.so.2. I'm happy with either solution. The debug info in separate files seems to be the more common on other distributions, which put those files in a separate package. Would you like to submit a PR for glibc?

Would you like to submit a PR for glibc?

Sorry, but I don't know how.

At the same time, I don't know the proper steps to reinstall glibc on a standalone linuxbrew.

Neither do I! I haven't tackled upgrading core system libraries yet. This issue will have to wait for a bit.

The work around would be to rebuild glibc and copy over the debugging info to your current installation manually.

Just ran into this on https://github.com/Linuxbrew/homebrew-core/pull/916, so moving to homebrew-core.

This issue was moved to Linuxbrew/homebrew-core#917


razorHtmlView caches mutable state

Not sure what causes this, but if you combine a route with a razorHtmlView directly it caches the state of the razor view, whereas if you use a wrapper HttpHandler that returns exactly the same thing it works.
Below /messagesWorks works if you mutate testMessages, but /messagesCaches always returns just "Hello world!"
let mutable testMessages = ["Hello world!"]
let getRazorView =
  fun (next : HttpFunc) (ctx : HttpContext) ->
    razorHtmlView "Index" { Text = testMessages |> String.concat ", " } next ctx

let webApp =
  choose [
    GET >=>
      choose [
        route "/messagesWorks" >=> getRazorView
        route "/messagesCaches" >=> razorHtmlView "Index" { Text = testMessages |> String.concat ", " }
      ]
    setStatusCode 404 >=> text "Not Found" ]

Hi Stuey2,
This behavior is expected to allow you to cache when appropriate.
The pipelines are pre-complied in giraffe to allow you to set state at startup if needed such that any variables provided in a pipeline are fixed/cached as the tail-end of the handler function calls are all that are remaining to be applied through currying, eg is:
let mutable value  = "Hello"
let cachehandler v = fun next ctx -> ctx.WriteJson v  // anything before args 'next ctx ->' cached copy when immutable data like string/list etc
let freshhandler = fun next ctx -> ctx.WriteJson value // gets direct ref to mutable obj
let webApp =
  choose [
    GET >=>
      choose [
        route "/messagesFresh" >=> freshhandler
        route "/messagesCache" >=> cachehandler value
     ]

Thanks for the explanation @gerardtoconnor, I'm still a little lost as to when something will cache vs won't. Following on from your explanation, the rule seems to be: if the last value is serialised is immutable, e.g. string, list, etc. then the result is cached. Or in fact is it that the route is itself cached, so  that any immutable data specified as per route is cached?
If that is the case I guess there is no way to pass freshhandler an immutable value from the route and have it not cache the result? For example the following still caches:
let writeJsonMutable data =
  fun (next : HttpFunc) (ctx : HttpContext) -> json data next ctx

This doesn't cache, but is a bit verbose as you have to wrap everything in AnyWrapper:
type AnyWrapper<'T> = { mutable data : 'T}
let writeJsonMutable data =
  fun (next : HttpFunc) (ctx : HttpContext) -> json data.data next ctx

I had hoped this might work, but no go, that's what makes me think the route itself is cached.
type AnyWrapper<'T> = { mutable data : 'T}
let writeJsonMutable data =
  let wrapped = {data = data}
  fun (next : HttpFunc) (ctx : HttpContext) -> json wrapped.data next ctx

Having seen ASP.NET Core Kestrel: Adventures in building a fast web server I realise getting performance is a tricky business. I'm interested, is the caching strategy baked in, or is there a way to disable for certain routes?
I suppose in general you're not going to be returning directly from a route, but some other function so it probably doesn't matter, just interested.

The route pipelines are designed to compile/collapse at startup such that the whole continuation pipeline is built & nested (by partially applying the next continuation fn), and it is just awaiting the ctx to execute pipeline tree so thinking of the routes as cached  is a way to think of it.
To create a mutable cell ref, to allow swapping of immutable/any references, you can use ref function
let dataCell = ref "" // this is a heap ref pointer to fixed location that can have its contents changed
let writeJsonMutable (data:string ref) : HttpHandler =
  fun next ctx -> json !dataCell next ctx     // '!' operator jumps into the cell and pulls out the underlying value, alternatively, `ref` has property `.Value`

ref cells being equiv to your AnyWrapper<'T> type
To clean things up and make handlers tidier use nested response writing with context extension methods:
let dataCell = ref ""
dataCell := "Hello World!"      // ':=' operator is used to update value in a ref cell
let writeJsonMutable (data:string ref) : HttpHandler =
  fun next ctx -> ctx.WriteJson dataCell.Value        // .Value prop same as '!' operator

On your last failed example, you can get working by :
type AnyWrapper<'T> = { mutable data : 'T}
let dataWrap = { data = "Hello World" }
dataWrap.data <- "Foo Bar" // updating data, then calling handler will reflect new value "Foo Bar"
let writeJsonMutable (dataWrapper:AnyWrapper<'T>) : HttpHandler =
  fun next ctx -> ctx.WriteJson wrapped.data

as you were binding and caching the wrapped value inside the handler for no reason

Ok, so that explanation I think I get, compile rather than cache, tick - makes sense... and partially applying everything and just awaiting ctx makes sense.
Still some holes though ... example on the freshhandler and cachehandler why does the cachehandler compile the mutable value OR RATHER why doesn't the freshHandler?
I clearly have a bit to learn yet on language side. But is it a language construct or a giraffe construct. To me it seems that they're roughly equivalent, similar I suppose to why doesn't getRazorView compile the mutable testMessages, is there something special about the top level route, i.e. are the internals of the HttpHandler functions not partially applied, but only top level HttpHandler's expressed in the route?
Thanks for the time explaining. I don't know if I'm meant to close this.

its result of both the language and the framework i guess, what might help is if I provide equiv OO example of what's going on to help explain closures, ie partially/fully applied functions.
Our HttpHandlers of fun ... next ctx -> look to always partially apply the next and other args at start-up so that all that is being awaited on is the ctx so we're returning a fun ctx -> ..., in OO this is equiv to (and what f# compiles to in IL) :
class HttpHandler {
     HttpFunc _next;
     MyHandler (HttpFunc next) {
           _next = next;   // set next in constructor
     }
     HttpFuncResult Invoke( HttpContext : ctx ) {
          // your function code here
          this._next ctx
     }
}

do if we are pre-applying parameters like a string etc, as string is passed by ref and immutable
string mystringvar = "hello" // string obj is allocated to eg: 0x5345346 (random), var mystringvar =  0x5345346
class HttpHandler {
     HttpFunc _next;
     string _string;
     MyHandler (string myString ,HttpFunc next) { // in constructor 0x5345346 is passed for string
           _next = next;   // set next in constructor
           _string = myString;     // my _string internal references 0x5345346
     }
     HttpFuncResult Invoke( HttpContext : ctx ) {
          // your function code here
          Console.WriteLine(  this._string )  // points to 0x5345346 and will always be "hello"
          this._next ctx
     }
}
mystringvar = "foobar" // I now create a new string obj at 0x7949741 and set mystringvar to 0x7949741

This is in essence how closures & function currying works in most languages including F#, partially applied parameters are added to internal fields through constructor leaving a class that is just awaiting the next parameter to feed into its Invoke method.
Luckily F# elegantly abstracts all this away in a manner that is terse and clean but sometimes it can be helpful to know internals if things are not making sense.
in your above example, having the "testMessages" mutable makes little to no difference to the value that will be used in function/class if it has already taken a snapshot of the reference on construction/partial-application, in order to get the fresh live value, in your handler, after the context argument (fun next ctx ->) you have to call the variable to ensure it has not been cached/snapshot from earlier at compile time when handler was constructed.

I'm closing this as I believe the question has been answered, but if there's any more confusion please feel free to re-open this issue again.


Remove ::Rails.application.eager_load!

I'm not sure why it necessary (or unnecessary) but actually it shows this error in my environment:
rails aborted!
ActiveRecord::ConnectionNotEstablished: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
	Is the server running locally and accepting connections on that socket?
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:87:in `rescue in new_client'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:77:in `new_client'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in `postgresql_connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in `public_send'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:656:in `new_connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:700:in `checkout_new_connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:679:in `try_to_checkout_new_connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:640:in `acquire_connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:341:in `checkout'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in `connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_adapters/abstract/connection_handler.rb:211:in `retrieve_connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_handling.rb:313:in `retrieve_connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/connection_handling.rb:280:in `connection'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/model_schema.rb:407:in `table_exists?'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rails-mermaid_erd-0.4.2/lib/rails-mermaid_erd/builder.rb:13:in `block in model_data'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rails-mermaid_erd-0.4.2/lib/rails-mermaid_erd/builder.rb:12:in `each'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rails-mermaid_erd-0.4.2/lib/rails-mermaid_erd/builder.rb:12:in `model_data'
/home/runner/work/xxxxx/xxxxx/config/environments/development.rb:119:in `model_data'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rails-mermaid_erd-0.4.2/lib/rails-mermaid_erd.rb:20:in `block in <module:RailsMermaidErd>'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/sentry-ruby-5.8.0/lib/sentry/rake.rb:26:in `execute'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/rake_module.rb:59:in `with_application'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/command.rb:51:in `invoke'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<main>'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/runner/work/xxxxx/xxxxx/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'

After I deleted that line and overridden it in Gemfile, it works properly.
gem 'rails-mermaid_erd', github: "sters/rails-mermaid_erd"

@sters
Thank you !
I deeply apologize, but I don't remember why the relevant code was necessary. Please allow me some time to conduct a few tests and validations 🙏🏿

@sters
I apologize for the delayed response.
Upon further investigation, it seems that without ::Rails.application.eager_load!, there are times when we can't fully load the model information. So, we cannot remove it.
The error you provided appears to be a database connection error. Can you please confirm if the presence or absence of ::Rails.application.eager_load! affects its proper functioning and let me know again?

@unchidev
Thanks for your confirmation!
I investigated more deeply on my code. I don't know why but our code has something like:
# app/model/foo.rb
class Foo < ActiveRecord::Base
  databases = YAML.safe_load(ERB.new(File.read('config/foo/bar.yml')).result)
  establish_connection(databases[Rails.env])
  self.abstract_class = true
end

# config/foobar.yml
development:
  adapter: postgresql
  encoding: unicode
  database: <%= ENV["FOO_DB_NAME"] %>
  username: <%= ENV["FOO_USERNAME"] %>
  password: <%= ENV["FOO_PASSWORD"] %>
  host: <%= ENV["FOO_HOSTNAME"] %>
  port: <%= ENV["FOO_PORT"] %>

And I didn't set those environments. After I configured it, mermaid_erd was succeeded.
That's why I failed to run mermaid_erd... 😭
Sorry for my misunderstanding! I'll close this PR.


Need search API based on actual CVE not vendor internally maintained ID

Example :
{
"schema_version": "1.3.0",
"id": "GHSA-c3g4-w6cv-6v7h",
"modified": "2022-04-01T13:56:42Z",
"published": "2022-04-01T13:56:42Z",
"aliases": [ "CVE-2022-27651" ],
I can call search API based on  ID ("id": "GHSA-c3g4-w6cv-6v7h") which is vendor specific and maintained by the vendor in their internal database.
Most of the time ( say 95% cases) people will query based on CVE which is the field "CVE-2022-27651" and search API does not support query based on "aliases".
Need search capablity based on aliases ie CVE, it's most critical.

Hi, thanks for taking the time to report this.
I think what you're raising here is pretty much already covered by:

#1016
#2235
#760

(I am curious about what proportion of OSV records alias CVEs not currently present in OSV.dev, and that will be an interesting piece of data to continually review)


Can't create a Barcode Item as an admin (from /admin/barcode_items/new)

I'm just starting to help here so this might be a development only issue, but from my still raw understanding of the code I think it is a bug.
Summary
While creating a barcode as super admin, through the "new" page (/admin/barcode_items/new), it is not possible to select the "barcodeable", therefore a barcode cannot be created.
Things to Consider
The barcodes can be created from the modal form in the admin barcodes "index" page (/admin/barcode_items). It seems like the admin/barcode_items#new action needs to set @items like admin/barcode_items#index does.
Criteria for Completion

[ ] When a user clicks on "new barcode item" in the admin sidebar they can fill the form and create a barcode item
[ ] Add a system test proving this (similar to the one already in the feature but using the "new" page instead of the index)

Bonus Round

[ ] Make the admin/barcode_items/_form partial take a local items variable instead of relying on the global.

@perezperret hey there -- thanks for opening up this issue. I did notice the behavior you are talking about.
Currently, the dropdown options are just Yes and No.

It should instead be showing the items like this:

This was likely introduced 6 months ago from - https://github.com/rubyforgood/diaper/commit/a493833868f5752e5ef46fe878452c961c55b17b#diff-b1df923a84ad39868411de0115c35a4a
Notice that the collection is @base_items which does get defined via the controller.
I'd love for you to fix this and add a system spec to ensure this feature doesn't get lost :)
Thanks & good catch!


How To blur the background ?

@SeragAmged Have you checked https://github.com/woltapp/wolt_modal_sheet?tab=readme-ov-file#decorating-modal-types-modal-and-pages ?

usfull thanks


Very long numbers overflow the swap text input

@danielmkm
This looks fixed? I can type any more numbers to get the overflow...

@danielmkm
This looks fixed? I can type any more numbers to get the overflow...

Ah got the overflow...

@danielmkm Technically it is not an overflow because the input spans the full width and the token selector is overlaid. A quick & dirty work around would be like this:

I think the final solution would be a redesign of the component where the token selector is not an overlay but next to (or after) the input.


[VMR] Rename SourceBuildUseMonoRuntime property, it's not SB-specific

This property needs to be renamed in runtime, installer, and aspnetcore, to reflect its status as a general DotNetBuild property not a source-build-only one
See https://github.com/dotnet/installer/pull/18777 discussion

Fixed by https://github.com/dotnet/sdk/pull/43626


Carthage & iOS 9 support

set iOS 9.0 as min version (will just do nothing, but this will give ability to use it)
support Carthage (create separated framework, move project to root folder)
update Podspec and bump version

Closing this one out in lieu of #3.


markdown: Rewrite links to narrows on the current server to be relative links?

Currently, when someone pastes a link to a narrow in the current Zulip server into Zulip, clicking the link uses target=_blank, and thus opens a new Zulip window.  It'd be really good if these just switched the relevant narrow in the current window instead.

@zulipbot claim

If the link does not point to a narrow we still want a new tab right?

I think if it starts with https://chat.zulip.org# (well, realm.uri is the variable for that first bit), same tab is probably correct.  I see no reason we shouldn't have linking to settings work the same.

Oh sorry I meant links to external sites

Yeah, links to external sites should still use target=_blank.  So I'm guessing implementing this will require passing in realm.uri to bugdown (if it's not handy already) and then having  fixup_link or something use that...


Add Homebrew install instructions to README.md

Ah, I should correct that on the website too then. Just pushed it. See cuelang.org.
It may be worth mentioning the Github releases page as well.


Annotate warnings as well?

Can warnings captured by pytest also be turned into annotations? I’m referring to the warnings output at the end of a pytest run.
Pytest offers a hook for such warnings. They could be turned into annotations using the warning workflow command.

Looks like good. It would be better that we can suppress warning annotations with some options.

Started a PR #68

I would like to see this implemented. And the PR has been stale for nearly a year... and is fully functional, I pulled and tested it myself. Works as expected.
+1

I would like to see this implemented. And the PR has been stale for nearly a year... and is fully functional, I pulled and tested it myself. Works as expected.
+1
Screenshot (Ran in a matrix, works great)

@oliv10 thanks for giving it a try! Tests are failing for pytest 7.4.x on that PR, so I need to make some time to fix that. It's probably also worth adding tests for 8.x in a separate PR.

@edgarrmondragon no problem! Just to make note for you, I used pytest 8.2.0 in the previous screenshot.

The bug (https://github.com/pytest-dev/pytest-github-actions-annotate-failures/issues/81 and more detail in https://github.com/pytest-dev/pytest-github-actions-annotate-failures/issues/76) only affects certain annotations.

Still looking forward to this feature!

+1 this came up in a discussion with our developers this week. Would be very nice to have!

@BGannon2 please give https://github.com/pytest-dev/pytest-github-actions-annotate-failures/pull/68 a try if you are able. I hope we can get a maintainer to review it soon.


Add Apache REEF project

Hi, I added Apache REEF Project.

Thank you!

You're welcome and thanks for contributing!


Why is there no declearation of the method named 'createDataChannel' in 'RTCPeerConnection' ?

@gyc1299339354 Did you mean to open this issue against another project? What is the VS Code issue here ?

emm...yes...I mean that if we open an issue for this question and I have found no issues like this~☺

This is a Typescript issue, not VS Code. Open an issue on Microsoft/TypeScript
(Typescript's WebRTC typings seem a bit old, install @types/webrtc to get better types.)

oh ~ thanks guys ~


Better internationalization

Having an html file per lang is not sustainable, the best solution would be to have a javascript-based solution for dynamic translation

alternatively, we can have a template system

Remove the lang selection menu from the HTML file as that unexpectedly clears the unsaved content

See that with @elisabernardoni

what I understand blockly cannot be dynamically on the choose of the languages
template system, I didn't understand
I think let people choose the languages has to be maintain. It is possible that the browser by default is in english in a classroom or  a computer room and that the users wants is own languages. If we can warn the people that the page will be erased or save automatically the code we is the more logical to not permit them to change languages

probably the change of languages do not need the warning, it could wait next improvment

I looked at the source code, and there isn't that many translations in each html file and they seem easy to translates from either java-script or a code generator ( in order to reduce the number of html file to maintain). However, it is indeed not designed for dynamic translations.
I thought about it and what would be better than a warning would be a local storage.
When you change the lang, it just saves the data, reload the page with the new lang, display the data again.

I think that could be an improvement we do in a second phase.  I don't think people want to change every time languages. It will do it one time and then program.


Can ValidationError be made public?

I would like to filter out "UntilBeforeStart" error messages but currently I need to match the string. If ValidationError were public, I could use matches!(...)

Absolutely! Feel free to open a PR for the change you need


light-client: wasm compilation

Edited due to summarize the discussion bellow
Context
The light client core verification algorithm can verify an application state using only a sequence of headers. This has uses in the light-node where it can perform IO and fetch headers from full nodes. Another use for the light client verification is within the context of IBC where a full node will verify data from foreign chains before including it in local transactions. In this way the light client verification works as a pure function without IO but instead relies on the relayer to feed it data.
Goal
We want to be able to compile our light-client verification to WASM such that it can be used by other chains to verify foreign data. This requires a build target that is independent from WASM incompatible libraries such as net2/socket2 or other IO operations.
Status

[x] The tendermint crate successfully builds for both wasm32-unknown-unknown and wasm32-wasi targets (#553)
[x] The light-client crate successfully builds for both wasm32-unknown-unknown and wasm32-wasi targets (#553)
[x] The rpc crate successfully builds for both wasm32-unknown-unknown and wasm32-wasi targets if its client feature is disabled.
[ ] Implement a WASM-compatible RPC client in the rpc crate using the fetch API exposed by web-sys
[ ] npm package which exports the light client API to JavaScript via wasm-pack

If trying to build to the wasm32 target (either using cargo build --target wasm32-unknown-unknown or wasm-pack build) it currently fails because of an indirect dependency: net2 (more specifically socket2 v0.3.12).
Errors look very similar to: https://github.com/rustwasm/wasm-pack/issues/657
more info: https://users.rust-lang.org/t/webassembly-with-rust-problem-compiling-wasm/29575

Yes this makes sense. I think this means we need to refactor our crates to have verification completely separate from IO. Will refactor this issue to capture this 👍

We might not need a separate crate if we guard the I/O stuff and dependencies behind a feature flag (that would be enabled by default, and toggled off when building for WASM).

Happy to report that the tendermint successfully builds for both wasm32-unknown-unknown and wasm32-wasi targets on Rust nightly with only the following change, followed running cargo update:
diff --git a/tendermint/Cargo.toml b/tendermint/Cargo.toml
index 4bda89e..ca52fed 100644
--- a/tendermint/Cargo.toml
+++ b/tendermint/Cargo.toml
@@ -31,6 +31,9 @@ all-features = true
 [badges]
 codecov = { repository = "..."}

+[lib]
+crate-type = ["cdylib", "rlib"]
+
 [dependencies]
 anomaly = "0.2"
 async-trait = "0.1"
@@ -46,7 +49,7 @@ serde_bytes = "0.11"
 serde_repr = "0.1"
 sha2 = { version = "0.9", default-features = false }
 signatory = { version = "0.20", features = ["ed25519", "ecdsa"] }
-signatory-dalek = "0.20"
+signatory-dalek = { version = "0.20", features = ["nightly"] }
 signatory-secp256k1 = { version = "0.20", optional = true }
 subtle = "2"
 subtle-encoding = { version = "0.5", features = ["bech32-preview"] }

Rust nightly is required because we need the nightly feature of signatory-dalek which is passed down to ed25519-dalek, which in turn passes it down to clear_on_drop to work around https://github.com/rustwasm/wasm-bindgen/issues/763.

wasm32-unknown-unknown
$ cargo build -p tendermint --release --target wasm32-unknown-unknown
   Compiling tendermint v0.15.0 (/Users/coromac/Informal/Code/Current/tendermint-rs/tendermint)
    Finished release [optimized] target(s) in 49.29s

$ file target/wasm32-unknown-unknown/release/tendermint.wasm
target/wasm32-unknown-unknown/release/tendermint.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)

$ du -hs target/wasm32-unknown-unknown/release/tendermint.wasm
1.4M	target/wasm32-unknown-unknown/release/tendermint.wasm

wasm32-wasi
$ cargo +nightly build -p tendermint --release --target wasm32-wasi
   Compiling tendermint v0.15.0 (/Users/coromac/Informal/Code/Current/tendermint-rs/tendermint)
    Finished release [optimized] target(s) in 7.00s

$ file target/wasm32-wasi/release/tendermint.wasm
target/wasm32-wasi/release/tendermint.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)

$ du -hs target/wasm32-wasi/release/tendermint.wasm
1.6M	target/wasm32-wasi/release/tendermint.wasm

The light-client crate requires more work because we need to feature-flag the dependencies which transitively pull net2 etc.

@romac FYI, it should be possible to remove both signatory-dalek and signatory-secp256k1 as dependencies now, using ed25519-dalek and k256 directly instead: https://github.com/informalsystems/tendermint-rs/issues/391#issuecomment-671999522
I should have a PR to do it later today.

It wasn't actually that much work to get the light-client crate to compile for WASM: https://github.com/informalsystems/tendermint-rs/commit/2eda9d8f92d6503f3acfc7f74f56686fb1224959
All that was needed was to feature-guard the dependency on the RPC client, both in Cargo.toml and in the code (ie. the production implementations of the Io and EvidenceReporter traits).

What is the state here? I'd love to make use of a web assembly light client in a browser app.
#553 seems to have added support, but this issue is open. One obvious missing thing is docs. Like a small spot in the README about wasm client (or link to separate doc if much) and maybe a link to npm package if you have one (I can build it, but it's nice to have an official package to pull in for releases).

Aside from docs, the two main things that are needed for an in-browser light client at the moment are:

a WASM-compatible RPC client in the rpc crate using the fetch API exposed by web-sys
npm package which exports the light client API to JavaScript via wasm-pack.

Happy to help with or even collaborate on any of this :) Will start by adding a section to the README mentioning the current state of WASM support.

Hi @romac thanks for the response. I'd be happy to collaborate on this.
From our side, we are looking to add light-client support for https://github.com/cosmos/cosmjs and have most of the infrastructure in place already. We have launchpad and stargate clients, doing queries and signing transactions. Closer to this request, we have a tendermint-rpc package that exposes the high-level API and was designed to be future proof (using an adaptor to manage 0.27 -> 0.28 -> 0.31 -> 0.33 -> 0.34 as fields were added, renamed, and changed from integers to string). This has been battle tested almost 2 years.
Closer to the app, we have stargate queriers that either use grpc or make raw/provable queries. The queryVerified function already ensures there is a valid merkle proof that leads to the  AppHash in the header .
When checking the merkle proof, we get the next header to check the AppHash via subscription or polling or both.
private async getNextHeader(height?: number): Promise<Header> {
  // ....
    if (headersSubscription) {
      const firstHeader = await firstEvent(headersSubscription);
      // The first header we get might not be n+1 but n+2 or even higher. In such cases we fall back on a query.
      if (firstHeader.height === searchHeight) {
        nextHeader = firstHeader;
      }
    }

    while (!nextHeader) {
      // start from current height to avoid backend error for minHeight in the future
      const correctHeader = (await this.tmClient.blockchain(height, searchHeight)).blockMetas
        .map((meta) => meta.header)
        .find((h) => h.height === searchHeight);
      if (correctHeader) {
        nextHeader = correctHeader;
      } else {
        await sleep(1000);
      }
    }
   // ...
}

But we do not verify this is the valid header yet.  The code we wish to replace/upgrade this just the following logic which runs after we get the header for the proper height:
    assert(nextHeader.height === searchHeight, "Got wrong header. This is a bug in the logic above.");
    return nextHeader;

We only assert the height of the header we got is correct, but do not check the signatures at all. Ideally, we would be able to replace this with some logic to prove the header via light-client proofs. We can happily do all the rpc in TypeScript, using websockets where available and falling back to polling where not.

TL;DR: we would be happy to have a passive light-client verifier that takes some trusted seed upon initialization, and takes a new header + signatures (aka Commit) and returns one of 3 states:

Valid - trust it
Invalid - trash it
Too many changes - bisect and try to prove again

We are happy to do this process in TypeScript, we just need a working verifier. We can also store all valid headers (roots of trust) ourselves.
If there is a fully working wasm blob that takes some initial trusted state and then can replace getNextHeader(height?: number): Promise<Header> doing verification and bisecting and only returning when we have internally verified the proper header, that would work as well. It just seems easier to have a passive wasm code for computation, rather than trying to hook it into the networking and the storage layers.

npm package which exports the light client API to JavaScript via wasm-pack.

This is a hard one. If you want a JS package that bundles Wasm and works in node.js, browsers and WebPack at the same time, you have two options:

Embed Wasm blob is text (base64 or something like that) in a JavaScript file
Use the new new Url("./relative/path.wasm", import.meta.url)

The first is solid but not very efficient because browsers cannot do streaming compilation and there is an encoding overhead. The second option does not work with Webpack 4, only Webpack 5, which means you cannot use it in typical React apps these days. What both solutions have in common is that they are not supported directly in wasm-pack.

I am afraid I don't fully understand neither the problem nor the alternatives/potential solutions described above.
Just a shot in the dark: what if we'd provide a WASM blob via wasm-bindgen? Would that be flexible enough to accommodate your use case? If not, how would you recommend we proceed instead?

Here are docs about the usable data types: https://rustwasm.github.io/docs/wasm-bindgen/reference/types.html. Seems like Box<[u8]> can be used for binary data directly.

Awesome, thanks a lot for the pointers!
Interestingly, in the meantime between my comment and yours, I came up with a very basic prototype that exposes the verifier to JS via wasm-pack/wasm-bindgen and which follows a very similar approach to the one in the repo you linked above: https://github.com/informalsystems/tendermint-rs/tree/romac/wasm-verifier/wasm-client
Rust wrapper: https://github.com/informalsystems/tendermint-rs/blob/romac/wasm-verifier/wasm-client/src/lib.rs
Usage from JS: https://github.com/informalsystems/tendermint-rs/blob/romac/wasm-verifier/wasm-client/app/index.js
To make this work, one currently has to

Run wasm-pack build from within the wast-client folder
Move the app directory and run npm start
Open http://localhost:8080/ and look at the console
It should display:

{
  "Ok": {
    "Invalid": {
      "NotWithinTrustPeriod": {
        "expires_at": "1970-01-15T00:00:03Z",
        "now": "2020-10-21T12:40:04.160328400Z"
      }
    }
  }
}

Is this good starting point for you to take over? How can I be of more help otherwise?

Very nice! If you prefer a separate crate over a feature, sure. Probably makes sense that way if the API is more than a handful of functions. I would just call it "wasm-verifier" and not include any other client functionality such as networking.
I can look into this more details at some point this month. But it is definitely the right direction and it would be great if you maintain that demo along with the rest of the codebase.

I can look into this more details at some point this month. But it is definitely the right direction and it would be great if you maintain that demo along with the rest of the codebase.

Awesome. Feel free to hit me up if I can be any help or if just want to chat about that.

If you prefer a separate crate over a feature, sure. Probably makes sense that way if the API is more than a handful of functions. I would just call it "wasm-verifier" and not include any other client functionality such as networking.

We intend to eventually expose the full light client via WASM so a separate crate makes more sense to me indeed.
We definitely want to leave the networking layer out of the exposed bindings, but it's not exactly clear to me how we'd go about providing the Fetch based implementation of it that could then be used in conjunction with the library, but that's something we can figure out at a later stage.

Perfect. One more thought regarding naming: the demo crate you created is JS specific, not Wasm specific. All the wasm-bindgen stuff means embedding Wasm into JavaScript ("Facilitating high-level interactions between Wasm modules and JavaScript"). You can also compile to Wasm that runs in a different host environment (e.g. Wasmer or look into WASI. In this case, the public Wasm exports and imports would be different. So I suggest thinking of this create as a "js-verifier" or "light-client-js" or something like that.

It would also be cool to see about compiling this all into wasi. It may work 'out of the box', including rust networking and storage. Not useful for js clients but if you like wasm, it is an interesting alternative to deploying native files. But that is more of a research project.
Both wasmer and wasmtime can run wasi objects from the command line

@romac your demo in the branch looks nice. Can you turn that into a PR for further development?

@romac your demo in the branch looks nice. Can you turn that into a PR for further development?

Sure, just opened https://github.com/informalsystems/tendermint-rs/pull/671

In discussion with the team yesterday, we decided to reduce the scope of this issue by focusing on addressing https://github.com/cosmos/cosmjs/issues/492 and deferring additional work to the following issues:

#809
#810


Revert "Dev databinding newsapi kotlin"

Reverts enpassio/Databinding#43

@rajtheinnovator I tried reverted branch, it seems good to me.

@OyaCanli I'll check all the samples from test1 branch and if they all look good, which should be now, I'll merge them into master. You can now prepare the complete articles 👍

@OyaCanli I had tested all the branches on my device and they all run as expected. So I've merged everything to master. You can keep working on the articles. And I must say, I've recently been to a meetup on android by Google where there was a detailed session on Databinding but I could still see lots of voids there. The work you've done is impressive and it feels to fill a lot of that void. This is surely going to be a very helpful resource for everyone out there :+1:

@rajtheinnovator Thanks! That's nice to hear.
I am working on the article. I prepared gists and I have changed observable fields part due to the latest recommendations on using livedata instead. But I didn't remove that part. I thought of using livedata in newsapi(as I already did) and observable fields in two-way, for demonstrating both. As I write I feel need to add some things to samples, to demonstrate what I write in the article. So I can still make some small changes.

Yeah, sure thing @OyaCanli . We can create a new PR whenever you make new changes to keep the code updated :+1:


Fix ABI checker with testing module

Signed-off-by: Michael Carroll<EMAIL_ADDRESS>🦟 Bug fix
Fixes issue brought up in comment here: https://github.com/gazebosim/gz-common/pull/411#issuecomment-1220892591
Summary
The header AutoLogFixture.hh is available to be used as part of a library or executable that links against gtest.  We don't want to introduce a hard dependency on gtest in common::testing for just this header, but it seems to annoy the ABI checker.
This adds a private include so that the gtest header may be resolved, even though downstream users of the testing component will never see it.
This puts the AutoLogFixture within a define guard GTEST_API to guarantee that gtest is available before using the autologfixture.
Checklist

[ ] Signed all commits for DCO
[ ] Added tests
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] Consider updating Python bindings (if the library has them)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

@j-rivero so it seems I can't manipulate the ABI checker via CMake.
The situation here is that the AutoLogFixture.hh header is intended to be used only by people who already have linkage/includes against gtest.
Is there a way to exclude this from the ABI checker?  Or is there a better way to indicate this?

@osrf-jenkins retest this please

The abi checker is actually having issues with the destination branch in this case.  This PR would need to be merged so that the destination branch (gz-common5) is fixed.  I would expect the ABI checker to fail on this PR but succeed on future PRs.

The error in question:
The GCC parameters:
  gcc -fdump-lang-raw -fkeep-inline-functions -c -x c++ -fpermissive -w  -std=c++17 "/tmp/4wmT6ajeTj/dump1.h"  -I/usr/local/destination_branch/include/gz/common5 -I/usr/include/gz/utils2 -I/usr/include/gz/math7

In file included from /usr/local/destination_branch/include/gz/common5/gz/common/testing.hh:23,
                 from /tmp/4wmT6ajeTj/dump1.h:83:
/usr/local/destination_branch/include/gz/common5/gz/common/testing/AutoLogFixture.hh:20:10: fatal error: gtest/gtest.h: No such file or directory
   20 | #include <gtest/gtest.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.


Add scene grid filter to browse page

On the browse page the scene grid should support the following filtering:

when grid is clicked, filter to bbox of grid
when grid is clicked again or clicked outside, bbox filter is cleared
when multiple grids are clicked while holding down ctrl, filter by multiple bboxes

Closed by #887


size  mismatch error when i loading BNInception

`cv3:~/Mytask/TSN/tsn$ python main.py ucf101 RGB "/home/liyating/Mytask/TSN/tsn/tsn_model_parameters/ucf101_rgb_train_list" "/home/liyating/Mytask/TSN/tsn/tsn_model_parameters/ucf101_rgb_val_list"    --arch BNInception --num_segments 3 \

--gd 20 --lr 0.001 --lr_steps 30 60 --epochs 80
-b 128 -j 8 --dropout 0.8
--snapshot_pref ucf101_bninception_

Initializing TSN with base model: BNInception.
TSN Configurations:
input_modality:     RGB
num_segments:       3
new_length:         1
consensus_module:   avg
dropout_ratio:      0.8
`
Traceback (most recent call last):   File "main.py", line 302, in <module>     main()   File "main.py", line 35, in main     consensus_type=args.consensus_type, dropout=args.dropout, partial_bn=not args.no_partialbn)   File "/home/liyating/Mytask/TSN/tsn/models.py", line 39, in __init__     self._prepare_base_model(base_model)   File "/home/liyating/Mytask/TSN/tsn/models.py", line 96, in _prepare_base_model     self.base_model = getattr(tf_model_zoo, base_model)()   File "/home/liyating/Mytask/TSN/tsn/tf_model_zoo/bninception/pytorch_load.py", line 35, in __init__     self.load_state_dict(torch.utils.model_zoo.load_url(weight_url))   File "/home/liyating/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 719, in load_state_dict     self.__class__.__name__, "\n\t".join(error_msgs))) RuntimeError: Error(s) in loading state_dict for BNInception:         size mismatch for conv1_7x7_s2_bn.weight: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv1_7x7_s2_bn.bias: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv1_7x7_s2_bn.running_mean: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv1_7x7_s2_bn.running_var: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv2_3x3_reduce_bn.weight: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv2_3x3_reduce_bn.bias: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv2_3x3_reduce_bn.running_mean: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv2_3x3_reduce_bn.running_var: copying a param of torch.Size([64]) from checkpoint, where the shape is torch.Size([1, 64]) in current model.         size mismatch for conv2_3x3_bn.weight: copying a param of torch.Size([192]) from checkpoint, where the shape is torch.Size([1, 192]) in current model.
Ihave some error ,could someone can help me ?
thanks a lot!!!

i have the same error,can you tell me how to fix this?
thank you so much!

@lisitodyb @ccmeteorljh @Jenniferlyt
found that link elsewhere,Ya could check it GL
https://github.com/Cadene/pretrained-models.pytorch/issues/70#issuecomment-410479575


Add "Edit in JOSM" Link

for POIs
for areas use the Edit on right top?

Does this have an implication on what the purpose of the demo is? If it has a tech bias, sounds good, if its more for the general public, not so sure...

There is no implication. Could you specify?
We already have "Edit" links for the iD with TransforMap presets, would be just nice to support other editors too.
As JOSM is an advanced editor, this would only be shown:

For the POI-Popups (to modify existing POIs), if the user switches to the "OSM"-tab
For areas (to add new POIs) if the user hovers over the "edit" icon on top.

Sorry, yes, if there are other edit links then it makes total sense.


Release v1.1

Codecov Report

Merging #85 (00fc7d3) into main (fe60ff0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #85   +/-   ##
=======================================
  Coverage   83.93%   83.93%
=======================================
  Files          32       32
  Lines         965      965
  Branches      211      211
=======================================
  Hits          810      810
  Misses        154      154
  Partials        1        1

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


Run a clear pass on Windows without any Views

Fixes #3043
surface_texture.present() will cause panics if no work is done on a given frame. "Views" are how we queue up work. Without any cameras, no work is produced. This adds a "clear pass" for windows without views, which ensures we clear windows (thus doing work) every frame.
This is a "quick fix". It can be made much cleaner once we make "render targets" a concept and move some responsibilities around. Then we just clear the "render target" once instead of clearing "views". I might have time to tackle that work prior to 0.6, but I doubt it. If "render targets" don't make it in to 0.6, they will be one of the first things I tackle after release.

bors r+


Coverage pipeline is broken

The coverage pipeline uses a different docker image as what we use for CI.
We need libsasl2-dev to be installed in order to run CI.
Because it is missing in the coverage pipeline, the pipeline is now broken.
https://github.com/quickwit-oss/quickwit/actions/runs/3317584456/jobs/5480610323

Fixed.


How to use [hidden] property on  instead of *ngIf?

I want to use [hidden] property instead of *ngIf to hide/show a component.
[size]="0" is also not working, it is assigning 50% size by default.

Use [visible] instead of [hidden].


Unreachable resource not handled

Following along with ackzell's video series
https://goo.gl/8p3msR
it turns out that this library does not seem to handle unreachable resources.
If an unreachable URI is pinged, the network tab returns "status: pending" after after a certain timeout "304".
I don't know, if this package is still maintained, but if so, would it be possible to implement such a feature?
Thank you!

Hi @rowild , thank you for raising this issue. I'm currently swamped with work but will attend to it before the end of the week. Thank you 👍

Fantastic! Looking forward to your solution! Have a good week!

Hi @rowild, I've just pushed a new version(v0.2.0): https://www.npmjs.com/package/ping-monitor#change.
Please let me know this fixes the issue.
Thank you 👍

This is so great that you took care of that!
I just tested it with ackzell's app and it seems to work just fine :-)
Thank you very, very much, @qawemlilo !!!


Add proper support for no headers in po files

This is still WIP, because the examples are not handled correctly, yet.

Once, all the examples are working, I guess #18 can be closed.

I changed the fixing commit to also handle the edge cases, when no header is present. Tests are green, again.

Looks good!

Released 1.0.2. Thanks!


Issue #100 patch

A patch for the Error creating dynamodb table without StreamEnabled option- #100

LGTM. Thanks @valdemon

@rehrumesh welcome :)
Any chance for a release next days?

Will do soon. You will be the first to know :)

@valdemon NPM is updated

@rehrumesh cool :) thanks for the info.


fix: rollback of update of semantic release that did not work

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Equivalent of the "rename" annotation for enums?

I have an enum that I'd like to serialize with a different format for the variants than it appears in the Rust source code. For example, a value of this enum:
enum Example {
  FirstExample,
  SecondExample,
}

would be serialized as the string "first_example" or "second_example". For structs, there is the annotation #[serde(rename="first_example")] that can be used for a field's name, but I'm wondering if there is an equivalent for enum variants to avoid having to implement serialization and deserialization manually. I think this would only make sense for enum variants without data.

Unfortunately there isn't support for that yet, but it's a reasonable feature request.

If I were to take a shot at implementing it, would you want to reuse the "rename" annotation or would you prefer something else?

Dup of #182. Thanks though!


[$500] iOS - Members - When scrolling members WS list goes under the "background image"

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Issue found when executind PR: https://github.com/Expensify/App/pull/30171
Version Number: 1.3.91-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause-Internal Team
Slack conversation: @
Action Performed:
rerequisites:
A WS must be created in the account
Steps:

Open New Expensify app
Log in with an expensifail account
Navigate to the WS settings
Navigate to Members
Invite 4 members
In the Members section, scroll through the list of members

Expected Result:
When scrolling through members, the WS list should not be missing or cut off
Actual Result:
When scrolling members WS list goes under the "background image"
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[x] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native
https://github.com/Expensify/App/assets/115492554/37eeddab-79c8-4d97-af5f-90a2824395cf

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01c024409da152917d
Upwork Job ID:<PHONE_NUMBER>463128576
Last Price Increase: 2023-10-26

Proposal
Please re-state the problem we are trying to solve
iOS - Members - When scrolling members WS list goes under the background content.
What is the root cause of this problem?
The root cause is that the height of the SectionList is limited to the content it has, therefore, when we scroll, it gets cut off at the edges.
Moreover, we allow the list on iOS to 'bounce' which means that we are able to scroll past the content which is not what we do for android and web.
What changes should be made to fix this?
We should add the prop bounces={false} to be more consistent with other platforms to the SectionList here:
https://github.com/Expensify/App/blob/414d5913999f69d83ab08b6ae6e03325c9ede549/src/components/SelectionList/BaseSelectionList.js#L418
This means that we are not able to scroll under the header part as well.

Proposal
Please re-state the problem that we are trying to solve in this issue.
When scrolling in members page, user list get cut off at the bottom.
What is the root cause of that problem?
We're using BaseSectionList for our WorkspaceMembersPage, and it has style styles.flexGrow0, it will make the list only take its available space, however in IOS the bounce is true by default, so the list can be scroll up and down in its space, which caused the issue.
https://github.com/Expensify/App/blob/9e50be49a4831bb5d7699e5032cbc3487f956f16/src/components/SelectionList/BaseSelectionList.js#L437
What changes do you think we should make in order to solve the problem?

Change the style of SectionList to styles.flexGrow1 or styles.flex1 to make it fill all the available space.
What alternative solutions did you explore? (Optional)
N/A

@0xmiroslav a few proposals to review above

@0xmiroslav Shouldn't we disable the bounce if there are not enough items? Because even after that solution, we would be able to drag the menu item below the upper part of the UI...

Sounds good, assigning @bernhardoj

payday!
Payouts due:
Contributor: $500 @bernhardoj
Contributor+: $500 @0xmiroslav
I sent you a manual request on Upwork!
Upwork job is here.

@adelekennedy Can we close this one? 😄

@0xmiroslav is the bugzero checklist complete?

@bernhardoj missed that - just ended the contract


Wrong URL for PGP Key

http://shell.ninthgate.se/packages/shell.nintghate.se.gpg.key
show be:
http://shell.ninthgate.se/packages/shell.ninthgate.se.gpg.key

stated file.

Well spotted.
Fix has been pushed.


Unable to get the Full Version configuration to work

I've followed everything to the best of my ability, however when adding the final code to the config.js I get an error message when launching MagicMirror.
If I use the Simple Version code it works fine:
		{
		  module: 'MMM-Assistant',
		  position: 'bottom_left',
		  config: {
		    stt: {
		      auth: [
		        {
		          projectId:'magicmirror-######', //REQUIRED
		          keyFilename: './assets/google-private-key.json' //REQUIRED
		        },
		      ]
		    }
		  }

However, when copying + Pasting the provided Full version code it no longer works:
{
    module: 'MMM-Assistant',
    disabled: false,
    position: 'bottom_left',
    config: {
        assistant: {
            auth: {
                keyFilePath:     "assets/google-client-secret.json",  // REQUIRED (Google Assistant API) -- OAuth2 x509 cert
                savedTokensPath: "assets/google-access-tokens.json"   // REQUIRED (Google Assistant API) -- accesss_token & refresh_token
            },
            conversation: {
                lang: 'en-US',
                audio: {
                    encodingIn: "LINEAR16",             // Default. No need to change.
                    sampleRateOut: 16000                // Default. No need to change.
                }
            },
        },
        snowboy: {
            models: [
                {
                    file: "resources/smart_mirror.umdl",// This file define your MM wake word. (See doc notes.)
                    sensitivity: 0.5,
                    hotwords : "MIRROR"                 // Default model: "MIRROR". (This is not the wake word!)
                },
                {
                    file: "resources/snowboy.umdl",     // This file define your GA wake word. (See doc notes.)
                    sensitivity: 0.5,
                    hotwords : "ASSISTANT"              // Default model: "ASSISTANT". (This is not the wake word!)
                }
            ]
        },
        record: {
            threshold: 0,                 // Default. No need to change.
            verbose: false,               // Deafult: true  -- for checking recording status.
            recordProgram: 'rec',         // You can use 'arecord', 'sox', but we recommend 'rec'
            silence: 2.0                  // Default. No need to change.
        },
        stt: {
            auth: [{                                             // You can use multiple accounts to save money
                projectId:   'magicmirror-######',                  // REQUIRED (Google Voice API) -- project_id
                keyFilename: './assets/google-private-key.json'  // REQUIRED (Google Voice API) -- service_account / private_key
            }],
            request: {
                encoding: 'LINEAR16',     // Default. No need to change.
                sampleRateHertz: 16000,   // Default. No need to change.
                languageCode: 'en-US'     // [en-US]  To set the default GA speech request language.
                                          // (See: https://cloud.google.com/speech/docs/languages)
            },
        },
        speak: {
            useAlert: true,               // [true]  Enable this to show the understood text of your speech
            language: 'en-US',            // [en-US] To set the default GA speech reply language.
        },
        alias: [{                         // You can use aliases for difficult pronunciation or easy using.
                "help :command" : ["teach me :command", "what is :command"]
        }]
    }
}, // END

I've tried using debuggers, but I can't make heads or tails of this code. Any help would be appreciated, thanks.

the projectID part needs to be replaced by your google assistant projectID

It is, I just used "MagicMirror-########" (random combination of numbers) and I did not wish to share my exact ID online.

well if you don't post what errors you're getting, nobody can help you.


Revamp Timezone Processing and Management

Description
There are a few important aspects regarding timezone processing in Velox:

How timezones are represented and stored in a columnar format:

In order to efficiently represent timezones in Velox, timezones are mapped to 16 bit integers. Because the mappings should be compatible with data saved on disk by Presto java (e.g TimestampWithTimezone type), we import the mapping between timezone name (string) and integers from Presto. The mapping is automatically generated and available here:

https://github.com/facebookincubator/velox/blob/main/velox/type/tz/TimeZoneDatabase.cpp

Naturally, both sides of the mapping are available (name ->id; id -> name):

https://github.com/facebookincubator/velox/blob/main/velox/type/tz/TimeZoneMap.h

How timezone conversion is performed:

Many functions use timezone information to perform timestamp/date/time conversion across timezones. This is done using an external library available here:

https://github.com/facebookincubator/velox/tree/main/velox/external/date

This library is compatible with the new timezone std::chrono standard in C++20:

https://en.cppreference.com/w/cpp/chrono/time_zone

It takes a string with the timezone name and leverages the local tzdata package to perform timezone conversions.
===
There are two problems with the current setup:
A) These two mappings are not synchronized. Timezone names available in the Presto mapping (item 1 above) are not necessarily understood by external/date. This means that in some cases timezone which we can represent, fail if we try to perform conversions (https://github.com/facebookincubator/velox/issues/7804 is an example).
B) Inefficient conversion. For timezones that happen to be available in both mappings, the common conversion code consists of (a) first mapping the stored integer id back to the string name, (b) using the string name to find the pointer to the correct conversion object, then (c) actually performing the conversion.
format_datetime() is an example:

https://github.com/facebookincubator/velox/blob/main/velox/functions/prestosql/DateTimeFunctions.h#L1286

===
To address the issues above, we should consider:
X) Ensure every timezone name supported in Velox (the ones in the Presto-based mapping) have a corresponding entry in external/date. We should have tests to cover every timezone. There is a good overlap, but they are not the same. Particularly, fixed offsets like "03:00" and "-07:30" are supported by Presto but not by external/date.
Y) Provide a cached mapping from "id" -> "timezone object pointer" to improve efficiency in the common conversion path.
Z) Work with the Presto community to add missing timezone names - it was reported that at least EST, CST, and similar are official timezone and available in tzdata/tzdump, but not supported by Presto (and hence not available in Velox).
Cc: @mbasmanova @PHILO-HE @aditi-pandit @majetideepak @zacw7 @tanjialiang @gggrace14 @svm1

A) These two mappings are not synchronized. Timezone names available in the Presto mapping (item 1 above) are not necessarily understood by external/date. This means that in some cases timezone which we can represent, fail if we try to perform conversions (https://github.com/facebookincubator/velox/issues/7804 is an example).

Hi @pedroerp, does Velox's external/date come from this lib: https://github.com/HowardHinnant/date? Not sure whether it can understand more timezone patterns in the latest versions.

Hi @pedroerp, does Velox's external/date come from this lib: https://github.com/HowardHinnant/date? Not sure whether it can understand more timezone patterns in the latest versions.

Yes, it was copied from that repo.

which makes this library only use OS-supplied timezone database. It may cause a few limitations.

Which limitations you have in mind? The OS timezone database should be our source of authority for timezone conversion, IMO.

Hi @pedroerp, does Velox's external/date come from this lib: https://github.com/HowardHinnant/date? Not sure whether it can understand more timezone patterns in the latest versions.

@PHILO-HE Yes, it was copied from that repo.

which makes this library only use OS-supplied timezone database. It may cause a few limitations.

Which limitations you have in mind? The OS timezone database should be our source of authority for timezone conversion, IMO.

Hi @pedroerp, I investigated the external date lib recently. In the previous discussion, I guessed OS timezone database has some limitation, so it cannot recognize offset-based timezone like +08:00. But even though I set AUTO_DOWNLOAD=1, HAS_REMOTE_API=1 for this lib to use downloaded timezone database, such offset-based timezone still cannot be recognized (See https://github.com/PHILO-HE/velox/commit/b98d5939a3e745549b32c441aaeac05cb9d689a4).
I submitted an issue to that community to discuss offset-based timezone: https://github.com/HowardHinnant/date/issues/823. It seems we can firstly convert the offset to "Etc/GMT+x" (only workable for offset who's a multiple of hours).

@PHILO-HE @pedroerp That's quite interesting - maybe implementing such a conversion can be a good incremental first step? As in, a function to convert whole-hour offsets to "Etc/GMT+x", and use a custom time zone class with minute precision, as outlined in the documentation, for the other cases. I could start putting that together if we want to go down that route.

@PHILO-HE Oh I'm sorry, somehow missed that. Makes sense!

Sorry, I must've missed that. Makes sense!


CLOUDSTACK-9593: userdata: enforce data is a multiple of 4 characters

Python base64 requires that the string is a multiple of 4 characters but
the Apache codec does not. RFC says is not mandatory but the data should
not fail the VR script (vmdata.py).
Signed-off-by: Marc-Aurèle Brothier<EMAIL_ADDRESS>

LGTM

@marcaurele this change looks a good check to add to LTS to as well.  Could you please change the base branch to 4.9?  Once you do, I will kick regression tests across all hypervisors in order to merge the fix.

@jburwell  done

I changed the code to make it resilient to incorrect data that are already in the database. Moreover, instead of throwing an error when the padding is not present, it appends it. I think it's a better solution. I'll squash it when it's an accepted.

@marcaurele can you check why the Travis run failed

@rhtyd the SQL function I'm using to fix current user data in the database is not present in MySQL 5.5, but only in 5.6 (TO_BASE64, FROM_BASE64). I have to find a workaround, either in SQL or in Java to fix previous data.

@rhtyd The DB update class for the DatabaseUpgradeChecker doesn't work on Travis. Is there something I'm doing wrong, or missed something?

@marcaurele an upgrade path such as Upgrade4910to4920 would only work if your destination/final version is <IP_ADDRESS>, have a look at the db upgrade checker workflow and you'll see how to trigger your changes.

right, I forgot about the match required with the version in the pom. I thought I should prepare the stuff for the next 4.9.x release but that cannot work unless the pom files are updated too. I will just move the code inside Upgrade490to4910.java to Upgrade4910to4920.java when it's available.

ACS CI BVT Run
Sumarry:
Build Number 466
Hypervisor xenserver
NetworkType Advanced
Passed=104
Failed=1
Skipped=7
Link to logs Folder (search by build_no): https://www.dropbox.com/sh/yj3wnzbceo9uef2/AAB6u-Iap-xztdm6jHX9SjPja?dl=0
Failed tests:

test_routers_network_ops.py

test_03_RVR_Network_check_router_state Failed

Skipped tests:
test_01_test_vm_volume_snapshot
test_vm_nic_adapter_vmxnet3
test_static_role_account_acls
test_11_ss_nfs_version_on_ssvm
test_nested_virtualization_vmware
test_3d_gpu_support
test_deploy_vgpu_enabled_vm
Passed test suits:
test_deploy_vm_with_userdata.py
test_affinity_groups_projects.py
test_portable_publicip.py
test_over_provisioning.py
test_global_settings.py
test_scale_vm.py
test_service_offerings.py
test_routers_iptables_default_policy.py
test_loadbalance.py
test_routers.py
test_reset_vm_on_reboot.py
test_deploy_vms_with_varied_deploymentplanners.py
test_network.py
test_router_dns.py
test_non_contigiousvlan.py
test_login.py
test_deploy_vm_iso.py
test_list_ids_parameter.py
test_public_ip_range.py
test_multipleips_per_nic.py
test_regions.py
test_affinity_groups.py
test_network_acl.py
test_pvlan.py
test_volumes.py
test_nic.py
test_deploy_vm_root_resize.py
test_resource_detail.py
test_secondary_storage.py
test_vm_life_cycle.py
test_disk_offerings.py

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-829

@blueorangutan test

@marcaurele due to db changes in older upgrade paths, this cannot be accepted in 4.9/4.10, please re-base and change base branch to master.

@rhtyd I still don't get it why on new release there isn't the creation of the SQL migration files done by the RM. It's totally unclear where/how I should push my changes for the SQL upgrade.

@marcaurele we already have <IP_ADDRESS> release and branch cut, we won't be able to accept PRs with schema changes for 4.9 branch since 4.9.2->4.9.3 path ought not change as it's included in <IP_ADDRESS> release. As I suggested earlier, change the base branch of the PR to master and put schema changes in 4.10->4.11 upgrade path.

@marcaurele I checked there exists a <IP_ADDRESS> -> <IP_ADDRESS> upgrade path on master branch that you can use.

ACS CI BVT Run
Sumarry:
Build Number 1017
Hypervisor xenserver
NetworkType Advanced
Passed=106
Failed=7
Skipped=12
Link to logs Folder (search by build_no): https://www.dropbox.com/sh/r2si930m8xxzavs/AAAzNrnoF1fC3auFrvsKo_8-a?dl=0
Failed tests:

test_deploy_vm_iso.py

test_deploy_vm_from_iso Failing since 72 runs

test_volumes.py

test_06_download_detached_volume Failed

test_vm_life_cycle.py

test_10_attachAndDetach_iso Failing since 72 runs

test_routers_network_ops.py

test_01_isolate_network_FW_PF_default_routes_egress_true Failing since 105 runs

test_02_isolate_network_FW_PF_default_routes_egress_false Failing since 105 runs

test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true Failing since 103 runs

test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false Failing since 103 runs

Skipped tests:
test_vm_nic_adapter_vmxnet3
test_01_verify_libvirt
test_02_verify_libvirt_after_restart
test_03_verify_libvirt_attach_disk
test_04_verify_guest_lspci
test_05_change_vm_ostype_restart
test_06_verify_guest_lspci_again
test_static_role_account_acls
test_11_ss_nfs_version_on_ssvm
test_nested_virtualization_vmware
test_3d_gpu_support
test_deploy_vgpu_enabled_vm
Passed test suits:
test_deploy_vm_with_userdata.py
test_affinity_groups_projects.py
test_portable_publicip.py
test_vm_snapshots.py
test_over_provisioning.py
test_global_settings.py
test_scale_vm.py
test_service_offerings.py
test_routers_iptables_default_policy.py
test_loadbalance.py
test_routers.py
test_reset_vm_on_reboot.py
test_deploy_vms_with_varied_deploymentplanners.py
test_network.py
test_router_dns.py
test_non_contigiousvlan.py
test_login.py
test_list_ids_parameter.py
test_public_ip_range.py
test_multipleips_per_nic.py
test_metrics_api.py
test_regions.py
test_affinity_groups.py
test_network_acl.py
test_pvlan.py
test_nic.py
test_deploy_vm_root_resize.py
test_resource_detail.py
test_secondary_storage.py
test_disk_offerings.py

@rhtyd should be all set now

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✖centos6 ✖centos7 ✖debian. JID-874

@marcaurele can you fix build failures:
/home/travis/build/apache/cloudstack/engine/schema/src/com/cloud/upgrade/dao/Upgrade41000to41100.java:29:1: error: Duplicate import to line 26 - java.sql.Connection.

ACS CI BVT Run
Sumarry:
Build Number 1024
Hypervisor xenserver
NetworkType Advanced
Passed=94
Failed=20
Skipped=12
Link to logs Folder (search by build_no): https://www.dropbox.com/sh/r2si930m8xxzavs/AAAzNrnoF1fC3auFrvsKo_8-a?dl=0
Failed tests:

test_loadbalance.py

test_01_create_lb_rule_src_nat Failed

test_02_create_lb_rule_non_nat Failed

test_assign_and_removal_lb Failed

test_routers.py

test_03_restart_network_cleanup Failing since 4 runs

test_04_restart_network_wo_cleanup Failing since 4 runs

test_05_router_basic Failing since 4 runs

test_06_router_advanced Failing since 4 runs

test_08_start_router Failing since 4 runs

test_09_reboot_router Failing since 4 runs

test_network.py

test_reboot_router Failing since 4 runs

test_non_contigiousvlan.py

test_extendPhysicalNetworkVlan Failed

test_deploy_vm_iso.py

test_deploy_vm_from_iso Failing since 79 runs

test_volumes.py

test_06_download_detached_volume Failed

test_nic.py

test_01_nic Failing since 4 runs

test_vm_life_cycle.py

test_10_attachAndDetach_iso Failing since 79 runs

test_routers_network_ops.py

test_01_isolate_network_FW_PF_default_routes_egress_true Failing since 112 runs

test_02_isolate_network_FW_PF_default_routes_egress_false Failing since 112 runs

test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true Failing since 110 runs

test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false Failing since 110 runs

test_03_RVR_Network_check_router_state Failed

Skipped tests:
test_vm_nic_adapter_vmxnet3
test_01_verify_libvirt
test_02_verify_libvirt_after_restart
test_03_verify_libvirt_attach_disk
test_04_verify_guest_lspci
test_05_change_vm_ostype_restart
test_06_verify_guest_lspci_again
test_static_role_account_acls
test_11_ss_nfs_version_on_ssvm
test_nested_virtualization_vmware
test_3d_gpu_support
test_deploy_vgpu_enabled_vm
Passed test suits:
test_deploy_vm_with_userdata.py
test_affinity_groups_projects.py
test_portable_publicip.py
test_vm_snapshots.py
test_over_provisioning.py
test_global_settings.py
test_router_dnsservice.py
test_scale_vm.py
test_service_offerings.py
test_routers_iptables_default_policy.py
test_reset_vm_on_reboot.py
test_deploy_vms_with_varied_deploymentplanners.py
test_router_dns.py
test_login.py
test_list_ids_parameter.py
test_public_ip_range.py
test_multipleips_per_nic.py
test_metrics_api.py
test_regions.py
test_affinity_groups.py
test_network_acl.py
test_pvlan.py
test_deploy_vm_root_resize.py
test_resource_detail.py
test_secondary_storage.py
test_disk_offerings.py

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1293

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1314

@marcaurele can you fix the conflict?

@rhtyd conflict fixed

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1425

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-1828)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 28907 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1760-t1828-kvm-centos7.zip
Smoke tests completed. 62 look OK, 5 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_01_vpc_privategw_acl
Failure
46.70
test_privategw_acl.py

test_02_vpc_privategw_static_routes
Failure
218.40
test_privategw_acl.py

test_03_vpc_privategw_restart_vpc_cleanup
Failure
198.33
test_privategw_acl.py

test_04_rvpc_privategw_static_routes
Failure
308.92
test_privategw_acl.py

test_02_create_template_with_checksum_sha1
Error
5.26
test_templates.py

test_03_create_template_with_checksum_sha256
Error
5.22
test_templates.py

test_04_create_template_with_checksum_md5
Error
5.24
test_templates.py

test_08_resize_volume
Error
312.38
test_volumes.py

test_09_delete_detached_volume
Error
186.87
test_volumes.py

test_10_list_volumes
Error
172.32
test_volumes.py

test_01_vpc_remote_access_vpn
Error
45.81
test_vpc_vpn.py

test_hostha_kvm_host_degraded
Error
26.01
test_hostha_kvm.py

@marcaurele can you check volume related failures, maybe caused by your changes?

@rhtyd failure due to VM not able to start/restart due to insufficient capacity. Are those tests run in parallel on the integration server?

@marcaurele no they are not run in parallel, but several times when there is an exception/issue on the mgmt server side this general error is thrown. I'm suspecting if this has to do with any exception (NPE etc?) when VM starts? I can check again later today, meanwhile see if you find any issue or think that tests failures were env caused.

Let's do a final test run and then this should be good to merge based on results
@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✖centos6 ✖centos7 ✖debian. JID-1479

Fixed conflict. Re-testing...
@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-1480

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-1903)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 30042 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1760-t1903-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_privategw_acl.py
Intermitten failure detected: /marvin/tests/smoke/test_volumes.py
Intermitten failure detected: /marvin/tests/smoke/test_vpc_vpn.py
Intermitten failure detected: /marvin/tests/smoke/test_hostha_kvm.py
Smoke tests completed. 64 look OK, 2 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_02_vpc_privategw_static_routes
Failure
231.55
test_privategw_acl.py

test_03_vpc_privategw_restart_vpc_cleanup
Failure
201.37
test_privategw_acl.py

test_07_resize_fail
Failure
15.27
test_volumes.py

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✖debian. JID-1486

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-1917)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 34746 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1760-t1917-kvm-centos7.zip
Intermitten failure detected: /marvin/tests/smoke/test_deploy_virtio_scsi_vm.py
Intermitten failure detected: /marvin/tests/smoke/test_vpc_redundant.py
Intermitten failure detected: /marvin/tests/smoke/test_hostha_kvm.py
Smoke tests completed. 64 look OK, 2 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

test_04_rvpc_network_garbage_collector_nics
Failure
301.34
test_vpc_redundant.py

test_hostha_enable_ha_when_host_in_maintenance
Error
0.83
test_hostha_kvm.py

Merging this based on two lgtms and test results (ignoring env related Trillian failures).