generated assets

Commit the generated assets with the latest master release

Shouldn't be this many file changes in this PR change.  Going to redo this...

Looks like you were merging into master. Try make sure the develop branch is the target.

My bad, meant to merge into a branch that was spun from master as opposed to develop to commit the generated assets with the release.  Since this was a manual copy, I didn't want to cause confusion with the assets generated for any future code changes


Checking validity of the config file on load.

If any config option is invalid, log to warn with which config option is invalid.

Greetings,
do you need a validator for the config file on loads and then if something is invalid, you need to show to user, right?
Can I colaborate? please assign me. o/


iron-list / template example

Hi, so this library looks really sweet. While your docs have examples of Vaadin components in action, I couldn't find any examples of google's polymer elements. Right now I am trying to figure out how to deal with things like *ngFor and templates. Could you provide the Angular equivalent of this Polymer snippet?
<iron-list items="[[data]]" as="item">
  <template>

      Name: [[item.name]]

  </template>
</iron-list>

I have successfully imported and rendered the component using the below syntax but there is no data.
<iron-list [items]="data" as="item">
  <template>

      Name: {{item.value}}

  </template>
</iron-list>

It looks like the template is getting wiped out by Angular. Any guidance you can provide is greatly appreciated. Also, is the use of as correct in this Angular context?

I am too looking for a solution for this.
Shouldnt it be good if Vaadin can provide some examples for all polymer elements? It will make things very clear.
Thanks

Hi!
Unfortunately, the <template>, as @alindsay55661 stated, is getting "wiped" by Angular.
For <iron-list>, there currently isn't any workaround available to work with Angular's templating engine.
There's some discussion here: https://github.com/PolymerElements/iron-list/issues/291#issuecomment-251354454

One possible workaround is to wrap <iron-list> with its template in another Polymer element, that is registered outside Angular templates. For example, create my-list.html:
<link rel="import" href="bower_components/polymer/polymer.html">
<link rel="import" href="bower_components/iron-list/iron-list.html">

<dom-module id="my-list">
  <template>
    <iron-list items="[[items]]" as="item">
      <template>

          Name: [[item.name]]

      </template>
    </iron-list>
  </template>

</dom-module>

Then import it in index.html, just like any other Polymer element:
...

    ...
    <link rel="import" href="my-list.html">

...

Then you can use the <my-list> element in in the declarations (PolymerElement('my-list')), as well as in Angular templates. The <iron-list> template was already defined in <my-list>, therefore we don't have it in Angular templates:
<my-list [items]="data"></my-list>

It requires a bit of work, though: you have to manually bypass all the properties and methods you use in <iron-list> through <my-list>. In the example above, only the items property is bypassed.

@platosha Should I put this in the docs and close this issue?

@BorntraegerMarc yes.


Header in WalletConnect Safe app has wrong font

Since the last WalletConnect Safe app update, the header font seems to be wrong.
https://user-images.githubusercontent.com/1380529/99513572-14bc2680-298b-11eb-8a98-b34570b828ab.png
I'm assigning "medium" just because we recently switched to the ipfs deployment for Safe apps and so we can check out if this is a bigger issue or not. I assume the same will happen once we move the other Safe apps to ipfs as well.

Good catch Toby, I forgot to copy the GlobalStyles in tx-builder and wallet-connect.


Tiny memory optimization

CA1835: Prefer the memory-based overloads of ReadAsync/WriteAsync methods in stream-based classes
https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1835
That actually returns ValueTask instead of Task, but I just used .AsTask() instead of larger refactoring.

Thanks, I'll review it soon

@Thorium it looks like there is no optimization here. The recommendation is only because of ValueTask is returned. So, doing .AsTask kills the optimization idea. However, it's possible that checking ValueTask result and returning Task.CompletedTask can improve performance, can you run benchmarks to verify it?

I was expect that if you don't do AsMemory, then it internally copies the byte-array so it's twice in memory. Which you wouldn't notice if your byte[] is size of 1kB, but if your byte[] is e.g. 2GB then it should matter. But I didn't check the source-code of WriteAsync so you might be right...
Changing all to ValueTask is a bit challenging, because there are other endpoints that are not returning ValueTask, for example this guy and some built-in Auth-methods. So can you really change all to ValueTasks, I'm not sure... That could be avoided by doing another parallel type ValueEndpointHandler here but then
you would need to dupliate also route and it goes quite un-intuitive for the end-user if there are multiple "route" functions.

I was expect that if you don't do AsMemory, then it internally copies the byte-array so it's twice in memory. Which you wouldn't notice if your byte[] is size of 1kB, but if your byte[] is e.g. 2GB then it should matter. But I didn't check the source-code of WriteAsync so you might be right...

The implementation depends on the descendant and their implementation, in most of the cases this wrap is done inside Sources. But I'm not sure that this is indeed the implementation that is used (for example here it's implemented exactly as I suggest.

Changing all to ValueTask is a bit challenging

I didn't mean to change everything to ValueTask, just to add switch
let vt = ctx.Response.Body.WriteAsync(bytes.AsMemory(0, bytes.Length))
if vt.IsCompletedSuccessfully then
    Task.CompletedTask
else
    vt.AsTask()

But this is already implemented in HttpResponse stream implementation, so if this is the implementation used, then there is nothing to improve

I've debugged it through and indeed this implementation is used, which is exactly implemented as the suggested change, so I'm closing the PR as not really improving things. Thanks for the try anyway!


Bold the selected header tab text

Changes
Updated heading styling to meet the requirement of displaying the selected tab text in bold
Issue :
Bold the selected header tab text
https://github.com/frzyc/genshin-optimizer/issues/2263
validation
Before

After

@frzyc gone through the linked comments seems like your commit https://github.com/frzyc/genshin-optimizer/commit/d70086029888989320c608b66c11ab13f277af15  resolves the bold issue with 'Genshin optimizer' tab button ? I should focus on the other tabs sizes

To clarify, only the selected tab in the header should be bolded, so "genshin optimizer" tab should be bolded when the user is on the home screen.


Cannot see Zazu icon in system tray on Ubuntu

Expected Behavior
White icon for Ubuntu in system tray.
Actual Behavior
Cannot see Zazu icon in system tray on Ubuntu.

Steps to reproduce the behavior
Run app.
Versions

Zazu: 0.2.3
OS: Ubuntu 16.04 (Unity)
GIT (if you have it installed):

Yikes, that's annoying. ]:
Thank you for reporting!

This also applies to Windows 10.   The taskbar is black by default now, which means the Zazu icon is invisible in the system tray.  Not sure if you want to open up a new issue or tackle Windows + Ubuntu together.

Can you try this out on v0.3.2 and see if the issue still exists?

In Windows 10 on v0.3.2, this is how it looks:
The black spot is where the Zazu icon is.

You wanted the dark theme, right? xD
I was hoping electron would handle this, I'll see if I can find a better solution. Thank you for letting me know [:


Fresco package issue

See the image:

Any reason that's happening? I'm going through plugins to remove junk for release builds and stumbled on that today. I know it's not needed so I remove but  just FYI it's happening and I didn't think it was right so curious if I'm missing something 😄

Hi @bradmartin ,
Hmm I am not sure what may be causing this issue other than some faulty runs of the "demo" app  during development that have made their way to the published package. I have removed those files and upload a new version 1.0.14 to npm.


[FLINK-9344] [TableAPI & SQL] Support INTERSECT and INTERSECT ALL for streaming

[FLINK-9344] [TableAPI & SQL] Support INTERSECT and INTERSECT ALL for streaming
What is the purpose of the change
Support Intersect and Intersect All for Streaming SQL and TableAPI
Brief change log

implemented StreamIntersectCoProcessFunction

Verifying this change
This change added tests and can be verified as follows:
cases of intersect operations in both org.apache.flink.table.runtime.stream.sql.SetOperatorsITCase  and
org.apache.flink.table.runtime.stream.table.SetOperatorsITCase
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving):  no
The serializers:  no
The runtime per-record code paths (performance sensitive):  no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper:  no
The S3 file system connector:  no

Documentation

Does this pull request introduce a new feature? yes
If yes, how is the feature documented?  not yet, but will be documented in next issue

Thanks for the review @walterddr @fhueske , I've updated the PR.

@fhueske , I would like to support minus/minus All after this issue, would you give some suggestion  about this issue?


Error in bd logic

Supplying bd command with argument 0 causes it to go up two directories.

Documents/Github/Dotfiles ⑂ main ❯ bd 0
~/Documents ❯

Calling bd command at root directory (/) provokes cut and bd error messages.

/ ❯ bd 0
cut: [-cf] list: values may not include zero
/ ❯ bd 1
cut: [-cf] list: values may not include zero
bd: Error: Can not go up 1 times
/ ❯ bd 2
cut: [-cf] list: values may not include zero
bd: Error: Can not go up 2 times

Fixed with this commit.


Unstructured scheme integration test

Addresses the integration test part of #61 for the unstructured regridder. Adds support for testing with files from iris-test-data.

I assume the failing test is the same timeout error we've been experiencing elsewhere in the iris tests?

Rebasing this PR will fix that problem (since #73).


invalid http response

whenever i am trying to "cleos"the following error is showing-
Error 3200002:invalid http response
Error Details:
Invalid content-length response
Notice:
I am syncing the block of the main network，Is this the reason?

Please start nodeos with --http-validate-host=false


Request for release of v0.9.7

Since the release of v0.9.6 there have been many newly added providers and functionality that we're anxiously waiting for.
Is a new version expected to be released soon?

This would be pretty handy.

I've been ooto for a couple weeks and have a backlog of things I'm aiming to get through before cutting a release (so that they're in the release.) Will hopefully get to it end of this week or early next.


Make ToggleDrawable abstract?

Hi, seems like ToggleDrawable is not meant to be used directly, but to be extended and init with a few calls to add(Bezier, Bezier) before draw(Canvas) is executed. Probably it should be set as abstract with an abstract method where you have to override and put in your calls to add(Bezier, Bezier)?

Saw the example on readme. Should have read that first.


EXIF lat / lon fields incorrect?

Looks like the Longitude field is borked?

You can spot check with https://exifinfo.org, or on my Mac this shows up on the file info screen.

Is is possible to add SN, and file path to the EXIF data too? (to make it easier to match up photos with their owners later)

Yes i noticed this too. I checked several logs and the value of moment_pic_longitude was 0, so i can't fix it as this is the recorded info. Can you check on your side if this is the case too?

Ok, my lat/lng to DMS conversion didn't work for negative values. Fix in progress.

Excellent I was just logging back in to check. I did notice some seemed fine.  Will git pull and try again!

@lvauvillier it seemed to chew through almost all of the dataset. There were a few crashes at the end of the run. I'll have to pinpoint the file names again. Here is the crash if it is useful to you:
thread 'main' panicked at src/main.rs:290:91:
called Option::unwrap() on a None value
stack backtrace:
0:     0x55f42445409b - std::backtrace_rs::backtrace::libunwind::trace::h3926e05c1d1f3b6d
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
1:     0x55f42445409b - std::backtrace_rs::backtrace::trace_unsynchronized::h9f5691494ac25ae6
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2:     0x55f42445409b - std::sys_common::backtrace::_print_fmt::h7e6bb7b81bf214f4
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/std/src/sys_common/backtrace.rs:67:5
3:     0x55f42445409b - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hcf688c88e28c91b4
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/std/src/sys_common/backtrace.rs:44:22
4:     0x55f424489f60 - core::fmt::rt::Argument::fmt::h59a542682908b618
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/core/src/fmt/rt.rs:142:9
5:     0x55f424489f60 - core::fmt::write::hce91e70849a27dee
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/core/src/fmt/mod.rs:1120:17
6:     0x55f4244491cd - std::io::Write::write_fmt::h0bba58d3b1b495e9
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/std/src/io/mod.rs:1762:15
7:     0x55f424453e84 - std::sys_common::backtrace::_print::hf3a4f110a22f16df
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/std/src/sys_common/backtrace.rs:47:5
8:     0x55f424453e84 - std::sys_common::backtrace::print::h0450d1fd5fc83f73
at /build/rustc-60UC9b/rustc-1.75.0+dfsg0ubuntu1~bpo0/library/std/src/sys_common/backtrace.rs:34:9
9:     0x55f42447333a - std::panicking::default_hook::{{closure}}::hee7ec73fab21a529
10:     0x55f424472fdd - std::panicking::default_hook::he65be6b11b67d1e4

Thanks @MAVProxyUser. It seems like the pointer for the info section is outside the file itself. I'd appreciate having the file name to take a look.


[Feat Request]: Add support for lazy creation of initial state in useState hook

Checklist

[X] Reviewed the README and documentation.
[X] Checked existing issues & PRs to ensure not duplicated.

Description
The signature of useState hook in v0.0.7 looks like this:
func useState<State>(_ : State) -> Binding<State>

This works fine for basic usage (eg. useState(0) or useState(myConstant)), but might cause a decrease in app performance when used with "factory" method:
useState(generateMyInitialState())

Although the generateMyInitialState function should not be performance heavy not even for a single call (it runs on main thread), there might be use-cases where a single call to performance heavier "factory method" is acceptable sacrifice.
The React implementation offers additional overload of the useState hook allowing user to pass a factory method for initial state, rather than initial state itself. A swift alternative could be translated to:
func useState<State>(_ initialState: @escaping () -> State) -> Binding<State>

and used as:
useState({ generateMyInitialState() })

// -- OR --

useState(generateMyInitialState)

I would like open a discussion about implementing such feature.
Example Use Case
Consider reading a database value used as an initial state for a view. A developer might be tempted to write code like this:
HookScope {
  let database = useDatabase()
  let myEntity = useState(database.fetchEntity())
  ...
}

This might work flawlessly for a small project, but easily becomes problematic when the project grows (eg. deep navigation stack, modals, ...).
To mitigate the problem, user has to explicitly memoize the generated initial state:
HookScop {
  let database = useDatabase()
  let initialState = useMemo(.once) {
    database.fetchEntity()
  }
  let myEntity = useState(initialState)
  ...
}

This is a simple workaround/fix, but it's easy to forget about. More over, it might be counter-intuitive for newcomers (considering the useState will only use the generated state once, but generates it on each view render).
Alternative Solution
As a solution, I'd like to introduce new API, which should address both intuitiveness and performance of the state hook.
Option 1
The simplest solution is to introduce new useState overload, which would take "factory method" as a parameter and utilise useMemo hook internally:
func useState<State>(_ initialState: @escaping () -> State) -> Binding<State> {
  let state = useMemo(.once) { initialState() }

  return useState(state)
}

// Usage:
useState(generateMyInitialState())    // Without optimisation (Same behavior as v0.0.7)
useState { generateMyInitialState() } // With optimisation (New API)
useState(generateMyInitialState)      // With optimisation (New API - Short syntax)

Pros

Source-compatible with existing code
Gives user ability to choose between optimised and unoptimised overload

Cons

Introduces dependency on useMemo hook
Optimisation is not first class citizen of the hook (StateHook class)
Requires the user to know the difference between overloads (unintuitive)

Option 2
Replace existing useState hook with new signature:
func useState<State>(_ initialState: @escaping () -> State) -> Binding<State>

// Usage

useState { generateMyInitialState() } // Optimised - New API
useState(generateMyInitialState)      // Optimised - New API with short syntax

Update StateHook to support lazy state initialisation:
private struct StateHook<State>: Hook {
-   let initialState: State
+   let initialState: () -> State
    ...
    func makeState() -> Ref {
-       Ref(initialState: initialState)
+       Ref(initialState: initialState())
    }
    ...
}

Optionally, support backwards compatibility by creating useState overload accepting state constant:
func useState<State>(_ initialState: State) -> Binding<State> {
    return useState({ initialState }) // Fallbacks to implementation above
}

Pros

(optionally) Source-compatible with existing code
Gives user ability to choose between optimised and unoptimised overload
Optimisation is first class citizen of the hook (StateHook class)

Cons

Requires the user to know the difference between overloads (unintuitive)

Option 3
Builds on top of StateHook changes from Option 2, but replaces the closure with @autoclosure argument:
func useState<State>(_ initialState: @escaping @autoclosure () -> State) -> Binding<State>

// Usage

useState(0)                        // Old API (No performance impact for constants)
useState(generateMyInitialState()) // New API (Optimised to single call of `generateMyInitialState`)

This allows user to use existing syntax, but leverage improved performance for free.
Pros

Source-compatible with existing code, with performance improvements applied automatically
Optimisation is first class citizen of the hook (StateHook class)
Uses Swift-native feature to achieve laziness with compact syntax

Cons

Some edge-cases might behave differently than in v0.0.7 (see below)
Does not match React syntax

Incompatible edge cases
Consider following code, using a side effect while generating initial state:
var numberOfCalls = 0

func generateState() -> String {
    numberOfCalls += 1
    return ""
}

func App() -> some View {
    HookScope {
        let state = useState(generateState())
        ...
    }
}

When re-rendering the view 3 times, the value of numberOfCalls will differ between v0.0.7 (4 - initial + 3 re-renders) and new API (1 - initial). This might cause an issue in theory, but I consider it highly unlikely, considering there is other API for running side effects.
In addition, the user is able to replicate v0.0.7 behavior with new API like this:
- let state = useState(generateState())
+ let generatedState = generateState()
+ let state = useState(generatedState)

Proposed Solution
Considering all the options above, I would vote for implementing Option 3, as it offers nice & compact syntax and automatically applies optimisation to existing code.
Motivation & Context
No response

Swift is smart enough to infer correct type - it always chooses the most specific matching type when there are multiple overloads.
let closure: () -> Int = { 100 }
useState(closure)
// Matches exactly argument type of `() -> State`

let closure2: (Int) -> Int = { _ in 100 }
useState(closure2)
// Matches exactly argument type of `State`

Anyway, when you pass closure to the hook, the actual state type depends on implementation:

useState { 100 }
State Type
Note

0.0.7
() -> Int

Option 3
() -> Int
Matches current implementation

Option 2
Int
Would need to be useState { { 100 } } to match current implementation

I just realised that Option 2 is not 100% the same as current implementation for all cases, but I don't think storing closures in state is a good practice anyway, so I would be surprised if this change actually affected anyone.

Alright, I'll draft a PR and we can move the discussion there 👍🏾


Fix split manager

Training is not possible for a list of folds > 0 without fold 0.
This PR fixes this bug.

Seems ok,
Can we merge this one?

Ok for me!


Use translations for outcome button labels where possible

Some info:
iOS and web are planning to translate the ones we know we'll use, fallback to the json text if no translation is available
Outcome strings we know about ("outcome_*"):
https://github.com/5calls/5calls/blob/master/static/locales/en.json#L122
Translations ("outcome_*"):
https://github.com/5calls/5calls/blob/master/static/locales/es.json#L122

Blocked by https://github.com/5calls/android/pull/89


update cn.json

VINXIS — Today at 9:43 PM
https://i.imgur.com/nZoWrHw.png https://i.imgur.com/rIfIsRx.png
oik i think thats it


Add component attributes to builder

Allows to add attributes to components within the builder. This is needed as part of our AXI-wrapper generator #1733
Something like:
my_comp = prog.component("my_comp")
my_comp.attribute("my_attr", 1)

will produce a component signature that looks like:
component my_comp<"my_attr"=1>(...) -> (...)

I added note of this in the reference doc. Didn't think this warranted changing/adding any tests but can do that if we want.

I made sure this works with a little snippet of python uses this, but didn't think it was warranted to go into the repo, included here for completeness:
from calyx.builder import Builder
def add_attr_check(prog):
    my_comp = prog.component("my_component")
    my_comp.attribute("attr1", 7)
    my_comp.attribute("attr2", 1)

def build():
    prog = Builder()
    add_attr_check(prog)
    return prog.program

if __name__ == "__main__":
    build().emit()

emits:
component m_bresp_channel<"attr1"=7, "attr2"=1>() -> () {
  cells {

  }
  wires {

  }
  control {

  }
}

LGTM!


Google has backported the Transitions framework to API14

https://developer.android.com/topic/libraries/support-library/revisions.html
https://developer.android.com/reference/android/support/transition/package-summary.html

Yes, nice start for Google.
I checked out the code and it's quite early to use it now. A lot of functionality is not backported at all. And I already can imagine different corner cases when ported ChangeBound and Fade will work incorrect before kitkat but Transitions-Everywhere's versions will proper handle it.

I wish Transitions-Everywhere a long life.

FYI Transitions in the Android Support Library

Article about Support Library for Transitions. Overview and comparison with Transitions-Everywhere

@andkulikov I'm sorry for silly question here, almost 2 years after your article on medium, so still you suggest to use your library over support library for transitions?

Hi. Support library is slowly improving, but still not so fast. I still suggest to use my library as a support one contains bugs. I am updating the article with updates for bugs


EOS-26608: config, cfgen support nodes without motr srvces and devices

Currently Hare 'config' stage is assuming that each node / pod will
contain motr services and devices mentioned in CDF file.
In any scenarios, config stage of hare should check, if motr services
are there and then only generate motr related fids.
In case motr services are not there, do not start/intiate motr
dependent services. Also currently 'config' is failing in s3server pod,
if 'motr-hare_keys.json' is not present, this needs to be fixed for
s3server pod.
Signed-off-by: Suvrat Joshi<EMAIL_ADDRESS>Problem Statement

Problem statement

Design

For Bug, Describe the fix here.
For Feature, Post the link for design

Coding
Checklist for Author

[ ] Coding conventions are followed and code is consistent

Testing
Checklist for Author

[ ] Unit and System Tests are added
[ ] Test Cases cover Happy Path, Non-Happy Path and Scalability
[ ] Testing was performed with RPM

Impact Analysis
Checklist for Author/Reviewer/GateKeeper

[ ] Interface change (if any) are documented
[ ] Side effects on other features (deployment/upgrade)
[ ] Dependencies on other component(s)

Review Checklist
Checklist for Author

[ ] JIRA number/GitHub Issue added to PR
[ ] PR is self reviewed
[ ] Jira and state/status is updated and JIRA is updated with PR link
[ ] Check if the description is clear and explained

Documentation
Checklist for Author

[ ] Changes done to WIKI / Confluence page / Quick Start Guide

Currently Hare 'config' stage is assuming that each node / pod will
contain motr services and devices mentioned in CDF file.
In any scenarios, config stage of hare should check, if motr services
are there and then only generate motr related fids.
In case motr services are not there, do not start/intiate motr
dependent services. Also currently 'config' is failing in s3server pod,
if 'motr-hare_keys.json' is not present, this needs to be fixed for
s3server pod.

@suvratjoshi, Idea is to have same CDF on all the nodes, I am confused by the statement In any scenarios, config stage of hare should check, if motr services are there and then only generate motr related fids., does motr services also include s3server?
So,

CDF should be same on motr ioservices pod and s3server pods
consul-client-conf for s3server pod must contain only the s3server services.
while the motr ioservice pod will not have s3services present
If we take care of the 1, 2 and 3 must already be supported.

@suvratjoshi, this is how the CDF must look like with pure client nodes, in our case with the pods that run only s3servers, you need to create only m0_clients entry for that node in CDF.
# Cluster Description File (CDF).
# See `cfgen --help-schema` for the format description.

nodes:
  - hostname: sage-tier1-1 # [user@]hostname
    data_iface: ib0        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
                           # supported values: "tcp" (default), "o2ib"
    m0_servers:
      - runs_confd: true
        io_disks:
          data: []
      - io_disks:
          #meta_data: /path/to/meta-data/drive
          data:
            - /dev/nvme0n1
            - /dev/nvme1n1
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 2             # max number of other Motr clients this host may have
  - hostname: sage-tier1-2 # [user@]hostname
    data_iface: ib0        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
                           # supported values: "tcp" (default), "o2ib"
    m0_servers:
      - io_disks:
          #meta_data: /path/to/meta-data/drive
          data:
            - /dev/nvme0n1
            - /dev/nvme1n1
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 2             # max number of other Motr clients this host may have
  - hostname: sage-tier2-1 # [user@]hostname
    data_iface: ib0        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
                           # supported values: "tcp" (default), "o2ib"
    m0_servers:
      - io_disks:
          #meta_data: /path/to/meta-data/drive
          data:
            - /dev/disk/by-id/wwn-0x5000c500301706d3
            #- /dev/disk/by-id/wwn-0x5000c500301706df
            - /dev/disk/by-id/wwn-0x5000c5003017072f
            - /dev/disk/by-id/wwn-0x5000c5003016d65b
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 2             # max number of other Motr clients this host may have
  - hostname: sage-tier2-2 # [user@]hostname
    data_iface: ib0        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
                           # supported values: "tcp" (default), "o2ib"
    m0_servers:
      - io_disks:
          #meta_data: /path/to/meta-data/drive
          data:
            - /dev/disk/by-id/wwn-0x5000c5003016d6d3
            - /dev/disk/by-id/wwn-0x5000c5003016d653
            - /dev/disk/by-id/wwn-0x5000c500301706db
            - /dev/disk/by-id/wwn-0x5000c5003016d5c3
            - /dev/disk/by-id/wwn-0x5000c50030170723
            - /dev/disk/by-id/wwn-0x5000c500301706d7
            - /dev/disk/by-id/wwn-0x5000c500301706f7
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 2             # max number of other Motr clients this host may have
  - hostname: sage-tier2-3 # [user@]hostname
    data_iface: ib0        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
                           # supported values: "tcp" (default), "o2ib"
    m0_servers:
      - runs_confd: true
        io_disks:
          data: []
      - io_disks:
          #meta_data: /path/to/meta-data/drive
          data:
#            - /dev/disk/by-id/wwn-0x5000c5003016d66b
            - /dev/disk/by-id/wwn-0x5000c500301706e3
            - /dev/disk/by-id/wwn-0x5000c5003017071b
            - /dev/disk/by-id/wwn-0x5000c5003017075f
            - /dev/disk/by-id/wwn-0x5000c50030170717
            - /dev/disk/by-id/wwn-0x5000c5003017075b
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 2             # max number of other Motr clients this host may have
  - hostname: sage-tier2-4 # [user@]hostname
    data_iface: ib0        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
                           # supported values: "tcp" (default), "o2ib"
    m0_servers:
      - io_disks:
          #meta_data: /path/to/meta-data/drive
          data:
            - /dev/disk/by-id/wwn-0x5000c5003016d68f
            - /dev/disk/by-id/wwn-0x5000c5003016d5d3
            - /dev/disk/by-id/wwn-0x5000c5003016d673
            - /dev/disk/by-id/wwn-0x5000c500301706ef
            - /dev/disk/by-id/wwn-0x5000c5003017073b
            - /dev/disk/by-id/wwn-0x5000c50030170737
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 2             # max number of other Motr clients this host may have
  - hostname: sage-tier3-1 # [user@]hostname
    data_iface: ib0        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
                           # supported values: "tcp" (default), "o2ib"
    m0_servers:
      - runs_confd: true
        io_disks:
          data: []
      - io_disks:
          #meta_data: /path/to/meta-data/drive
          data:
            - /dev/disk/by-id/wwn-0x5000c50095bd089b
            - /dev/disk/by-id/wwn-0x5000c50095bd092f
            - /dev/disk/by-id/wwn-0x5000c50095bd0d0b
            - /dev/disk/by-id/wwn-0x5000c50095bd0f97
            - /dev/disk/by-id/wwn-0x5000c50095bd0ffb
            - /dev/disk/by-id/wwn-0x5000c50095bd210f
            - /dev/disk/by-id/wwn-0x5000c50095bd221b
            - /dev/disk/by-id/wwn-0x5000c50095bd2237
            - /dev/disk/by-id/wwn-0x5000c50095bd2dc3
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 2            # max number of other Motr clients this host may have
  - hostname: client-21    # [user@]hostname
    data_iface: ib1        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 16            # max number of other Motr clients this host may have
  - hostname: client-22    # [user@]hostname
    data_iface: ib1        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 16            # max number of other Motr clients this host may have
  - hostname: client-23    # [user@]hostname
    data_iface: ib1        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 16            # max number of other Motr clients this host may have
  - hostname: client-24    # [user@]hostname
    data_iface: ib1        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 16            # max number of other Motr clients this host may have
  - hostname: client-25    # [user@]hostname
    data_iface: ib1        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 16            # max number of other Motr clients this host may have
  - hostname: client-26    # [user@]hostname
    data_iface: ib1        # name of data network interface
    data_iface_type: o2ib  # type of network interface (optional);
    m0_clients:
      s3: 0                # number of S3 servers to start
      other: 16            # max number of other Motr clients this host may have
  - hostname: client-27    # [user@]hostname
    data_iface: ib1        # name of data network interface
pools:
  - name: tier1-nvme-p1
    #type: sns  # optional; supported values: "sns" (default), "dix", "md"
    disk_refs:
      - { path: /dev/nvme0n1, node: sage-tier1-1 }
      - { path: /dev/nvme1n1, node: sage-tier1-1 }
      - { path: /dev/nvme0n1, node: sage-tier1-2 }
      - { path: /dev/nvme1n1, node: sage-tier1-2 }
    data_units: 2
    parity_units: 1
    allowed_failures: { site: 0, rack: 0, encl: 0, ctrl: 0, disk: 1 }
  - name: tier2-ssd-p2
    disk_refs:
      - { path: /dev/disk/by-id/wwn-0x5000c500301706d3, node: sage-tier2-1 }
      - { path: /dev/disk/by-id/wwn-0x5000c5003017072f, node: sage-tier2-1 }
#      - { path: /dev/disk/by-id/wwn-0x5000c5003016d6d3, node: sage-tier2-2 }
#      - { path: /dev/disk/by-id/wwn-0x5000c5003016d653, node: sage-tier2-2 }
      - { path: /dev/disk/by-id/wwn-0x5000c5003016d68f, node: sage-tier2-4 }
      - { path: /dev/disk/by-id/wwn-0x5000c5003016d5d3, node: sage-tier2-4 }
    data_units: 2
    parity_units: 1
    allowed_failures: { site: 0, rack: 0, encl: 0, ctrl: 0, disk: 1 }
  - name: tier3-hdd-p3
    disk_refs:
      - { path: /dev/disk/by-id/wwn-0x5000c50095bd089b, node: sage-tier3-1 }
      - { path: /dev/disk/by-id/wwn-0x5000c50095bd092f, node: sage-tier3-1 }
      - { path: /dev/disk/by-id/wwn-0x5000c50095bd0d0b, node: sage-tier3-1 }
      - { path: /dev/disk/by-id/wwn-0x5000c50095bd0f97, node: sage-tier3-1 }
    data_units: 2
    parity_units: 1
    allowed_failures: { site: 0, rack: 0, encl: 0, ctrl: 0, disk: 1 }
...
    data_units: 8
    parity_units: 2
    allowed_failures: { site: 0, rack: 0, encl: 0, ctrl: 0, disk: 2 }
profiles:
  - name: prof-0
    pools: [ tier1-nvme-p1, tier2-ssd-p2, tier3-hdd-p3, tier2-ssd, tier3-hdd ]

@suvratjoshi, can you post a CDF generated using this patch. cc @vaibhavparatwar.

@suvratjoshi, can you post a CDF generated using this patch. cc @vaibhavparatwar.

pools:
- allowed_failures:
    disk: 0
    ctrl: 0
    encl: 0
    rack: 0
    site: 0
  spare_units: 0
  name: storage-set-1__sns
  data_units: 1
  parity_units: 0
  disk_refs:
  - path: /dev/sdc
    node: data-node1
  - path: /dev/sdd
    node: data-node1
  - path: /dev/sdf
    node: data-node1
  - path: /dev/sdg
    node: data-node1
  - path: /dev/sdc
    node: data-node2
  - path: /dev/sdd
    node: data-node2
  - path: /dev/sdf
    node: data-node2
  - path: /dev/sdg
    node: data-node2
  - path: /dev/sdc
    node: data-node3
  - path: /dev/sdd
    node: data-node3
  - path: /dev/sdf
    node: data-node3
  - path: /dev/sdg
    node: data-node3
  type: sns
- allowed_failures:
    disk: 0
    ctrl: 0
    encl: 0
    rack: 0
    site: 0
  spare_units: 0
  name: storage-set-1__dix
  data_units: 1
  parity_units: 0
  disk_refs:
  - path: /dev/sdb
    node: data-node1
  - path: /dev/sde
    node: data-node1
  - path: /dev/sdb
    node: data-node2
  - path: /dev/sde
    node: data-node2
  - path: /dev/sdb
    node: data-node3
  - path: /dev/sde
    node: data-node3
  type: dix
create_aux: false
profiles:
- pools:
  - storage-set-1__sns
  - storage-set-1__dix
  name: Profile_the_pool
fdmi_filters: null
nodes:
- m0_servers:
  - io_disks:
      data:
      - path: /dev/sdc
        size:<PHONE_NUMBER>0
        blksize: 4096
      - path: /dev/sdd
        size:<PHONE_NUMBER>0
        blksize: 4096
      meta_data: ! '[''/dev/sdb'']'
    runs_confd: false
  - io_disks:
      data:
      - path: /dev/sdf
        size:<PHONE_NUMBER>0
        blksize: 4096
      - path: /dev/sdg
        size:<PHONE_NUMBER>0
        blksize: 4096
      meta_data: ! '[''/dev/sde'']'
    runs_confd: false
  - io_disks:
      data: []
      meta_data: null
    runs_confd: true
  data_iface: dummy
  hostname: data-node1
  data_iface_ip_addr: data-node1
  m0_clients:
    other: 0
    s3: 0
  memorysize_mb: 15866.52734375
  machine_id: aaa120a9e051d103c164f605615c32a4
  processorcount: 8
  data_iface_type: tcp
- m0_servers:
  - io_disks:
      data:
      - path: /dev/sdc
        size:<PHONE_NUMBER>0
        blksize: 4096
      - path: /dev/sdd
        size:<PHONE_NUMBER>0
        blksize: 4096
      meta_data: ! '[''/dev/sdb'']'
    runs_confd: false
  - io_disks:
      data:
      - path: /dev/sdf
        size:<PHONE_NUMBER>0
        blksize: 4096
      - path: /dev/sdg
        size:<PHONE_NUMBER>0
        blksize: 4096
      meta_data: ! '[''/dev/sde'']'
    runs_confd: false
  - io_disks:
      data: []
      meta_data: null
    runs_confd: true
  data_iface: dummy
  hostname: data-node2
  data_iface_ip_addr: data-node2
  m0_clients:
    other: 0
    s3: 0
  memorysize_mb: 15866.52734375
  machine_id: bbb340f79047df9bb52fa460615c32a5
  processorcount: 8
  data_iface_type: tcp
- m0_servers:
  - io_disks:
      data:
      - path: /dev/sdc
        size:<PHONE_NUMBER>0
        blksize: 4096
      - path: /dev/sdd
        size:<PHONE_NUMBER>0
        blksize: 4096
      meta_data: ! '[''/dev/sdb'']'
    runs_confd: false
  - io_disks:
      data:
      - path: /dev/sdf
        size:<PHONE_NUMBER>0
        blksize: 4096
      - path: /dev/sdg
        size:<PHONE_NUMBER>0
        blksize: 4096
      meta_data: ! '[''/dev/sde'']'
    runs_confd: false
  - io_disks:
      data: []
      meta_data: null
    runs_confd: true
  data_iface: dummy
  hostname: data-node3
  data_iface_ip_addr: data-node3
  m0_clients:
    other: 0
    s3: 0
  memorysize_mb: 15866.52734375
  machine_id: ccc8700fe6797ed532e311b0615c32a7
  processorcount: 8
  data_iface_type: tcp
- m0_servers: null
  data_iface: dummy
  hostname: server-node1
  data_iface_ip_addr: server-node1
  m0_clients:
    other: 0
    s3: 2
  memorysize_mb: 15866.52734375
  machine_id: ddd120a9e051d103c164f605615c32a4
  processorcount: 8
  data_iface_type: tcp
- m0_servers: null
  data_iface: dummy
  hostname: server-node2
  data_iface_ip_addr: server-node2
  m0_clients:
    other: 0
    s3: 2
  memorysize_mb: 15866.52734375
  machine_id: eee340f79047df9bb52fa460615c32a5
  processorcount: 8
  data_iface_type: tcp
- m0_servers: null
  data_iface: dummy
  hostname: server-node3
  data_iface_ip_addr: server-node3
  m0_clients:
    other: 0
    s3: 2
  memorysize_mb: 15866.52734375
  machine_id: fff8700fe6797ed532e311b0615c32a7
  processorcount: 8
  data_iface_type: tcp

@mssawant ,
After addressing the review comments I created an image from custom build :
http://eos-jenkins.colo.seagate.com/job/GitHub-custom-ci-builds/job/centos-7.9/job/cortx-all-image-custom-ci/1579/
Ran deployment on 3 node setup and it was successful.
NAME                            READY   STATUS    RESTARTS   AGE
consul-7h2xs                    1/1     Running   0          18m
consul-mzmnf                    1/1     Running   0          18m
consul-server-0                 1/1     Running   0          18m
consul-server-1                 1/1     Running   0          18m
consul-server-2                 1/1     Running   0          18m
consul-tc79g                    1/1     Running   0          18m
control-node-b5ccb6877-j9dcl    4/4     Running   0          17m
data-node1-7dddb8fcc7-tnht6     4/4     Running   0          15m
data-node2-58b9b74d67-bth8c     4/4     Running   0          15m
data-node3-57c444bb6c-6btng     4/4     Running   0          15m
ha-node-7f5d45db58-qhkrs        1/1     Running   0          16m
kafka-0                         1/1     Running   0          18m
kafka-1                         1/1     Running   0          18m
kafka-2                         1/1     Running   0          18m
server-node1-68cfc6779f-9mjrg   6/6     Running   0          13m
server-node2-6589f65cd9-mjgvt   6/6     Running   0          13m
server-node3-df976d597-xx7x7    6/6     Running   0          13m
symas-openldap-pod              1/1     Running   0          18m
zookeeper-0                     1/1     Running   0          18m
zookeeper-1                     1/1     Running   0          18m
zookeeper-2                     1/1     Running   0          18m

hctl status :
[root@data-node1 /]# hctl status
Data pool:
    # fid name
    0x6f00000000000001:0x90 'storage-set-1__sns'
Profile:
    # fid name: pool(s)
    0x7000000000000001:0xdb 'Profile_the_pool': 'storage-set-1__sns' 'storage-set-1__dix' None
Services:
    data-node2
    [started]  hax        0x7200000000000001:0x2b  inet:tcp:data-node2@2001
    [started]  ioservice  0x7200000000000001:0x2e  inet:tcp:data-node2@3001
    [started]  ioservice  0x7200000000000001:0x3b  inet:tcp:data-node2@3002
    [started]  confd      0x7200000000000001:0x48  inet:tcp:data-node2@3003
    data-node1
    [started]  hax        0x7200000000000001:0x7   inet:tcp:data-node1@2001
    [started]  ioservice  0x7200000000000001:0xa   inet:tcp:data-node1@3001
    [started]  ioservice  0x7200000000000001:0x17  inet:tcp:data-node1@3002
    [started]  confd      0x7200000000000001:0x24  inet:tcp:data-node1@3003
    data-node3
    [started]  hax        0x7200000000000001:0x4f  inet:tcp:data-node3@2001
    [started]  ioservice  0x7200000000000001:0x52  inet:tcp:data-node3@3001
    [started]  ioservice  0x7200000000000001:0x5f  inet:tcp:data-node3@3002
    [started]  confd      0x7200000000000001:0x6c  inet:tcp:data-node3@3003
    server-node1
    [started]  hax        0x7200000000000001:0x71  inet:tcp:server-node1@2001
    [started]  s3server   0x7200000000000001:0x74  inet:tcp:server-node1@4001
    [started]  s3server   0x7200000000000001:0x77  inet:tcp:server-node1@4002
    server-node2
    [started]  hax        0x7200000000000001:0x7c  inet:tcp:server-node2@2001
    [started]  s3server   0x7200000000000001:0x7f  inet:tcp:server-node2@4001
    [started]  s3server   0x7200000000000001:0x82  inet:tcp:server-node2@4002
    server-node3  (RC)
    [started]  hax        0x7200000000000001:0x87  inet:tcp:server-node3@2001
    [started]  s3server   0x7200000000000001:0x8a  inet:tcp:server-node3@4001
    [started]  s3server   0x7200000000000001:0x8d  inet:tcp:server-node3@4002
[root@data-node1 /]#

The deployment for my PR https://github.com/Seagate/cortx-hare/pull/1911 using regular way of deployment has failed.
http://eos-jenkins.colo.seagate.com/job/Cortx-kubernetes/job/deploy-cortx-k8-cluster/599/console
It is failing in s3_setup config phase :
2021-12-23 18:23:46 cortx_setup [45]: INFO [_provision_components] /opt/seagate/cortx/s3/bin/s3_setup config --config yaml:///etc/cortx/cluster.conf --services io,auth,bg_consumer
2021-12-23 18:23:49 cortx_setup [45]: ERROR [main] error(22): config phase of s3, failed. b''
2021-12-23 18:23:49 cortx_setup [45]: ERROR [main] Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/cortx/setup/cortx_setup.py", line 132, in main
rc = command.process()
File "/usr/lib/python3.6/site-packages/cortx/setup/cortx_setup.py", line 120, in process
CortxProvisioner.cluster_bootstrap(self._args.cortx_conf, force_override)
File "/usr/lib/python3.6/site-packages/cortx/provisioner/provisioner.py", line 289, in cluster_bootstrap
CortxProvisioner._provision_components(cortx_conf, mini_prov_interfaces, apply_phase)
File "/usr/lib/python3.6/site-packages/cortx/provisioner/provisioner.py", line 251, in _provision_components
components[comp_idx]['name'], err)
cortx.provisioner.error.CortxProvisionerError: error(22): config phase of s3, failed. b''

@suvratjoshi, Idea is to have same CDF on all the nodes, I am confused by the statement In any scenarios, config stage of hare should check, if motr services are there and then only generate motr related fids., does motr services also include s3server? So,

CDF should be same on motr ioservices pod and s3server pods
consul-client-conf for s3server pod must contain only the s3server services.
while the motr ioservice pod will not have s3services present
If we take care of the 1, 2 and 3 must already be supported.

Hi @mssawant ,
Yes. We are taking that casre.
Now I have updated description.
Thanks!


[Question]: Code coverage not working as expected

Task name
VSTest
Task version
2
Environment type (Please select at least one enviroment where you face this issue)

[ ] Self-Hosted
[X] Microsoft Hosted
[ ] VMSS Pool
[ ] Container

Azure DevOps Server type
Azure DevOps Server (Please specify exact version in the textbox below)
Azure DevOps Server Version (if applicable)
No response
Operation system
windows
Question
after running multitarget build and test, code coverage for net462 is not getting published.

steps:
 - task: MSBuild@1
   displayName: 'Build solution'
   inputs:
    solution: src/Async.Bridges.sln
    msbuildArgs: '/p:TreatWarningsAsErrors="true" /restore'
    platform: 'Any CPU'
    configuration: '$(BuildConfiguration)'

  - task: VSTest@3
    displayName: "Run Tests - .NET 6"
    inputs:
      testRunTitle: "Tests - .NET 6"
      searchFolder: '$(System.DefaultWorkingDirectory)\out\$(BuildConfiguration)'
      testAssemblyVer2: |
        **\net6.0\Tests\Async.Bridges.*Tests.dll
      vsTestVersion: 17.0
      runSettingsFile: src/Default.runsettings
      runInParallel: false
      runTestsInIsolation: true
      codeCoverageEnabled: true
      platform: "$(BuildPlatform)"
      configuration: "$(BuildConfiguration)"
      diagnosticsEnabled: true
      rerunFailedTests: true
      rerunFailedThreshold: 20
      rerunMaxAttempts: 2
      minimumExpectedTests: 1
      failOnMinTestsNotRun: true

  - task: VSTest@3
    displayName: "Run Tests - .NET Framework 4.6.2"
    inputs:
      testRunTitle: "Tests - .NET Framework 4.6.2"
      searchFolder: '$(System.DefaultWorkingDirectory)\out\$(BuildConfiguration)'
      testAssemblyVer2: |
        **\net462\Tests\Async.Bridges.*Tests.dll
      vsTestVersion: 17.0
      runSettingsFile: src/Default.runsettings
      runInParallel: false
      runTestsInIsolation: true
      codeCoverageEnabled: true
      platform: "$(BuildPlatform)"
      configuration: "$(BuildConfiguration)"
      diagnosticsEnabled: true
      rerunFailedTests: true
      rerunFailedThreshold: 20
      rerunMaxAttempts: 2
      minimumExpectedTests: 1
      failOnMinTestsNotRun: true

in ado ui, only coverage from net6.0 dll is published

It appears that after running a multitarget build and test, the code coverage for .NET Framework 4.6.2 (net462) is not being published. Let's troubleshoot this issue.

Check Output Folder: Ensure that the output folder for your test results and code coverage reports is correctly specified. In your VSTest tasks, you're using $(System.DefaultWorkingDirectory)\out\$(BuildConfiguration) as the search folder. Confirm that the test results and coverage files are indeed generated in this location.

Verify Test Assembly Path: In the VSTest tasks, you've specified the test assembly pattern for both .NET 6 and .NET Framework 4.6.2. Make sure that the wildcard pattern **\net462\Tests\Async.Bridges.*Tests.dll matches the actual location of your test assemblies. Double-check the path and ensure that the test DLLs are present in the expected directory.

Code Coverage Settings: Ensure that your runSettingsFile (located at src/Default.runsettings) includes the necessary configuration for code coverage. Specifically, check if the <DataCollector> section includes the CodeCoverage data collector. If not, add it to the run settings file.

Permissions and Access: Verify that the build agent or self-hosted environment has the necessary permissions to read/write files in the specified output folder. Sometimes issues arise due to insufficient permissions.

Logging and Diagnostics: Enable detailed logging and diagnostics for the VSTest tasks. Set diagnosticsEnabled: true to get more information about what's happening during the test execution. Review the logs for any relevant error messages or warnings related to code coverage.

Rerun Failed Tests: You've configured the tasks to rerun failed tests (rerunFailedTests: true). If any tests fail during the initial run, they will be retried. Check if any tests are consistently failing and investigate why.

Thresholds and Minimum Expected Tests: You've set thresholds for rerunning failed tests (rerunFailedThreshold) and specified a minimum expected test count (minimumExpectedTests). Ensure that these values align with your expectations. If the minimum expected tests are not met, the build may fail.

Missing Value for rerunFailedThreshold: It seems there's a missing value for rerunFailedThreshold in your configuration. Please provide the appropriate value (e.g., 20 as shown in your .NET 6 task).


minimum number of characters in entries

enter a minimum number of characters in the input for it to be validated

03 for the person's name
10 for the course name
30 for the course description

I thought about creating a new bool function in the 'ValidationHelper' class with input for the number of characters in the inserted string and the number you want to check, returning true if it is above the value or false if it is below.


[BEAM-721] Testing tox intermittent failures on Mac

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[ x ] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[ x ] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[ x ] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[ ] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

@aaltay I added the checks: If tox is installed, then update TOX_HOME to the right place. Otherwise, install it. The fix has run fine three times already:

https://travis-ci.org/apache/incubator-beam/builds/165958424
https://travis-ci.org/apache/incubator-beam/builds/165960898
https://travis-ci.org/apache/incubator-beam/builds/165961980

All the linked runs, ran with the image that has tox preinstalled. Do you have successful run with other images?

Not at the moment. I'll trigger a few runs by closing/opening the PR. To be fair, though, all the Python runs that I found from the last two days have come with tox preinstalled:

https://travis-ci.org/apache/incubator-beam/jobs/165945731
https://travis-ci.org/apache/incubator-beam/jobs/165929142
https://travis-ci.org/apache/incubator-beam/jobs/165963568
https://travis-ci.org/apache/incubator-beam/builds/165665252
https://travis-ci.org/apache/incubator-beam/jobs/165401745
https://travis-ci.org/apache/incubator-beam/jobs/165389942

Maybe there was a rolling change to Travis. If there will be a single image with tox installed, then we do not need the branch to check whether it is installed or not.
Either way, let's wait for your test runs to complete.

I filed an issue to Travis to find out if that's the case.

According to the Travis people: They don't officially support Python, but they've pushed a new Mac image on 10/04 that might have changed the behavior.
If they don't support Python, it's feasible that they'll push an image that will again not come with Tox - so it might be fine to leave the code as is in this PR. What do you think?

LGTM.
According to the Travis blog post they will maintain multiple images at least until the end of October and maybe longer. So, it makes sense to keep this code as it is.

@robertwb can you review and commit if appropriate? : ) - received LGTM from aaltay.

Thanks for doing this. I think this is good. I'll merge.


FIDO2 Authenticators do not work

Search before asking

[X] I had searched in the issues and found no similar issues.

Operating System

[ ] macOS
[ ] Windows
[X] Linux

Operating System Version
Pop!_OS 22.04 LTS
It happens on the web browser too?
No, it just happens on the Desktop app
Rocket.Chat Desktop App Version
3.9.6
Rocket.Chat Server Version
6.1.2
Describe the bug
When logging in through OIDC (provided by Keycloak, in this case), I am unable to use FIDO authenticators both for passwordless login and 2FA.
In both cases, I can see the tokens light up as if a challenge is started, but there is no indication on screen. It also fails to ask me for the PIN, so when I touch the authenticator, passwordless login immediately fails. 2FA simply times out, as if it never receives a response from the authenticator.
How to Reproduce
Configure an SSO Provider.
Configure a FIDO authenticator for passwordless login or 2FA.
Try to connect to the Rocket.Chat server.
Get redirected to your SSO provider to log in.
Fail, as the authenticators can't properly interact with the page.
Describe your Expected behavior
When I get redirected to my IdP, I get prompted for the PIN of my authenticator and login succeeds.
Anything else
This works fine in the mobile app and in the browser. Electron has support for this.
Are you willing to submit a code contribution?

[ ] Yes, I am willing to submit a Pull Request!

Trying to debug this with a local instance, I can at least see that if I call navigator.credentials.get() myself, I get a DOMException that it either timed out or was not allowed.
Unfortunately, I do not see a reason for why it isn't allowed. I've tried with several different authenticators and oddly, I can successfully use them on webauthn.me and similar demo sites (at least as long as a PIN isn't required).

Is there no interest in making this work, at all?


More ujson options

New version supports indentation. Also, some settings (like ensure ASCII) were previously ignoring settings. Now they respect them.

Looks good. Can you:

add some tests to make sure the new options are working
add a section to the README to describe how to use the new options

Thanks

@mitar I implemented this on my fork https://github.com/Amertz08/drf-ujson-renderer/pull/3


Integration with oss-fuzz fuzzing service

Hi, I would like to help integrate this project into OSS-Fuzz.

As an initial step for integration I have created this PR: https://github.com/google/oss-fuzz/pull/9753, it contains necessary logic from an OSS-Fuzz perspective to integrate gimli.

OSS-Fuzz is a free service run by Google that performs continuous fuzzing of important open source projects, you can find more details in our FAQ.

If you would like to integrate, the only thing I need is a list of email(s), it must be associated with a google account like gmail (why?). by doing that, the provided email(s) will get access to the data produced by OSS-Fuzz, such as bug reports, coverage reports and more stats.

Notice the email(s) affiliated with the project will be public in the OSS-Fuzz repo, as they will be part of a configuration file.

Hi, thanks for initiating this.
You can use<EMAIL_ADDRESS>for the email.
Is<EMAIL_ADDRESS>your email address? What's your relationship with the OSS Fuzz project?


Strange behavior of convert_element_type on main branch

Running from github HEAD:
import jax.numpy as jnp
import jax

jax.config.update('jax_enable_x64', True)

x = jnp.float64(2.718)
x_f16 = x.astype('float16')

print(x, x_f16)
# 2.718 -15790.0

version info:
jax.print_environment_info()
# jax:    0.3.18
# jaxlib: 0.3.15
# numpy:  1.23.2
# python: 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18)  [Clang 6.0 (clang-600.0.57)]
# jax.devices (1 total, 1 local): [CpuDevice(id=0)]
# process_count: 1

I can only reproduce this locally on my non-M1 macbook; I've not been able to reproduce in Colab or on linux.

FWIW, this does not reproduce on my macbook, albeit with a (locally built) jaxlib 0.3.18, also at HEAD:
>>> import jax.numpy as jnp
>>> import jax
>>> jax.config.update("jax_enable_x64", True)
>>> x = jnp.float64(2.718)
>>> x_f16 = x.astype("float16")
>>> print(x, x_f16)
2.718 2.719

>>> jax.print_environment_info()
jax:    0.3.18
jaxlib: 0.3.18
numpy:  1.23.3
python: 3.10.6 (main, Aug 30 2022, 04:58:14) [Clang 13.1.6 (clang-13<IP_ADDRESS>.5)]
jax.devices (1 total, 1 local): [CpuDevice(id=0)]
process_count: 1

It does reproduce on my MacBook, with jaxlib 0.3.15, and I think that's where the problem lies.
jax.print_environment_info()
# jax:    0.3.18
# jaxlib: 0.3.15
# numpy:  1.23.3
# python: 3.10.6 (main, Aug 30 2022, 05:12:36) [Clang 13.1.6 (clang-13<IP_ADDRESS>.5)]
# jax.devices (1 total, 1 local): [CpuDevice(id=0)]
# process_count: 1

This does not reproduce on my M1 Macbook pro with either jaxlib 0.3.15 or jaxlib from head.
For those of you where this fails, are you using Intel or ARM macbooks? Can you try building jaxlib from head and see if it reproduces? I'm speculating this is probably already fixed with an up to date jaxlib.

Mine is an intel macbook

Mine is also an intel MacBook. And the problem persists with a locally built jaxlib.
In [1]: import jax.numpy as jnp
   ...: import jax
   ...:
   ...: jax.config.update('jax_enable_x64', True)
   ...:
   ...: x = jnp.float64(2.718)
   ...: x_f16 = x.astype('float16')
   ...:
   ...: print(x, x_f16)
   ...: # 2.718 -15790.0
2.718 -15790.0

In [2]: jax.print_environment_info()
jax:    0.3.18
jaxlib: 0.3.18
numpy:  1.23.3
python: 3.10.6 (main, Aug 30 2022, 05:12:36) [Clang 13.1.6 (clang-13<IP_ADDRESS>.5)]
jax.devices (1 total, 1 local): [CpuDevice(id=0)]
process_count: 1

Could you share the details of what CPU you have? Sharing the output of sysctl -a | grep machdep.cpu should do it.

@hawkinsp Here you go.

machdep.cpu.mwait.linesize_min: 64
machdep.cpu.mwait.linesize_max: 64
machdep.cpu.mwait.extensions: 3
machdep.cpu.mwait.sub_Cstates: 286531872
machdep.cpu.thermal.sensor: 1
machdep.cpu.thermal.dynamic_acceleration: 1
machdep.cpu.thermal.invariant_APIC_timer: 1
machdep.cpu.thermal.thresholds: 2
machdep.cpu.thermal.ACNT_MCNT: 1
machdep.cpu.thermal.core_power_limits: 1
machdep.cpu.thermal.fine_grain_clock_mod: 1
machdep.cpu.thermal.package_thermal_intr: 1
machdep.cpu.thermal.hardware_feedback: 0
machdep.cpu.thermal.energy_policy: 1
machdep.cpu.xsave.extended_state: 31 832 1088 0
machdep.cpu.xsave.extended_state1: 15 832 256 0
machdep.cpu.arch_perf.version: 4
machdep.cpu.arch_perf.number: 4
machdep.cpu.arch_perf.width: 48
machdep.cpu.arch_perf.events_number: 7
machdep.cpu.arch_perf.events: 0
machdep.cpu.arch_perf.fixed_number: 3
machdep.cpu.arch_perf.fixed_width: 48
machdep.cpu.cache.linesize: 64
machdep.cpu.cache.L2_associativity: 4
machdep.cpu.cache.size: 256
machdep.cpu.tlb.inst.large: 8
machdep.cpu.tlb.data.small: 64
machdep.cpu.tlb.data.small_level1: 64
machdep.cpu.address_bits.physical: 39
machdep.cpu.address_bits.virtual: 48
machdep.cpu.tsc_ccc.numerator: 200
machdep.cpu.tsc_ccc.denominator: 2
machdep.cpu.max_basic: 22
machdep.cpu.max_ext:<PHONE_NUMBER>
machdep.cpu.vendor: GenuineIntel
machdep.cpu.brand_string: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
machdep.cpu.family: 6
machdep.cpu.model: 158
machdep.cpu.extmodel: 9
machdep.cpu.extfamily: 0
machdep.cpu.stepping: 13
machdep.cpu.feature_bits:<PHONE_NUMBER>971750911
machdep.cpu.leaf7_feature_bits: 43804591<PHONE_NUMBER>
machdep.cpu.leaf7_feature_bits_edx:<PHONE_NUMBER>
machdep.cpu.extfeature_bits:<PHONE_NUMBER>928
machdep.cpu.signature: 591597
machdep.cpu.brand: 0
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C
machdep.cpu.leaf7_features: RDWRFSGS TSC_THREAD_OFFSET SGX BMI1 AVX2 SMEP BMI2 ERMS INVPCID FPU_CSDS MPX RDSEED ADX SMAP CLFSOPT IPT SGXLC MDCLEAR IBRS STIBP L1DF ACAPMSR SSBD
machdep.cpu.extfeatures: SYSCALL XD 1GBPAGE EM64T LAHF LZCNT PREFETCHW RDTSCP TSCI
machdep.cpu.logical_per_package: 16
machdep.cpu.cores_per_package: 8
machdep.cpu.microcode_version: 240
machdep.cpu.processor_flag: 5
machdep.cpu.core_count: 8
machdep.cpu.thread_count: 16

Could someone who experiences this problem please run the reproduction with the environment variable XLA_FLAGS=--xla_dump_to=/tmp/somewhere and share a zip file or similar with the directory of files it produces?

My current best guess is that this may be related to the _Float16 ABI changing in LLVM.
This program in essence compiles into a single call to a builtin named __truncdfhf2. The only explanation I can think of is that there is a mismatch of calling conventions for Mac x86-64.
Notably this changed in LLVM recently: https://reviews.llvm.org/D131172

LLVM changed the x86-64 fp16 abi from passing the value in integer registers to passing it in floating point registers. This means that __truncdfhf2 that's coming from the system is now incompatible with LLVM in jaxlib.
If I remember correctly __truncdfhf2 is provided by the system on macOS, not XCode. This would mean we're stuck on the wrong ABI until Apple decides to change it. Which seems unlikely to happen outside of a major release. I'm curious what will happen when they hit this change when updating Clang in XCode though.
This isn't an issue for f32->f16 because there's been a hardware instruction for it since Haswell, but there's none for f64->f16 (it exists in AVX512, but no mac was released with it).
I think we can work around this by making simple_orc_jit bind __truncdfhf2 to the fallback version in runtime_fp16.cc, which I fixed to use the correct ABI. I have no Intel mac around to test that.


[W13-2] ClubManager

@A0143487X-Kevin
@minernchan
@joel0111
@melkwx

Close because account flagged as "abuse" and cannot be automatically checked


[15.3/sdk2] User can't update FSharp.Core/System.ValueTuple using the nuget GUI

this is the same root cause as https://github.com/Microsoft/visualfsharp/issues/3340, and I know how to fix it, but I believe this will cause a lot of grief for users that don't stalk this repository.

Start with the simplest sdk project:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="File1.fs" />
  </ItemGroup>

</Project>

Now open the nuget gui:
1) the versions shown to the user are wrong

I then select System.ValueTuple and click on update:

Looks good!
This is how the project file looks:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="File1.fs" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Update="System.ValueTuple" Version="4.4.0-preview2-25405-01" />
  </ItemGroup>

</Project>

After a project reload, the gui looks like this:

So,
2) Nuget update does not work, but the gui pretends it does until the next reload
Workaround:
Manually add  DisableImplicitFSharpCoreReference and DisableImplicitSystemValueTupleReference.
Fix:
remove implicit references to both assemblies from the SDK, add explicit references to the templates.

This should be reported to dotnet repos. It's not a vf# bug

Yes it is, because nuget obviously does not know about DisableImplicitFSharpCoreReference and DisableImplicitSystemValueTupleReference.

It's also general nuget issue of which thing has priority. User specified or whatever the sdk ships

Yes, but in this case I would discriminate between sdk and nuget. Nuget in this case adds the <PackageReference, which is correct, it is the SDK that ignores it.

I just want to call attention that this extra-sausage of the F#-sdk will cause issues with the rest of the tooling.
Different example:
Base project:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="File1.fs" />
  </ItemGroup>

</Project>

I googled how to update a package via the CLI and found https://ardalis.com/how-do-i-update-a-nuget-package-using-dotnet-cli
 dotnet add package System.ValueTuple -v 4.4.0-preview2-25405-01
  Writing C:\Users\lrieger\AppData\Local\Temp\tmpA84F.tmp
info : Adding PackageReference for package 'System.ValueTuple' into project 'Test.fsproj'.
log  : Restoring packages for Test.fsproj...
info :   CACHE https://api.nuget.org/v3-flatcontainer/fsharp.core/index.json
info : Package 'System.ValueTuple' is compatible with all the specified frameworks in project 'Test.fsproj'.
error: Error while performing Update for package 'System.ValueTuple'. Cannot edit items in imported files -
error:   Item 'PackageReference' for 'System.ValueTuple' in Imported file 'C:\Program Files\dotnet\sdk\2.1.0-preview1-006784\FSharp\Microsoft.FSharp.NetSdk.targets'.

Is this a nuget issue? Maybe. But it works with a C# project.

All true. Just wished someone would finally  report the general case to
nuget/dotnet. Ours are all special cases of the underlying problem
Am 21.07.2017 17:36 schrieb "Lukas Rieger"<EMAIL_ADDRESS>
I just want to call attention that this extra-sausage of the F#-sdk will
cause issues with the rest of the tooling.
Different example:
Base project:

net461

I googled how to update a package via the CLI and found
https://ardalis.com/how-do-i-update-a-nuget-package-using-dotnet-cli
dotnet add package System.ValueTuple -v 4.4.0-preview2-25405-01
Writing C:\Users\lrieger\AppData\Local\Temp\tmpA84F.tmp
info : Adding PackageReference for package 'System.ValueTuple' into project 'Test.fsproj'.
log  : Restoring packages for Test.fsproj...
info :   CACHE https://api.nuget.org/v3-flatcontainer/fsharp.core/index.json
info : Package 'System.ValueTuple' is compatible with all the specified frameworks in project 'Test.fsproj'.
error: Error while performing Update for package 'System.ValueTuple'. Cannot edit items in imported files -
error:   Item 'PackageReference' for 'System.ValueTuple' in Imported file 'C:\Program Files\dotnet\sdk\2.1.0-preview1-006784\FSharp\Microsoft.FSharp.NetSdk.targets'.
Is this a nuget issue? Maybe. But it works with a C# project.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/visualfsharp/issues/3361#issuecomment-317034194,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADgNE126Esxxl2tszt9OQbHbnmkWbreks5sQMWXgaJpZM4Ofi_g
.

@forki these two implicit references are imported here:
https://github.com/Microsoft/visualfsharp/blob/master/src/fsharp/FSharp.Build/Microsoft.FSharp.NetSdk.targets#L72
So this is (imo) plainly an issue with the F# sdk.

, the last one wins

Did you test that?

As far as I know the targets file get's imported at the end of the project:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="File1.fs" />
  </ItemGroup>

<!-- Microsoft.FSharp.NetSdk.targets is implicitly referenced here -->
</Project>

This is just by convention, props are imported at the top, targets at the end.

Ok if they get imported at the end then they always win. And user settings get overriden. I personally think this is a serious issue

Wait, let me test that again, maybe I'm talking bullshit. Nuget added <PackageReference Update, which is different to <PackageReference Include.

Now I'm totally confused, it does look like the first one wins:
    <PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
    <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />

==> V10

    <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.1" />

==> V9

Wait, the first one wins, and the sdk is imported last.
This file
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.ValueTuple" Version="4.4.0-preview1-25305-02" />
    <PackageReference Include="Newtonsoft.Json" Version="10.0.1" />-->
    <PackageReference Include="FSharp.Core" Version="<IP_ADDRESS>" />
  </ItemGroup>

</Project>

produces this nupkg:

So for some reason (and that the gui in visual studio shows something , which may be different from the truth probably does not help) I thought that you could not change the version of FSharp.Core without setting DisableImplicitFSharpCoreReference. I will test it again, but from the previous comment above I conclude that this is not true; if the user already imported any other FSharp.Core, then the include by the sdk is a no-op.
If that is correct, then everything is great again.

Apparently this happens with 4.5 as well: https://twitter.com/CarstenK_Dev/status/1009119383640268801?s=19

Not sure what the root cause is (sounds like it's not a VF# issue), but F# 4.5 and associated bits are not released in any form on the SDK yet (that's 2.1.400). We don't have a guarantee of forwards-compatibility, so I'm not entirely unsurprised that this doesn't work.


parseBody() returns no content found

Describe the bug
I'm trying to fetch mail from rediff mail box. Some emails are providing no content found exception
Code to Reproduce
$message->parseBody();
    $mailBodies = $message->getBodies();

    $mailBody = '';

    $isHtmlMail = false;

    if ($mailBodies) {
        $isHtmlMail = !empty($mailBodies['html']);
        $mailBody = ($isHtmlMail) ? $mailBodies['html'] : $mailBodies['text'];
    }

echo "no content found";

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

.
Desktop / Server (please complete the following information):

OS: Ubuntu 20.04 LTS
PHP: 7.3
Version [e.g. v2.3.1]
Provider Rediff

Hi @RafficMohammed ,
many thanks for your report. Please update to v5.1 and give it another try.
If you are currently using an older version below v5.0, please read the breaking changes leading up to v5.1 before upgrading.
Best regards,


Autorest Regen Preview to 3.0.0-alpha.20240229.5 by Dapeng Zhang from refs/pull/4306/merge

Triggered from https://github.com/Azure/autorest.csharp/pull/4306

API change check
API changes are not detected in this pull request.


VSCode is sometimes blurry on multiple displays as does not respect per-monitor DPI settings

VSCode Version: 1.12.2
OS Version: Windows Pro 10 x64 creators update (10.0.15603)

Steps to Reproduce:

Set up environment with two monitors - primary being 100% DPI scaling and second being higher DPI (i.e. 200%) - a sample setup is HiDPI laptop (such as all Surface devices) with external monitor, where external monitor is the primary display device
Log out and log in or restart OS to apply DPI settings completely
Run vscode move it to the secondary screen with >100% DPI settings

At this point vscode window is scaled up.
It is worth noting that if the primary screen has 200% DPI (i.e. if Surface built-in screen is the primary display, or was primary display at the time the user has logged in), then vscode is not blurry - but then it is downscaled when moving it to the primary monitor.
I believe this is because vscode windows are set to use PROCESS_SYSTEM_DPI_AWARE setting - which makes it use the DPI setting of the primary monitor, not the display it is currently at.
As vscode uses electron, which in turn uses webkit, it should be possible to use PROCESS_PER_MONITOR_DPI_AWARE setting - since chrome does support it properly for quite a while - chrome windows scale properly to each monitor's DPI settings.

I just realized this is probably a duplicate of #6196
I have also just downloaded electron 1.6.10 and that version seems to be using per-display DPI settings, so I am hoping that updating electron should resolve the problem.


cmd/compile: inefficient increment of global array

go version devel +a02d925 Sun Apr 12 12:14:36 2015 +0300 linux/amd64
Program is:
var tab *[256]byte

func foo(i int) {
    tab[i&255]++
}

Currently it is compiled to:
0000000000400c30 <main.foo>:
  400c30:       64 48 8b 0c 25 f8 ff    mov    %fs:0xfffffffffffffff8,%rcx
  400c37:       ff ff
  400c39:       48 3b 61 10             cmp    0x10(%rcx),%rsp
  400c3d:       77 07                   ja     400c46 <main.foo+0x16>
  400c3f:       e8 cc 24 04 00          callq  443110 <runtime.morestack_noctxt>
  400c44:       eb ea                   jmp    400c30 <main.foo>
  400c46:       48 8b 44 24 08          mov    0x8(%rsp),%rax
  400c4b:       48 8b 1d 36 a0 0a 00    mov    0xaa036(%rip),%rbx        # 4aac88 <main.tab>
  400c52:       48 25 ff 00 00 00       and    $0xff,%rax
  400c58:       48 83 fb 00             cmp    $0x0,%rbx
  400c5c:       74 41                   je     400c9f <main.foo+0x6f>
  400c5e:       48 3d 00 01 00 00       cmp    $0x100,%rax
  400c64:       73 32                   jae    400c98 <main.foo+0x68>
  400c66:       48 8d 1c 03             lea    (%rbx,%rax,1),%rbx
  400c6a:       0f b6 2b                movzbl (%rbx),%ebp
  400c6d:       48 8b 1d 14 a0 0a 00    mov    0xaa014(%rip),%rbx        # 4aac88 <main.tab>
  400c74:       48 83 fb 00             cmp    $0x0,%rbx
  400c78:       74 1a                   je     400c94 <main.foo+0x64>
  400c7a:       48 3d 00 01 00 00       cmp    $0x100,%rax
  400c80:       73 0b                   jae    400c8d <main.foo+0x5d>
  400c82:       48 8d 1c 03             lea    (%rbx,%rax,1),%rbx
  400c86:       48 ff c5                inc    %rbp
  400c89:       40 88 2b                mov    %bpl,(%rbx)
  400c8c:       c3                      retq
  400c8d:       e8 be a3 01 00          callq  41b050 <runtime.panicindex>
  400c92:       0f 0b                   ud2
  400c94:       89 03                   mov    %eax,(%rbx)
  400c96:       eb e2                   jmp    400c7a <main.foo+0x4a>
  400c98:       e8 b3 a3 01 00          callq  41b050 <runtime.panicindex>
  400c9d:       0f 0b                   ud2
  400c9f:       89 03                   mov    %eax,(%rbx)
  400ca1:       eb bb                   jmp    400c5e <main.foo+0x2e>

While it could be compiled to something along the lines of:
0000000000400c30 <main.foo>:
    mov 0x8(%rsp),%rax
    mov 0xaa036(%rip),%rbx        # 4aac88 <main.tab>
    add $1, (%rbx, %rax)
    ret

Here are several issues:

Address calculation, bounds check and nil check are done twice.
Nil check is not necessary here, as the increment itself will trigger paging fault if tab is nil.
Bounds check is not necessary as i&255 is guaranteed to be <256.

FTR, the full program is:
package main

func main() {
	foo(42)
}

var tab *[256]byte

func foo(i int) {
	tab[i&255]++
}

build with -l.

@rsc @dr2chase @davecheney @josharian @minux

For the reference, today foo compiles to this:
TEXT ·foo(SB), $0-8 // dv.go:9
        NO_LOCAL_POINTERS
        // FUNCDATA $0, gclocals·2a5305abe05176240e61b8620e19a815(SB) (args)
        // FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) (no locals)
        MOVQ       ·tab(SB), AX  // dv.go:10
        TESTB      AL, (AX)
        MOVQ       i+0(FP), CX
        MOVBLZX    CL, CX
        MOVBLZX    (AX)(CX*1), DX
        INCL       DX
        MOVB       DL, (AX)(CX*1)
        RET                       // dv.go:11

TESTB      AL, (AX) seems to be not needed, and probably also MOVQ       i+0(FP), CX and MOVBLZX    CL, CX could be combined into one MOVBLZX from stack (not sure here), but otherwise foo  looks to be much closer to optimal than it was in 2015.

I'm surprised that the nil check isn't eliminated. It should be. @cherrymui?
Combining the stack load and the zero extension is #15300.

I don't think we do any nil check removal on non-constant array indexing.  We could.

For the reference: with today's tip (go version devel +8aa316c139 Fri May 4 17:01:04 2018 +0000 linux/amd64) original program compiles to essentially the same as in https://github.com/golang/go/issues/10432#issuecomment-289227836:
TEXT ·foo(SB), NOSPLIT, $0-8 // dv.go:9
        NO_LOCAL_POINTERS
        // FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) (args)
        // FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB) (no locals)
        MOVQ       ·tab(SB), AX  // dv.go:10
        TESTB      AL, (AX)
        MOVQ       i+8(SP), CX    // dv.go:9
        MOVBLZX    CL, CX         // dv.go:10
        MOVBLZX    (AX)(CX*1), DX
        INCL       DX
        MOVB       DL, (AX)(CX*1)
        RET                       // dv.go:11

There is ongoing CL 91415 which teaches nilcheckelim to understand that offsets from non-nil pointers are also non-nil. However it currently works with only fixed offsets, not non-constant indexing.
/cc @mrosier-qdt

/cc @bmakam-qdt


Add support for incomplete types

The STL containers do not support incomplete types. This is particularly true for Immer containers, since a lot of optimizations for better cache locality rely on compile-time computation on the size of the held type. However, it would be nice to have a mode of operation for these containers in which locality is traded for the posibility of storing incomplete types, which are extremely useful when defining recursive data-structures.

Addressed by #40


Allow default values for fields

Is your feature request related to a problem? Please describe.
When you add a new field to a collection, you often want to set a default value for all objects that do not (yet) have the field in the database.
For example, you might want a bool to default to true, but Isar defaults it to false. You could make the field nullable and handle the null cases yourself, but that's messy.
Describe the solution you'd like
A new annotation could be introduced so that you can assign a default value to fields:
@Default(true)
final bool myBool;

Alternatively, the default values could also be taken from the constructors.
MyClass({this.myBool = true});

Since the default values are traded in Dart, the implementation would be relatively simple.

This is already implemented in the main branch :) going to be released in a few days.

@leisim Oh sorry, I didn't know that 😅


Reactions to nested Atoms

Hi,
I think I am missing something still, code sample:
public class ExperimentsWindow : Window
{
    class ViewModel
    {
        [Atom]
        public int IntValue { get; set; }
    }

    [Atom]
    ViewModel VM { get; set; }

    private void Start()
    {
        Initialize();

        VM = new ViewModel() { IntValue = 5 };

        // tried this too: Atom.Reaction(() => Debug.Log($"Int value {VM.IntValue}"));
        Atom.Reaction(() => VM.IntValue, i => Debug.Log($"Int value {i}"));

        VM.IntValue = 6;

        VM = new ViewModel() { IntValue = 7 };
    }
}

When running, I always only see values "5" or "7" printed but not "6". Is there a way to React to changes in multi-level Atoms?

The reactions are executed in two cases:

on creation;
on the next frame after any dependant atom changed.

In this sample, a value "5" is printed immediately when creating a reaction. Values "6" and "7" are set during one frame. They trigger a reaction, but the reaction itself is executed once on the next frame and use latest values (so "7" is printed).
The value "6" will be printed if the values are set in different frames, or if you force actualize a reaction.
private IEnumerator Start()
{
    VM = new ViewModel() {IntValue = 5};

    Atom.Reaction(() => Debug.Log($"Int value {VM.IntValue}"));

    VM.IntValue = 6;
    yield return null; // skip one frame

    VM = new ViewModel() {IntValue = 7};
}

private void Start()
{
    VM = new ViewModel() {IntValue = 5};

    var reaction = Atom.Reaction(() => Debug.Log($"Int value {VM.IntValue}"));

    VM.IntValue = 6;
    reaction.Activate(); // force actualize

    VM = new ViewModel() {IntValue = 7};
}

Ah, makes perfect sense now. The fact that Reaction is only triggered next frame with latest value could be leveraged as optimization I suppose then, no need to discard intermediate updates to the values as they will not force UI update anyways.
Question: could you clarify the difference between Reaction(Action reaction) and Reaction(AtomPull react, Action effect)? When to use which one?

Reaction(AtomPull react, Action effect) tracks atoms that used in react method, and won't track atoms in effect method.
For example, this reaction:
Atom.Reaction(() => {
   var val = myAtom;
   otherPlugin.Process(val);
});

will executed when myAtom value changed, but potentially otherPlugin can access other atoms in Process method, so reaction will track them too.
If you dont want this behaviour, you can use Reaction(AtomPull react, Action effect) overload to control which data should be tracked.
In this sample reaction wont track atoms used in Process method.
Atom.Reaction(
   () => myAtom,
   val => otherPlugin.Process(val)
);

Or you can use NoWatch
Atom.Reaction(() => {
   var val = myAtom;
   using (Atom.NoWatch) {
      otherPlugin.Process(val);
  }
});


web components?

porting over to web components would be relatively simple, and completely optional for the end user to use. is this in the plans?

I'd say no @marcus13345. You're asking for a complete project departure.

@benschwarz im not sure what you mean, all the items that photon provides could be wrapped with web components very easily and provide a new simpler way of implementing the components. as well, it would be fully backwards compatible, as you wouldn't even need to import the components. it would be an extension on what is already there. To clarify exactly what i mean, i've found a project on github that does something similar Bootstrap to Web Components
If however, this goes against future plans, i totally understand. I mean, a project cant fill every single market at once.


[CH] Improve aggregation with distinct

Description
We have met a lot of queries which have aggregations with distinct. For example
0: jdbc:hive2://localhost:10000> explain select n_regionkey, sum(n_nationkey), count(distinct n_name) from nation group by n_regionkey;
+----------------------------------------------------+
|                        plan                        |
+----------------------------------------------------+
| == Physical Plan ==
CHNativeColumnarToRow
+- ^(6) HashAggregateTransformer(keys=[n_regionkey#2L], functions=[sum(n_nationkey#0L), count(distinct n_name#1)], isStreamingAgg=false)
   +- ^(6) InputIteratorTransformer[n_regionkey#2L, sum#35L, count#38L]
      +- ColumnarExchange hashpartitioning(n_regionkey#2L, 5), ENSURE_REQUIREMENTS, [plan_id=313], [shuffle_writer_type=hash], [OUTPUT] ArrayBuffer(n_regionkey:LongType, sum:LongType, count:LongType)
         +- ^(5) HashAggregateTransformer(keys=[n_regionkey#2L], functions=[merge_sum(n_nationkey#0L), partial_count(distinct n_name#1)], isStreamingAgg=false)
            +- ^(5) HashAggregateTransformer(keys=[n_regionkey#2L, n_name#1], functions=[merge_sum(n_nationkey#0L)], isStreamingAgg=false)
               +- ^(5) InputIteratorTransformer[n_regionkey#2L, n_name#1, sum#35L]
                  +- ColumnarExchange hashpartitioning(n_regionkey#2L, n_name#1, 5), ENSURE_REQUIREMENTS, [plan_id=307], [shuffle_writer_type=hash], [OUTPUT] ArrayBuffer(n_regionkey:LongType, n_name:StringType, sum:LongType)
                     +- ^(4) HashAggregateTransformer(keys=[n_regionkey#2L, n_name#1], functions=[partial_sum(n_nationkey#0L)], isStreamingAgg=false)
                        +- ^(4) FileScanTransformer parquet tpch_pq.nation[n_nationkey#0L,n_name#1,n_regionkey#2L] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[file://...., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<n_nationkey:bigint,n_name:string,n_regionkey:bigint>

 |
+----------------------------------------------------+

There are two aggregation steps here, the 1st step is to make n_name unique.  If n_regionkey or n_name is high cardinality, the following two operations are expected to be high cost.
We cannot  use count_distinct to merge the two aggregations steps into one simply. There could be data skew which will cause OOM.

We analysis this case. It has strict requirement for the data. For example, n_regionkey should be low cardinality, and the size of count_distinct(n_name)  should not be too large.


Refactor flank-scripts TODO list

[Fill with items to be resolved in order to consider this issue as done]

Is this task is epic for refactor?

Is this task is epic for refactor?

Is this task is epic for refactor?

Correct

Is this task is epic for refactor?

Correct


Bottom Element of Accordion buggy?

I'm having an issue where the last element in my Accordion doesn't animate open, and also won't collapse when I press it again. Is this a common problem?

Can you reproduce a simple example here https://snack.expo.io/ ?

Closing this as inactive as there's been no activity for over 30 days. If the problem re-occurs on the latest version of react-native-collapsible then ping me to reopen or create a new issue.


Team Card icons not visible

Bug Report
Issue Summary
In team card icons of GitHub, LinkedIn and Twitter are not visible fix this bug 🐛  .

Expected Behavior

Steps

Check team.html :wink:.

Can i ?😄

Hey @sandy9808 go ahead 🎉


Replace binary constants with hexadecimal constants

I originally used binary constants throughout the code to help me reason about the standard, but binary and hex are used inconsistently throughout the constants. Hexadecimal is more concise, and at this point, I don't think we lose anything by dropping the binary format.

On a similar topic about removing constants, I think that the "note constants" like C = 0 should not be exported... I mean they take up really commonly used names and we could just have them in a documentation page instead of populating the namespace when using MIDI. In the end of the day, I don't think they are that crucial so that they have to be exported. Maybe it is better to just have them in a doc page.

I think you've got a point. My thinking about this library right now is that it should be kept low level and as close to the raw midi data as possible without making assumptions about its application. Writing a number to note name converter isn't hard, and any software depending on this will probably want to decorate the notes their own way.

Resolved by #69


Helm value enhancements

Summary

Compare values > compare with > Deployed value: show version along with app name in dropdown + selected state
Compare values > Ability to compare with default values also
Compare values > Show version for editable values.yaml

Testing Guideline [Optional]
Manual testing

Merged


File Color plugin appears broken in Ver 1.2.1

I have just updated Obsidian (or rather the auto-update did this for me) to version 1.2.1 and the File Color plugin is no longer working. None of my files are showing any colour (all files are just black) and if I go to apply a colour using the active plugin...nothing visibly happens.

I am also seeing this issue.

The latest stable release of Obsidian is v1.1.16, which means if you are running v1.2.1 you've opted in for the insider builds of Obsidian. I'm not planning on supporting insider builds as they are development builds and are by their nature prone to being buggy and incomplete. Once the build stabilizes and gets an official release, I will check to make sure that the plugin works as intended on the newest stable version.

Thanks for the info. Really appreciate the work on the plugin, cheers Simon
On Tue, 18 Apr 2023, 15:39 Emil Custic, @.***> wrote:

Closed #9 https://github.com/ecustic/obsidian-file-color/issues/9 as
completed.
—
Reply to this email directly, view it on GitHub
https://github.com/ecustic/obsidian-file-color/issues/9#event-9036749856,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGYYGLVSJDPRZXAR5CI7R5DXB2RQRANCNFSM6AAAAAAWWXVXZI
.
You are receiving this because you commented.Message ID:
@.***>


docs(bufferToggle): use non-deprecated syntax in example

Swapping empty() for non-deprecated EMPTY in the example.

Pull Request Test Coverage Report for Build 8081

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 96.805%

Totals

Change from base Build 8066:
0.0%

Covered Lines:
5242

Relevant Lines:
5415

💛  - Coveralls


Link failure for -lpami for Charm 6.5

Original issue: https://charm.cs.illinois.edu/redmine/issues/350

The reshuffling/renaming of the libpami library in the distribution on BG/Q means that you cannot build old (6.5) charm there without tinkering with conv-mach.sh to switch to -L$BGQ_INSTALL/comm/lib -lpami-gcc.
Its sort of an open question as to whether this matters at this point as this bug is easily solved by upgrading to 6.6.  Doing a bugfix release for 6.5 for this issue may not be a very good use of our time.

Original date: 2014-01-03 05:27:37

With 6.6 release being perennially delayed, I suggest back porting the conv-mach changes. Not much of a work. Any opinions? In absence, I will do the back porting.

Original date: 2014-09-03 03:22:32

No longer relevant, since we've actually done the 6.6 release.


Branching strategy for GH actions

Currently some workflows such as checkLicenses specify both branches as triggers:
https://github.com/GoogleContainerTools/kpt/blob/main/.github/workflows/checkLicenses.yml
https://github.com/GoogleContainerTools/kpt/blob/v0/.github/workflows/checkLicenses.yml
While others only specify the branch they're on:
https://github.com/GoogleContainerTools/kpt/blob/main/.github/workflows/go.yml
https://github.com/GoogleContainerTools/kpt/blob/v0/.github/workflows/go.yml
Yet others, don't specify any branch:
https://github.com/GoogleContainerTools/kpt/blob/main/.github/workflows/verifyContent.yml
Please audit the workflows for consistency following best-practices.

Related to https://github.com/GoogleContainerTools/kpt/issues/2051, needs to be audited as part of releasing from main branch.