[#60] integrate miri in ci with an allow list

Allow CI failures for now
Notes for Reviewer
I have integrated miri in github action while supporting a shell-style .miri_allowlist file for all sub-folders to run cargo miri test.
Pre-Review Checklist for the PR Author

[X] Add sensible notes for the reviewer
[X] PR title is short, expressive and meaningful
[X] Relevant issues are linked in the References section
[X] Every source code file has a copyright header with SPDX-License-Identifier: Apache-2.0 OR MIT
[X] Branch follows the naming format (iox2-123-introduce-posix-ipc-example)
[X] Commits messages are according to this guideline

[X] Commit messages have the issue ID ([#123] Add posix ipc example)
[X] Commit author matches Eclipse Contributor Agreement (and ECA is signed)

[X] Tests follow the best practice for testing
[X] Changelog updated in the unreleased section including API breaking changes
[x] Assign PR to reviewer
[X] All checks have passed (except task-list-completed)

Checklist for the PR Reviewer

[x] Commits are properly organized and messages are according to the guideline
[ ] Unit tests have been written for new behavior
[ ] Public API is documented
[x] PR title describes the changes

Post-review Checklist for the PR Author

[ ] All open points are addressed and tracked via issues

References

Relates #60

I don't have the permission to assign reviewers, @elfenpiff @elBoberido

@xieyuschen Your CI run is failing because of a flaky test on our side, it is fixed with #422 When this PR is merged you can rebase and this should fix the problem.

@xieyuschen Your CI run is failing because of a flaky test on our side, it is fixed with #422 When this PR is merged you can rebase and this should fix the problem.

sure, could I know is it possible to merge the MR #423 today?

I just checked the "green" Miri job, it isn't running any tests:
Run ./internal/scripts/ci_run_miri.sh
Run cargo miri test under: /home/runner/work/iceoryx2/iceoryx2/iceoryx2-bb/testing
    Updating crates.io index
     Locking 151 packages to latest compatible versions
      Adding bindgen v0.69.[4](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:5) (available: v0.70.1)
      Adding cbindgen v0.26.0 (available: v0.27.0)
      Adding human-panic v1.2.3 (available: v2.0.1)
      Adding windows-sys v0.48.0 (available: v0.[5](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:6)9.0)
   Compiling iceoryx2-pal-configuration v0.4.1 (/home/runner/work/iceoryx2/iceoryx2/iceoryx2-pal/configuration)
   Compiling iceoryx2-bb-testing v0.4.1 (/home/runner/work/iceoryx2/iceoryx2/iceoryx2-bb/testing)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.[6](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:7)5s
     Running unittests src/lib.rs (/home/runner/work/iceoryx2/iceoryx2/target/miri/x86_64-unknown-linux-gnu/debug/deps/iceoryx2_bb_testing-59d902fc[7](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:8)96b2132)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

   Doc-tests iceoryx2_bb_testing

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Is that intentional for this initial PR?

I just checked the "green" Miri job, it isn't running any tests:
Run ./internal/scripts/ci_run_miri.sh
Run cargo miri test under: /home/runner/work/iceoryx2/iceoryx2/iceoryx2-bb/testing
    Updating crates.io index
     Locking 151 packages to latest compatible versions
      Adding bindgen v0.69.[4](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:5) (available: v0.70.1)
      Adding cbindgen v0.26.0 (available: v0.27.0)
      Adding human-panic v1.2.3 (available: v2.0.1)
      Adding windows-sys v0.48.0 (available: v0.[5](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:6)9.0)
   Compiling iceoryx2-pal-configuration v0.4.1 (/home/runner/work/iceoryx2/iceoryx2/iceoryx2-pal/configuration)
   Compiling iceoryx2-bb-testing v0.4.1 (/home/runner/work/iceoryx2/iceoryx2/iceoryx2-bb/testing)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 0.[6](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:7)5s
     Running unittests src/lib.rs (/home/runner/work/iceoryx2/iceoryx2/target/miri/x86_64-unknown-linux-gnu/debug/deps/iceoryx2_bb_testing-59d902fc[7](https://github.com/eclipse-iceoryx/iceoryx2/actions/runs/11124175590/job/30915883586?pr=421#step:4:8)96b2132)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

   Doc-tests iceoryx2_bb_testing

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Is that intentional for this initial PR?

Is that intentional for this initial PR?

I think so, the miri output looks confusing. Here I have some examples to show you:

mkdir demo && cd $_ && cargo init && cargo miri test: the same output(test result: ok. 0 passed; ...)
Running miri under a cargo init project without any error should be the expected behavior.

cd iceoryx2-bb/testing && cargo miri test: the same output

cd iceoryx2-bb/log && cargo miri test: you will see some errors.

I think so, the miri output looks confusing. Here I have some examples to show you:

mkdir demo && cd $_ && cargo init && cargo miri test: the same output(test result: ok. 0 passed; ...)
Running miri under a cargo init project without any error should be the expected behavior.
cd iceoryx2-bb/testing && cargo miri test: the same output
cd iceoryx2-bb/memory && cargo miri test: you will see some errors.

@xieyuschen
From cargo miri --help:
Runs binary crates and tests in Miri

Usage:
    cargo miri [subcommand] [<cargo options>...] [--] [<program/test suite options>...]

Subcommands:
    run, r                   Run binaries
    test, t                  Run tests
    nextest                  Run tests with nextest (requires cargo-nextest installed)
    setup                    Only perform automatic setup, but without asking questions (for getting a proper libstd)
    clean                    Clean the Miri cache & target directory

So the command cargo miri test, as in your script, runs Miri for the tests defined in the crate. Perhaps misleading, but iceoryx2-bb/testing does not define any tests - this crate includes helpers for testing.
The crate iceoryx2-bb/memory does define tests, hence the output showing errors (we haven't spent any time looking into Miri violations yet).
Fixing all Miri findings in the project will be an arduous task. I think it's OK to limit the scope of this PR to setting up the infrastructure for running Miri in CI.
However, it has occurred to me that running Miri on all crates defined in the 'allow list' might not be the best approach. It would make the check take longer than needed if unrelated crates are checked in every PR.
Limiting the check to the crates added or modified in the PR seems a better approach. So the check would run if crateOnAllowList && crateAddedOrModified.
The allow list would still be necessary so that we are not blocked from adding new features while the work to address Miri violations for every crate is not yet done.
So how to move forward? My proposal is as follows, feel free to share your perspective:

Select one crate to fix Miri warnings for (see if there is a crate with an "easy" violation to fix, probably something in iceoryx2-bb)
Add it to the allow list, but verify the CI check does not yet run Miri on it (since you have not yet modified it)
Fix the violation(s) so that the Miri test passes locally
Push the fix and verify the check is run for the crate you have fixed, now that the crate is on the allow list AND you have modified it

This would give us a good foundation for:

Incrementally fixing Miri violations throughout the repository
Ensuring violations that are fixed are not broken when the corresponding crates are modified in the future

@elfenpiff @elBoberido Thoughts?

Limiting the check to the crates added or modified in the PR seems a better approach

This approach sounds nice, but I think it has a shortage: The new PR should focus on its own goal, but involving miri fix requires the reviewers take more times to review the changes. If the miri error fixes are put in a separated PR, the PR is short and easy-to-win.
This workflow might be better:

have short time which is not enough for big change
run cargo miri test to find some errors
fix it and create an easy-to-win PR, add it in the allowlist

It's more fluent for developers to add features. The problem here is that if you never start the step1, it's hard to fix miri errors incrementally.

Limiting the check to the crates added or modified in the PR seems a better approach

This approach sounds nice, but I think it has a shortage: The new PR should focus on its own goal, but involving miri fix requires the reviewers take more times to review the changes. If the miri error fixes are put in a separated PR, the PR is short and easy-to-win.
This workflow might be better:

have short time which is not enough for big change
run cargo miri test to find some errors
fix it and create an easy-to-win PR, add it in the allowlist

It's more fluent for developers to add features. The problem here is that if you never start the step1, it's hard to fix miri errors incrementally.

Fine to skip the fixing a Miri violation in this PR - I had suggested it as a mechanism to verify the job behaviour before and changes to a crate we pushed. Could be done in a follow-up with the first fix, though.
I would still suggest to tweak the job so that it runs on crates changed in the given PR.
You could do this by checking if the changed-files have a path prefix matching an entry in the .miri_allowlist (other ideas welcome). In the absence of an actual change in a crate, you can use logs to verify the logic is functioning as expected.

@orecham done, can see his testPR](https://github.com/xieyuschen/iceoryx2/pull/3) for ref.

code change that hit the allow list
code change that doesn't hit the allow list

@orecham done, can see his testPR](xieyuschen#3) for ref.

code change that hit the allow list
code change that doesn't hit the allow list

Amazing ! Thanks for the contribution :)


Weird escape code when using tagbar integration

I get this weird escape sequence at the end of the window when I open a file.

This seems to happen only if I have tagbar integration enabled. I discovered this after trying disabling several plugins until I found the problematic combination.
Then I tried disabling the tagbar integration using:
let g:airline#extensions#tagbar#enabled = 0

and the issue seems to have gone.
Any idea why this could happen?

Seems like same problem as #716

back to basics...what happens for you with just this?
set statusline=%{tagbar#currenttag('%s','')}

is it reproducing in gvim/mvim, or another terminal?

I seem to be having the same problem, but I don't think it's related to tagbar because I don't have it installed.

Mac OS X 10.11, Terminal.app
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2 2014 19:39:34)

Everything else works fine as far as I can tell.

I think this is a vim bug which has been fixed in the past. Closing.


Process URLs from sitemap in chunks

Is there a way to process the URLs from sitemap in chunks of 500 URLs? With a large sitemap and a lot of HTML to extract, the script runs out of memory.
I was expecting that runAndTraverse() would store the results after fetching each URL, but the script runs and writes all the results after fetching all URLs.
$crawler->setStore(new MyStore());

$crawler->input('https://www.example.com/sitemap.xml')
    ->addStep(Http::get())
    ->addStep(Sitemap::getUrlsFromSitemap())
    ->addStep(Http::get())
    ->addStep(
        [...]
    );

$crawler->runAndTraverse();

The library actually uses Generators to work as memory efficient as possible and it passes each response on to the following steps, before loading the next page. A little problem is, that at the end, it has to wait for all outputs, that are children of one and the same previous output, to be processed completely before storing the result. That's because all those child outputs can contribute to the same single parent result object.
If you picture the whole data flow like a tree visualized on the bottom of this page, we can simplify this a bit more:

When one output at the top releases a lot of child outputs (like branches) that are processed further and add a lot of data to the single parent result, memory usage grows.

Could you maybe share your actual crawler code with me? Maybe I can help you more specifically then. You can also share it privately if you want.

Thank you for visualizing.
And shure, I can share the code (not refactored, learning / work in progress).
Here is the script I run.

To fix the memory issues I tried several ways of increasing the memory limit. But that is not the solution, even with 5G I suspect the script would eventually run out of memory.
Just extracting title, author and keywords works fine. But extracting the article HTML which can be quite large chunks of HTML is causing the memory issues.

<?php

ini_set('memory_limit', '5G');

require_once 'vendor/autoload.php';
require_once 'MyCrawler.php';
require_once 'MyStore.php';

use Crwlr\Crawler\Crawler;
use Crwlr\Crawler\Steps\Dom;
use Crwlr\Crawler\Steps\Html;
use Crwlr\Crawler\Steps\Loading\Http;
use Crwlr\Crawler\Steps\Sitemap;

MyCrawler::setMemoryLimit('5G');

$crawler = new MyCrawler();

$crawler->monitorMemoryUsage();

// TODO: Find a better place for dbConfig
$dbConfig = [
    'host' => 'H',
    'dbname' => 'N',
    'user' => 'U',
    'password' => 'P'
];

$crawler->setStore(new MyStore($dbConfig));

$crawler->input('https://www.example.com/sitemap.xml')
    ->addStep(Http::get())
    ->addStep(Sitemap::getUrlsFromSitemap())
    ->addStep(Http::get())
    ->addStep(
        Crawler::group()
            ->addStep(
              Html::root()
                    ->extract([
                        'title' => 'h1.title',
                        'article' => Dom::cssSelector('.article')->html(),
                    ])
            )
            ->addToResult()
            ->addStep(
              Html::metaData()
                  ->only(['keywords', 'author'])
            )
            ->addToResult()
    );

$crawler->runAndTraverse();

This is how MyStore looks like:

To monitor my progress I am creating a unique table name for each crawler run.

<?php

use Crwlr\Crawler\Result;
use Crwlr\Crawler\Stores\Store;

class MyStore extends Store
{
    protected $pdo;
    protected string $tableName;
    protected $dbConfig;

    public function __construct(array $dbConfig)
    {
        $this->dbConfig = $dbConfig;
        $this->tableName = $this->generateTableName();
        $this->createTable();
    }

    protected function connect(): void
    {
        if ($this->pdo === null) {
            $this->pdo = new PDO(
                'mysql:host=' . $this->dbConfig['host'] . ';dbname=' . $this->dbConfig['dbname'],
                $this->dbConfig['user'],
                $this->dbConfig['password'],
                [
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                ]
            );
        }
    }

    protected function disconnect(): void
    {
        $this->pdo = null;
    }

    protected function generateTableName(): string
    {
        // Create a unique table name for every crawler run
        return 'articles_' . date("Ymd_His");
    }

    protected function createTable(): void
    {
        $this->connect();

        $query = "CREATE TABLE IF NOT EXISTS {$this->tableName} (
              id        int NOT NULL AUTO_INCREMENT,
              title     varchar(256) NOT NULL DEFAULT '',
              author    varchar(64) NOT NULL DEFAULT '',
              keywords  varchar(128) NOT NULL DEFAULT '',
              article   varchar(1024) NOT NULL DEFAULT '',
              PRIMARY KEY(id)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
        ";

        $this->pdo->exec($query);

        $this->disconnect();
    }

    public function store(Result $result): void
    {
      $this->connect();

      $query = "INSERT INTO {$this->tableName} (
                  title,
                  author,
                  keywords,
                  article
                ) VALUES (
                  :title,
                  :author,
                  :keywords,
                  :article
          )";

      // Prepare a statement for execution
      $statement = $this->pdo->prepare($query);
      $statement->bindValue(':title', $result->get('title'));
      $statement->bindValue(':author', $result->get('author'));
      $statement->bindValue(':keywords', $result->get('keywords'));
      $statement->bindValue(':article', $result->get('article'));

      $statement->execute();

      $this->disconnect();

      gc_collect_cycles();
    }
}

MyCrawler looks like this:
<?php

require_once 'vendor/autoload.php';

use Crwlr\Crawler\Cache\FileCache;
use Crwlr\Crawler\HttpCrawler;
use Crwlr\Crawler\UserAgents\UserAgentInterface;
use Crwlr\Crawler\UserAgents\UserAgent;
use Crwlr\Crawler\Loader\Http\HttpLoader;
use Crwlr\Crawler\Loader\LoaderInterface;
use Crwlr\Utils\Microseconds;
use Psr\Log\LoggerInterface;

class MyCrawler extends HttpCrawler
{
    public function loader(UserAgentInterface $userAgent, LoggerInterface $logger): LoaderInterface
    {
        $loader = new HttpLoader($userAgent, logger: $logger);

        $cache = new FileCache(__DIR__ . '/filecache');
        $cache->ttl(43200);

        $loader
            ->setCache($cache)
            ->retryCachedErrorResponses();

        $loader->throttle()
            ->waitBetween(
                Microseconds::fromSeconds(0.1),
                Microseconds::fromSeconds(0.2)
            );

        return $loader;
    }

    protected function userAgent(): UserAgentInterface
    {
        return new UserAgent(
            'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:99.0) Gecko/20100101 Firefox/99.0'
        );
    }
}

OK, I just ran this Crawler on a news site sitemap containing about 740 articles. The memory usage started at around 6MB and went up to 9MB at the end. I can confirm that the store is never called until the end and in the case of this crawler I would have guessed it should already be called whilest running. I'll investigate this, but I'll probably not find the time to do it this week.
Until then: So, this means the site you're crawling must really be quite huge? Like hundreds of thousands of pages? Or is there maybe an issue with changing the memory limit in your environment? Sometimes PHP doesn't allow you to change the memory limit programmatically. Have you checked if setting the limit actually worked? Like:
Crawler::setMemoryLimit('5G');

var_dump('Actual memory limit is: ' . Crawler::getMemoryLimit());

Thank you for the support!
The var_dump returns "Actual memory limit is: 5G".
Running the crawler, the script starts at memory usage: 1578144 and is Killed after round about 2200 URLs at memory usage: 548062280. In that case MyStore creates the db table but fails to write any entries.
Pulling the Documents from the fileCache the crawler runs superfast and writes the entries to the db in about a minute using ->maxOutputs(2250)) like this (but is killed somewhere between 2250 and 2500 URLs):
$crawler->input('https://www.example.com/sitemap.xml')
    ->addStep(Http::get()) // Load the sitemap
    ->addStep(Sitemap::getUrlsFromSitemap())
    ->addStep(Http::get()->maxOutputs(2250))
    ->addStep(
        Crawler::group()
    );

So its not a massive set of URLs. The HTML however sometimes contains some svg and base64 encoded images.

🤔 but the current memory usage comes from PHP's memory_get_usage and it returns the value in bytes. If I'm not wrong 548062280 is just a little above 500 MB. Does it really fail because it runs out of memory?

Good question.
Running the script without 'article' => Dom::cssSelector('.article')->html(), works fine. And it (only) gets killed at varying URLs with WITH 'article' => Dom::cssSelector('.article')->html(), in the result set at roughly the same memory_usage no matter if the result is used for storage or not.
Is there a way to debug why exactly the script is killed.
However I was expecting that the database gets filled while running the crawler, not at the end of the run.

Depends on your setup. Are you just running a simple .php file from the command line like php my-crawler.php? If yes, doesn't it print any error message when it dies? If not, you can try to set an error handler or register a shutdown function.
As mentioned I'll investigate why the store isn't called earlier, but I won't have time for this before next week.

It seems runAndTraverse() works as expected if inputs() is used ($crawler->inputs($urls)) passing an array of URLs from the sitemap, while using the input() approach in combination with Sitemap::getUrlsFromSitemap() (as in the code I shared above) the results are written at the very end of running the crawler.

So, I now found the time to investigate and fix this. I just tagged v1.6.0 containing a fix for your issue. With 1.6 your crawler should call the store early, no matter if you're using $crawler->inputs() with an array of URLS from the sitemap, or $crawler->input()  with the sitemap URL and Sitemap::getUrlsFromSitemap() as first step.
Thanks for the report.


Handle role group associations into control plane

Description
The current changes removes the need to walk thru all the channels to understand what role are connected and in which way, and instead is getting this informations directly from the role itself which has the explicit group association defined.
Type of Change

[ ] Bug Fix
[x] New Feature
[ ] Breaking Change
[x] Refactor
[ ] Documentation
[ ] Other (please describe)

Checklist

[ ] I have read the contributing guidelines
[ ] Existing issues have been referenced (where applicable)
[ ] I have verified this change is not present in other open pull requests
[ ] Functionality is documented
[ ] All code style checks pass
[ ] New code contribution is covered by automated tests
[ ] All new and existing tests pass

Codecov Report

Merging #366 (0478f7a) into main (3f08b7f) will decrease coverage by 1.97%.
The diff coverage is 36.62%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #366      +/-   ##
==========================================
- Coverage   14.39%   12.43%   -1.97%
==========================================
  Files          48       48
  Lines        2771     2759      -12
==========================================
- Hits          399      343      -56
- Misses       2354     2386      +32
- Partials       18       30      +12

Impacted Files
Coverage Δ

cmd/controller/app/database/mongodb/service.go
0.00% <0.00%> (ø)

cmd/controller/app/job/builder.go
46.10% <37.05%> (-16.04%)
:arrow_down:

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


App crash with error "index=4 count=3" using LayoutAnimation.easeInEaseOut() on Android

Is this a bug report?
Yes
Have you read the Contributing Guidelines?
Yes
Environment
This bug has been there for several months and is still there with<EMAIL_ADDRESS>Environment:
OS: Windows 10
Node: 8.9.1
Yarn: 1.3.2
npm: 5.6.0
Watchman: Not Found
Xcode: N/A
Android Studio: Version  <IP_ADDRESS> AI-171.4443003
Packages: (wanted => installed)
react: ^16.2.0 => 16.2.0
react-native: 0.51.0 => 0.51.0
Steps to Reproduce
On Android, updating a specific (but very simple) component tree after calling LayoutAnimation.easeInEaseOut() leads to an error.
Here is a repro : https://snack.expo.io/H1H0AbDZM
Just click 2 times on the top text component to see the app crash.
Expected Behavior
No app crash.
Actual Behavior
Component are not correctly rendered after first click (some are missing).
App crash after second click.:
index=4 count=3
addInArray
    ViewGroup.java:3971
addViewInner
    ViewGroup.java:3902
addView
    ViewGroup.java:3733
addView
    ViewGroup.java:3678
addView
    ViewGroupManager.java:47
manageChildren
    NativeViewHierarchyManager.java:401
execute
    UIViewOperationQueue.java:180
run
    UIViewOperationQueue.java:819
flushPendingBatches
    UIViewOperationQueue.java:926
access$2100
    UIViewOperationQueue.java:47
doFrameGuarded
    UIViewOperationQueue.java:986
doFrame
    GuardedFrameCallback.java:31
doFrame
    ReactChoreographer.java:136
doFrame
    ChoreographerCompat.java:107
run
    Choreographer.java:765
doCallbacks
    Choreographer.java:580
doFrame
    Choreographer.java:549
run
    Choreographer.java:753
handleCallback
    Handler.java:739
dispatchMessage
    Handler.java:95
loop
    Looper.java:135
main
    ActivityThread.java:5221
invoke
    Method.java
invoke
    Method.java:372
run
    ZygoteInit.java:899
main
    ZygoteInit.java:694

Reproducible Demo
Cf Steps to Reproduce

Hey !

#15698

@react-native-bot hello I am still face this exception com.facebook.react.uimanager.IllegalViewOperationException: ViewManager for tag 10 could not be found  did this also solved in v0.53.0

I am having the same issue.

I am having the same issue.

I have the same issue as well w/ v0.53.0

Same. with RN 0.55.2

Same issue here. Real bummer that I have to disable most uses of LayoutAnimation for android

Android crashes on Flatlist with LayoutAnimation. Please note this in the docs as warning until this index handling is fixed


add new hooks category

Nice
see #393

Good initiative @Moshe-Immerman.
However, before we merge pending PRs, we should all agree on (sub)categories. Then we can refactor, otherwise it's getting messy.


Rancher single container v2.4.3 crashes, etcd high presure, abnormal resources usage

What kind of request is this (question/bug/enhancement/feature request):
bug
Steps to reproduce (least amount of steps as possible):
not reproduced on others installations
Result:
Rancher server is deployed as single docker container on VM. And about 10 clusters are provisioned by it. This installation worked more than a year like a charm.
Now  ETCD grows up to it's limit size (2GB) very fast. Usually in 5-10 minutes. Disabling all global rancher catalogs increases lifetime to 90 minutes.  Then typically we get next events:
 Failed to update lock: etcdserver: mvcc: database space exceeded
...
[FATAL] k3s exited with: exit status 255
Then etcd goes in status 503.

2021/02/22 21:58:12 [INFO] Rancher version v2.4.3 (684884c00) is starting
2021/02/22 21:58:12 [INFO] Rancher arguments {ACMEDomains:[] AddLocal:auto Embedded:false HTTPListenPort:80 HTTPSListenPort:443 K8sMode:auto Debug:false Trace:false NoCACerts:false AuditLogPath:/var/log/auditlog/rancher-api-audit.log AuditLogMaxage:10 AuditLogMaxsize:100 AuditLogMaxbackup:10 AuditLevel:0 Features:}
2021/02/22 21:58:12 [INFO] Listening on /tmp/log.sock
2021/02/22 21:58:12 [INFO] Running etcd --data-dir=management-state/etcd
2021-02-22 21:58:12.684413 W | pkg/flags: unrecognized environment variable ETCD_URL_arm64=https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-arm64.tar.gz
2021-02-22 21:58:12.684468 W | pkg/flags: unrecognized environment variable ETCD_URL_amd64=https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz
2021-02-22 21:58:12.684475 W | pkg/flags: unrecognized environment variable ETCD_UNSUPPORTED_ARCH=amd64
2021-02-22 21:58:12.684481 W | pkg/flags: unrecognized environment variable ETCD_URL=ETCD_URL_amd64
[WARNING] Deprecated '--logger=capnslog' flag is set; use '--logger=zap' flag instead
2021-02-22 21:58:12.684522 I | etcdmain: etcd Version: 3.4.3
2021-02-22 21:58:12.684528 I | etcdmain: Git SHA: 3cf2f69b5
2021-02-22 21:58:12.684533 I | etcdmain: Go Version: go1.12.12
2021-02-22 21:58:12.684537 I | etcdmain: Go OS/Arch: linux/amd64
2021-02-22 21:58:12.684543 I | etcdmain: setting maximum number of CPUs to 4, total number of available CPUs is 4
2021-02-22 21:58:12.685435 N | etcdmain: the server is already initialized as member before, starting as etcd member...
[WARNING] Deprecated '--logger=capnslog' flag is set; use '--logger=zap' flag instead
2021-02-22 21:58:12.686546 I | embed: name = default
2021-02-22 21:58:12.686557 I | embed: data dir = management-state/etcd
2021-02-22 21:58:12.686563 I | embed: member dir = management-state/etcd/member
2021-02-22 21:58:12.686568 I | embed: heartbeat = 100ms
2021-02-22 21:58:12.686573 I | embed: election = 1000ms
2021-02-22 21:58:12.686577 I | embed: snapshot count = 100000
2021-02-22 21:58:12.686607 I | embed: advertise client URLs = http://localhost:2379
2021-02-22 21:58:12.686615 I | embed: initial advertise peer URLs = http://localhost:2380
2021-02-22 21:58:12.686623 I | embed: initial cluster =
2021-02-22 21:58:17.591266 I | etcdserver: recovered store from snapshot at index 151601521
2021-02-22 21:58:17.591889 I | mvcc: restore compact to 141084727
2021-02-22 21:58:30.426365 I | etcdserver: restarting member 8e9e05c52164694d in cluster cdf818194e3a8c32 at commit index 151624191
raft2021/02/22 21:58:30 INFO: 8e9e05c52164694d switched to configuration voters=(10276657743932975437)
raft2021/02/22 21:58:30 INFO: 8e9e05c52164694d became follower at term 105
raft2021/02/22 21:58:30 INFO: newRaft 8e9e05c52164694d [peers: [8e9e05c52164694d], term: 105, commit: 151624191, applied: 151601521, lastindex: 151624191, lastterm: 105]
2021-02-22 21:58:30.427357 I | etcdserver/api: enabled capabilities for version 3.4
2021-02-22 21:58:30.427380 I | etcdserver/membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32 from store
2021-02-22 21:58:30.427392 I | etcdserver/membership: set the cluster version to 3.4 from store
2021-02-22 21:58:30.429911 I | mvcc: restore compact to 141084727
2021-02-22 21:58:32.727553 W | auth: simple token is not cryptographically signed
2021-02-22 21:58:32.728682 I | etcdserver: starting server... [version: 3.4.3, cluster version: 3.4]
2021-02-22 21:58:32.732768 I | etcdserver: 8e9e05c52164694d as single-node; fast-forwarding 9 ticks (election ticks 10)
2021-02-22 21:58:32.734632 I | embed: listening for peers on <IP_ADDRESS>:2380
raft2021/02/22 21:58:33 INFO: 8e9e05c52164694d is starting a new election at term 105
raft2021/02/22 21:58:33 INFO: 8e9e05c52164694d became candidate at term 106
raft2021/02/22 21:58:33 INFO: 8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 106
raft2021/02/22 21:58:33 INFO: 8e9e05c52164694d became leader at term 106
raft2021/02/22 21:58:33 INFO: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 106
2021-02-22 21:58:35.281643 I | etcdserver: published {Name:default ClientURLs:[http://localhost:2379]} to cluster cdf818194e3a8c32
2021-02-22 21:58:35.281695 I | embed: ready to serve client requests
2021-02-22 21:58:35.284891 N | embed: serving insecure client requests on <IP_ADDRESS>:2379, this is strongly discouraged!
2021/02/22 21:58:36 [INFO] Waiting on etcd startup: status 503
2021/02/22 21:58:37 [INFO] Waiting on etcd startup: status 503
2021/02/22 21:58:38 [INFO] Waiting on etcd startup: status 503

Manual compaction and defrag solves it but only for next hour. The investigation on our side didn't find any reasons (no infrastructure changes, no unusual deployments or configs)
Increasing CPU from 4 to 8 cores and memory from 8 to 30 GiB didn't resolve situation.
As I see, here is very strange resource usage by k3s-server and etcd (8cores/20GiB ram config):
top - 21:32:18 up  4:32,  0 users,  load average: 6.79, 7.55, 7.54
Tasks:  14 total,   3 running,  11 sleeping,   0 stopped,   0 zombie
%Cpu(s): 73.5 us,  4.9 sy,  0.0 ni, 20.5 id,  0.3 wa,  0.0 hi,  0.8 si,  0.0 st
KiB Mem : 20394472 total,   192464 free, 17079932 used,  3122076 buff/cache
KiB Swap:  4194300 total,  4057876 free,   136424 used.  2999232 avail Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
   33 root      20   0 2967584 2.541g  33772 S 208.0 13.1 100:32.98 k3s-server
    6 root      20   0 2134940 1.826g  30044 S 106.3  9.4  65:49.35 rancher
   19 root      20   0 21.553g 0.013t 1.719g S   7.0 67.8   5:26.61 etcd

Also, the count of wal files is unusual. Normally there only 6 files, but now almost 80. And period between files is only 20s.
Contrarily, snapshots. Only five 43KB files.
I also found in rancher container logs that some errors are repeating pretty often. But not sure that it means something

2021/02/22 21:56:05 [ERROR] ProjectCatalogController p-7j892/rabbitmq [projectCatalog] failed with : Error in HTTP GET to [https://charts.bitnami.com/bitnami/index.yaml], error: Get https://charts.bitnami.com/bitnami/index.yaml: read tcp <IP_ADDRESS>:46022-><IP_ADDRESS>:443: read: connection reset by peer
2021/02/22 21:56:06 [ERROR] ProjectCatalogController p-7j892/bitnami [projectCatalog] failed with : Error in HTTP GET to [https://charts.bitnami.com/bitnami/index.yaml], error: Get https://charts.bitnami.com/bitnami/index.yaml: read tcp <IP_ADDRESS>:53384-><IP_ADDRESS>:443: read: connection reset by peer
I0222 21:56:06.319972      31 trace.go:116] Trace[721129815]: "Update" url:/apis/management.cattle.io/v3/namespaces/c-5gng7/clustercatalogs/bitnami,user-agent:Go-http-client/1.1,client:<IP_ADDRESS> (started: 2021-02-22 21:56:05.78230486 +0000 UTC m=+278.971107550) (total time: 537.622333ms):
Trace[721129815]: [303.324208ms] [230.185928ms] Object stored in database
Trace[721129815]: [537.622333ms] [234.298125ms] END
2021/02/22 21:56:06 [ERROR] ProjectCatalogController p-h9kq9/bitnami [projectCatalog] failed with : Error in HTTP GET to [https://charts.bitnami.com/bitnami/index.yaml], error: Get https://charts.bitnami.com/bitnami/index.yaml: read tcp <IP_ADDRESS>:49270-><IP_ADDRESS>:443: read: connection reset by peer
2021/02/22 21:56:06 [ERROR] ClusterCatalogController c-5gng7/bitnami [clusterCatalog] failed with : Error in HTTP GET to [https://charts.bitnami.com/bitnami/index.yaml], error: Get https://charts.bitnami.com/bitnami/index.yaml: read tcp <IP_ADDRESS>:60438-><IP_ADDRESS>:443: read: connection reset by peer
2021/02/22 21:56:06 [ERROR] ProjectCatalogController p-7j892/rabbitmq [projectCatalog] failed with : Error in HTTP GET to [https://charts.bitnami.com/bitnami/index.yaml], error: Get https://charts.bitnami.com/bitnami/index.yaml: read tcp <IP_ADDRESS>:46038-><IP_ADDRESS>:443: read: connection reset by peer
2021/02/22 21:56:07 [ERROR] ProjectCatalogController p-h9kq9/bitnami [projectCatalog] failed with : Error in HTTP GET to [https://charts.bitnami.com/bitnami/index.yaml], error: Get https://charts.bitnami.com/bitnami/index.yaml: read tcp <IP_ADDRESS>:53400-><IP_ADDRESS>:443: read: connection reset by peer
2021/02/22 21:56:07 [ERROR] ClusterCatalogController c-5gng7/bitnami [clusterCatalog] failed with : Error in HTTP GET to [https://charts.bitnami.com/bitnami/index.yaml], error: Get https://charts.bitnami.com/bitnami/index.yaml: read tcp <IP_ADDRESS>:60454-><IP_ADDRESS>:443: read: connection reset by peer

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI):
2.4.3 (but also tested with 2.4.13 and 2.4.2)
Installation option (single install/HA):
Rancher single docker container

Cluster information

Cluster type (Hosted/Infrastructure Provider/Custom/Imported):
N/A

Machine type (cloud/VM/metal) and specifications (CPU/memory):
On-premise VMware ESXi cluster, Virtual machine, 2.6 GHz, 4 cores, 8 GiB RAM, NVMe array storage

Docker version (use docker version):

Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        2d0083d
 Built:             Thu Jun 27 17:56:06 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       2d0083d
  Built:            Thu Jun 27 17:26:28 2019
  OS/Arch:          linux/amd64
  Experimental:     false

We found the cause of multiple errors of CatalogController. Some edge firewall rules were updated by Cisco subscription. It blocked all responses from bitnami.com. By the way every restart of Rancher conatainer  enables  helm3-library and git.rancher.io/charts. This really boosts cpu and memory usage (8 cores /20GiB). Disabling built-in catalogs solves problem.

So, after 5 hours etcd returned to normal condition. WAL-files' count is reduced to 6. Swap is released.
We have consistently enabled helm3 and rancher catalogs and it haven't affected performance or etcd size. For now, it looks stable.


Add Widget that recreates Scaffold's layout properties at the screen-level OR add built-in communication to update a Scaffold's layout properties

Use case
The Scaffold widget's documentation clearly states that it is intended to be used as a top-level container for MaterialApp. As such, the Flutter team recommends updating the single Scaffold widget when changes are needed for the AppBar, BottomNavigation, FloatingActionButton, and BottomSheet. Right away this involves implementing a communication mechanism to be 'called' every-time a new screen is navigated to. I understand why having a single Scaffold makes sense as far as calls to
showSnackBar(),
showBottomSheet(),

etc. However I feel like most developers end up using a Stack or some other layout widget when implementing screen-level FABs, AppBars, etc. either to save the trouble of implementing a communication mechanism to the top-level Scaffold or because it is a more direct solution. And some developers don't read the documentation altogether and just nest Scaffolds because they simply want the all-in-one layout capabilities it offers.

Proposal
Add a new widget that provides only the layout capabilities of a Scaffold, while not including the properties that require a Scaffold to be top-level. Something like this could be called a ScreenFrame and gives developers a proper way of 'nesting' this layout behaviour without needing to communicate with the app's primary Scaffold.
ScreenFrame(
  floatingActionButton:
  appBar:
  bottomSheet:
  bottomBar:
  body:
)

The main issue lies in the fact that an app's screens are not inherently constrained to a single set of these properties, yet Flutter adds screen-level properties to the Scaffold widget even though it is top-level.
If for some reason this is not possible or is considered an anti-pattern, I really believe there should be built-in functionality to communicate with the top-level Scaffold's layout widgets. For Example:
Scaffold.of(context).setAppBar()
Scaffold.of(context).setFAB()

An example of the issue would be a BottomNavigationBar which is not needed for a login screen, but is needed for the home screen of an app that uses a tabNavigator, or offstage widgets in a stack, or any other bottom-navigation solution.
I do not see why it is necessary to add logic to the app's top-level to know whether or not the BottomBar should be shown as opposed to wrapping the home screen in a widget that contains the BottomBar. The second approach is easier and feels more like a Flutter solution

Are you sure it is intend to use a single scaffold for the entire app. I use a scaffold for every new route i push and that is working great.

@yasargil Here is an excerpt from the Scaffold.dart documentation
/// ### Nested Scaffolds
///
/// The Scaffold was designed to be the single top level container for
/// a [MaterialApp] and it's typically not necessary to nest
/// scaffolds. For example in a tabbed UI, where the
/// [bottomNavigationBar] is a [TabBar] and the body is a
/// [TabBarView], you might be tempted to make each tab bar view a
/// scaffold with a differently titled AppBar. It would be better to add a
/// listener to the [TabController] that updates the AppBar.
///
/// {@tool snippet}
/// Add a listener to the app's tab controller so that the [AppBar] title of the
/// app's one and only scaffold is reset each time a new tab is selected.

Yes most people I've seen use a new Scaffold with every route they push and this may be okay IF you are not wrapping your app in a Scaffold using MaterialApp's builder method. However sometimes there are valid use-cases for using a Scaffold at the MaterialApp level (such as a global snackbar listener). If you do this, you still may not notice any issues immediately, but there are hidden bugs related to autofocus and the keyboard causing overflows, granted there are workarounds for these bugs, but they still exist because we nest Scaffolds. This is why I think directing people to use something like a ScreenFrame for new routes would be useful so they don't fall into the trap of nesting Scaffolds which is a very natural pitfall.
I think the snippet above is a bit odd in that they expect you to change your global Scaffold but provide no built-in communication methods through Scaffold.of(context).


docs: Create a typescript template for bug reporting

Describe the PR
I find that since I work in TypeScript, it's an extra step to transform my bug repro to JS.  And, of course, if there is a TypeScript component to the bug, this will be useful.
I've added a TypeScript template for use when creating bug repros.  This is a direct mapping of the existing Bite template, but with Typescript support.
I also added links to this template in bug_report.yaml and issue-labeled.yaml.
I verified that the template works with stackblitz here
I'm not sure how to verify the yaml without committing this PR, but if someone has an idea on that, I'd be happy to try.
Small replication
N/A
PR checklist

What kind of change does this PR introduce? (check at least one)

[ ] Bugfix :bug: - fix(...)
[ ] Feature - feat(...)
[ ] ARIA accessibility - fix(...)
[X] Documentation update - docs(...)
[ ] Other (please describe)

The PR fulfills these requirements:

[X] Pull request title and all commits follow the Conventional Commits convention or has an override in this pull request body This is very important, as the CHANGELOG is generated from these messages, and determines the next version type. Pull requests that do not follow conventional commits or do not have an override will be denied

I'd be fine with just having one template that is simply TS compatible. No real reason to keep the two separate (Plus the overhead of maintaining two copies, even though it doesn't change much)

I'd be fine with just having one template that is simply TS compatible. No real reason to keep the two separate (Plus the overhead of maintaining two copies, even though it doesn't change much)

Okay, I just replaced the vite template with the TypeScript version.  I tried to minimize the diff, but there was some fighting between the prettier/lint styles that made that more difficult than I'd like.  Hopefully this is all right.  If I do another pass, I'd probably move to making the styling conform to the rest of the bsv-next project, which would make this diff bigger but probably be easier to maintain moving forward.


Reduce hack cast time from 0.85s to 0.65s

Created by: MaxwellJung

moved from ow1_emulator_backup#674


Add changes discussed in #3

max-classes-per-file is set to 1 upstream
one-var is enforced upstream
no-underscore-dangle is enforced upstream
jsx-quotes is already the same upstream
comma-dangle has also "functions: 'always-multiline'" upstream
operator-linebreak is also enforced upstream (but = should not be on its own line)
disable react/jsx-one-expression-per-line
disable no-await-in-loop

Closes #3

did we add the react hooks thing?
I wonder if we should add the PR description to the README so it's easy to see what you can change in a consuming project after upgrading to v2 e.g. remove all no-await-in-loop exceptions.
And i think we should probably do a pass of this new set on the api to see how we like the resulting fix-diff as well as the non-auto-fixable issues resulting from this bump.


[FEATURE] transorm_copy_if? And an inplace version

map + remove_if and map + copy_if are clamsy and require optimizations.
We should have algorithms that take a value of one type and return a value of a different type + predicate to keep or not.
Example:
std::string remove_repeated_spaces(std::string_view s) {
  std::string out(in.size(), 0);

  // we need a better zip with tail too
  auto zipped_with_tail = eve::views::zip(s, s.begin() + 1);
  auto it =  eve::algo::transform_copy_if(zipped_with_tail, out, [](auto c_next_c)
                               {
                                 auto [c, next_c] = c_next_c;
                                 return c != ' ' || c != next_c;
                               });
  out.erase(it, out.end());
}

Currently this is very clumsy.
Names suggestions welcome

Superceded by #1817


Update of social links to enable opening in new tabs

Describe the bug
All the social links at the bottom of the page open in the same tab as the current tab.
Changing this to open in new tab will make its use more comfortable to users as they don't hav to go to previous tab for every social logo .
To Reproduce
Steps to reproduce the behavior:

Go to https://threadify.vercel.app/
Scroll down to see the social logos( github and twitter)
Click on twitter or github logo.
See that whatever social logo is clicked that link is opened in the same tab as the current tab

Expected behavior
I would like this to be able to open each social link in a new tab for ese of use and access of the threadify after use of social links
Screenshots
See that these links open in the same tab

Desktop (please complete the following information):

OS: Win11
Browser: OPera
Version: LVL4 (core: 95.0.4635.74)

hello @tmsagarofficial I read through the description of the bug. can i work on it ?

Hey, @seinlusnyongesa it's like I'm not the admin and hence I can't assign or do anything like that. I'm also waiting for long a time for my issue so that I can work on it once @pushkaraj2007 assigns 😅

okay, thanks for the response man, good luck.

@tmsagarofficial, do you want to work on this?

@tmsagarofficial, do you want to work on this?

Yeah

I was quite busy with my academics, so I was unable check the issue and assign.
I have assigned @tmsagarofficial now, so you can start working on this issue now.

Thanks mate . I will start working on this 🚀

check @pushkaraj2007


[Bug] DrawingView.ClearOnFinish seems to have no effect

Description
Maybe I'm misunderstanding what this does. I expect that this property would leave my current drawing in place when I start to draw a second line. However, this is not the case. Khttps://github.com/xamarin/XamarinCommunityToolkit/blob/develop/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Renderer/DrawingViewRenderer.ios.cs#L79 it is correctly checked and the collection is not cleared, however here the collection is still cleared.
Only tested on iOS, but looking at the Android renderer same thing happens there, so will be good to check all platforms.
Steps to Reproduce

Implement a DrawingView like below

<xct:DrawingView ClearOnFinish="False" LineColor="Red" BackgroundColor="LightGray" HeightRequest="200" Points="{Binding DrawPoints}" DrawingCompletedCommand="{Binding DrawCompleted}" />

Draw on the canvas and stop drawing by raising your finger/pointer
Draw a second line and observe that the first line is erased

Expected Behavior
Both lines are shown on the canvas
Actual Behavior
Only one line at a time is shown on the canvas
Basic Information

Version with issue: Current nightly
Last known good version: N/A
IDE: VSMac
Platform Target Frameworks:

iOS:  14.5
Android: Not tested on Android, but looking at the code it also happens here

Workaround

None that I know of right now
Reproduction imagery

Reproduction Link

@VladislavAntonyuk FYI

We should clear the screen when the customer starts drawing independently from the ClearOnFinish.
ClearOnFinish="True" means that the image clears on completing the drawing.
We do not allow multiple lines, because of Points collection. it should be Collection of Collection of Points to support multiple lines.
I am not sure would it be a breaking change in the future or we will be able to add a Strokes property, but for now we support only single line.

Interesting, I see how it's supposed to work now, thanks for clearing that up.
I think it would be nice to also have the ability to draw multiple lines independently. I don't fully understand why that should be a problem? The points can be duplicate or overlapping or anything right? But maybe I'm not fully understanding how this works. We should follow up in a new issue probably

we draw the line as an array of points (we draw the line between two points). so when we set the points, we will draw the line between the last point of "Line1" and the first point of "Line2".
To support multiple lines we need a new property Strokes (Array of Array of Points). And furthermore, I believe in that case we need to remove Points property. which is a breaking change.
How much time do we have before 1.2 release? I can try to implement Strokes property.

Fixed in #1459

we draw the line as an array of points (we draw the line between two points). so when we set the points, we will draw the line between the last point of "Line1" and the first point of "Line2".
To support multiple lines we need a new property Strokes (Array of Array of Points). And furthermore, I believe in that case we need to remove Points property. which is a breaking change.
How much time do we have before 1.2 release? I can try to implement Strokes property.

I'm releasing it NOW! :P


Suggestion: Provide a way to suppress InUnitTestRunner warnings

Is your feature request related to a problem? Please describe.
Currently when using ReactiveUI while unit testing, each and every test method's trace gets this preamble:
Debug Trace:
LogHost: *** Detected Unit Test Runner, setting MainThreadScheduler to CurrentThread *** (.cctor)
LogHost: If we are not actually in a test runner, please file a bug

 (.cctor)
LogHost: ReactiveUI acts differently under a test runner, see the docs
 (.cctor)
LogHost: for more info about what to expect (.cctor)

The message is useful the first time you read it if you aren't already aware of the behavior. Thereafter it becomes unavoidable noise.
Describe the solution you'd like
Provide something as simple as a static bool that could be checked to skip the output.
Describe alternatives you've considered
Unsure if the Splat LogHost can be told to ignore these warnings somehow.
Describe suggestions on how to achieve the feature
https://github.com/reactiveui/ReactiveUI/blob/86283536c38a84e2f5a4b92e69076903c25b551a/src/ReactiveUI/RxApp.cs#L117
if (ModeDetector.InUnitTestRunner())
{
    if(!SuppressTestRunnerDetectedWarnings)
    {
        LogHost.Default.Warn("*** Detected Unit Test Runner, setting MainThreadScheduler to CurrentThread ***");
        LogHost.Default.Warn("If we are not actually in a test runner, please file a bug\n\n");
        LogHost.Default.Warn("ReactiveUI acts differently under a test runner, see the docs\n");
        LogHost.Default.Warn("for more info about what to expect");
    }
    UnitTestMainThreadScheduler = CurrentThreadScheduler.Instance;
    return;
}

Closing for now as I realize I can avoid the messages by not touching the RxApp class anywhere.


[Variable Fonts] Check fonttools.varLib.mutator can generate a static instance from a variable font

This test is needed because the GF Team want to generate font instances from variable fonts.
One of our variable test fonts, MarkaziText-VF.ttf (will email it to you @felipesanches ), failed in mutator with the following cli input
$./fonttools varLib.mutator MarkaziText-VF.ttf wght=500

Which produced the following traceback
Location: {'wght': 500.0}
Loading variable font
Normalized location: {'wght': 0.33331298828125}
Mutating glyf/gvar tables
Mutating GDEF/GPOS/GSUB tables
Building interpolated tables
Removing variable tables
Saving instance font MarkaziText-VF-instance.ttf
ERROR: Glyph 'uni0615' has negative advance width
ERROR: Glyph 'uniFBB4' has negative advance width
ERROR: Glyph 'uni0655' has negative advance width
Traceback (most recent call last):
  File "./fonttools", line 12, in <module>
    sys.exit(main())
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/__main__.py", line 29, in main
    runpy.run_module(mod, run_name='__main__')
  File "/usr/lib/python2.7/runpy.py", line 180, in run_module
    fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/varLib/mutator.py", line 156, in <module>
    sys.exit(main())
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/varLib/mutator.py", line 150, in main
    varfont.save(outfile)
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/ttLib/ttFont.py", line 166, in save
    writer_reordersTables = self._save(tmp)
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/ttLib/ttFont.py", line 205, in _save
    self._writeTable(tag, writer, done, tableCache)
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/ttLib/ttFont.py", line 615, in _writeTable
    self._writeTable(masterTable, writer, done, tableCache)
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/ttLib/ttFont.py", line 619, in _writeTable
    tabledata = self.getTableData(tag)
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/ttLib/ttFont.py", line 637, in getTableData
    return self.tables[tag].compile(self)
  File "/usr/local/google/home/nyshadhr/src/fonttools/Lib/fontTools/ttLib/tables/_h_m_t_x.py", line 96, in compile
    % (self.tableTag, self.advanceName))
fontTools.ttLib.TTLibError: 'hmtx' table can't contain negative advance widths

More info in the following fonttools pr https://github.com/fonttools/fonttools/pull/1198
cc @nyshadhr9

ERROR: Glyph 'uni0615' has negative advance width
ERROR: Glyph 'uniFBB4' has negative advance width
ERROR: Glyph 'uni0655' has negative advance width

We do have a check for that. It was added last week:
https://github.com/googlefonts/fontbakery/blob/97de5a3802789a98ed4b5ceb9c2c26e646ddc84f/Lib/fontbakery/specifications/googlefonts.py#L5401-L5421

@felipesanches The font does have positive hmtx values. This issue relates to the deltas in the gvar table.

that check is spurious.. If you're reading a TTFont from a file, it can't never have negative advances in hmtx, because the field will always be decompiled as an uint16 (unsigned short integer), even if it's huge e.g. 0xFFFF.
The error Marc is getting is while attempting to instantiate a variable font that was originally produced with Glyphs.app, in which some glyphs that are supposed to have 0 advance width (being classified as non-spacing combining marks) end up with gvar "phantom" points (for the left, right, top, bottom side bearning) that are messed up (e.g. the right one has a smaller x coordinate than the left). That's because in the source file those glyphs have some non-zero advance widths (it's a common trick designers use to be able to preview those glyphs in the editor), however Glyphs.app was not automatically setting them to 0 upon exporting a variable font, in the same way it does when exporting a non-variable instance font.
Georg said he's fixed the bug.

while attempting to instantiate a variable font

I mean, using fonttools varLib.mutator MyFont-VF.ttf wght=700 wdth=85

@m4rc1e do you want to take care of this?

Sure!

note that this has already been fixed in fonttools (since 3.24.0)
https://github.com/fonttools/fonttools/pull/1198
https://github.com/fonttools/fonttools/commit/ad7b97a7b295b8ab6df1937d73167ff535155248

@anthrotype Thanks! I remember this pr :-).
I'd still like to determine whether this test is actually useful. There may be other issues which stop an instance being genned from mutator that I don't know about.

could you send me again the font that was failing (i.e. before Georg and the two of us fixed it respectively in Glyphs.app and fonttools)? I'd like to take another look as well, thanks.

Here you go MarkaziVFs.zip
Since GF may use mutator in the future to gen instances, I'd like to dump a load of VF's through the new fonttools and see any other unforeseen issues come up. We're a bit too light on tests for VFs atm.

Thanks Marc. One is never too heavy on tests ;)

Comparing the "broken" and the "fixed" fonts that you sent me, I see that in the broken one there are some glyphs in the gvar, for which the last four tuples -- which identify the left, right, top and bottom "phantom points" -- have a problem: the right's x coordinate is smaller than the left's x coodinate, hence the negative horizontal advance width computed by mutator (and the subsequent failure when compiling the hmtx).
--- /home/clupo/Downloads/MarkaziText-VF-broken.ttx
+++ /home/clupo/Downloads/MarkaziText-VF-fixed.ttx
@@ -1248,12 +1248,12 @@
     <!-- Most of this table will be recalculated by the compiler -->
     <tableVersion value="1.0"/>
     <fontRevision value="1.0"/>
-    <checkSumAdjustment value="0x767e98da"/>
+    <checkSumAdjustment value="0x5bf1d08c"/>
     <magicNumber value="0x5f0f3cf5"/>
     <flags value="00000000 00000011"/>
     <unitsPerEm value="2048"/>
     <created value="Thu Mar  9 22:12:49 2017"/>
-    <modified value="Tue Feb 13 09:01:00 2018"/>
+    <modified value="Mon Feb 26 11:39:27 2018"/>
     <xMin value="-341"/>
     <yMin value="-893"/>
     <xMax value="2485"/>
@@ -112145,7 +112145,7 @@
         <delta pt="38" x="-5" y="1"/>
         <delta pt="39" x="-5" y="1"/>
         <delta pt="40" x="0" y="0"/>
-        <delta pt="41" x="-6" y="0"/>
+        <delta pt="41" x="0" y="0"/>
         <delta pt="42" x="0" y="0"/>
         <delta pt="43" x="0" y="0"/>
       </tuple>
@@ -112189,7 +112189,7 @@
         <delta pt="0" x="19" y="-36"/>
         <delta pt="1" x="-32" y="-36"/>
         <delta pt="2" x="0" y="0"/>
-        <delta pt="3" x="-24" y="0"/>
+        <delta pt="3" x="0" y="0"/>
         <delta pt="4" x="0" y="0"/>
         <delta pt="5" x="0" y="0"/>
       </tuple>
@@ -112368,7 +112368,7 @@
         <coord axis="wght" value="1.0"/>
         <delta pt="0" x="11" y="-25"/>
         <delta pt="1" x="0" y="0"/>
-        <delta pt="2" x="-39" y="0"/>
+        <delta pt="2" x="0" y="0"/>
         <delta pt="3" x="0" y="0"/>
         <delta pt="4" x="0" y="0"/>
       </tuple>

You could to check that in each gvar tuple the last four deltas for the phantom points are such that you don't get rightSideX < leftSideX

Basically this means you’d do the same computation that mutator does to compute a glyph’s coordinates (including the last four phantom points) at a specific location.. for a transient bug that has been fixed in Glyphs.app by now.

That's what people call regression testing. To make sure it never creeps up back again unnoticed ;-)

Closing test added in #1755


Missing translation in 1.5.0 & 1.5.1

I've just upgraded from 1.1.2 to 1.5.0 (via clean installation, no prior info shared) and found out that more than a handful of strings where not translated spreading the whole application. I've also updated 1.5.0 to 1.5.1 and the string are still missing (see the screenshot). This wasn't the case in 1.1.2 for me.

Versions
$ docker version
Client:
 Version:      17.05.0-ce
 API version:  1.29
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:10:54 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.05.0-ce
 API version:  1.29 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   89658be
 Built:        Thu May  4 22:10:54 2017
 OS/Arch:      linux/amd64
 Experimental: false

$ docker-compose --version
docker-compose version 1.7.1, build 0a9ab35

Config files
$ cat harbor.cfg
## Configuration file of Harbor

#This attribute is for migrator to detect the version of the .cfg file, DO NOT MODIFY!
_version = 1.5.0
#The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or <IP_ADDRESS>, because Harbor needs to be accessed by external clients.
hostname = [redacted]

#The protocol for accessing the UI and token/notification service, by default it is http.
#It can be set to https if ssl is enabled on nginx.
ui_url_protocol = https

#Maximum number of job workers in job service
max_job_workers = 50

#Determine whether or not to generate certificate for the registry's token.
#If the value is on, the prepare script creates new root cert and private key
#for generating token to access the registry. If the value is off the default key/cert will be used.
#This flag also controls the creation of the notary signer's cert.
customize_crt = on

#The path of cert and key files for nginx, they are applied only the protocol is set to https
ssl_cert = /var/lib/docker-registry/certs/server.crt
ssl_cert_key = /var/lib/docker-registry/certs/server.key

#The path of secretkey storage
secretkey_path = /data

#Admiral's url, comment this attribute, or set its value to NA when Harbor is standalone
admiral_url = NA

#Log files are rotated log_rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.
log_rotate_count = 50
#Log files are rotated only if they grow bigger than log_rotate_size bytes. If size is followed by k, the size is assumed to be in kilobytes.
#If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G
#are all valid.
log_rotate_size = 200M

#Config http proxy for Clair, e.g. http://my.proxy.com:3128
#Clair doesn't need to connect to harbor ui container via http proxy.
http_proxy =
https_proxy =
no_proxy = <IP_ADDRESS>,localhost,ui

#NOTES: The properties between BEGIN INITIAL PROPERTIES and END INITIAL PROPERTIES
#only take effect in the first boot, the subsequent changes of these properties
#should be performed on web ui

#************************BEGIN INITIAL PROPERTIES************************

#Email account settings for sending out password resetting emails.

#Email server uses the given username and password to authenticate on TLS connections to host and act as identity.
#Identity left blank to act as username.
email_identity =

email_server = smtp.mydomain.com
email_server_port = 25
email_username =<EMAIL_ADDRESS>email_password = abc
email_from = admin<EMAIL_ADDRESS>email_ssl = false
email_insecure = false

##The initial password of Harbor admin, only works for the first time when Harbor starts.
#It has no effect after the first launch of Harbor.
#Change the admin password from UI after launching Harbor.
harbor_admin_password = ky3EMa

##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.
#Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.
auth_mode = db_auth

#The url for an ldap endpoint.
ldap_url = ldap://[redacted]:389

#A user's DN who has the permission to search the LDAP/AD server.
#If your LDAP/AD server does not support anonymous search, you should configure this DN and ldap_search_pwd.
ldap_searchdn = uid=[redacted],ou=Standorte,dc=milchundzucker,dc=de

#the password of the ldap_searchdn
ldap_search_pwd = [redacted]

#The base DN from which to look up a user in LDAP/AD
ldap_basedn = [redacted]

#Search filter for LDAP/AD, make sure the syntax of the filter is correct.
#ldap_filter = (objectClass=person)

# The attribute used in a search to match a user, it could be uid, cn, email, sAMAccountName or other attributes depending on your LDAP/AD
ldap_uid = uid

#the scope to search for users, 0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE
ldap_scope = 2

#Timeout (in seconds)  when connecting to an LDAP Server. The default value (and most reasonable) is 5 seconds.
ldap_timeout = 5

#Verify certificate from LDAP server
ldap_verify_cert = true

#The base dn from which to lookup a group in LDAP/AD
ldap_group_basedn = ou=group,dc=mydomain,dc=com

#filter to search LDAP/AD group
ldap_group_filter = objectclass=group

#The attribute used to name a LDAP/AD group, it could be cn, name
ldap_group_gid = cn

#The scope to search for ldap groups. 0-LDAP_SCOPE_BASE, 1-LDAP_SCOPE_ONELEVEL, 2-LDAP_SCOPE_SUBTREE
ldap_group_scope = 2

#Turn on or off the self-registration feature
self_registration = on

#The expiration time (in minute) of token created by token service, default is 30 minutes
token_expiration = 30

#The flag to control what users have permission to create projects
#The default value "everyone" allows everyone to creates a project.
#Set to "adminonly" so that only admin user can create project.
project_creation_restriction = everyone

#************************END INITIAL PROPERTIES************************

#######Harbor DB configuration section#######

#The address of the Harbor database. Only need to change when using external db.
db_host = mysql

#The password for the root user of Harbor DB. Change this before any production use.
db_password = [redacted]

#The port of Harbor database host
db_port = 3306

#The user name of Harbor database
db_user = root

##### End of Harbor DB configuration#######

#The redis server address. Only needed in HA installation.
#address:port[,weight,password,db_index]
redis_url = redis:6379

##########Clair DB configuration############

#Clair DB host address. Only change it when using an exteral DB.
clair_db_host = postgres

#The password of the Clair's postgres database. Only effective when Harbor is deployed with Clair.
#Please update it before deployment. Subsequent update will cause Clair's API server and Harbor unable to access Clair's database.
clair_db_password = [redacted]

#Clair DB connect port
clair_db_port = 5432

#Clair DB username
clair_db_username = postgres

#Clair default database
clair_db = postgres

##########End of Clair DB configuration############

#The following attributes only need to be set when auth mode is uaa_auth
uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem

### Docker Registry setting ###
#registry_storage_provider can be: filesystem, s3, gcs, azure, etc.
registry_storage_provider_name = filesystem
#registry_storage_provider_config is a comma separated "key: value" pairs, e.g. "key1: value, key2: value2".
#Refer to https://docs.docker.com/registry/configuration/#storage for all available configuration.
registry_storage_provider_config =

Logfiles
I can attach logfiles them, when needed

Please clean the cache of your browser and try it again.

Thanks. That worked.


Empty Error Analysis Dashboard and no access to Remote Proxy VM hosted

Describe the bug
Hi team, we are trying to run the Explanation Dashboard on a proxy server. But, unable to get some of the views like the tree view as they are being searched for in the localhost.
Saw an option to add a public ip in the parameters of the Explanation Dashboard, which unfortunately is not working in our case. Is there a way to pass the proxy url instead?
Eg :
ErrorAnalysisDashboard(explanation=global_explanation,
model=dashboard_pipeline,
dataset=X_test_original_full,
true_y=y_test,
categorical_features=categorical_features,
true_y_dataset=y_test_full,
port=5000,
public_ip="<IP_ADDRESS>")
Instead of the public_ip, is there a way to pass the proxyurl as 'https://proxyurl/endpoint'?
Thanks!
To Reproduce
Steps to reproduce the behavior:
Copy the Test Error Analysis Dashboard jupyter notebook on a proxy server.
On trying to access this on the remote url, getting empty views.

Stack trace
If applicable, please add the sdk stack trace for the error.
Expected behavior

Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: mac is the local machine and the remote one is ubuntu
Browser : chrome
Python version: 3.9
raiwidgets and responsibleai package versions : 0.21.0

hi @monika173 we pass the public ip to flask service that we start here:
https://github.com/microsoft/responsible-ai-toolbox/blob/main/raiwidgets/raiwidgets/dashboard.py#L70
This FlaskHelper, which starts flask with the optional public ip, is defined here:
https://github.com/microsoft/responsible-ai-toolbox/blob/main/rai_core_flask/rai_core_flask/flask_helper.py
Is there some way to start flask or WSGIServer (see where it is called in flask_helper) with proxyurl?  Otherwise I'm not aware of a way to make this work.
I do want to add a static view of error analysis though.  That would in some sense mitigate this issue, since it wouldn't call back to the python backend then, but the experience would be more restrictive since it would be a static app and you wouldn't be able to retrain the Error Analysis tree on demand.  This static view is already available for spark/databricks scenario, and it should be simple to extend it to work for python scenario.
If we can figure out how to make this work with proxyurl that would be ideal though.

I had a similar issue trying to run it with Docker on Mac, it worked after I added the parameter public_ip="<IP_ADDRESS>" with a fixed port=5050.


Add integration with ItemBridge

The plug-in ItemBridge (see https://polymart.org/resource/item-bridge.4 ) seems interesting because:

It could help me with making my recipe editor more powerful (the types of ingredients are currently quite limited and copied to server results are suboptimal as well).
Adding integration with more plug-ins will be easier once more plug-ins start using ItemBridge. Even though little plug-ins support it at the moment, this might change in the future, and joining early could contribute a bit to this.

Custom Items 9.14 will have partial ItemBridge support: it will register its items to ItemBridge, but it won't be able to use ItemBridge items that are registered by other plug-ins in its custom recipes.


Unable to colorize a simple log message in its entirety

The commit from https://github.com/winstonjs/winston/pull/371 seems to no longer be effective.
The colorize: 'all' option for the console options is not working....
Thanks

Could you provide the version of winston you are using and describe how to reproduce the problem including a minimum working code example.

If this is a<EMAIL_ADDRESS>issue please know that all development on<EMAIL_ADDRESS>has ceased and 3.x will be officially released on May 29th, 2018.
For 3.x you would pass all: true to the colorize format. See the example: https://github.com/winstonjs/winston/blob/master/examples/color-message.js


Export to TTL Feature for MagmaCoreService

Add a method to MagmaCoreService to export a database to a PrintStream as TTL:
public void exportTtl(final PrintStream out) {}

I have a solution implemented locally and will create a PR when the prerequisite PRs are merged.


Update vpn-office-365-optimization.md

Oh. I see. This is a non-published tree branch. No wonder I could not find it on docs.microsoft.com yet.

#sign-off

Thanks, @denisebmsft!


Docker cache invalidates apt-get update

Most of our Dockerfiles start with identical "header":
FROM malex984/dockapp:base
MAINTAINER Oleksandr Motsak<EMAIL_ADDRESS>RUN DEBIAN_FRONTEND=noninteractive apt-get -y update

which seems to confuse docker build to use its cache instead of performing apt-get -y update as desired... (which leads to outdated package repository data)
Manual workarounds for cache miss:

swap MAINTAINER and RUN
add/remove -q, e.g. RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q update

Q: is there a way to force docker build to ALWAYS run that update (without completely switching its cache usage)?

A: Updating the package cache and installing belong together. The second is invalid without the first. Hence, combine the apt-get update and apt-get install lines into one. Then the cache for this line contains the whole thing. Also you have to use version pinning for each package. If you change the version number for a package, the cache becomes invalid and will be rebuild.
Example:
RUN DEBIAN_FRONTEND=noninteractive apt-get -y update && apt-get -y install bash=4.2* zsh=5.3*

When you want to upgrade to Bash 4.3, simply change the line to
RUN DEBIAN_FRONTEND=noninteractive apt-get -y update && apt-get -y install bash=4.3* zsh=5.3*

and the cache will be rebuild.
Note, that this version pinning can break Dockerfiles. If a certain version is not available in the repository anymore, the Dockerfile won't build. But I think it's actually an advantage since unnoticed changes in the version can also change the behavior of the final image, leading to unpredictable results (kind of the opposite we want to achieve with Docker). So it's better to manually update the version in the Dockerfile, test it and commit again to be on the safe side. See also #4.

I think this issue is not a problem anymore as we switch to running apt-get update && install within the very same Dockerfile-RUN instruction...?

Please either reference the issue in the commit that fixes this or reference the commit here in the issue tracker. Afterwards the issue can be closed.

Ok, I fixed all the remaining Dockerfile's to abide to that requirement in 17da3e962973349b5a6ab5843b553f16f41e173d


illegal base64 data at input byte 483

Error description
The headlamp has configured OIDC authentication with Keycloak. Errors are constantly appearing in the logs of the headlamp pod:

The headlamp itself works when it does.  Are these errors critical and how to get rid of them?

Headlamp Version: 0.26.0
K8S: 1.31 (bare metall)

HELM Chart Values:
fullnameOverride: headlamp
replicaCount: 1
service:
  type: ClusterIP
  port: 80

volumeMounts:
- mountPath: /etc/ssl/certs/ca-certificates.crt
  subPath: ca-certificates.crt
  name: ca-certs
  readOnly: true

volumes:
- hostPath:
    path: /etc/ssl/certs
    type: Directory
  name: ca-certs

config:
  oidc:
    clientID: "headlamp"
    clientSecret: <SECRET>
    issuerURL: "https://iam.example.org/realms/<REALM>"
    scopes: "email,profile,groups"
    secret:
      create: true
      name: headlamp-oidc

ingress:
  enabled: true
  ingressClassName: internal
  hosts:
    - host: headlamp.example.org
      paths:
        - path: /
          type: Prefix
  tls:
    - secretName: eso.default-wildcard-tls-assets
      hosts:
        - headlamp.example.org

serviceAccount:
  create: true
  name: headlamp

clusterRoleBinding:
  create: true

Hi @deshifcodes one question did you setup that kuberenetes API server configs as well? I mean have you done these configs as well: https://kubernetes.io/docs/reference/access-authn-authz/authentication/#configuring-the-api-server ?
We failed to set it up just with configs in values.yaml (getting constant re-logins and 403s)..

getting these issues: https://github.com/headlamp-k8s/headlamp/issues/2614

Hi @deshifcodes one question did you setup that kuberenetes API server configs as well? I mean have you done these configs as well: https://kubernetes.io/docs/reference/access-authn-authz/authentication/#configuring-the-api-server ? We failed to set it up just with configs in values.yaml (getting constant re-logins and 403s)..

I added this line to the kube-apiserver manifest
- --authentication-config=/etc/kubernetes/pki/auth-oidc.conf
and created the file /etc/kubernetes/pki/auth-oidc.conf`
auth-oidc.conf
apiVersion: apiserver.config.k8s.io/v1beta1
kind: AuthenticationConfiguration
jwt:
- issuer:

    # Same as --oidc-issuer-url
    url: https://iam.example.org/realms/k8s

     # Same as --oidc-client-id
    audiences:
    - kubernetes
    - headlamp
    - kiali
    audienceMatchPolicy: MatchAny

  claimMappings:
    # Same as --oidc-username-claim
    username:
      claim: "email"
      prefix: ""

    # Same as --oidc-groups-claim
    groups:
      claim: "groups"
      prefix: ""

ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: oidc-cluster-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: /kubernetes-admin


Sort API list in alphabetical order

It's much practical (and a bit ethical) to have the list alphabetically ordered.
Thanks

Haha! Yep, I agree with that. Thanks.


Can't add shortcut ' ctrl + shift + / ' for multi line comment

VSCode Version: 1.27.2
OS Version: MacOS Mojave

Steps to Reproduce:

Open shortcut prefences
Try to change "Toggle Block Comment" shortcut to "ctrl + shift + /"
Instead applying shortcut combination VSCode running menu: Help > Search

Does this issue occur when all extensions are disabled?: Yes

That's a system shortucut, you should be able to remove it through System Preferences > Keyboard > Shortcuts > App Shortcuts > Show Help Menu


Add istio-system namespace to zipkin-to-stackdriver yaml

to fix #2333

Hi @bianpengyuan. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
I understand the commands that are listed here.

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

/assign @douglas-reid

/retest ci/circleci: e2e-pilot

/ok-to-test

@bianpengyuan: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
48bd8adeaf76c4470033e020777b2a3408e2d325
link
/test istio-pilot-e2e

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

so this was reverted @ozevren ? is it needed/need fixing ?

it is needed, and should not have been reverted. there is no way that this should have impacted anything related to testing, etc.
@bianpengyuan can you re-submit?


Fixing problems reported in Boost Inspection Report

I fixed some of problems reported in Boost Inspection Report for 1.59 beta rc1. I could not fix all of them due to problems/issues/doubts I described below.
I fixed violations of Boost min/max guidelines, converted tabs into spaces, added missing license information and copyrights (based on who and when created the file). I'm not sure how to correctly add missing license and copyright info to .qbk files.
I fixed one non-ASCII character in /example/opencv_convolution.cpp, but I did not change names with non-ASCII character/s as I don't think it would be right.
A few of Boost marcos used in Boost.Compute are deprecated, some since 1.50, some since 1.51. Boost.Compute requires Boost in version 1.48 or later. New macros that replaced deprecated ones (see Boost macros) are - of course - not present in 1.48, so if Boost.Compute should work with 1.48 we need to keep these deprecated macros. Otherwise, required Boost version should be set to 1.51.
( I also check that in compute/include/boost/compute/config.hpp internal macros like BOOST_COMPUTE_DETAIL_NO_VARIADIC_TEMPLATES are defined, but still sometimes in the code original macros from Boost are used, so that should be fixed too? )

Thanks for fixing all these! Could you make this pull request against the develop branch?

Oh, sorry for this mistake :-) I'll add more fixes today and make pull
request against develop branch.
Could you comment doubts/problems I listed?
18 lip 2015 08:09 "Kyle Lutz"<EMAIL_ADDRESS>napisał(a):

Thanks for fixing all these! Could you make this pull request against the
develop branch?
—
Reply to this email directly or view it on GitHub
https://github.com/boostorg/compute/pull/478#issuecomment-122489151.


Update link to current documentation

It appears that the Read the Docs documentation is deprecated in favour of those found on truffleframework.com, so this just updates the URL in the README

I'd also like to mention that the same old link is present on the GITTER ConsenSys/truffle page:

Merged, and updated Gitter. Thanks!


Not able to update snapshot directory

Describe the bug
Not able to update snapshot path and see snapshots
Can you please tell how it can be resolved..

@SVaid6293 Hello!
Can you help share a working sample code that is not working for you?
Also for snapshots to properly work, you would need to have the spec named as shown in the example in the docs
For assertions
https://pactumjs.github.io/api/assertions/expectJsonSnapshot.html

A snapshot needs a unique name & it can be defined through spec().name("") or expectJsonSnapshot("")

To update snapshot
https://pactumjs.github.io/api/assertions/updateSnapshot.html

Hello
I am referring the doc but not able to see the snapshots ..
On Tue, 31 Jan 2023 at 11:12 AM, Leela Prasad @.***>
wrote:

@SVaid6293 https://github.com/SVaid6293 Hello!
Can you help share a working sample code that is not working for you?
Also for snapshots to properly work, you would need to have the spec named
as shown in the example in the docs
For assertions
https://pactumjs.github.io/api/assertions/expectJsonSnapshot.html
A snapshot needs a unique name & it can be defined through spec().name("")
or expectJsonSnapshot("")
To update snapshot
https://pactumjs.github.io/api/assertions/updateSnapshot.html
—
Reply to this email directly, view it on GitHub
https://github.com/pactumjs/pactum/issues/262#issuecomment-1409795120,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZRTRIEBHJFCU4BY6XBBB4DWVCQ35ANCNFSM6AAAAAAUL6UA54
.
You are receiving this because you were mentioned.Message ID:
@.***>

Can you share more details about your test setup and steps to reproduce the issue?

A working example code.
Which test runner is being used.
Operating System.

A similar case, if you are running with CucumberJS runner please refer to this thread https://github.com/pactumjs/pactum/issues/202

I am using like this it('Comparing Json Values', async () => {
await spec()
.name('Get-Users-Test')
.get(c.endpoint2)
.expectStatus(c.expectedStatusCode).useLogLevel("DEBUG")
// .expectJson(myResponse.expVal2)
.expectJsonSnapshot;
});
On Tue, Jan 31, 2023 at 1:35 PM Leela Prasad @.***>
wrote:

Can you share more details about your test setup and steps to reproduce
the issue?

A working example code.
Which test runner is being used.
Operating System.

A similar case, if you are running with CucumberJS runner please refer to
this thread #202 https://github.com/pactumjs/pactum/issues/202
—
Reply to this email directly, view it on GitHub
https://github.com/pactumjs/pactum/issues/262#issuecomment-1409929147,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZRTRIBHA43X3M2EX6BQG2TWVDBV7ANCNFSM6AAAAAAUL6UA54
.
You are receiving this because you were mentioned.Message ID:
@.***>

Whole code
import { expect } from "chai"
import { Console } from "console";
import { spec, request,settings } from 'pactum';
import { MyParameters } from "./Params";
import * as fs from 'fs';
import * as myResponse from "./responses.json"
settings.setSnapshotDirectoryPath(__dirname+'\pactum\snapshots');
var c=new MyParameters;
request.setBaseUrl(c.baserUrl2);
describe('API tests', () => {
it('Comparing Json Values', async () => {
await spec()
.name('Get-Users-Test')
.get(c.endpoint2)
.expectStatus(c.expectedStatusCode).useLogLevel("DEBUG")
// .expectJson(myResponse.expVal2)
.expectJsonSnapshot;
});
it('Comparing Json Values', async () => {
await spec()
.name('Get Users2')
.get(c.endpoint2)
.expectStatus(c.expectedStatusCode)
// .expectJson(myResponse.expVal2)
.expectJsonSnapshot;
});
})
On Tue, Jan 31, 2023 at 3:18 PM sarthak2 vaid @.***>
wrote:

I am using like this it('Comparing Json Values', async () => {
await spec()
.name('Get-Users-Test')
.get(c.endpoint2)
.expectStatus(c.expectedStatusCode).useLogLevel("DEBUG")
// .expectJson(myResponse.expVal2)
.expectJsonSnapshot;
});
On Tue, Jan 31, 2023 at 1:35 PM Leela Prasad @.***>
wrote:

Can you share more details about your test setup and steps to reproduce
the issue?

A working example code.
Which test runner is being used.
Operating System.

A similar case, if you are running with CucumberJS runner please refer to
this thread #202 https://github.com/pactumjs/pactum/issues/202
—
Reply to this email directly, view it on GitHub
https://github.com/pactumjs/pactum/issues/262#issuecomment-1409929147,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZRTRIBHA43X3M2EX6BQG2TWVDBV7ANCNFSM6AAAAAAUL6UA54
.
You are receiving this because you were mentioned.Message ID:
@.***>

you need to invoke the expectJsonSnapshot() method.
it('Comparing Json Values', async () => {
  await spec()
  .name('Get Users2')
  .get(c.endpoint2)
  .expectStatus(c.expectedStatusCode)
  .expectJsonSnapshot();
});

It worked.Thanks lot
On Tue, 31 Jan 2023 at 8:06 PM, Anudeep @.***> wrote:

you need to invoke the expectJsonSnapshot() method.
it('Comparing Json Values', async () => {
await spec()
.name('Get Users2')
.get(c.endpoint2)
.expectStatus(c.expectedStatusCode)
.expectJsonSnapshot();});
—
Reply to this email directly, view it on GitHub
https://github.com/pactumjs/pactum/issues/262#issuecomment-1410469719,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZRTRIF6DMMSZVOF5UQYI23WVEPM7ANCNFSM6AAAAAAUL6UA54
.
You are receiving this because you were mentioned.Message ID:
@.***>


Update section on offboarding for BC Agent Tenant Service

RE: https://github.com/bcgov/bc-vcpedia/blob/main/agents/bc-gov-agent-service.md
Comments from @WadeBarnes:
"The ability and ease of exporting and deleting data from a tenant's account is going to be affected by the multi-tenant data storage options implemented by the agency. We've discussed before, but it might be worth a review.
The requirement for hard deleting a Tenant's data should be qualified. You might be able to remove the data from the agency, but you will not be able to remove any associated data written to the ledger. Tenants should be made aware of this upfront and they should be provided information regarding what data is written to the ledger. Also, in the case of off-boarding an issuer, has any thought gone into what should happen with the credentials they have issued. Are their any other organizations that need to be notified in the case the issued credentials should be invalidated or no longer trusted."

Close as no longer required


Reword commits that cause Prow warnings

This PR rewords commits that cause Prow to apply do-not-merge/invalid-commit-message labels to #17958.
I brought my local fork current with upstream/master:
$ git fetch upstream
$ git merge upstream/master
$ git push

I looked at the repo's commit history to find how far back I needed to edit. Then, in interactive mode, I reworded the commit messages for #17888 and #17889:
$ git rebase -i HEAD~36

Specifically, I removed magic words from the commit messages and reduced them to a single line instead of multiple lines.
This PR includes many files and commits because I didn't squash the other commits; I did this to avoid unduly destructive history changes.
UPDATE: This PR uses different hashes for each commit, compared to the current history in k/website. For example, the current branch tip for k/website is c26806c69ed3ca8b40602d8d5b43b3bd40f16f7e. This PR changes that hash to 5e730a39f167e8832650f9586cb109ecb71bfd41. Because this PR alters the earlier (and therefore subsequent) PR commit history, it makes sense to generate new hashes. Reviewers, please verify that commits from each PR apply changes correctly:

Current master hashes
This PR's hashes

Hi @zacharysarah I reviewed all the files in English and the changes look good to me.

/lgtm

@zacharysarah I don't understand how this PR can fix the commits already merged. If this PR is squashed and merged, it will become a single commit on the original commit history like this,  https://github.com/gochist/website/commit/ec5b784993d874b3aa6ed4c894661d306e8d200c .

@gochist Good point. Can you recommend a way to reword older commits?

/close


Replace calls OIntegerSerializer#serializeNative by VarHandles

Those calls were used when we had no other means for serialization in a byte array. Right now, they are slower than the means provided by JDK.

Will be done during migration to JDK 21


Update the no-jquery branch

Hello,
We have a React frontend app that relies on the no-jquery branch of your gem which is a bit outdated now (and we have problems with duplication of cookies with httpOnly/sameSite, etc). Do you plan on maintaining it or should we drop it to use something else ?

Hey @Startouf, jQuery was removed as a dependency in the 0.3.0 release. In general, branches aren't maintained (you'll need to do it yourself).


Docs: Add note that export doesn't include volume data.

The documentation on docker export doesn't mention that data in volumes is not included in the export.
This adds a note that volumes are not part of the export and refers to the "Backup, restore, or migrate data volumes" to give the user some pointers.
Relates to https://github.com/docker/docker/issues/10095
Signed-off-by: Sebastiaan van Stijn<EMAIL_ADDRESS>

however, it will export the contenst of a dir that a volume is mounted on top of :) just for some additional complexity.

Hm yes. I can try to add something explaining that.
I'm a bit hesitant to add that to the CLI docs here, because (in general) I think the CLI is really huge already. I was thinking to open a proposal to restructure this part of the docs; less information here and more (links to) dedicated sections describing the functionality in-depth.
Any thoughts on that? Perhaps we should discuss the options (on IRC?) to see what's best.

please add the info and discuss restructure elsewhere, that way this information fix is not held up or lost to a longer running issue.

please add the info and discuss restructure elsewhere, that way this information fix is not held up or lost to a longer running issue.

Sorry bout that, got a bit chatty.
@SvenDowideit PTAL

Updated PR, changed "the contents of that directory" to "the contents of the underlying directory". Think it's less ambiguous.

LGTM

LGTM

Thanks for review and merge!


Add API endpoints for creating and fetching cards

- Cards have a unique id
- Saved card ids begin with "card_"
- You cannot create a charge with a customer id and a card that doesn't
  belong to the customer
- You cannot create a charge with a customer id and a Stripe.js token

Closing this because fake_stripe has been deprecated: https://github.com/thoughtbot/fake_stripe/pull/154


Freeboard hogs resources - How to fix it?

I have a freeboard set up that has 30+ datasources. All of these datasources refresh about once every 1-3 minutes. After a couple of refresh cycles, this causes Freeboard to use up a lot of resources which means that the computer becomes slow and unresponsive for a short time.
Is there any way to fix this? Such as clearing the cache of a datasource after it refreshes or after so many minutes, it clears the entire cache?

That's a lot of datasources!  I've experienced something similar (especially running on a raspberry pi).  Some suggestions:

Put a meta refresh tag in index.html that will force a refresh periodically.  You'll obviously lose state but sometimes the browser can clean up memory.

<meta http-equiv="refresh" content="1800">

Consolidate some of your datasources into a new json web api that wraps them up into a single json object.  Then change your widget references to point to the sub objects.