Do not concatenate solution, preloaded, and test code

It should be possible to have 3 separate files: preloaded.ml, solution.ml, and tests.ml. It will be necessary to manually import preloaded code with open Preloaded (or using the Preloaded. prefix) and solution with open Solution. But all line numbers in error and warning messages will be correct for both user code and tests.

I think it is better to update the OCaml version (the latest version is OCaml 4.13.1; but OCaml 4.14 should be released pretty soon) and fix this issue for a new OCaml version only.

Yeah, I have TODO comment somewhere. It'll be a breaking change, so a new version is necessary.

Separate issue, but I also want to manage dependencies properly.

I can prepare an image for a new OCaml version. Or should I wait until OCaml 4.14 is released? I don't think there will be a big difference between OCaml 4.14 and OCaml 4.13.1.

Thanks! I want #3 merged first, so we can freeze 4.07 and move to 4.13.1. We don't need to wait for 4.14.

Fixed in #6.
OCaml 5.0.0 will be deployed next week.


Started working on api

Coverage decreased (-7.9%) to 51.004% when pulling cc3d86aaee10eb99366618ea7c5e2c7d518e7d20 on started_woring_on_api into 4066f2f34cdad2a8024867410be342ea9198ff3b on master.


improve freenet library documentation

I have some issues to contribute. I do not understand the goal of some functions. Could you improve some doc please?

Not specific enough for an issue.

I would like to:

details any potential issue on building and running freenet. EG: tell to ignore tsc errors in the tutorial
create a use case of real apps
link api ref from docs.rs for developper directly in https://docs.freenet.org/ for dev
vulgarize some maths in the last chapter

can you open it again please?

also the doc there https://docs.freenet.org/introduction.html is already very good!

We should also mention that in case of broken issue, the commit got from
git reset --hard 8ef468f511c8edc784999778553587b483cfdeb6

is stable enough for dev!


Cache is not invalidated and previously issued authorization codes/acces tokens not getting invlaidated, when oauth app requested/subject claim get updated

Description:
Oauth Cache is not invalidated when oauth app requested/subject claim get updated, ID token is retrieved with previously configured claims
Previously issued authorization codes/access token also not getting invalidated when updating an oauth app.
Suggested Labels:
Suggested Assignees:
Affected Product Version:
5.4.0 latest snapshot version
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:

Check the revocation of tokens and invalidation of cache in [1]
[1] https://github.com/wso2-extensions/identity-inbound-auth-oauth/blob/master/components/org.wso2.carbon.identity.oauth/src/main/java/org/wso2/carbon/identity/oauth2/internal/OAuthApplicationMgtListener.java#L89

Thank you for your contribution!
We are closing this issue since it has not been prioritized for a long time. Chances are that it has already been solved in more recent versions. If not, we will be re-evaluating this when it becomes a priority.


Deploy the operator using a Helm chart

Hello!

Vote on this issue by adding a 👍 reaction
If you want to implement this feature, comment to let us know (we'll work with you on design, scheduling, etc.)

Issue details
Having the option to deploy the operator via a Helm chart would be very convenient for my project setup, which will make extensive use of Helm charts.
Affected area/feature
K8S Operator

Thanks for the reply @viveklak . I'd be happy to give it a try 👍

@adace123 and @viveklak thank you both for looking into this issue. 😄 It looks like this PR is waiting on a potential merge conflict resolution and final acceptance/merge.
We are currently evaluating the usage of pulumi for our IaC solution and given that this uses the kubernetes-operator pattern, we are super enthusiastic to dive in. I would highly encourage expediting the final evaluation and merging of this PR as deployment of things like operators using helm is becoming more ubiquitous and will drive adoption.
For our specific use case, we are leveraging gitops usingthe flux. In order to make helm based k8s deployments a first class citizen, flux includes a key component called a HelmRelease which supports a GitRepository as a source, but currently requires a helm chart be available in the repository.
Until this PR gets merged, we are going to have to copy the CRD and Deployment artifacts directly into our own repo and inject it directly using a kustomization. Or, alternatively we can fork the repo and make use of the code in the PR until the code has officially been merged. If there is anything we can do to help test or contribute to expedite the adoption of this feature feel free to reach out.

Good news everyone, we just released a preview of Pulumi Kubernetes Operator v2. This new release has a whole-new architecture that uses pods as the execution environment. We now provide a Helm chart and other installation options.
Please read the announcement blog post for more information:
https://www.pulumi.com/blog/pulumi-kubernetes-operator-2-0/
Would love to hear your feedback!  Feel free to engage with us on the #kubernetes channel of the Pulumi Slack workspace.
cc @adace123 @sudermanjr @questionmorc @rockhowse @pelumi1163 @worawatwi


feat: pull the release version from package.json

This makes our calculation of system version a lot more solid. This is going to be required for OpenTelemetry metrics, because any metric sent without a version will end up in the Dead Letter metrics. Because of this I want to give users of Reliability Kit more of a guarantee that their metrics will arrive.

Superseded by #1082


mat: Change test names to include Dense where appropriate

For example, TestAdd should really be TestDenseAdd, and TestTriAtSet should be TestTriDenseAtSet

He! Dupe of #712.


Improved publish pagination

This commit improves the pagination of publish indexes by using a combination of hover styles and placeholder texts:

When hovering over the page footer, the pagination's "go to" form will we highlighted with a light border.
When hovering over the "go to" input it will be highlighted with a darker border while displaying the placeholder text "Go to page …"
When clicking the input the placeholder disappears and the desired page number can be entered

Closes #1023

Cool, I like the idea of "making the whole thing an input box"!
In Firefox it appears that there are two elements that are not being changed at the same time. If I approach the element the border becomes darker and only if I move the curser further a few pixels the caption changes to "Go to page...".
Is that on purpose?

Ah, no, it isn't. I was referencing the wrong element.
Should be fixed with the latest commit.


Bump VERSION to 0.10.2

Bump version based on bugfix:

Retrieving run stats is not working for failed workflows

Worth to update the changelog file

Worth to update the changelog file

This gets done automatically with the GHA, right (including [release] in the squash and merge command)?
From the docs:

Include the text [release] in the merge commit message to trigger the release artifacts creation (i.e. Release version X.Y.Z [release])

@robnewman the changelog is created automatically from the commit list, we just need to make sure that the auto-generated list contains this specific change.

Jumping in here. I will reach out to @JaimeSeqLabs on Slack to clarify what needs to be done exactly and report back.

Indeed. I didn't realise that there's a a changelog file in the project. Enough updating the version and (squash) merge with the [release] bump version xxx comment


Training the text encoder

Hi, I want to train a text encoder but the code is unavailable now. Could you please upload the code if possible?
Thanks!

Any update is appreciated


Error during react-native init

I'm trying to setup the demo project, however when I run react-native init AwesomeProject it hangs for a while then fails. Running with --verbose gives this as last output:
npm info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>
><EMAIL_ADDRESS>install /Users/anahkiasen/Sites/anahkiasen/AwesomeProject/node_modules/fsevents
> node-pre-gyp install --fallback-to-build

`npm install --save react-native` failed

What I don't get is if I go into the folder an manually run npm install react-native --save it works fine.
$ node --version && npm --version
v4.1.2
3.3.7

Same, +1
<EMAIL_ADDRESS><EMAIL_ADDRESS>Mac - OS X El Capitan

As a temporary fix,

react-native init myProject
cd myProject && npm install react-native --save
cd ..
react-native init myProject

say yes to overwrite the project.

@tarun1793 Worked for me
Same environment
Linux - LMDE Betsy 2

@facebook-github-bot close


Support net8.0

Currently the project supports net6.0 and net7.0. It'd be great if it could support net8.0.

My understanding is that it .NET 8 should be able to run it as-is. (I assume you are referring to the SqlHydra.Cli tool). Although, I haven't actually tried it to verify.

I'm running this command inside the mcr.microsoft.com/vscode/devcontainers/dotnet:8.0-bookworm-slim docker image:
$ dotnet sqlhydra npgsql
You must install or update .NET to run this application.

App: /root/.nuget/packages/sqlhydra.cli/2.2.0/tools/net7.0/any/SqlHydra.Cli.dll
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '7.0.0' (x64)
.NET location: /usr/share/dotnet/

The following frameworks were found:
  8.0.0 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]

Learn more:
https://aka.ms/dotnet/app-launch-failed

To install missing framework, download:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=7.0.0&arch=x64&rid=linux-x64&os=debian.12

Good to know! I’ll get it out today.

I always forget how big of a task this is. (It definitely won't be done tonight. 😴)

It is a big task and why I wanted to try to fork this, do it myself, and issue a pull request. Then that led me to thinking that this project could come with a docker devcontainer image that has all the dependencies and build tasks baked in (getting fake set up properly would be huge).

I just tried to update the devcontainer stuff to the latest .net 8 image and fixed the devcontainer.json settings file.
All the containers pulled down when I launch vs code with the devcontainers extension, but it fails everytime with:
"An error occurred setting up the container."
TBH, it's always been easier to just go to the .devcontainer folder and run docker-compose up.
Yeah, you have to have .NET 8 installed on your local machine, but you obviously have that anyway.

Taking a stab at .NET 8 for SqlHydra.Cli. I think I can have this released tonight!
I'm so glad I moved to NUnit a few weeks ago. It's sooo much faster and easier to run one-off tests!

The Npgsql enum tests are failing in net8. 😭

I was able to get the tests to pass for .NET 8 if I downgraded to Npgsql v7.
So, perhaps it's worth pushing a new version as this seems to be a Npgsql issue.

Released with support for .NET 8.
https://github.com/JordanMarr/SqlHydra/releases/tag/cli-v2.3.0

Damn, even when I downgrade npgsl to 7.0, I still get the is not supported for parameters having no NpgsqlDbType or DataTypeName. Try setting one of these values to the expected database type..) error.

Hmm.. I was definitely able to get the integration test to work with Npgsql v7.
https://github.com/JordanMarr/SqlHydra/blob/7b98ed435efd49a40be14b33bad6400194503d3d/src/Tests/Npgsql/QueryIntegrationTests.fs#L564

npgsql is versioned at 7... no joy :(
I have yet to take a look at the tests. I'll do that now :)

Ok, the following works when I use insertTask instead of insertAsync:
#r "nuget: SqlHydra.Query"
#r "nuget: Npgsql, 7.0.6"

#r "./src/Reports/bin/Debug/net8.0/Reports.dll"

open System
open System.Threading.Tasks

open SqlHydra.Query
open SqlHydra.Query.NpgsqlExtensions
open Npgsql

// the database schema generated by SqlHydra.Cli
open GoSeq.ETL.Reports.DbSchema

// the connection string for my local docker postgres instance
let connectionString = "Host=db;Username=goseq;Password=groin-spoiling-juggling-alone;Database=goseq"

let openContext () =
    let compiler = SqlKata.Compilers.PostgresCompiler()
    let conn = new NpgsqlConnection(connectionString)

    conn.Open()

    new QueryContext(conn, compiler)

let (sample: ``public``.samples) = {
    id = "sample-id"
    category = ``public``.sample_categories.normal
    biopsy_site = Some "biopsy-site"
    sample_type = Some "sample-type"
    sample_reports_count = 0
    created_at = DateTime.UtcNow
    updated_at = DateTime.UtcNow
}

let upsertSample () : int Task =
    use ctx = openContext ()

    let dataSourceBuilder = NpgsqlDataSourceBuilder(connectionString)

    dataSourceBuilder.MapEnum<``public``.sample_categories>() |> ignore

    insertTask (Create (fun _ -> ctx)) {
        for existingSample in table<``public``.samples> do
        entity sample
        excludeColumn sample.sample_reports_count
        onConflictDoUpdate existingSample.id (
            existingSample.sample_type,
            existingSample.biopsy_site,
            existingSample.category,
            existingSample.updated_at
        )
    }

let upsertions = upsertSample () |> Async.AwaitTask |> Async.RunSynchronously

upsertions

The following snippet crashes when I use insertAsync.
#r "nuget: SqlHydra.Query"
#r "nuget: Npgsql, 7.0.6"

#r "./src/Reports/bin/Debug/net8.0/Reports.dll"

open System
open System.Threading.Tasks

open SqlHydra.Query
open SqlHydra.Query.NpgsqlExtensions
open Npgsql

// the database schema generated by SqlHydra.Cli
open GoSeq.ETL.Reports.DbSchema

// the connection string for my local docker postgres instance
let connectionString = "Host=db;Username=goseq;Password=groin-spoiling-juggling-alone;Database=goseq"

let openContext () =
    let compiler = SqlKata.Compilers.PostgresCompiler()
    let conn = new NpgsqlConnection(connectionString)

    conn.Open()

    new QueryContext(conn, compiler)

let (sample: ``public``.samples) = {
    id = "sample-id"
    category = ``public``.sample_categories.normal
    biopsy_site = Some "biopsy-site"
    sample_type = Some "sample-type"
    sample_reports_count = 0
    created_at = DateTime.UtcNow
    updated_at = DateTime.UtcNow
}

let upsertSample () : int Async =
    use ctx = openContext ()

    let dataSourceBuilder = NpgsqlDataSourceBuilder(connectionString)

    dataSourceBuilder.MapEnum<``public``.sample_categories>() |> ignore

    insertAsync (Create (fun _ -> ctx)) {
        for existingSample in table<``public``.samples> do
        entity sample
        excludeColumn sample.sample_reports_count
        onConflictDoUpdate existingSample.id (
            existingSample.sample_type,
            existingSample.biopsy_site,
            existingSample.category,
            existingSample.updated_at
        )
    }

let upsertions = upsertSample () |> Async.RunSynchronously

upsertions

I get this error:
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'NpgsqlConnection'.
   at Npgsql.NpgsqlConnection.Open(Boolean async, CancellationToken cancellationToken)
   at Npgsql.NpgsqlConnection.Open()
   at SqlHydra.Query.SelectBuilders.ContextUtils.tryOpen(QueryContext ctx)
   at SqlHydra.Query.SelectBuilders.ContextUtils.getContext(ContextType ct)
   at SqlHydra.Query.InsertBuilders.Run@95-23.Invoke(Unit unitVar)
   at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510
   at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112
--- End of stack trace from previous location ---
   at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454
   at Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously[a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1140
   at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1167
   at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1511
   at <StartupCode$FSI_0003>.$FSI_0003.main@() in /workspace/etl/scratch.fsx:line 97
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

Instead of manually creating the ctx, you should let SqlHydra manage creating and disposing the context for you:
let upsertSample () : int Async =
    // use ctx = openContext () // Remove this

    let dataSourceBuilder = NpgsqlDataSourceBuilder(connectionString)

    dataSourceBuilder.MapEnum<``public``.sample_categories>() |> ignore

    insertAsync (Create openContext) {
        for existingSample in table<``public``.samples> do
        entity sample
        excludeColumn sample.sample_reports_count
        onConflictDoUpdate existingSample.id (
            existingSample.sample_type,
            existingSample.biopsy_site,
            existingSample.category,
            existingSample.updated_at
        )
    }

If you want to explicitly manage the ctx creation and disposal yourself, you will need to wrap your entire method in an async CE to prevent the ctx from being disposed prematurely:
let upsertSample () : int Async = async {
    use ctx = openContext ()

    let dataSourceBuilder = NpgsqlDataSourceBuilder(connectionString)

    dataSourceBuilder.MapEnum<``public``.sample_categories>() |> ignore

    insertAsync (Shared ctx) {
        for existingSample in table<``public``.samples> do
        entity sample
        excludeColumn sample.sample_reports_count
        onConflictDoUpdate existingSample.id (
            existingSample.sample_type,
            existingSample.biopsy_site,
            existingSample.category,
            existingSample.updated_at
        )
    }
}


Network Links

As we have discussed privately this PR introduces the concept of "NetworkLinks" into the library.
How to use:
To have a block have the ability to be a network link, it must have a few things:

It must have the fluffyalien_energisticscore:network_link custom component.
It must have the tag:fluffyalien_energisticscore:network_link block tag.
This is all the requirements, things like ticking components are not needed for this type.

User-facing API:
To create a Network link, we can use the NetworkLinks.getNetworkLink function. To this we can pass a Block and it will find (or create if it doesn't exist) the network. Under the hood this will instantiate a new entity type which stores all outbound connections to other network links, this entity is completely abstracted away from the end user, since they don't need to care about this.
This function will return a NetworkLinkNode, there are two classes that I have added that share this same name, one for the internal core side, and one for the public API. The public API implementation handles sending IPC messages to the backend since we cannot edit the dynamic properties of the data entity from other addons due to dynamic properties being sandboxed. The internals of the core library should never use this public facing implementation of NetworkLinkNode since all it does is route IPC messages into the internal version, so the internal version should just be used directly.
I have fully documented the public facing NetworkLinkNode class and marked everything with the @beta tag.

All the issues should be fixed now, (minus the one with events, which I will wait for your response on, just in case there is another alternative specifically for this case), otherwise should be good to merge if there is nothing else

made some changes. waiting for your response before I merge

Lgtm


Can you please add a license?

Thank you for the reminder. The appropriate license has been added.


ModuleNotFoundError: No module named 'undetected_chromedriver.v2'

After doing pip install -r requirements.txt on both windows and wsl, I get the error ModuleNotFoundError: No module named 'undetected_chromedriver.v2' when running quickstart.py
Full error:
Traceback (most recent call last):
  File "c:\Users\wwwde\Desktop\TinderBotz-master\TinderBotz-master\quickstart.py", line 5, in <module>
    from tinderbotz.session import Session
  File "c:\Users\wwwde\Desktop\TinderBotz-master\TinderBotz-master\tinderbotz\__init__.py", line 1, in <module>
    from tinderbotz.session import Session
  File "c:\Users\wwwde\Desktop\TinderBotz-master\TinderBotz-master\tinderbotz\session.py", line 4, in <module>
    import undetected_chromedriver.v2 as uc
ModuleNotFoundError: No module named 'undetected_chromedriver.v2'

Do a 'pip freeze' to check if your undetected chromedriver has been installed in the same environment you're running your code.


Fix Git subscription for Helm charts not deleting older HelmRelease

Signed-off-by: Mike Ng<EMAIL_ADDRESS>for https://github.com/stolostron/backlog/issues/22378

/lgtm


Registration Phase 1 of Authentication

Added modules needed for authentication: Login, Registration, AuthViewModel for Firebase
Removed Room Database due to conflicts
Added basic registration UI and added icon dependencies

Merging phase one of authentication


sampler: init at 1.0.3

Motivation for this change
Sampler is a tool for a simple monitoring and alerting in console with ASCII graphics.
See https://github.com/sqshq/sampler.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @

@srhb Thanks for the review! Fixed.

@GrahamcOfBorg build sampler


lr-melonds installation

I wanted to download a DS emulator for my rpi5, and heard lr-melonds was the best performing in general, so I got the core's installation script, and went to set it up, and it says in the flags:
all rpi5! rpi4
I have a 64bit, 8gb ram pi5 setup.
I also had an issue with SRB2kart and openlara

Well openlara doesn't work on 64bit. So that's why it doesn't work
Same for lr-melonds. It works on the pi4
Use lr-melondsds. That works on pi5
I also know about SRB2kart. Have not figured out that one yet. But that also might be for now. Not playable on the 5 since it's 64bit


[INTEL MKL] Graph pattern matcher for grappler.

This PR is to help finding large pattern (e.g. tf.nn.gelu) in a the data flow graph for grappler graph optimization. This has been motivated from pattern matching that exists in the graph_transforms tools (https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/graph_transforms/README.md)
Intended use is for remapper optimizer. User can get an initial match for a pattern consisting of op types in the nodes with a simple grammar like
leaf_pattern ::= `{` op_type `}`
pattern ::= leaf_pattern |
                  `{` op_type `,` `{` pattern `,` ... `,` pattern `}` `}`

Here a pattern syntax has a root and children (typically input ops feeding the root). Each child is a sub-pattern in a recursive manner. After an initial match has been found, additional constraint like device, shapes, constant values etc. will be used for determining a true match for a fusion.

@ezhulenev Thanks for approving this PR.
I have a side question. Is it fine to swap the order of arithmetic optimizer with the remapper in grappler? This would simplify specifying a pattern that can be viewed from TF api level. Otherwise, a subgraph generated from TF apis would be modified by the arithmetic optimizer and a user needs to look at the pattern after arithmetic optimizer.

That might be problematic, I remember that we had few performance regressions when I moved arithmetic optimizer, but I don't remember the details. Maybe it was not arithmetic optimizer :) Let's try, if it will lead to perf regressions or test failures I'll get a notification.

@ezhulenev I have created a test PR for moving remapper before arithmetic_optimizer.
https://github.com/tensorflow/tensorflow/pull/46097

There are few build errors with this PR:
CppCompile action:
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:23:10: error: module //third_party/tensorflow/core/grappler/utils:pattern_utils_test does not depend on a module exporting 'third_party/tensorflow/core/util/dump_graph.h'
see http://go/cpp-features#layering_check; to fix run:
build_cleaner //third_party/tensorflow/core/grappler/utils:pattern_utils_test
#include "third_party/tensorflow/core/util/dump_graph.h"
         ^
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:172:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:254:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:340:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:361:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:397:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:418:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:448:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  mutation->Apply();
  ^~~~~~~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:453:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  mutation->Apply();
  ^~~~~~~~~~~~~~~
9 errors generated.

There are few build errors with this PR:
CppCompile action:
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:23:10: error: module //third_party/tensorflow/core/grappler/utils:pattern_utils_test does not depend on a module exporting 'third_party/tensorflow/core/util/dump_graph.h'
see http://go/cpp-features#layering_check; to fix run:
build_cleaner //third_party/tensorflow/core/grappler/utils:pattern_utils_test
#include "third_party/tensorflow/core/util/dump_graph.h"
         ^
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:172:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:254:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:340:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:361:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:397:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:418:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  graph_view.SortTopologically(/*ignore_cycles=*/false, {});
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~                   ~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:448:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  mutation->Apply();
  ^~~~~~~~~~~~~~~
third_party/tensorflow/core/grappler/utils/pattern_utils_test.cc:453:3: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result]
  mutation->Apply();
  ^~~~~~~~~~~~~~~
9 errors generated.

@ezhulenev I have addressed the errors. Please check.

@ezhulenev I have addressed the errors. Please check.

@ezhulenev Is there still error?

@ezhulenev Is there still error?

It was approved internally just now, should be submitted soon.

It was approved internally just now, should be submitted soon.


Support edge dictionary

This is Experimental feature that runs with Edge Dictionary.
Before start parsing, falco calls Fastly API and retrieves Edge Dictionaries on the latest version in destination service.
To run with this, the user needs:

Apply -r, --remote flag in the command
Set environment variables named FASTLY_SERVICE_ID and FASTLY_API_KEY to call Fastly API

For example:
export FASTLY_SERVIE_ID=xxxxxxxx
export FASTLY_API_KEY=yyyyyyy
falco -v -r /path/to/vcl/default.vcl

Then falco fetches Edge Dictionary via Fastly API and predefined as TABLE:
table [dict_name] {
  "[dict_item_key]": "[dict_item_value]",
  ...
}

The Edge Dictionary always treats values type as STRING.

Nice. I'll take another look later, but I think README needs a bit more clarification about this addition.

@smaeda-ks  divided fastly remote document in docs/remote.md with more details in another commit of https://github.com/ysugimoto/falco/pull/20/commits/720d2b1dc65dc859ae7abf90c044ec86ca081e29

I'll merge this PR for our usage. If you have any other opinion, let me know in another issue.


Using ProviderStateGenerator should not allow mock server to match any request

Via: https://github.com/pact-foundation/pact-js/issues/1088
Summary
When I add interaction like this:
pact.addInteraction({
        states: [{ description: 'A user' }],
        uponReceiving: 'get one user',
        withRequest: {
            method: 'GET',
            path: fromProviderState('${iri}', '/api/users/14f6626f-c51e-4311-ac52-182c8f2a7634')
        },
        willRespondWith: {
            status: 200,
            body: {
                id: '14f6626f-c51e-4311-ac52-182c8f2a7634'
            },
        },
    });

I expect mock server should return 404 for this request GET /any, but it return 200 with body {"id": "14f6626f-c51e-4311-ac52-182c8f2a7634"}
Expected behaviour
The request GET /any should return 404, and mock server should report the request GET /api/users/14f6626f-c51e-4311-ac52-182c8f2a7634 is expected but not received.
Actual behaviour
The request GET /any return 200 with json body that didn't belong to it.
Steps to reproduce
Here is the demo project https://github.com/tienvx/test-from-provider-state-generator
Relevant log files
[21:12:21.618] INFO (27131): 0.4.7: pact native library successfully found, and the correct version
2023-08-11T14:12:21.624175Z DEBUG ThreadId(01) pact_ffi::mock_server::handles: detected pact:matcher:type, will configure a matcher
2023-08-11T14:12:21.624206Z DEBUG ThreadId(01) pact_ffi::mock_server::handles: detected pact:generator:type, will configure a generators
2023-08-11T14:12:21.624683Z DEBUG ThreadId(01) pact_plugin_driver::catalogue_manager: Updated catalogue entries:
core/transport/http
core/transport/https
2023-08-11T14:12:21.624703Z DEBUG ThreadId(01) pact_plugin_driver::catalogue_manager: Updated catalogue entries:
core/content-generator/binary
core/content-generator/json
core/content-matcher/json
core/content-matcher/multipart-form-data
core/content-matcher/text
core/content-matcher/xml
2023-08-11T14:12:21.624722Z DEBUG ThreadId(01) pact_plugin_driver::catalogue_manager: Updated catalogue entries:
core/matcher/v1-equality
core/matcher/v2-max-type
core/matcher/v2-min-type
core/matcher/v2-minmax-type
core/matcher/v2-regex
core/matcher/v2-type
core/matcher/v3-content-type
core/matcher/v3-date
core/matcher/v3-datetime
core/matcher/v3-decimal-type
core/matcher/v3-includes
core/matcher/v3-integer-type
core/matcher/v3-null
core/matcher/v3-number-type
core/matcher/v3-time
core/matcher/v4-array-contains
core/matcher/v4-equals-ignore-order
core/matcher/v4-max-equals-ignore-order
core/matcher/v4-min-equals-ignore-order
core/matcher/v4-minmax-equals-ignore-order
core/matcher/v4-not-empty
core/matcher/v4-semver
2023-08-11T14:12:21.624852Z DEBUG ThreadId(01) pact_mock_server::mock_server: Started mock server on <IP_ADDRESS>:36287
*
2023-08-11T14:12:21.641024Z DEBUG tokio-runtime-worker hyper::proto::h1::io: parsed 7 headers
2023-08-11T14:12:21.641032Z DEBUG tokio-runtime-worker hyper::proto::h1::conn: incoming body is empty
2023-08-11T14:12:21.641047Z DEBUG tokio-runtime-worker pact_mock_server::hyper_server: Creating pact request from hyper request
2023-08-11T14:12:21.641051Z DEBUG tokio-runtime-worker pact_mock_server::hyper_server: Extracting query from uri /any
2023-08-11T14:12:21.641067Z  INFO tokio-runtime-worker pact_mock_server::hyper_server: Received request GET /any
2023-08-11T14:12:21.641071Z DEBUG tokio-runtime-worker pact_mock_server::hyper_server:
      ----------------------------------------------------------------------------------------
       method: GET
       path: /any
       query: None
       headers: Some({"host": ["<IP_ADDRESS>:36287"], "accept": ["*/*"], "accept-language": ["*"], "sec-fetch-mode": ["cors"], "accept-encoding": ["gzip", "deflate"], "connection": ["keep-alive"], "user-agent": ["undici"]})
       body: Empty
      ----------------------------------------------------------------------------------------

2023-08-11T14:12:21.641104Z  INFO tokio-runtime-worker pact_matching: comparing to expected HTTP Request ( method: GET, path: /api/users/14f6626f-c51e-4311-ac52-182c8f2a7634, query: None, headers: None, body: Missing )
2023-08-11T14:12:21.641108Z DEBUG tokio-runtime-worker pact_matching:      body: ''
2023-08-11T14:12:21.641109Z DEBUG tokio-runtime-worker pact_matching:      matching_rules: MatchingRules { rules: {PATH: MatchingRuleCategory { name: PATH, rules: {DocPath { path_tokens: [Root], expr: "$" }: RuleList { rules: [Type], rule_logic: And, cascaded: false }} }} }
2023-08-11T14:12:21.641116Z DEBUG tokio-runtime-worker pact_matching:      generators: Generators { categories: {PATH: {DocPath { path_tokens: [Root], expr: "$" }: ProviderStateGenerator("${iri}", None)}} }
2023-08-11T14:12:21.641131Z DEBUG tokio-runtime-worker pact_matching::matchers: String -> String: comparing '/api/users/14f6626f-c51e-4311-ac52-182c8f2a7634' to '/any' ==> true cascaded=false matcher=Type
2023-08-11T14:12:21.641139Z DEBUG tokio-runtime-worker pact_matching: expected content type = '*/*', actual content type = '*/*'
2023-08-11T14:12:21.641173Z DEBUG tokio-runtime-worker pact_matching: content type header matcher = 'RuleList { rules: [], rule_logic: And, cascaded: false }'
2023-08-11T14:12:21.641178Z DEBUG tokio-runtime-worker pact_matching: --> Mismatches: []
2023-08-11T14:12:21.641197Z DEBUG tokio-runtime-worker pact_mock_server::hyper_server: Test context = {"mockServer": Object {"port": Number(36287), "url": String("http://<IP_ADDRESS>:36287")}}
2023-08-11T14:12:21.641204Z  INFO tokio-runtime-worker pact_mock_server::hyper_server: Request matched, sending response
2023-08-11T14:12:21.641206Z DEBUG tokio-runtime-worker pact_mock_server::hyper_server:
          ----------------------------------------------------------------------------------------
           status: 200
           headers: Some({"Content-Type": ["application/json"]})
           body: Present(45 bytes, application/json) '{"id":"14f6626f-c51e-4311-ac52-182c8f2a7634"}'
          ----------------------------------------------------------------------------------------

2023-08-11T14:12:21.641243Z DEBUG tokio-runtime-worker hyper::proto::h1::io: flushed 397 bytes
2023-08-11T14:12:21.646194Z DEBUG ThreadId(01) pact_matching::metrics: Could not get the tokio runtime, will not send metrics - there is no reactor running, must be called from the context of a Tokio 1.x runtime
2023-08-11T14:12:21.646203Z DEBUG ThreadId(01) pact_mock_server::server_manager: Shutting down mock server with ID 804f0cc0-02ce-47b5-ac0f-8c84f595b26c - MockServerMetrics { requests: 1, requests_by_path: {"/any": 1} }
2023-08-11T14:12:21.646209Z DEBUG ThreadId(01) pact_mock_server::mock_server: Mock server 804f0cc0-02ce-47b5-ac0f-8c84f595b26c shutdown - MockServerMetrics { requests: 1, requests_by_path: {"/any": 1} }

The interaction has been misconfigured with a type matcher for the path. This is a Pact-JS issue.
matching_rules: MatchingRules { rules: {PATH: MatchingRuleCategory { name: PATH, rules: {DocPath { path_tokens: [Root], expr: "$" }: RuleList { rules: [Type], rule_logic: And, cascaded: false }} }} }

Ah, good spot! So I need to think about how this function should be defined. It's currently both a matcher and a generator - I think it should not be a matcher itself, but potentially could also accept a matcher or expression in the example
e.g. matcher
    withRequest: {
        method: 'GET',
        path: fromProviderState('${iri}', regex(/..../, '/api/users/14f6626f-c51e-4311-ac52-182c8f2a7634'))
    },

or expression
    withRequest: {
        method: 'GET',
        path: fromProviderState('${iri}', "matching(regex, '\\xyz', '/api/users/14f6626f-c51e-4311-ac52-182c8f2a7634')")
    },

Which one (if any) is the right approach here?

Pact-JVJM only sets the generator: https://github.com/search?q=repo%3Apact-foundation%2Fpact-jvm pathFromProviderState&type=code

ok cool, thanks. Is it true that any expression can be used in the second part, or only expressions (of another kind) that contain the dynamically replaceable values?

I don't know if that is true. It could be. It could also be false.

Closing, Pact JS issue (introduced in https://github.com/pact-foundation/pact-js/commit/5fdf7eb8284d73030049e1abf19c34445981510b#diff-884c1c7cbdaafa772a7a428e0ca83ce1fc58f03972dfa0fabcb89106d6ac35f5R409).


Let someone re-run the wizard with an uploaded YAML file that went through the wizard before

There is a "round trip" feature for runaeml.yaml which might help w/ this

#459


Add documentation

Needs better documentation

Is there a way to use the Menu on its own ?

@jayesbe Sure. I used my own component for Menu but now there is native one. So it's very simple. Here's an example:
import React, { Component, UIManager } from 'react-native'
import Icon from './Icon';
import IconToggle from './IconToggle';

export default class List extends Component {

    _onMenuPressed = () => {
        const { menuActions } = this.props;

        UIManager.showPopupMenu(
            findNodeHandle(this.refs.menu), // place on screen where the menu will be rendered
            ['here', 'are', 'options'],
            () => {}, // erro callback
            (result, value) => {} // success callback
        );
    };
    render() {
         <IconToggle onPress={this._onMenuPressed} >
             <Icon name={'more-vert'} ref="menu" /> // place on screen where the menu will be rendered
         </IconToggle>
    }
}

Thanks I will give this a shot.


The last commit breaks redis-follower startup script

Last modification (Google's Copyrights comments) of redis-follower startup script [guestbook/redis-follower/run.sh] breaks it. Commit fb608f7fe47ff9213caefab7851ac24a699f5bee
The first row of run.sh should be #!/bin/bash but it is after copyrights and because of it script is using dash instead of bash for running it and it won't work properly. It's breaking if else statement logic.
/run.sh
/run.sh: 19: /run.sh: [[: not found

Thanks for reporting this issue, @suulperi! :)
It will be resolved by https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/pull/442 — once I get an approval from my team.


Fix Codacy Code Style Issues

Ticket Link
Groupings-539
Test Checklist

[x] Unit Tests Passed:
[x] Jasmine Tests Passed:
[x] General Visual Inspection:

Can you squash all these commits into a single one?

Looks great. One thing I'm a bit curious about is the angular.extend updates. What we had there before is just like the numerous examples on the web. Did we remove the extra "$scope" because Codacy was complaining about it or something?

Looks great. One thing I'm a bit curious about is the angular.extend updates. What we had there before is just like the numerous examples on the web. Did we remove the extra "$scope" because Codacy was complaining about it or something?

Yes, this is the issue in question: link


Add --providers flag doc to README.md

What type of PR is this?

/kind documentation
What this PR does / why we need it:
This is the follow-up work of  pr #53, Add --providers flag to README.md  doc.
Which issue(s) this PR fixes:

Fixes #
Does this PR introduce a user-facing change?:

None

Thanks @jeffyjf !
/lgtm
/approve


Desired speed Critic

Penalize for difference between trajectories velocities (mean?), and maximum velocity

I would not over complicate things unless we noticed that in steady state navigation the robot was selectively not going as fast as it could be. From the tuning we had before, I tested it and it was right at the top range so I think it was OK. But I do recall when we had more 'restrained' tuning to path following, it did not achieve the max speed - so perhaps that could be of interest.
I'd be concerned with jerky motion if we did this and wasn't balanced with a smoothing critic https://github.com/artofnothingness/mppic/issues/41 or kinematic feasibility critic. Then we're talking about maximizing speed, minimizing smoothness, possibly adding more critics for slowing down in particular situations (like heavy turns, etc), that's starting to make the optimization space much less convex. Not saying that we might not eventually need to do something like this -- but I'd wait for it to be evidence based (e.g. there's a problem). Is there a problem with this yet?

I would add that in previous parameters there was huge goal cost, which made problems with obstacles and sometimes led to stucking in front of obstacles (if goal right behind the obstacle)
Generally i agree

That's a good point. I think this can be rolled into the discussion in #41 though, I think these are in the same theme and all intrinsically tied together.

From #53 I think we found that the path follow critic incentives going at speed. Do we still need a separate critic?

Probably path follow will be enough


Idea: Reflections for WeightInfo functions

Currently we have the WeightInfo trait which exposes several weight functions in the form of:
pub trait WeightInfo {
	fn call_a() -> Weight;
	fn call_b() -> Weight;
	…
}

Sometimes you want to iterate over all weight functions and do something weight their name or result (eg in https://github.com/paritytech/substrate/pull/12485).
One way to do this would be to have another type; WeightMetaInfo whose implementation is auto-generated as well:
pub trait WeighMetatInfo<W: WeightInfo> {
	/// Executes a callback for each weight function by passing in its name and return value.
	fn visit_weight_functions<F: Fn(&'static str, Weight) -> R, R>(f: F) -> Vec<R>;
}

This would allow us to do:

Mocked WeigtInfo implementations such that the weight of a call can be dynamically set in a test (Is already possible, but not in a spell-checked way without ugly macros).
Checking that all weights of a pallet are in a specific bound as part of the runtime-integrity check (eg. no Zero or stray todo!()).

I am not entirely convinced that this is the best design, but having this in some way would be nice.

One way could refactor out all the code generation logic. Instead of generate codes that hard to be consumed by other tools, it should generate data.
e.g.
trait GetWeightInfoData {
	fn weight_data(call: Call) -> WeightInfoData;
	fn weight<const S: usize>(call: Call, args: [u32: S]) -> Weight {
		// do the math
	}
}

struct WeightData {
	weight: Weight,
	reads: u64,
	writes: u64,
}

struct WeightInfoData {
	base: WeightData,
	args: Vec<WeightData>,
}

enum Call {
	AddRegistrar,
	SetIdentity,
}

impl GetWeightInfoData for Call {
	fn weight_data(call: Call) -> WeightInfoData {
		match call {
			Call::AddRegistrar => WeightInfoData {
				base: WeightData {
					weight: Weight::from_ref_time(16_649_000 as u64),
					reads: 1,
					writes: 1,
				},
				args: vec![
					WeightData {
						weight: Weight::from_ref_time(241_000 as u64),
						reads: 0,
						writes: 0,
					}
				],
			}
			Call::SetIdentity => WeightInfoData {
				base: WeightData {
					weight: Weight::from_ref_time(31_322_000 as u64),
					reads: 1,
					writes: 1,
				},
				args: vec![
					WeightData {
						weight: Weight::from_ref_time(252_000 as u64),
						reads: 0,
						writes: 0,
					},
					WeightData {
						weight: Weight::from_ref_time(312_000 as u64),
						reads: 0,
						writes: 0,
					}
				],
			}
		}
	}
}

In that way it is easy to work with WeightInfoData and do whatever check. Could do some derive on the enum Call to be able to iterate all the calls.

Thanks for the ideas @xlc. Using data here instead of math terms should make it easier downstream indeed.
Could be extended to take the correct component ranges into account, instead of just u32.
The only problem I see is that pallet Call does not correspond 1:1 to benchmark functions. Sometimes we use a .max in a pallet::weight annotation or something.
Also I would like to have some for_all_weight_functions! macro that can be used for downstream code generation per benchmark function. So that a MockedWeightInfo could be macro-generated.


Updated formatting of NuGetDefaults.Config section

Replaced sentence with a table to improve the readability of where the NuGetDefaults.Config file should reside, depending on NuGet version and OS platform.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/consume-packages/Configuring-NuGet-Behavior.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Thanks; good change.


missing architecture x86_64

running lipo -info ./MobFoxSDKCoreDynamic.framework/MobFoxSDKCoreDynamic
on the v3.1.9c release returns
Architectures in the fat file: ./MobFoxSDKCoreDynamic.framework/MobFoxSDKCoreDynamic are: armv7 arm64
Which prevents linking for simulator.

Hi,
We're intending on releasing an update this week. I'll try to include this fix as well.

Great! You may also want to make sure that #55 will be solved with this release, right now it's not allowing archiving when you use 3.1.9c via cocoapods.

Fixed in 3.2.0


coordinate fields properly selected

@rajrsingh changes have been made to the mapbox rendering engine, can you please test again these changed to make sure no regression has been introduced

@vabarbosa I've done some tests and everything works.

i have tested with a couple notebooks i have with maps and they seemed to display as expected


Adjust recall plot

This PR adjusts the visualization of the recall plot, to align better with ASReview colors.

Calculation of metrics is also corrected by removing the -n_queries argument.


UI style Issue in Scopes table

Steps:

Create an API and add scopes
Assign them to resources
Go to the overview page
Click edit button
It redirects to the scope page

Once refresh the scope page, that style issue is gone

This is not reproducible now. Hence closing.


Unable to create Model

First, help us help you by providing the following information when opening an issue.

[ ] Which version of Forseti Security you're using (look in /home/ubuntu/forseti-security/google/cloud/forseti/init.py
on the client).
"""Google Cloud Forseti."""
version = '2.25.1'
package_name = 'forseti-security'

[ ] Which module(s) (inventory, scanner, enforcer, explain) you're having trouble with.
I believe its inventory therefor causing me not to be able to create a model to use any other module

[ ] Include errors, log output, and host operating system, including installed packages.
Ubuntu 18.04.4

Error that returns on forseti-server-vm when trying to run command "forseti model create --inventory_index_id <INVENTORY_INDEX_ID> <MODEL_NAME>"
"Error occurred on the server side, message: <_Rendezvous of RPC that terminated with:
status = StatusCode.UNKNOWN
details = "Exception calling application: (sqlalchemy.exc.InvalidRequestError) Can't reconnect until invali
d transaction is rolled back [SQL: 'SELECT model.name AS model_name, model.handle AS model_handle, model.descriptio
n AS model_description, model.watchdog_timer_datetime AS model_watchdog_timer_datetime, model.created_at_datetime A
S model_created_at_datetime, model.etag_seed AS model_etag_seed \nFROM model \nWHERE model.name = %(param_1)s'] [pa
rameters: [{'%(140219278530544 param)s': 'modelrulestest002'}]]"
debug_error_string = "{"created":"@1593458490.581113361","description":"Error received from peer ipv6:[::1]
:50051","file":"src/core/lib/surface/call.cc","file_line":1052,"grpc_message":"Exception calling application: (sqla
lchemy.exc.InvalidRequestError) Can't reconnect until invalid transaction is rolled back [SQL: 'SELECT model.name A
S model_name, model.handle AS model_handle, model.description AS model_description, model.watchdog_timer_datetime A
S model_watchdog_timer_datetime, model.created_at_datetime AS model_created_at_datetime, model.etag_seed AS model_e
tag_seed \nFROM model \nWHERE model.name = %(param_1)s'] [parameters: [{'%(140219278530544 param)s': 'modelrulestes
t002'}]]","grpc_status":2}"

"

[ ] Note how you deployed (via Deployment Manager, Terraform, local system, etc.).
Deployed using terraform

Secondly, if the issue is a feature request, be descriptive regarding what needs to be
changed and why, e.g. what to scan for, what would be a 'good' state and what would be
a 'violation' etc.
Finally, be sure to see the FAQ and Get Help
for assistance.
Thanks!

Hi Forseti team, can i please get some help here.

While troubleshooting the model creation today, we noticed that Forseti is getting some 400 errors for getting G Suite groups. Forseti is able to get most of the users and groups successfully it appears. This G Suite domain has a lot of users/groups, which is why the inventory/model is taking so long. @ogunz Can you supply a sample error message from the G Suite errors?
We are going to wait for the inventory to create (which is taking 24+ hours), and then will see if we can create a model. We noticed that the server today had an error message in the console logs about "too many open files". We verified the ubuntu ulimit's were set at reasonable levels, and watched an inventory to see if a lot of open files/sockets were being left open. It didn't appear like a lot (about 1,000) after 10-15 minutes, however it might get worse.
Some ideas to troubleshoot further:

try using a machine type bigger than n1-standard-8. It didn't seem like there were any resource constraints, but can't hurt.
come up with some sql commands that can be used to monitor the inventory/model processes
add some more helpful logging to inventory/model creation

@ogunz I have found an issue with the Forseti model creation. It appears you have seen this issue Can't reconnect until invali d transaction is rolled back, so hopefully this fix will help. See: https://github.com/forseti-security/forseti-security/issues/3774

Can you give more clarity on "Update model creation to ignore the case of
the permission.". How to achieve this task?
On Thu, Jul 16, 2020 at 11:21 PM Gregg Kowalski<EMAIL_ADDRESS>wrote:

@ogunz https://github.com/ogunz I have found an issue with the Forseti
model creation. It appears you have seen this issue Can't reconnect until
invali d transaction is rolled back, so hopefully this fix will help.
See: #3774
https://github.com/forseti-security/forseti-security/issues/3774
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/forseti-security/forseti-security/issues/3767#issuecomment-659887322,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJFJO5R6HXEPJJEDFIXQA2DR37UWTANCNFSM4OMSHDQA
.

--
Oscar Gonzalez | Application Engineer

I will be providing a fix. Working on a couple options, and hope to have this merged into the main branch shortly. You can switch to use that branch/version of Forseti until a patch release comes out.

Hi Gregg,
How can I switch to use the working branch/version of forseti until a patch
release comes out? otherwise whats the eta on the patch fix?
On Fri, Jul 17, 2020 at 8:53 PM Gregg Kowalski<EMAIL_ADDRESS>wrote:

I will be providing a fix. Working on a couple options, and hope to have
this merged into the main branch shortly. You can switch to use that
branch/version of Forseti until a patch release comes out.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/forseti-security/forseti-security/issues/3767#issuecomment-660419281,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJFJO5TLRXWI3YZQ3ZRA5PDR4EMEHANCNFSM4OMSHDQA
.

--
Oscar Gonzalez | Application Engineer

Hi @ogunz, the fix has been merged into the master branch. You can deploy this version with Terraform by setting forseti_version = "master"'. It is recommended to use the master branch version of the Forseti Terraform module as well, which can be done by using the module sourced from GitHub source = "git::https://github.com/forseti-security/terraform-google-forseti.git"`.
I am working on a patch release that will be out next week. If you do test the new version, please let me know if it resolves the issue for you.

@ogunz The latest Forseti release is out to fix the model creation issue. Please upgrade at your convenience and let me know if the issue is resolved for you. You can upgrade with Terraform by setting the Forseti module version to 5.2.2 or ~> 5.2.0.

The model creation issue related to the duplicate permissions has been resolved, but there is an issue happening during model creation to save the G Suite group members:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2006, "MySQL server has gone away (ConnectionResetError(104, 'Connection reset by peer'))") [SQL: 'INSERT INTO {{ MODEL_HANDLE }}_group_members

We have tried setting cloudsql_net_write_timeout = 600 with no luck and are exploring other MySQL flags including max_allowed_packet.

Neither of the MySQL flags helped, the model creation still fails here while storing the G Suite memberships. I believe this could be resolved by using one of the SQLAlchemy bulk operations or by adding the rows to the sessions and flushing after x number of items; the latter is how other places in the code typically deal with this.

Latest changes are on branch: feature/store-gsuite-membership-in-batch
There seems to be more success with this branch, however now hitting this error:
Field 'group_name' doesn't have a default value\") [SQL: 'INSERT INTO `{{ MODEL }}_group_members

...

File \"/usr/local/lib/python3.6/dist-packages/forseti_security-2.25.1-py3.6.egg/google/cloud/forseti/services/model/importer/importer.py\", line 357, in run\n    post_action=self._store_gsuite_membership_post\n  File \"/usr/local/lib/python3.6/dist-packages/forseti_security-2.25.1-py3.6.egg/google/cloud/forseti/services/model/importer/importer.py\", line 444, in model_action_wrapper\n    post_action()\n  File \"/usr/local/lib/python3.6/dist-packages/forseti_security-2.25.1-py3.6.egg/google/cloud/forseti/services/model/importer/importer.py\", line 504, in _store_gsuite_membership_post\n


Specifying destination in ProcessingOutput silently fails - and does not write to the destination S3 bucket

This works:
sklearn_processor.run(code='preprocess-scikit.py',
                                       outputs=[ProcessingOutput(output_name='train_data',
                                                                   source='/opt/ml/processing/output/train'),

This silently fails and does not write to the output s3 location:
s3_output_train_data = 's3://{}/{}/train'.format(bucket, output_prefix)

sklearn_processor.run(code='preprocess-scikit.py',
                                       outputs=[ProcessingOutput(output_name='train_data',
                                                                      source='/opt/ml/processing/output/train',
                                                                      destination=s3_output_train_data),

(Spent lots of time debugging this ^^)
Any suggestions?

Closed and moved this to the SageMaker Python SDK Repo:  https://github.com/aws/sagemaker-python-sdk/issues/1343


add authorization to techdocs api requests

Hey, I just made a Pull Request!
With https://github.com/backstage/backstage/pull/3916 adopters can require authorization for backend api requests. For this to work all clients need to send an authorization header. This PR adds that authorization header to techdocs api requests, as per the standard established in https://github.com/backstage/backstage/pull/3914.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

Tugboat has finished building the preview for this pull request!
Link:

https://pr4542-va3ld2grd3c41toc2leafb0spa4g0ix8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/602ae4e9fcb22d0ba95624c2

@erikxiv : Sweet ! Thanks for doing this !
There is one additional request that I have. You may tackle this yourself (or I can try to do it). The readers that process and generate the HTML (https://github.com/backstage/backstage/tree/master/plugins/techdocs/src/reader/transformers) for the  docs renderer might also optionally have to somehow set these authentication headers for static resources (such as images), as they are made cross domain.
Do you see a possible solution to this ?

somehow set these authentication headers for static resources (such as images), as they are made cross domain

Damn. Didn't think about this. No, I have no good solution in mind at the moment. Removing auth on some or all of the techdocs routes won't work either, as the asset route depend on a backend request to the catalog api, which in turn would require authorization. In theory one could load all assets via javascript from client-side but that sounds like an awkward path.

After some thought - a Cookie containing the identity token? Would require some thought on how to manage it, but it would then be sent along with asset requests to the backend, which in turn checks both header and cookie for credentials.

I do not think it is possible to set Headers for static resources that are requested  by the HTML.
For example if you ahve
<html>
...
<img src="myimage> image </image>
</html>

that is being rendered by TechDocs, I am not sure if we can set the Header as an attribute on the markup tag.
OTOH, if we set a cookie on the route that hosts the Techdocs backend , does the browser automatically sends the cookie, when requesting the resources ? That way, we can make requests with an identifier.
This cookie has to be signed and checked on the backend and in this case.
The question  I have is, should we ask consumers to do this , or do we provide it ourselves in backstage ?
If we plan to provide this, then what is the way to configure the key for signing the cookie and how do we provide methods to verify the cookie?
I am thinking, perhaps , we  can use the TokenIssuer that is used to sign the Backstage idTokens and sign the cookie as well. The techdocs backend can

take a parameter when being initalized, to verify if cookies have to be checked in incoming requests.
Respond to requests for /docs with a signed cookie for the static assets. The domain of the static assets might not be the same as that of the techdocs backend, in which case, the cookie has to be set for a 3rd party domain (this can also be passed as a config)
request the key from the TokenIssuer to verify the cookie for static assets and verify the cookie

Very untested hypothesis. What about making auth-backend:

on login: set cookie
on refresh: set cookie
on logout: unset cookie

cookie value: same token (signed jwt) as used from client, same expirarion date. Eg we can reuse the same verification mechanism for auth header and cookie value.
caveat: cookies are automatically sent (some caveat, but i think valid in techdocs case) as long as backend fits the cookie domain. Eg hosting auth-backend and techdocs on different domains would fail (this could be achieved via javascript setting cookies, but feels awkward for an unlikely edge case).
Caveat: somewhat increased attack surface allowing attacks to retrieve the cookie value.

Re-using the idToken jwt as a signed cookie is a good idea, I was leaning towards that solution as well.
A general cookie, is not useful, because it overlaps with the purpose of the idToken that is set in BackstageIdentity.
Having an additional auth cookie, at this stage, IMHO, will complicate things. It will be tricky as well, as this will involve modifying the postMessage sent from the  OAuth2 popup .
My vote for this would be to have this as a separate discussion.
We have already mentioned the danger of providing access to docs storage via the backend in the TechDocs architecture. Why not then just solve it for Tech Docs first ?

Config Tech Docs to set a cookie on all responses from /docs/namespace/kind/name for the /docs/... URL (where ... can be any configured or empty path for static assets)
When Tech Docs receives a request to the static URL for assets, verify this cookie and allow the request to proceed.

If we encounter this pattern in a few more plugins (or in the proxy) we can then abstract this as a Helper class that can be added to the router trivially for verifying jwts in cookies.
I can do an implementation for this if you like (or feel free to, if you have the bandwidth). What do you think ?

Would that mechanism be added to the auth backend? To issue something like "derived tokens" on behalf of a given auth token (as returned from the sign-in phase), that are time limited and persisted in its database?

My initial idea is to use the issued token verbatim, because any derived info has to be re-signed anyway.
But now that you asked the question, it got me thinking, do you forsee any security implications for doing this ? Theoretically this cookie can be leaked, but so can the in memory token.
It might be not a bad idea to set cookies with a restricted (and re-signed) set of information. This cookie can be persisted for as long as the original idToken was issued for and if we set the right ETag and timestamp headers/cookies, the browser need not do requests for the same resource again.

Wanna highlight that https://github.com/backstage/backstage/pull/4532 moves a way from calling the BackstageIdentity token idToken in favor of just token. The intention of the token is not to use it as an OIDC IdToken, but to use it as an access token internally within Backstage.
Regarding the security concerns I think where we want to go is perhaps to add limitations to the token, starting with a broad scope but allow fetching of a token with for example only 'techdocs:read' scope.
For TechDocs we very much do need to use a cookie though afaik, unless we and to get into service workers decorating requests. We could combine the scoped token and cookie approach into a TechDocs /read redirects you to the index.html as well as sets a cookie.
To be clear any kind of scope downgrades and scopes in general are things I don't think should be added right now and we should be fine just using the same token everywhere, but is a way for us to harden things in the future.

I would very much start with just the cookie for techdocs that is the verbatim idToken and slowly move towards better solution.
We need to look into then setting cookies for requests/assets that cannot provide an Authentication Header (static files in HTML, bundle requests, etc).
One way to do this is to configure a list of routes on which a session cookie has to be set in the app-config and in the AuthResponse from the backend to the Auth pop-up, the session cookie is set on these routes
Is there a separate issue for this @Rugvip ? I feel it would be better if we could track this as an issue of its own.
I very much welcome the proposal to rename idToken in BackstageIdentity to simply token :smile:
It was very confusing, to say the least. In fact I would even propose to call it session within backstageIdentity, but perhaps maybe that is a little too far !
Going towards a mechanism for specifying backstage scopes is a good suggestion. We can start with a broad * scope and slowly move towards finer grained scopes. This can be done when generating the profile and the subsequent token.
We can decorate routes with certain scopes, that are checked for, in incoming requests.
I briefly thought about the idea of employing service workers to solve this problem in our installation, but it was too early and we did not have enough development bandwidth.

Tugboat has finished building the preview for this pull request!
Link:

https://pr4542-va3ld2grd3c41toc2leafb0spa4g0ix8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/602ae4e9fcb22d0ba95624c2

Tugboat has finished building the preview for this pull request!
Link:

https://pr4542-va3ld2grd3c41toc2leafb0spa4g0ix8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/602ae4e9fcb22d0ba95624c2

Tugboat has finished building the preview for this pull request!
Link:

https://pr4542-va3ld2grd3c41toc2leafb0spa4g0ix8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/602ae4e9fcb22d0ba95624c2

Tugboat has finished building the preview for this pull request!
Link:

https://pr4542-va3ld2grd3c41toc2leafb0spa4g0ix8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/602ae4e9fcb22d0ba95624c2

I modified the PR to set an access-token cookie on login/refresh and subsequently use either that or authorization header for techdocs requests. What do you think? A benefit is avoiding something custom to techdocs, but that could also be a drawback in these early stages. One could fairly easily modify it to follow @GoWind suggestion to instead set the cookie on specific techdocs requests or even refactor techdocs to explicitly request a cookie.
An awkwardness with the current suggestion is that the cookie will be overwritten with the last auth, e.g. if you login with one provider and then authenticate with another, the cookie contains the token from the last provider. Might not be an issue, but might cause confusion.

@erikxiv  : The term accessToken is extremely overloaded in this case. This is an access cookie that contains a token, but not an accessToken cookie as that is completely different, valid object from the OAuth2 Provider.
Can you rename the accessToken (and all related references in this context) to simply authentication or access cookies. Infact, authentication might be better.

Gonna suggest that we discuss the cookie changes in a separate PR and just do the api client changes in this one. Cookie changes need a lot more consideration

Should we then perhaps just close this PR for now? The addition of the auth header is easy to redo, and techdocs will not work anyways with the addition? Or is it worth doing an experimental cookie addition for techdocs to work with auth, to be removed later?
@Rugvip could you take lead in creating an issue to discuss if and how on the addition of a cookie for auth? I think your holistic perspective would be really good to set the tone of the question and the longer term goals

@erikxiv  @Rugvip  Can we just have the changes to add Authorization Header on /metadata , /docs requests from the client and remove the cookie additions ?  These requests will have to be made anyway with the Authorization Header.

@erikxiv it's on my radar, just a lot going on 😅
Auth-wise In currently working to get sign-in in a better state, which tbh is a bit of a prereq for this too.
@GoWind how would you do that though?

@Rugvip I like to help. This is for me a blocker before trying to launch this on an experimental basis (eg with real data that I want to have protected) at my company. Considering the previous auth pr, might be that I am just slowing things down though, not having the bigger picture and coding guidelines in me. Let me know if and how I could help you out.

@Rugvip , this would be my solution (I can take a shot at this and get a PR up and running by the end of the weekend)

Make fetch requests from the techdocs-client for the /metadata and /docs  requests with the idToken in the Authorization Header.
Pass a configuration flag in the techdocs-backend to  verify incoming requests for Authorization Headers.
This Authorization header will be verifying against the TokenIssuer (IIRC, there is a verify jwt method that plugins can access and verify a jwt with)

This will atleast enable the plugin to make secured requests to the backend for the metadata and HTML.
For static assets, Use express's cookie-parser middleware in the TechDocs router and configure it with a secret to sign and verify cookies for the route hosting the static assets. This is NOT a jwt.
On the route for the static assets, check for the presence (and if yes) verify the Authorization Header. If it doesn't exist , then check for this secret cookie and verify the signature.
This cookie will be only set for the route to the static assets and nowhere else.
If the routes for the docs /docs/namespace/kind/name and the static assets share the same prefix , then do the cookie check only if the request is for the static asset (for the doc entity, enforce Authorization Header).

@erikxiv What piece is it that is blocking out of curiosity? Do you need to be able to have a more granular access control based on component ownership or something of that sort?
np btw!
@GoWind that's most of what this PR is about though? 😅

My primary weapons to make a backstage introduction a smash hit is the service catalogue and documentation (and some various usage patterns of these). Although not super secret, I do not want our full catalogue available publically. I see no need for granular control, empowering everyone in the company via self-serving tools is intended. I was hoping to use the default auth mechanism to protect the data in the backend in a simple, out of the box fashion. I do realize the option used by Spotify to use a network perimeter, but was hoping to get away without setting up that infrastructure, backstage aiming for cloud native after all ;)

@erikxiv There are quite a few open source alternatives too, I think using those'll get you set up quicker than building things into Backstage itself. Haven't tried this myself and don't know if it's good, but something like https://github.com/pomerium/pomerium

True. Blocker might have been too harsh a phrasing, as there are many perimeter options available. I guess my stubborness has me stuck between refusing to step outside our ”golden path” to manage complexity and the beautiful idea of contributing, not only to me but to the rest of the world as well ❤

Tugboat has finished building the preview for this pull request!
Link:

https://pr4542-va3ld2grd3c41toc2leafb0spa4g0ix8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/602ae4e9fcb22d0ba95624c2

So..new attempt - what about moving the cookie to contrib/adopter code? Unblocks me without polluting core (apart from a credentials: include on a techdocs fetch request to allow setting a cookie)

Ping @Rugvip on that I think ^

Tugboat has finished building the preview for this pull request!
Link:

https://pr4542-va3ld2grd3c41toc2leafb0spa4g0ix8.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/602ae4e9fcb22d0ba95624c2

🚢 it! I'll try to figure out an adopter way to set the cookie and add that to contrib later.


Adapting thread_queue_mc to behave even if no 128bit atomics are available

@biddisco please verify that this does not break anything on your end.

remove the template defaults will not break anything

removing the template defaults will not break anything

Thanks @biddisco! I was more worried about (arbitrarily) choosing PendingQueuing as the third template argument for the thread_queue_mc here: https://github.com/STEllAR-GROUP/hpx/pull/4083/files#diff-6cd28becc08171d26d3f09c07c085302R73. Is that what you had in mind?

I wouldn't worry too much. the latest changes (incoming) to thread_queue_mc have substantially hanged the class and I'll absorb any of your changes into it when I do my PR

@rtohid: this should fix your issues you're having with building FLeCSI.


Autoupdate branch broken

Hi,
I'm Unable to start autoupdate tag, as mentionned in an old issue https://github.com/wernight/docker-plex-media-server/issues/12:
+ /retrieve_plex_download_url.py
Retrieving the latest Plex release for PlexPass users...
Traceback (most recent call last):
  File "/retrieve_plex_download_url.py", line 52, in <module>
    print(retrieve_latest_download_url(login, password))
  File "/retrieve_plex_download_url.py", line 41, in retrieve_latest_download_url
    assert len(links) == 1
AssertionError
+ curl -L -o plexmediaserver.deb
curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
8192
+ /retrieve_plex_download_url.py
Retrieving the latest Plex release for PlexPass users...
Traceback (most recent call last):
  File "/retrieve_plex_download_url.py", line 52, in <module>
    print(retrieve_latest_download_url(login, password))
  File "/retrieve_plex_download_url.py", line 41, in retrieve_latest_download_url
    assert len(links) == 1
AssertionError
+ curl -L -o plexmediaserver.deb
curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information

Image is up to date
[10:48:49] # docker pull wernight/plex-media-server:autoupdate
autoupdate: Pulling from wernight/plex-media-server
Digest: sha256:e16a25436274c6414979eae0afc442e6e8fa00d8881ca31fd775eb1d9eb99902
Status: Image is up to date for wernight/plex-media-server:autoupdate

Latest is working but not autoupdate.
Thanks you

Crap they now have two links matching... Ok Plex thanks for the com.

Strangely it's working on my side. Could be a locale issue.

Working as well, no locale issue, the password was wrong.
Maybe need to handle wrong password or error message from Plex.tv ?
Thanksyou and sorry for disturbing you.

Yes that's probably a good improvement I agree it should be a clear message when possible.


The RGB light stops working after 40m-1hr.  (Error while updating light effects: Index was outside the bounds of the array)

Expected Behaviour (if not obvious)
RGB lights work as expected, without errors (as in previous versions).
Actual Behaviour
The RGB light stops working on my keyboard and PC, with the following error in a popout window:
Error while updating light effects: Index was outside the bounds of the array:

I think it is a problem with the "away effect type" in the General Settings, because, it stops working in this mode.
I have this problem since 4 or 5 versions.
Reproduction steps
1.- Windows starts with all the apps (Aurora included)
2.- After some time, such as one hour or 40 minutes, the lights stop and the window mentioned in the current behavior appears.
Aurora Version:
v320
Previously an Issue?
Yes
Log file:
2024-12-24 21.23.25.log

I'm also running into this behavior, but only if the computer isn't being used.
If I'm actively using the PC (games, web browser, etc), this error doesn't show up.
But if the computer sits unused for 45 minutes to an hour, I get the error, and have to restart Aurora in order for it to go away.
Aurora Version: v320

@ElChacko what integration are you using? I'm using OpenRGB integration, and I think I've fixed the issue. Can share if you're using the same integration.

Thanks for the report. I've hopefully fixed with v321


feat(explain): explain table in explain stream distsql

I hereby agree to the terms of the Singularity Data, Inc. Contributor License Agreement.
What's changed and what's your intention?

add state table's information in the explain distsql of stream plan
add verbose mode in explain distsql of streaming plan

dev=> explain (distsql, verbose) create materialized view mv as select t1.v1 as id, v2, v3 from t1 join t2 on t1.v1=t2.v1;
 Fragment 0
   StreamMaterialize { columns: [id, v2, v3, t1._row_id(hidden), t2._row_id(hidden), t2.v1(hidden)], pk_columns: [t1._row_id, t2._row_id, id, t2.v1] }
       materialized table:<PHONE_NUMBER>
       Output: [t1.v1, t1.v2, t2.v3, t1._row_id, t2._row_id, t2.v1]
       Stream key: [t1._row_id, t2._row_id, t1.v1, t2.v1], AppendOnly
     StreamAppendOnlyHashJoin { type: Inner, predicate: t1.v1 = t2.v1, append_only: true, output: [t1.v1, t1.v2, t2.v3, t1._row_id, t2._row_id, t2.v1] }
         left table: 0, right table 2, left degree table: 1, right degree table: 3,
         Output: [t1.v1, t1.v2, t2.v3, t1._row_id, t2._row_id, t2.v1]
         Stream key: [t1._row_id, t2._row_id, t1.v1, t2.v1], AppendOnly
       StreamExchange Hash([0]) from 1
           Output: [t1.v1, t1.v2, t1._row_id]
           Stream key: [t1._row_id], AppendOnly
       StreamExchange Hash([0]) from 2
           Output: [t2.v1, t2.v3, t2._row_id]
           Stream key: [t2._row_id], AppendOnly

 Fragment 1
   Chain { table: t1, columns: [t1.v1, t1.v2, t1._row_id], pk: [t1._row_id], distribution: UpstreamHashShard(t1._row_id) }
       Output: [t1.v1, t1.v2, t1._row_id]
       Stream key: [t1._row_id], AppendOnly
     Upstream
         Output: [v1, v2, _row_id]
         Stream key: [_row_id],
     BatchPlanNode
         Output: [t1.v1, t1.v2, t1._row_id]
         Stream key: [t1._row_id], AppendOnly

Fragment 2
   Chain { table: t2, columns: [t2.v1, t2.v3, t2._row_id], pk: [t2._row_id], distribution: UpstreamHashShard(t2._row_id) }
       Output: [t2.v1, t2.v3, t2._row_id]
       Stream key: [t2._row_id], AppendOnly
     Upstream
         Output: [v1, v3, _row_id]
         Stream key: [_row_id],
     BatchPlanNode
         Output: [t2.v1, t2.v3, t2._row_id]
         Stream key: [t2._row_id], AppendOnly

 Table 0
   columns: [t1.v1:integer, t1.v2:integer, t1._row_id:bigint]
   primary key: [$0 ASC, $2 ASC]
   value indices: [0, 1, 2]

 Table 1
   columns: [t1.v1:integer, t1._row_id:bigint, _degree:bigint]
   primary key: [$0 ASC, $1 ASC]
   value indices: [2]

 Table 2
   columns: [t2.v1:integer, t2.v3:integer, t2._row_id:bigint]
   primary key: [$0 ASC, $2 ASC]
   value indices: [0, 1, 2]

 Table 3
   columns: [t2.v1:integer, t2._row_id:bigint, _degree:bigint]
   primary key: [$0 ASC, $1 ASC]
   value indices: [2]

 Table<PHONE_NUMBER>
   columns: [id:integer, v2:integer, v3:integer, t1._row_id:bigint, t2._row_id:bigint, t2.v1:integer]
   primary key: [$3 ASC, $4 ASC, $0 ASC, $5 ASC]
   value indices: [0, 1, 2, 3, 4, 5]

(63 rows)

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] All checks passed in ./risedev check (or alias, ./risedev c)

Documentation
If your pull request contains user-facing changes, please specify the types of the changes, and create a release note. Otherwise, please feel free to remove this section.
Types of user-facing changes
Please keep the types that apply to your changes, and remove those that do not apply.

Installation and deployment
Connector (sources & sinks)
SQL commands, functions, and operators
RisingWave cluster configuration changes
Other (please specify in the release note below)

Release note
Please create a release note for your changes. In the release note, focus on the impact on users, and mention the environment or conditions where the impact may occur.
Refer to a related PR or issue link (optional)

I think it's too large... 🥵 Can we split the stream dist plan into a separated file?

I think it's too large... hot_face Can we split the stream dist plan into a separated file?

the tpch.yaml has 5463 lines and sized 418KB :hot_face:

I think it's too large... 🥵 Can we split the stream dist plan into a separated file?

an alternative is to display in one line
table1 { columns: [lineitem.l_returnflag, lineitem.l_linestatus, count], primary key: [$0 ASC, $1 ASC], values indices: [0, 1, 2] }
another alternative is to split tpch.yaml into tpch/q*.yaml 😇

an alternative is to display in one line

It is hard to implement it now. we get the attributes from the PlanNode but the local table id is assigned after the fragmentor.

another alternative is to split tpch.yaml into tpch/q*.yaml

the question is that if we do that. it will be hard to maintain a public shared create tables statement. for example, if we want to add pk in the tpch tables or append-only property on nexmark table

an alternative is to display in one line

It is hard to implement it now. we get the attributes from the PlanNode but the local table id is assigned after the fragmentor.

I mean change the display of table
Table 0
  columns: [ak1.k1, ak1.v, ak1.a._row_id]
  primary key: [$0 ASC, $2 ASC]
  value indices: [0, 1, 2]

Table 1
  columns: [ak1.k1, ak1.a._row_id, _degree]
  primary key: [$0 ASC, $1 ASC]
  value indices: [2]

vs
Table 0 { columns: [ak1.k1, ak1.v, ak1.a._row_id], primary key: [$0 ASC, $2 ASC], value indices: [0, 1, 2] }

Table 1 { columns: [ak1.k1, ak1.a._row_id, _degree], primary key: [$0 ASC, $1 ASC], value indices: [2] }

Also, it can hardly solve the too large test file issue which is due to the too many bytes instead of lines.

So maybe we have to split test cases

the question is that if we do that. it will be hard to maintain a public shared create tables statement.

Maybe we can support cross-file before 😅

Also, it can hardly solve the too large test file issue which is due to the too many bytes instead of lines.

So maybe we have to split test cases

the question is that if we do that. it will be hard to maintain a public shared create tables statement.

Maybe we can support cross-file before sweat_smile

Too complex to me :sob: can we just leave the files with thousands of lines because they are just test files instead of code :crying_cat_face:

an alternative is to display in one line

It is hard to implement it now. we get the attributes from the PlanNode but the local table id is assigned after the fragmentor.

I mean changing the display of table
Table 0
  columns: [ak1.k1, ak1.v, ak1.a._row_id]
  primary key: [$0 ASC, $2 ASC]
  value indices: [0, 1, 2]

Table 1
  columns: [ak1.k1, ak1.a._row_id, _degree]
  primary key: [$0 ASC, $1 ASC]
  value indices: [2]

vs
Table 0 { columns: [ak1.k1, ak1.v, ak1.a._row_id], primary key: [$0 ASC, $2 ASC], value indices: [0, 1, 2] }

Table 1 { columns: [ak1.k1, ak1.a._row_id, _degree], primary key: [$0 ASC, $1 ASC], value indices: [2] }

Great! I think it is better to diff in git and I will use it. ( I can not believe I did not realize and come up with it :innocent:

BTW I found https://github.com/risingwavelabs/risingwave/issues/3621#issuecomment-1195357728 suggets to add state table in explain verbose, but this PR adds it to explain distsql. 🤔


Add the paper "Attending to Discriminative Certainty for Domain Adaptation"

Hi,
Please, add the paper  Attending to Discriminative Certainty for Domain Adaptation which is accepted in CVPR 2019.
Thanks,
Shanu

Also, the paper Adversarial Adaptation of Scene Graph Models for Understanding Civic Issues
, which is accepted in The Web Conference 2019. This paper is about the adaptation of scene graphs.

Ok, I have added the two papers to the list.

Thanks