Selenide doesn't support separate timeout for Proxy file download.

The problem
Selenide doesn't support separate timeout for Proxy file download.
Details
Imagine you have tests that have to download big files or wait for big reports to be generated. This means you need to wait more than default 4s timeout, maybe even up to 60 secs or more. The only way you can do it is to set Configuration.timeout value but this parameter affects not only downloading time but all other Selenide timeouts. So if your test failed before you have reached downloading step you have to wait up to those 60 s. for already failed test to end. Multiply this time on number of your tests...
Tell us about your environment

Selenide Version: 4.11.4 or higher

Possible solutions
We have three straight options to solve this problem.
The bad one is to add new special value to Configuration, extend Waiter class to override wait method and use new class with new value during proxy file download. But this way we will break encapsulation and force users to tie to another global non thread safe variable.
Second is to add download timeout as parameter to download command of SelenideElement class. This way any user will be able to decouple from Configuration.timeout value in download-related tests and compiler will tell them where to fix download method calls.
And number three, the best. Just overload download method in SelenideElement class with timeout parameter and add corresponding changes to DownloadFile, DownloadFileWithHttpRequest and DownloadFileWithProxyServer classes.

@YuriIvanov I found that this issue was only valid when download with "get" request. When downloading with "proxy", the timeout parameter is actually ignored. Look at DownloadFileWithProxyServer:
private File clickAndInterceptFileByProxyServer(...) {
  ...
  clickable.click();  // this line actually waits until the file is completely downloaded

  waiter.wait(filter, new HasDownloads(), timeout, Configuration.pollingInterval); // this "waiting" doesn't make any sense :)
  ...
}

Or am I wrong?

@asolntsev Eh, I did not manage to add unit tests for that.
clickable.click() uses Configuration.timeout as timeout, but after click performed we need to wait up to out timeout for available files. It is fully correct behavior.
For example, we have Configuration.timeout set to 10 seconds. First Selenide will try to click on some download button with this 10 seconds timeout that is absolutely Selenide-like behavior expected by users. And only after that we will wait up to our custom timeout for available files.

@YuriIvanov Actually clickable.click() doesn't use Configuration.timeout. It waits as long as file is being downloaded.

@asolntsev If it would be this way it would have waited at least up to server timeout and wait.waiter would be useless here. Moreover, how click command without any parameters can know when there is any file downloaded? Only HasDownloads predicate can know this.
And why click command should even wait until some downloads to complete? It's still CLICK command :)

@YuriIvanov Look at this test: https://github.com/codeborne/selenide/commit/2de95f83249e11cddb19786725e2be1d31f75494
it reproduces the problem.


How do I get a reference to a Hub?

In the old SignalR I could get a reference to a hub via something like this:
    var hubManager = new DefaultHubManager(GlobalHost.DependencyResolver);
    var hub = hubManager.ResolveHub("myHub") as MyHub;

Is there a way to find a hub in the current version (0.2.0)?

What exactly are you trying to do here?

@mikaelm12 I'm trying to get some data from an Akka.NET actor to a SignalR hub, but I don't know how to get a reference to the hub....

Hubs aren't really meant to be called except from a client, you get away with it in your project by using GlobalHost.ConnectionManager.GetHubContext<CrawlHub>(); in your hub write method.
I would recommend creating and injecting a class with shared logic for use in your CrawlHub and SignalRActor, then in the shared class resolve an IHubContext<CrawlHub> for use in calls to write.
Arbitrary example (not tested)
namespace SharedHubLogic
{
    class HubMethods
    {
        private IHubContext<THub> _hubContext;
        public HubMethods(IHubContext<THub> hubContext)
        {
            _hubContext = hubContext;
        }

        public Task WriteMessageAsync(string method, param object[] args)
        {
            return _hubContext.Clients.All.InvokeAsync(method, args);
        }
    }
}

------------------------------------

class CrawlHub : Hub
{
    private HubMethods _hubMethods;
    public CrawlHub(HubMethods hubMethods)
    {
        _hubMethods = hubMethods;
    }

    public Task CrawlFailed(string reason)
    {
        return _hubMethods.WriteMessageAsync("writeStatus", reason);
    }
}

@BrennanConroy Thanks, that looks like a better strategy.  I'm just not sure how to get the reference to inject into the IHubContext if GlobalHost is no longer available....

You should be able to resolve the IHubContext without doing any extra registration; SignalR does the necessary registration when calling .AddSignalR().

@mikebridge You take it as a constructor argument to your registered service.

In this screencast I setup an mvc controller, when posted to, we broadcast to all connected clients, in our specific case, it's angular apps running on a seperate host, so it involves CORS as well.
https://www.towfeek.se/2017/09/16/consuming-signalr-for-aspnet-core-from-angular/
Hope it helps, cheers!

Arbitrary example (not tested)
namespace SharedHubLogic
{
    class HubMethods
    {
        private IHubContext<THub> _hubContext;
        public HubMethods(IHubContext<THub> hubContext)
        {
            _hubContext = hubContext;
        }

        public Task WriteMessageAsync(string method, param object[] args)
        {
            return _hubContext.Clients.All.InvokeAsync(method, args);
        }
    }
}

------------------------------------

class CrawlHub : Hub
{
    private HubMethods _hubMethods;
    public CrawlHub(HubMethods hubMethods)
    {
        _hubMethods = hubMethods;
    }

    public Task CrawlFailed(string reason)
    {
        return _hubMethods.WriteMessageAsync("writeStatus", reason);
    }
}

Anybody have a non-arbitrary, tested example? I've added something similar to this but now my App cannot connect to the server (works before I add the ctor to the hub).

Arbitrary example (not tested)
namespace SharedHubLogic
{
    class HubMethods
    {
        private IHubContext<THub> _hubContext;
        public HubMethods(IHubContext<THub> hubContext)
        {
            _hubContext = hubContext;
        }

        public Task WriteMessageAsync(string method, param object[] args)
        {
            return _hubContext.Clients.All.InvokeAsync(method, args);
        }
    }
}

------------------------------------

class CrawlHub : Hub
{
    private HubMethods _hubMethods;
    public CrawlHub(HubMethods hubMethods)
    {
        _hubMethods = hubMethods;
    }

    public Task CrawlFailed(string reason)
    {
        return _hubMethods.WriteMessageAsync("writeStatus", reason);
    }
}

Anybody have a non-arbitrary, tested example? I've added something similar to this but now my App cannot connect to the server (works before I add the ctor to the hub).

Figured it out, the Hub constructor needed to take the context not the methods.
    private readonly HubMethods _hubMethods;

    public ChatHub(IHubContext<ChatHub> hubContext) => _hubMethods = new HubMethods(hubContext);


Support to retrieve input from Anvil inventory type

Allow use to use a ANVIL inventory to track user input
TODO

[x] Create inventory-framework-anvil-input module and Anvil Feature as external feature
[ ] Fix compatibility issues with Dynamic Title Update feature
To update the title dynamically, Dynamic Title Update feature sends "opening window" packet and this doesn't work properly with Anvil Input since it will reset the anvil input to the name of the item in the first slot, discarding the user input.
In order to avoid this, the display name of the item in the first slot needs to be updated to the previous anvil input (before updateTitle... was called). But this will cause another problem, because both the anvil input and the name of the item in the first slot are the same; resulting into an empty result slot.
[ ] Update Anvil Input page on Wiki

Related to "Anvil Input" docs on Wiki

Planned to v3.0.0

Published in v3.0.0

@DevNatan I think  u should close this, since it is done.


Cannot minimize a simple function

I did a simple test to minimize x^2-3x+2 using BayesianOpt.
It seems incapable of minimizing.  It always maximize the function.
I can maximize the inverse of the function.
examples.zip

BayesianOptimization is not taking into account the goal of the study, its always looking to maximize the objective value
https://github.com/tobegit3hub/advisor/blob/26cfd133e7476e543f571085d08a8087a093f40d/advisor_server/suggestion/algorithm/bayesian_optimization.py#L242-L248

Thanks for your report @michellemay and @andresmore 's comment 👍
It is fixed now and we have test for min and max scenarios.


fix(console): support default parameter on textbox component

This pull request adds support for the default parameter of Console#ask, which wasn't passed down nor taken into account in TextBoxComponent.
Note: my approach was the easiest I could think of—reusing the existing methods instead of adding a new cursor manipulation, at the cost of introducing a loop, which I believe is fast enough to not care about it.

Yeah, looks good


Scope clarification

Glad to see this! Some quick comments:

Device vs equipment vs instrument. How do you see the difference? In my mind, lab equipment is the superclass of lab instrument, equipment being something that makes a manipulation (i.e., pipette, bulk reagent dispensor), but doesn't make a measurement, whereas instruments do make measurements (i.e. plate reader)
Does the device-databank include manual equipment, I.e. a pipette?
The Readme currently states. does a certain lid fit onto a certain tube? Why does device-databank include a lid & lid compatibility? Isn’t that in the scope of the labware-databank?

So you would say that equipment and instruments are mutually-exclusive subsets of device? (Just curious)

No, I consider practically all laboratory instruments, to be also laboratory equipment. But not all laboratory equipment are laboratory instruments.
But device, is a bit tricky, in that makes me think about something that has to have an electronic component. Then what about "dumb" lab equipment like glass or plastic columns filled with resin. They can be ordered and calibrated & used repeatedly with precision - so they seem to be well suited as equipment. But are they a "device"? I would argue no.


Add service certificate annotations Kuttl tests

Adds service certificate annotations Kuttl tests to check that annotations can be properly applied to CertManager Certificates with RCO's .spec.service.certificate.annotations

Related issue: https://github.com/WASdev/websphere-liberty-operator/issues/440

Closing since it is merged into the common repo.


Room entities card from docs shows syntax error

I was trying to add the room entities card from here.
I tried to add it like this:

add card
manual card
paste yaml

Unfortunately I get the following syntax error:
missed comma between flow collection entries (2:2)

 1 | {# ----------------- PROVIDE YOUR ...
 2 | {% set vacuum_entity = "vacuum.bo ...
------^
 3 | {# ------------------- DO NOT CHA ...
 4 | {%- set vacuum_name = states[vacu ...

config-template-card and multiple-entity-row are installed and I restarted HA afterwards.

Thanks you!
I'm sorry that I missed that.
Should be added to the docs :)


External storage not adressed.

I was trying to learn how to write into the shared external storage of android with .NET .
The page did not address this issue, despite its title implying it would, at least for a mobile development beginner.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 5b7e12aa-3c09-0f82-2fa2-a39c2c8065d8
Version Independent ID: 5b7e12aa-3c09-0f82-2fa2-a39c2c8065d8
Content: File system helpers - .NET MAUI
Content Source: docs/platform-integration/storage/file-system-helpers.md
Product: dotnet-mobile
Technology: dotnet-maui
GitHub Login: @davidbritch
Microsoft Alias: dabritch

Hi @Meersalzeis
The FileSystem API only exposes common cross-platform concepts. As external storage isn't a cross-platform concept, accessing it requires the use of platform APIs. In your case, take a look at https://stackoverflow.com/questions/74996443/how-to-read-files-from-android-external-storage-in-maui-application


Overhaul how we deal with reserved identifiers.

Do not silently drop reserved identifiers in the parser. This makes it
possible to reflect identifiers which are reserved by the
cross-compiler module.
Instead of dropping the name, emit _RESERVED_IDENTIFIER_FIXUP in the
source to make it clear that a name has been rewritten.
Document what is reserved and not.

Fix #1440

I believe this may have fixed a bug where MSL where this was replacing the sanitized entry point name with the original one: https://github.com/KhronosGroup/SPIRV-Cross/blob/e50f7d1ce8e162d0c826e84168cfa234e4de4ec9/spirv_msl.cpp#L12188-L12189
(In Rust-GPU we ended up with entry-point names like foo::bar, from module nesting - like C++ namespaces)
But now that the sanitizing happens late, as opposed to on set_name, MSL's replacement shouldn't have any effects anymore.
Haven't confirmed it's a fix tho tho, only just tracked it down from the interaction of MoltenVK and Rust-GPU (which outputs SPIR-V).


TODO

[ ] decide on a general way of solving collisions, and fix the relevant API
[ ] tests
[ ] documentation
[ ] easy: re-factor this into a proper maven project
[ ] maybe rename to dirty-little-physics?

good resource for spring constraint: https://dl.dropboxusercontent.com/u/3894132/Stable springs 0.7.0.pdf


how to unhide partially hidden first and last columns in Apex charts?

Discussed in https://github.com/apexcharts/apexcharts.js/discussions/3923

Originally posted by githubHemanth July 10, 2023
How to unhide partially hidden first and last bars in grouped-bar-chart of Apex charts ? I have tried using 'min' and 'offsetX' (unhides bars) but they rearrange the x-axis scale and bars. Is there any best way to unhide the columns with chart options ? (don't want to use css).
Or the above are only options we should use ?
xaxis: {     categories: ['<0 Days', '0-30 Days', '31-60 Days', '61-90 Days', '91-180 Days', '>180 Days'],     labels: { style:{fontWeight: 800} },   //min:0.9,   //offsetX:-160,     tickPlacement: 'on',                    },

Did not follow issue instructions

Did not follow issue instructions

Sorry, what are those instructions ?


New-PartnerCustomerOrder Addon Order throws "2000" error

When placing a new order for an Addon to an existing subscription, the following error is thrown
"New-PartnerCustomerOrder : 2000 ParentSubscriptionId is not supported for this request."
Steps to reproduce
New-PartnerCustomerOrder -CustomerId  -LineItems $lineItems
$LineItems content:
FriendlyName         : Office 365 Advanced Threat Protection
LineItemNumber       : 0
OfferId              : a2706f86-868d-4048-989b-0c69e5c76b63
PartnerIdOnRecord    :
ParentSubscriptionId : <SubscriptionId of the Parent Exchange Online Plan 1 subscription>
ProvisioningContext  : {}
Quantity             : 31
SubscriptionId       :
Expected behavior

I expect that the order will be placed however, I'm unsure what content the LineItem fields are expecting to purchase a new addon.  This may be a result of not providing the correct data in the PSOrderLineItem object.  Having an example in the help for New-PartnerCustomerOrder where an Addon is being purchased for a parent subscription would be beneficial.

Actual behavior
Error thrown
"New-PartnerCustomerOrder : 2000 ParentSubscriptionId is not supported for this request."
Environment
PartnerCenter v1.5.1812.1
PSVersion v5.0.10586.117

Hi @jmeilleur1,
This issue will be resolved with the release of version 1.5.1092.5, our hope is to have it available before the end of the week. Thank you for working with us as we address these issues.

Hi @jmeilleur1,
We have released version 1.5.1902.5 which includes a fix for this issue. Check out New-PartnerCustomerOrder for an updated example on how to accomplish this.


Custom Domain Training

I have seen some questions here which are unanswered. So simply asking, can anyone suggest how to train BERT on our own domain data? If we append few questions answers (say 10 questions answers) to SQUAD train.json, then will BERT start understanding our domain data and answer same questions with better confidence?

If the format of your own domain data is exactly the same as SQUAD, then you can just replace train.json with your own data i.e. no need to append. If your format is different, you will need to create a DataProcessor  class to get it into a format that BERT can understand.

We took the easier way. We formatted the content in same json format. Added 1 paragraph, 1 question and 1 answer and trained it. Got new checkpoint. But then we switched to predict mode, then answers did not change (or say did not improve).
That is why wondering what mistake we did. Is it not right way to train? Is the data too less to train? Is vocab missing our new words? Or something else? Any suggestion?

Have you tried other models for comparison? At the very least, BERT should give better performance at the moment.

Actually it is not about comparative accuracy with other models in market. It is just making BERT itself more knowledgeable with some data, which it is not able to answer. I dont want to switch to any other model after making time investment in BERT. I appreciate it and want others too, by giving it incremental training on QnA which it is not able to answer.
Our incremental training approach is failing, therefore looking for a direction.


In case of numeric properties default && required check doesn't work as expected

default = 0 evaluates to false, which it is not when we're talking about numbers.

Great spot thank you!


can now set non-root user via envoriment variable.

This is to enable the tests to run inside a docker container, even though they themselves spawn new containers.
It was failing in our CI pipeline because of permission errors on mounted folders when testing mounting as non-root users.

I should add that this change only applies to the tests, the behaviour of the neo4j image is unaffected.


inference.py: keep raw heatmap to set confidence level for extracted features after post-processing

Inference values for each before using argmax() function will be useful for technicians for sort extracted features by confidence levels. Our inference script should let use decide to output the raw heatmap (after softmax), not just the final one where argmax() has been applied

Here's an idea for implementing this:

write the final inference as gpkg
reopen the raw inference as raster with per-class, per-pixel confidence levels
calculate the mean confidence for all pixels inside each feature saved in gpkg
write that mean value as attribute value for a "confidence" attribute

It goes without saying that, in our use case (semantic segmentation), this would be pretty "calculation" and "memory" intensive.
Tests need to be done.


Enzyme break after React upgrade from 15.0.0-rc2 to 15.0.1

We are using enzyme to test our React components together with browserify.
But after upgrade React from rc2 to stable 15.0.1:
If i'll run tests, i'll get this error:
Error: Cannot find module 'react/addons' from '/myproject/node_modules/enzyme/build
But installed version is 15.0.1 (React.version) which is using module react-addons-test-utils
If i'll remove this line:
TestUtils = require('react/addons').addons.TestUtils;
from build\react-compat.js its works properly.
Package.json:
"dependencies": {
    "react": "15.0.1",
    "react-addons-perf": "15.0.1",
    "react-addons-test-utils": "15.0.1",
    "react-addons-update": "15.0.1",
    "react-dom": "15.0.1"
  },
  "devDependencies": {
    "babel-core": "^6.7.0",
    "babel-plugin-external-helpers-2": "^6.3.13",
    "babel-plugin-transform-decorators-legacy": "^1.3.4",
    "babel-polyfill": "^6.3.14",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",
    "babel-preset-stage-0": "^6.5.0",
    "babelify": "^7.2.0",
    "browserify": "^13.0.0",
    "enzyme": "^2.2.0",
    "watchify": "^3.7.0"
  }

same problem here

I believe this was fixed by commit 77e6bdc17ad52aefd9ccdc82d4197bd0709c95aa. I have the same issue with v2.2.0, but it works when running master. Would be nice with an Enzyme release which works with React 15.

Ok, that might not be the fix then. A release that works with React 15 out of the box is still wanted though :-)

The latest release is already that. The only difference is potentially a peer dep warning.
We'll try to cut a release soon.

Guys, can you please release new version ?, this commit would be great :)

@nehaleem enzyme already works fine with React 15. The commit you're referencing is just documentation.


feat: add support for path matching precedence

What type of PR is this?

/kind bug
/area conformance
What this PR does / why we need it:
Path matches in following orders:

Exact
Prefix

Which issue(s) this PR fixes:

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

* Updated spec to clarify that Exact matches have precedence over Prefix matches and RegularExpression matches have implementation specific precedence.
* Added conformance test to verify that path matching precedence is implemented.

Thanks @Xunzhuo! Will wait for someone else to LGTM in case I missed anything in the conformance tests.
/cc @arkodg @mlavacca
/approve

hey @Xunzhuo have you tested this test against any implementation ?

@sunjayBhatia tested it in Contour, I will have a test in EG.

/lgtm


(tests): skip new tests that cannot reach an external server

These tests fail when run from inside a Docker container and are thus stopping our docker builds. Let's skip them instead.

This is the wrong approach. I understand the problem better now and will push a new PR.


Decoding downloaded Jpeg2000 images without saving them first

So far we don't know how to correctly decode Jpeg2000 images the package downloads without saving them first. Therefore for example AwsTileRequest(...).get_data(save_data=False) raises an error.
The problem is that original Sentinel-2 L1C images provided by ESA and stored on AWS have a nonstandard 15-bit Jpeg2000 encryption. So most of the Python packages (e.g. OpenCV, Pillow) incorrectly read these images as 16-bit data and return values that are 2 times larger as they should be. The only package we know that reads the images correctly is Glymur. However it requires a filename of stored image and does not support reading from BytesIO, StringIO, numpy.array or any other structure. Therefore data always needs to be first saved locally.
Does anyone know a solution for this?
(Maybe some other package we don't know about, a clever "hack" in mentioned packages or even simulating a filename path without actually saving image on disk...)

Hi,
I am trying out the tutorial exactly for downloading Sentinel data with AWS and am facing problems with the request.get_data() step, as follows

OSError: Failed to read JPEG 2000 image correctly. Most likely reason is that Pillow did not install OpenJPEG library correctly. Try reinstalling Pillow from a wheel

The image has been correctly downloaded. Do you have any suggestions on how to fix this error?

Hi @agowardhan,
when installing Pillow  Python package from official PyPI release in Windows it is common that functionality for reading Jpeg 2000 files is not installed correctly (but no error or warning is raised). Therefore this error in sentinelhub recommends you to reinstall Pillow from a wheel.
This is the most popular site from where you can wheels: https://www.lfd.uci.edu/~gohlke/pythonlibs/


[Gitlab] My Merge Requests : Ability to copy branch name

Description
Hello,
We developers often switch branches between merge requests, I think it would be useful to be able to copy the branch name of a merge request. Also, being able to put on top open merge requests would be nice too.

Thank you for reading.
Who will benefit from this feature?
Developers
Anything else?
No response

Seems like this issue is about a specific extension, not the API. Would you mind opening a new issue using the correct template so that the authors of the extension are properly aware of it?


✨(project) add notebook service

Purpose
It would be nice to perform local adhoc operations (tests, benchmark…) on warren/LRS, in an easy way like notebooks.
Proposal
This PR adds a jupyter notebook docker service that can be deployed along the other services with docker compose.
As an example, I added a simple notebook that benchmarks a request to the LRS, and a simple aggregation.

@jmaupetit Thanks for the review ! I addressed your comments, let me know if there is anything missing

To access the warren package inside Jupyter Notebook, we need to update the volumes declared under the docker-compose.yml file. Currently, the package is not mounted inside the container, preventing access from within the Jupyter environment.

As you suggested during our call

dx is not optimal when finding the jupyter server urls among a lot of logs.

dx is not optimal when finding the jupyter server urls among a lot of logs.

I agree. I think for the moment I can at least add this to the documentation, WDYT ?

To access the warren package inside Jupyter Notebook, we need to update the volumes declared under the docker-compose.yml file. Currently, the package is not mounted inside the container, preventing access from within the Jupyter environment.

I agree. Do we want to make it available by default ? I can add the line for the volume


Averagepooling asymetric pading

@pfultz2  When you get a chance, can you take a look this PR?

Will these asymmetrical adjustments need to be applied for tf? Maybe we should seperate these functions out so they can be reused by tf.


signal/sig_dispatch: Fix case where signal action is sent twice

Summary
As far as I can interpret how signal delivery should work when the signal is blocked, it should still be sent to the pending queue even if the signal is masked. When the sigmask changes it will be delivered.
The original implementation did not add the pending signal action, if stcb->task_state == TSTATE_WAIT_SIG is true.
An attempt to patch this was made in #8563 but it is insufficient as it creates an issue when the task is not waiting for a signal, but is in syscall, in this case the signal is incorrectly queued twice.
Impact
Attempt #2 to fix signal action queuing
Testing
icicle:knsh

Build error comes from libcxx

it is fixed by the last master, please rebase your change.

@pussuw
I found a error in this PR.
With this PR, this LTP test case can't pass in configuration sim:nsh
https://github.com/nloopa/open_posix_testsuite/blob/master/conformance/interfaces/timer_settime/9-2.c

@pussuw do you have more comment? If not, I will create a new patch to revert your change in the next Monday.

I'm sorry to hear that you encountered a regression.
As far as I can understand how posix signals are supposed to work, this should have fixed the  situation where the signal action is never performed if the signal is masked, or if system calls are in use.
My understanding of the posix signaling spec is that if a signal action is masked, it should be put into the pending queue no matter what. I am not sure about this though. Maybe someone who knows more about this subject can comment?
@xiaoxiang781216 the revert should take into account what this patch was supposed to fix; the signal action should not be pended twice.

@xiaoxiang781216 the revert should take into account what this patch was supposed to fix; the signal action should not be pended twice.

Actually, your change make the signal trigger twice:(.
@GUIDINGLI already point out the problem. If the signal wakes up the caller of sigwait, it shouldn't be added to the pending list again. Otherwise, user space will receive two events. You can try the test which is very simple:
https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/timer_settime/9-2.c
In most case, breaking PTS means our implementation doesn't conform the spec.

Ok I understand, the signal is received twice. But the first branch does not queue a signal action which was the problem I tried to fix. Easy way to reproduce the issue is to start a task that just loops and calls sleep(). It will then be waiting for the timer alarm event, and the first TSTATE_WAIT_SIG branch is executed.
The problem I had is that using kill to terminate the task does not work, as the signal action for kill is not performed. I need to figure out a better way to fix this.

The solution seems to be quite simple.
Like I said the signal delivery was not broken, but scheduling the signal action did not work, when executing a system call. The solution seems to be to just simply add the signal action to the signal queue, not to the pending queue.
I will provide a patch in a moment.


Recommended way to debug a kernel

Thank you for providing such a great framework for simulation projects!
I have a warp kernel in my code and one of the warp tensors has nan values. I am unable to debug which tensor has nan values. It seems like wp.printf only works for scalar values and wp.isnan requires a wp.func wrapper in the kernel. I am curious to know what is the recommended way to debug a kernel in this situation? Additionally, are there any ways for kernel debugging recommended by the warp community?
Thanks,
Himangi

Hi Himangi, have you tried running your program with wp.config.verify_fp = True? (Docs) That should hopefully help you narrow it down to a specific kernel and maybe which array is getting bad values.
The wp.isnan() issue sounds unintentional, but it was just added so maybe there is something we overlooked. You should be able to use it directly in the kernels without wrapping it in a @wp.func. Can you provide an example showing what's not working with wp.isnan()?
Finally if it's possible to debug your code by running Warp kernels on the CPU, the instructions in our docs here might be helpful: https://nvidia.github.io/warp/debugging.html#step-through-debugging


Add redux logging

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

Current dependencies on/for this PR:

main

PR #28

PR #29   👈

This stack of pull requests is managed by Graphite.

Merge activity

Dec 21, 2:46 PM: @@kadhirvelm started a stack merge that includes this pull request via Graphite.


[WinForms ComboBox] selection by index is not possible for UIA backend

Hi,
I tried to select the item in combo box using index. But i get the following error
Version: pywinauto-0.6.4
Ref:
Application(backend="uia") using UIA as backend
self.mainForm.child_window(auto_id='NonEditableCombo', control_type='ComboBox').select(1)
I get the following exception:
Traceback (most recent call last):
  File ".../TestCaseSampleApp.py", line 18, in <module>
    TestAllControls()
  File ".../TestCaseSampleApp.py", line 10, in TestAllControls
    objSampleApp.combobox() #issue
  File "....\SampleApp.py", line 34, in combobox
    self.mainForm.child_window(auto_id='NonEditableCombo', control_type='ComboBox').select(1)
  File "....\uia_controls.py", line 158, in select
    self.expand()
  File "...\uiawrapper.py", line 457, in expand
    self.iface_expand_collapse.Expand()
  File "...\uiawrapper.py", line 129, in __get__
    value = self.fget(obj)
  File "...\uiawrapper.py", line 207, in iface_expand_collapse
    return uia_defs.get_elem_interface(elem, "ExpandCollapse")
  File "....\uia_defines.py", line 219, in get_elem_interface
    raise NoPatternInterfaceError()
pywinauto.uia_defines.NoPatternInterfaceError

Hi,
I have two combo box one is the editable combo box and another one is non editable combo box.
In Editable combo box support to type the value in edit box and also we can able select the item from drop down list.
In Non Editable combo box support only the value selection through drop down and select the item.
That's the difference between Editable and non Editable [ControlType.ComboBox].
Please find the following code to have issue clarity.
Step1: Attach the existing application [backend="uia"]
sampleApp = Application(backend="uia").connect(path='WinFormsApplication.exe')
Step2: Find the combo box and select item 0
combo = self.mainForm.child_window(auto_id='EditableCombo', control_type='ComboBox')
combo .select(0)
Issue
The above select didn't expand the combo box and select the item 0.
Exception:
Traceback (most recent call last):
File "../TestCaseSampleApp.py", line 20, in
TestAllControls()
File "../TestCaseSampleApp.py", line 11, in TestAllControls
objSampleApp.comboboxEditable() #issue
File "..\SampleApp.py", line 45, in comboboxEditable
combo.select(1)
File "..\uia_controls.py", line 158, in select
self.expand()
File "..\uiawrapper.py", line 510, in expand
self.iface_expand_collapse.Expand()
File "..\uiawrapper.py", line 131, in get
value = self.fget(obj)
File "..\uiawrapper.py", line 209, in iface_expand_collapse
return uia_defs.get_elem_interface(elem, "ExpandCollapse")
File "..\uia_defines.py", line 234, in get_elem_interface
raise NoPatternInterfaceError()
pywinauto.uia_defines.NoPatternInterfaceError

Well, I've found WinForms combo box sample app and this combo box doesn't support ExpandCollapsePattern, but there is ValuePattern. So this code might work for you:
combo.iface_value.SetValue("The exact text of the item")

Selection by index is possible when you're using Win32 backend:
app=Application(backend="win32").connect(path='WinFormsApplication.exe')
combo = app.mainForm.ComboBox1
combo.select(0)

Though auto_id property is not available in Win32 backend so finding the combo box is not that easy. I think we can improve this in the future (since it's a standard WinForms control). So will keep the issue open as an enhancement for usability.

Possible workaround found by another guy: https://stackoverflow.com/q/49436614/3648361

Hi @Vasanthkvr the issue seems already fixed in pywinauto==0.6.6. Please update it by pip install -U pywinauto and try again.


add action

Description
add action that moves items from done to closed until github API is able to manage project v2 (beta)

You can use GitHub graphql from GitHub actions to manage projects. I've done that before.

You don't need this JavaScript monstrosity. 🤣

Not really. This a a project V2 (beta). And the PO of the new project board decided to release it without exposing the GraphQL API for mutating custom fields. POs move issues on the board by hand 🤣. I would not not use a headless browser to simulate that if I could do a simple gh project...

I'm not following sorry.
So which action can't you do with the ProjectV2 graphQL API currently? https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects

I'm not following sorry.
So which action can't you do with the ProjectV2 graphQL API currently? https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects

@Skarlso , in principle I want to move Items from column "Done" to "Closed" if the date for the last update of an item in the done column is older than two weeks. If your https://github.com/Skarlso/caretaker/blob/main/pkg/client/client.go can be used for that, that would be cool :-)

Yep, that should be possible. I'll take a look! :)

[like]  Morrison, Gerald reacted to your message:

From: Gergely Brautigam @.>
Sent: Friday, March 22, 2024 2:37:03 PM
To: open-component-model/ocm-project @.>
Cc: Morrison, Gerald @.>; Comment @.>
Subject: Re: [open-component-model/ocm-project] add action (PR #159)
Yep, that should be possible. I'll take a look! :)
—
Reply to this email directly, view it on GitHubhttps://github.com/open-component-model/ocm-project/pull/159#issuecomment-2015241502, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQCYDIOYMIWZAHA2IFFEMF3YZQ6Y7AVCNFSM6AAAAABE5RSBMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJVGI2DCNJQGI.
You are receiving this because you commented.Message ID: @.***>

@morri-son @hilmarf updated to use caretaker. :)
Note: I don't think GITHUB_TOKEN will work as it doesn't have projectv2 permissions yet. 🤔

@morri-son I'm gonna merge this and then play around with running the action.


Make the bytecode to ShaderEntry cast work for compute shaders

Description
The ShaderEntry *CS() function returned bogus data (at least for me) which crashed RenderDoc in FetchRootSig when trying to extract the root signature (when compute->pRootSignature is NULL). It worked fine for other shaders so I looked for relevant differences between Serialise_CreateComputePipelineState and Serialise_CreateGraphicsPipelineState and I think I found one...
But I'm not sure about this change because I do not fully understand what's happening with those ShaderEntry-casts.

I've made a slightly different fix to this and pushed it, as this line you added was already present it just wasn't properly ordered against the call to FetchRootSig - can you try latest code?
For context, this unusual case of not specifying a root signature at PSO creation time was undertested before so it got broken, I thought I had already caught it and fixed it earlier but I missed this case for compute pipelines.

Your fix works as well, thanks.
PS: Not specifying the root signature for the PSO is required to avoid shader recompiles on certain platforms.


#trivial Deleted duplicated REGEXPBB

Fixed #1052 caused by the duplicated REGEXPBB that I've removed

          1 Warning

:warning:
Tests were not updated

  Generated by :no_entry_sign: Danger

Opps, I Was meant to merge this ages ago. Sorry!
Merge on green


always on top enhancement

Description of the new feature / enhancement
please add support for the Windows Clipboard to keep it always on top
Scenario when this would be used?
often use win +v hot key to open the clipboard is too bored and power toys always on top can’t work for it
Supporting information
No response

I think you want this always visible, /feedbackhub


Added Converters

Description of Change
Added 2 Converters to convert from string to double and int
API Changes

StringToIntConverter
StringToDoubleConverter

Behavioral Changes
Expected behavior with examples in   #438
PR Checklist

[x] Has tests (if omitted, state reason in description)
[ ] Has samples (if omitted, state reason in description)
[x] Rebased on top of main at time of PR
[x] Changes adhere to coding standard

Sorry my branches got messed up from the first one @AndreiMisiukevich

@jfversluis thank you for pointing out the problems i had, here is the updated version

@jfversluis I have updated the Csproj as requested


Onclick event on every stage

how to handle onclick event in this library on every stage of the progress bar

How did you sync this library? I am facing error: Could not find com.params.stepview:stepview:1.0.2


[Event Request] Page 7352 - Put-away Worksheet - OnBeforeGetWarehouseDocuments

Hi AL-Team,
can you please add the following publisher with "IncludeSender" to action GetWarehouseDocuments?
                action(GetWarehouseDocuments)
                {
                    ApplicationArea = Warehouse;
                    Caption = 'Get Warehouse Documents';
                    Ellipsis = true;
                    Image = GetSourceDoc;
                    Promoted = true;
                    PromotedCategory = Category4;
                    ShortCutKey = 'Shift+F11';
                    ToolTip = 'Select a warehouse document to pick for, such as a warehouse shipment.';

                    trigger OnAction()
                    var
                        GetWhsePutAwayDoc: Codeunit "Get Source Doc. Inbound";
                    begin
                        // NEW >>>>
                        OnBeforeGetWarehouseDocuments();
                        // NEW <<<<
                        GetWhsePutAwayDoc.GetSingleWhsePutAwayDoc(
                          CurrentWkshTemplateName, CurrentWkshName, CurrentLocationCode);
                        SortWhseWkshLines(
                          CurrentWkshTemplateName, CurrentWkshName,
                          CurrentLocationCode, CurrentSortingMethod);
                    end;
                }

    [IntegrationEvent(true, false)]
    local procedure OnBeforeGetWarehouseDocuments()
    begin
    end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Support warehouse urls with port inside

Fixes #239

Great work! I've improved it to support URLs without protocol, as it did before. Thank you for contribution :)


Make external creds configurable

Required for China
Towards https://github.com/giantswarm/giantswarm/issues/8182

Working on vendoring 1.16.3
This one is tested and ready for merge after vendoring sorted


Some Things to Fix with New TVM Version

Not ready for review yet. Just a start

@rachitnigam the interpreter tests that involve sequential mems are failing? Is there a way I can disable them for the interpreter?

CC @EclecticGriffin?

Can you try disabling them from the workflow file under .github/? Griffin can re-enable after #1204

Ok, I disabled the interpreter seq-mem tests. @rachitnigam can you take a look?


Yarn install fails with<EMAIL_ADDRESS>The engine "node" is incompatible with this module" on node version 18!

Hey there I am using the node version v18.13.0, and when I cloned this repository and tried to run yarn install I got this error:
<EMAIL_ADDRESS>The engine "node" is incompatible with this module. Expected version "^12.0.0 || ^14.0.0 || ^16.0.0". Got "18.13.0"
so I think one good solution could be adding a .nvmrc file in the root (as I fixed my problem with switching to node version 16 with the help of nvm)!

I created PR to fix this problem with the help of nvm!


Add project description

Please update README.md for that anyone can understand what the project is.

merged #77


How to properly make my SWA logout from a custom identity provider?

I saw this similar issue and I think this is a bug.
https://github.com/Azure/static-web-apps/issues/529
But I would like to understand better if this is something that will be fixed or do we really need to make the "reverse flow" to make it work. (Logout from IdP redirecting to app logout url).
Describe the bug
The app does not completely logs out when we visit the /logout url with a custom identity provider configured.
To Reproduce
Steps to reproduce the behavior:

Setup a custom identity provider
Login into the app
Then logout
The SWA app will be logged out but not the custom provider.
If you visit any url that requires authentication the app logs you in without requesting for credentials again.

Expected behavior
Logout from the SWA and from the custom identity provider.

Hi, we are taking a look at this issue and will post about a potential mitigation plan when we figure out the issue.

I have the same issue. I can confirm that /logout doesn't really log the user out from AAD or Google.
Steps to repro:

Navigate to /.auth/login/aad and login using a Microsoft Account. Say NO to 'Stay signed in?' prompt.
Navigate to /.auth/me to see the basic information on the logged in account to prove that I'm in the logged in state.
Navigate to /.auth/logout to logout. Immediately, navigate to /.auth/me again to confirm that my static Web App regards me as 'logged out.' I'd see this:
{"clientPrincipal": null}
Navigate to /.auth/login/aad again. Microsoft login page flashes by, and I am logged right back in with the previously logged out user.

Using .auth/login/google suffers from the same issues.
Things that sort of worked
Any of the two actions below alone seems to make the browser forget my logged-in state:

Close the whole browser and relaunch it. I'd get asked to pick the previous user (and then enter the password) or choose a new user.

After having logged in to SWA using AAD, open a new tab in the same browser, and navigate to hotmail.com. That tab will enjoy my logged-in state from the Static Web Apps tab. I'd see my mails right away. Then I log out from the hotmail.com tab, switch back to ***.azurestaticapps.net tab and see that I am still logged into my Static Web App. Good! Then if I log out from my Static Web App and try to log back in, it has forgotten my logged-in state this time. In other words, logging out from the hotmail.com tab is somehow more powerful.

Are there plans to make this work with AzureB2C when used as a custom provider?
A solution for AzureB2C (And most OIDC Providers) is to have .auth/logout redirect to the end session URL provided in the known good configuration, you can then pass a post_logout_redirect to get back to the .auth/login/AzureB2C page.
If you could provide a logout URL somewhere that .auth/logout should redirect to as part of the app configuration, or in the json configuration or even pick it up from the OpenID end session property from the known good configuration then it could be configured per static web app, allowing the same code to be used for multiple instances of the application utilizing different AzureB2C providers (multiple clients)

I think b2c supplies the logout URL in its config endpoint, so shouldn't need the URL as a setting, just whether it should log you out.

@mkarmark
I was banging my head against the wall trying to understand why logout was not working for my custom Azure B2C provider.
I just tested Github, twitter and Azure B2C. Logout does not work for any - logging in again never asks for credentials. If identity provider logout only works for a small handful of providers, this really needs to be said in the docs. It is a security concern, since obviously logout does not truly log you out.
https://docs.microsoft.com/en-us/azure/active-directory-b2c/configure-authentication-in-azure-static-app
This is an entire guide for setting up SWA with Azure B2C, it doesn't mention logout won't work for most ID providers.
https://docs.microsoft.com/en-us/azure/active-directory-b2c/configure-authentication-in-azure-static-app
Same here.

Any news on that? I am experience the same issue on a computer located in a public space. After I log in and then log out from the app, anyone could re-log on my behalf.

My custom identity provider (Azure B2C) has a logout URL. I was able to goto that logout URL (logging out of my Azure B2C tenant) then have that redirect to the Azure SWA url for logout, which would trigger a local logout of the SWA. This allowed me to excite some cleanup code, logout of the IDP and SWA.

Any progress here. We are experiencing the same issue.

I have this issue too.

like @TellonUK we ended up redirecting the user to "https://$(tenantName).b2clogin.com/$(tenantName).onmicrosoft.com/b2c_1_login/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2F$(redirectUri)%2F.auth%2Flogout" which then redirects the user to the swa logout page. seems to work for us.

Thanks for the reply @bzbetty. I'm using the built-in identity providers for Static Web Apps, e.g. "https://myurl.com/.auth/login/google". I'm not sure if that's why I don't have any luck, but when I try the URL you provided (using my tenantName and redirectUri) I receive "The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."

also the b2c_1_login section of the link is the name of your logout user flow

Right. I'm using the built-in auth of a static web app. So all I have is (twitter example): "https://mysite.com/.auth/login/twitter" and "https://mysite.com/.auth/logout". (also should note that "mytenantName" differs from mysite.com")

Hi,
Is there here any fix? I have tried with WSO2 custom identity provider. I have the same issue.

Hi there,
It's a long pending issue, any update on this?

+1 Still an issue with OIDC not being able to log our or even pass parameters to logout url

Is this still not resolved? I have an SWA using Entra ID authentication as outline in the documentation (https://learn.microsoft.com/en-us/azure/static-web-apps/authentication-custom?tabs=aad%2Cinvitations).
Using the /.auth/logout route tells me I'm logged out but if I go back to my webpage I am in fact not logged out


memory-sentinel: kill app on low memory available

Previously on YodaOSv7, we would rely on the voluntarily exit of apps to recollect the memory pages. Yet this strategy does do buggy things to app codes and works poorly on memory managements, we'd propose a new solution to reduce the redundant apps quits and make the memory usage more efficient.
In the PR, we introduced two strategy of memory management:

App memory water mark: apps should not consume memory more than the predefined water mark. Though the key and visible app that taking the burden of user interface(media player/views), which can inevitably increase the memory usage, could have a higher high water mark of memory.
Free available memory warnings: whilst the regular memory checks on single apps could limit a single app memory usage, a group of apps accumulates memory usage still could exceed the total memory of the device. On this topic we'd introduce two new low water mark, one for regular checks on device free available memory and dispatch low-memory-warnings to apps to free up as much memory as possible (if they comply); another for a fatal memory recollection which is enforced to suspend apps that are using the most accountable numbers of memory pages.

With the memory sentinel we could free the manual exiting of apps, and let apps stay in memory as long as there is still much available free memories. And the app would be ejected in force from memory until there is a now comer who triggered the low water mark of available memory.
Checklist

[x] npm test passes
[x] tests and/or benchmarks are included
[x] documentation is changed or added

Could we add these strategies that we introduced at our docs directory?

Add a configurable property to disable/enable this feature easily?


Homebrew cleanup

ping, @whesse

This doesn't work unless you add the path to update_homebrew.lib in ../../../.packages

And discovery commons isn't in third-party/pkg.
Reverting.

OK, not reverting, but this app requires running pub get in the package directory (tools/apps/update_homebrew), just like the previous version did.

😄


API Gateway Client missing get-export call

The ApiGatewayV2 client does not have a method for exporting the OpenAPI documentation.  This is implemented in boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/apigateway.html#APIGateway.Client.get_export
Is there any chance that this will be available soon?

The export method is part of the original ApiGateway package which is what you are also using in in boto3. Currently ApiGatewayV2 is only for the websocket support. I assume the API Gateway team has future plans to merge the APIs which is why they called it V2 for now.
Use the AWSSDK.APIGateway NuGet package and you wiill find the GetExport method on the service client.
using System;
using System.IO;
using System.Threading.Tasks;

using Amazon;
using Amazon.APIGateway;
using Amazon.APIGateway.Model;

namespace ConsoleApp55
{
    class Program
    {
        static async Task Main(string[] args)
        {
            using(var client = new AmazonAPIGatewayClient(RegionEndpoint.USEast1))
            {
                var request = new GetExportRequest
                {
                    RestApiId = "t2yh6sjnmk",
                    StageName = "prod",
                    ExportType = "oas30"
                };
                var response = await client.GetExportAsync(request);
                using(var reader = new StreamReader(response.Body))
                {
                    Console.WriteLine(reader.ReadToEnd());
                }
            }
        }
    }
}


chat.postMessage returns channel name in the response

@slack/bolt version
"@slack/bolt": "^3.16.0"
Your App and Receiver Configuration
(expressReceiver: ExpressReceiver from "@slack/bolt")
myApp = new App({ receiver: expressReceiver })`
Node.js runtime version
v20.11.1
Steps to reproduce:
Use chat.postMessage() function.
Sometimes we end up getting incorrect responses from the function.
Expected result:
The response should have channelID in it.
Example:
{
      channelId: 'C0Z12345'
}

Actual result:
Sometimes in the response, I'm getting the channel name as the value for the key channelID
Example:
{
      channelId: '#channelName'
}

I couldn't find anything in the docs, so @filmaj can you please confirm if this is an actual case?
Thanks 🙌

Actually, I'm not pretty sure if this is happening. And sorry I don't have any idea 🤷
A question: I think we're allowed to use the channel name to post a Slack message using chat.postMessage(). But we're not allowed to use a channel name withchat.update()?

Thanks for responding @filmaj, the above insights helped me debug my issue further and I think the issue lies on my end.
I somehow have the channel name with me which works fine with chat.postMessage() and then throws an error with chat.update().
I'll close the issue 🫡


Docs: Add py3 object.init() reference to properties

I'm not sure if it's really needed, but it represents a feature Kivy properties silently do and it can help beginners understand how Kivy properties work the Python way i.e. not just "It works(tm)" part of the codebase.
As a bonus we'd have a reference to the Py3 error explained even here which is probably a good to have part of the docs as I've seen it mentioned even on #kivy.

We hit this issue big time when starting with 3. I think it's really valuable to give concrete examples of how to handle this one. Nice one :+1:


Banner image: crash

If an image is uploaded in the "Banner Media Type" of an Episode in the CMS, the section (Channel) breaks.
To recreate:

Upload a new image to the Banner Media Type and save it.
Go to the Channels landing page an observe results.

CMS view

Console

Front end

Thanks, fixed.


update fan.py

Updated fan.py to call set methods from pychonet instead of using setMessages
#142

Thanks very much for your contribution. I will stitch this all up on the weekend as a new release.


Flutter(Dart>=2.0) has no effective support for Graph based backends like OrientDB and Neo4j

I was wondering is it possible to make Flutter running on Dart >= 2.0 work with a graph database back end solution like Orient DB? I searched on the web and the Dart package available both for Neo4j and OrientDB work only on Flutter running on Dart 1.0 [https://pub.dartlang.org/packages/orientdb_dart and https://pub.dartlang.org/packages/neo4j_dart]. However, I am on the stable Flutter channel and it uses a greater version of Dart. I am stuck because I have been learning Orient DB and Neo4j for months as I developed my App in Flutter and I am rather panicky to find no easy implementation of Flutter with graph databases. My App requires a non-relational model thus SQlite is out of the question. Firebase is Nosql and is a good alternative but I have never used it and it would mean learning a new database solution, which... just kills me inside. Is there a work around to make Flutter work with the graph solutions? It seems rather biased towards Firebase for a Nosql implementation but not everyone wants a Firebase backend. Graphs are very good solutions for highly connected data which my App depends on, I have spent too many hours on graphs to just throw them down the drain in the name of Firebase because Flutter doesn't have support for them.. Can anyone help me make work around with Flutter and Orient DB?
Thanks

I would recommend approaching the developer of https://pub.dartlang.org/packages/neo4j_dart and asking if you can fork his project and update it to Dart 2.0. Updating to Dart 2.0 isn't a substantial amount of work usually.
There's not much we can do beyond that (we don't want to get into the business of writing database plugins for each style that someone wants, obviously).

@Hixie thanks. So nothing would break to update it to Dart 2.0? And does it mean writing some native code?

Not sure wvhat you mean by "nothing would break". I mean, it's already broken, right? Updating it would mean fixing it.
Also not sure what you mean by "native". Updating Dart code to Dart 2.x should only requiring writing Dart, though.

I close this here because it doesn't seem to be a Flutter problem but more of a support question.

Oh yea that’s what I did but the serialization on the client side is a head
ache..
On Tue, 22 Oct 2019 at 5:19 PM, Samuel Earl<EMAIL_ADDRESS>wrote:

I was also curious about using Flutter with Neo4j. I have not tried this
myself, but maybe you could use Flutter with GraphQL and then have GraphQL
interface with Neo4j - something like the GRANDstack
https://grandstack.io/, which is also described on Neo4j's website
https://neo4j.com/developer/graphql/#grandstack.
Good luck!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/28689?email_source=notifications&email_token=AIQX7DNLU5ITFUXU7O2RIS3QP4KZNA5CNFSM4G3APSTKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEB6D4SI#issuecomment-545013321,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIQX7DMRAUN3YTFAAYXKYL3QP4KZNANCNFSM4G3APSTA
.

Hey Chimba123;
What steps did you take with creating a Neo4j DB for a Flutter application? I'm still new to this GraphDB world, as I was building for a NoSQL DB but then realized that Firestore DB is not what I'm looking for.. and now I'm still wrapping my head about what does it take to implement a Graphdb into a Flutter project.

your Neo4j database must have the graphQl plugin and your flutter app must
also have the graphQl plugin they will communicate using graphql
On Tue, Nov 19, 2019 at 1:24 PM Y-ndm<EMAIL_ADDRESS>wrote:

Hey Chimba123;
What steps did you take with creating a Neo4j DB for a Flutter
application? I'm still new to this GraphDB world, as I was building for a
NoSQL DB but then realized that Firestore DB is not what I'm looking for..
and now I'm still wrapping my head about what does it take to implement a
Graphdb into a Flutter project.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/28689?email_source=notifications&email_token=AIQX7DOQ2LDQEXQFT3EIXF3QUPEH5A5CNFSM4G3APSTKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEN3GJI#issuecomment-555463461,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIQX7DI7RCLM4B5H4DW2DRDQUPEH5ANCNFSM4G3APSTA
.

@Y-ndm  go through this for the Neo4j side:
https://blog.grandstack.io/using-the-neo4j-graphql-plugin-in-neo4j-desktop-c8a60aa014d9
also do the course on their site then go to the flutter graphql plugin

Okay.. Thank you so much for your help.


change jpg for JPG

change jpg for JPG

Your branch has the wrong naming, and your PR title should be the branch name.

Please replace the home hero image with image optimization.


net: Listener sometimes accepts connections after Close on Linux

I've written a repro test here:
https://github.com/prashantv/listener-repro/blob/master/main.go
It basically does the following:

Start a listener
Create connectionsBeforeClose connections to the listener (which should succeed)
Close the listener
Create another connection to the listener

On the listener side, I expect to receive at most connectionsBeforeClose successful connections. Any extra connections causes the runTest method to return an error.
This works as expected on OSX, but on Linux, it seems to receive a successful connection after the listener has been closed.
Some things I noticed:

If connectionsBeforeClose is set to 0, then no unexpected connections are made after the listener is closed
The issue also disappears if I enableSleep

I would expect that a Listener will not accept any further socket attempts after Close has returned.

This is a platform-indepedent issue and  a duplicate of #10527.

@mikioh I saw #10527, but I think this is a little different. #10527 is basically that the socket isn't closed since Accept has a reference to the underlying socket. However, the Accept should return an error when it is scheduled since the socket is closed.
In this case, Accept is not returning an error after the Close call. If you run the repro code, you'll see that it only fails on Linux and not OSX, so I'm not sure if this is a platform independent issue.

@prashantv,
Thanks for the notice, hm, perhaps we need to dig accept4 more on both Linux and FreeBSD.

@prashantv,
To conclude, this is a duplicate of #10527. In general this may happen when the shared fdMutex in TCPListener is taken by acceptor goroutine prior to TCPListener.Close like the following:

goroutine1: calls netFD.Close. Close sets the state to closed and increments and decrements the ref count, but decref doesn't call netFD.destroy because goroutine2 has a readlock.

See #10527 for further information.

@mikioh Ah, I thought that perhaps Accept would check whether the socket was marked as Closed but that doesn't affect epoll from accepting new connections.
It looks like the other issue has not had any progress since it was last marked as possibly for go 1.5. Can  #10527 be prioritized for go 1.7? Thanks


Update dialog titles for input and output configs

Fixes #1551
Not sure how I missed checking in the .resx files before. Oops.
Use "Input" and "Output" for the dialog titles instead of "InputConfigWizard" and "OutputConfigWizard".


Support yosys-optimizer on a secret-ified op

Yosys Optimizer doesn't currently support a module that contains a secret-ified op. This is because the verilog translator doesn't know how to convert secret types.
One thing that could be done is to translate the "forget-secrets" converted module, and then re-introduce the secret types.
(I also expect subsequent lowerings & conversions will choke on secret-wrapped types)
/usr/local/google/home/asraa/git/heir/tests/arith_to_tfhe_rust/add_one.mlir:5:3: error: 'func.func' op Failed to translate op func.func
  func.func @add_one(%in: !secret.secret<i8>) -> (!secret.secret<i8>) {
  ^
/usr/local/google/home/asraa/git/heir/tests/arith_to_tfhe_rust/add_one.mlir:5:3: note: see current operation:
"func.func"() <{function_type = (!secret.secret<i8>) -> !secret.secret<i8>, sym_name = "add_one"}> ({
^bb0(%arg0: !secret.secret<i8>):
  %0 = "arith.constant"() <{value = 1 : i8}> : () -> i8
  %1 = "secret.generic"(%arg0, %0) ({
  ^bb0(%arg1: i8, %arg2: i8):
    %2 = "arith.addi"(%arg1, %arg2) : (i8, i8) -> i8
    "secret.yield"(%2) : (i8) -> ()
  }) : (!secret.secret<i8>, i8) -> !secret.secret<i8>
  "func.return"(%1) : (!secret.secret<i8>) -> ()
}) : () -> ()

Oh, this is a good example of what I meant by having the yosys optimizer apply more generically: we could just apply the yosys optimizer to the body of the generic (excluding the yield), follow that with a secret-distribute-generic, and then add support in comb-to-cggi for secret types and generic ops (which makes a lot more sense because comb is semantically not operating on encrypted data).

I think we could even do this with a bit of wizardry by marking secret.generic as isolated from above and anchoring the entire yosys-optimizer pass on it, so that it will automatically apply to each secret.generic op in parallel... I will try this out.


can't create vpn_client_configuration

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Versions
terraform: 1.1.4
azure provider:  "~> 2.92.0"
module: 1.1.1
Description
I have the module running with site-to-site vpn, but altered it to also add config for vpn_client_configuration, it then fails on:
Error: Invalid for_each argument
│
│   on .terraform/modules/caf-enterprise-scale/resources.connectivity.tf line 2, in resource "azurerm_resource_group" "connectivity":
│    2:   for_each = local.azurerm_resource_group_connectivity
│     ├────────────────
│     │ local.azurerm_resource_group_connectivity will be known only after apply
│
│ The "for_each" value depends on resource attributes that cannot be
│ determined until apply, so Terraform cannot predict how many instances will
│ be created. To work around this, use the -target argument to first apply
│ only the resources that the for_each depends on.

Steps to Reproduce

configure vpn for site to site
add config for client

Screenshots
Additional context
config:
module "caf-enterprise-scale" {
  source  = "Azure/caf-enterprise-scale/azurerm"
  version = "1.1.1"
  providers = {
    azurerm              = azurerm
    azurerm.connectivity = azurerm
    azurerm.management   = azurerm
  }

  root_parent_id                = data.azurerm_client_config.core.tenant_id
  subscription_id_management    = var.subscription_id_management
  subscription_id_connectivity  = var.subscription_id_connectivity
  deploy_core_landing_zones     = false
  deploy_connectivity_resources = true
  default_tags                  = var.default_tags
  default_location              = var.default_location
  configure_connectivity_resources = {
    advanced = {
      custom_settings_by_resource_type = {
        azurerm_firewall = {
          connectivity = {
            (var.default_location) = {
              firewall_policy_id = azurerm_firewall_policy.firewall_policy.id
            }
          }
        }
        azurerm_virtual_network_gateway = {
          connectivity = {
            vpngw = {
              (var.default_location) = {
                enable_bgp    = true
                active_active = true
                bgp_settings = [{
                  asn               = var.az_bgp_asn
                  peering_addresses = []
                }]
                ip_configuration = [
                  {
                    name                          = "vnetGatewayConfig1"
                    public_ip_address_id          = azurerm_public_ip.vpn_gw[0].id
                    private_ip_address_allocation = "Dynamic"
                    subnet_id                     = data.azurerm_subnet.gateway_subnet.id
                  },
                  {
                    name                          = "vnetGatewayConfig2"
                    public_ip_address_id          = azurerm_public_ip.vpn_gw[1].id
                    private_ip_address_allocation = "Dynamic"
                    subnet_id                     = data.azurerm_subnet.gateway_subnet.id
                  }
                ]
                vpn_client_configuration = {
                  address_space        = ["<IP_ADDRESS>/24"]
                  vpn_auth_types       = ["AAD"]
                  vpn_client_protocols = ["OpenVPN"]
                  aad_issuer           = "https://sts.windows.net/${data.azurerm_client_config.core.tenant_id}/"
                  aad_audience         = azurerm_user_assigned_identity.vpn_client_gw.client_id
                  aad_tenant           = "https://login.microsoftonline.com/${data.azurerm_client_config.core.tenant_id}"
                }
              }
            }
          }
        }
      }
    }
    settings = {
      hub_networks = [
        {
          enabled = true
          config = {
            address_space                = var.hub_network_address_space
            location                     = var.default_location
            link_to_ddos_protection_plan = false
            dns_servers                  = []
            bgp_community                = ""
            subnets = [
              {
                name                      = "AzureBastionSubnet"
                address_prefixes          = [XXXX]
                network_security_group_id = null
                route_table_id            = null
              },
              {
                name                      = "ApplicationGatewaySubnet"
                address_prefixes          = [YYYY]
                network_security_group_id = null
                route_table_id            = null
              },
              {
                name                      = "APIManagementSubnet"
                address_prefixes          = [var.api_management_subnet]
                network_security_group_id = null
                route_table_id            = null

              }

            ]
            virtual_network_gateway = {
              enabled = true
              config = {
                address_prefix           = var.virtual_network_gateway_range
                gateway_sku_expressroute = ""
                gateway_sku_vpn          = var.vpn_gw_sku
              }
            }
            azure_firewall = {
              enabled = true
              config = {
                address_prefix   = var.azure_firewall_range
                enable_dns_proxy = true
                availability_zones = {
                  zone_1 = true
                  zone_2 = true
                  zone_3 = true
                }
              }
            }
            spoke_virtual_network_resource_ids      = ["/subscriptions/${var.lz1.subscription_id}/resourceGroups/${var.lz1.spoke_vnet_resouce_group}/providers/Microsoft.Network/virtualNetworks/${var.lz1.spoke_vnet_name}"]
            enable_outbound_virtual_network_peering = true
          }
        }
      ]
      vwan_hub_networks = []
      ddos_protection_plan = {
        enabled = false
        config = {
          location = var.default_location
        }
      }
      dns = {
        enabled = true
        config = {
          location = null
          enable_private_link_by_service = {
            azure_automation_webhook             = true
            azure_automation_dscandhybridworker  = true
            azure_sql_database_sqlserver         = true
            azure_synapse_analytics_sqlserver    = true
            azure_synapse_analytics_sql          = true
            storage_account_blob                 = true
            storage_account_table                = true
            storage_account_queue                = true
            storage_account_file                 = true
            storage_account_web                  = true
            azure_data_lake_file_system_gen2     = true
            azure_cosmos_db_sql                  = true
            azure_cosmos_db_mongodb              = true
            azure_cosmos_db_cassandra            = true
            azure_cosmos_db_gremlin              = true
            azure_cosmos_db_table                = true
            azure_database_for_postgresql_server = true
            azure_database_for_mysql_server      = true
            azure_database_for_mariadb_server    = true
            azure_key_vault                      = true
            azure_kubernetes_service_management  = true
            azure_search_service                 = true
            azure_container_registry             = true
            azure_app_configuration_stores       = true
            azure_backup                         = true
            azure_site_recovery                  = true
            azure_event_hubs_namespace           = true
            azure_service_bus_namespace          = true
            azure_iot_hub                        = true
            azure_relay_namespace                = true
            azure_event_grid_topic               = true
            azure_event_grid_domain              = true
            azure_web_apps_sites                 = true
            azure_machine_learning_workspace     = true
            signalr                              = true
            azure_monitor                        = true
            cognitive_services_account           = true
            azure_file_sync                      = true
            azure_data_factory                   = true
            azure_data_factory_portal            = true
            azure_cache_for_redis                = true
          }
          private_link_locations                                 = []
          public_dns_zones                                       = []
          private_dns_zones                                      = []
          enable_private_dns_zone_virtual_network_link_on_hubs   = true
          enable_private_dns_zone_virtual_network_link_on_spokes = true
        }
      }
    }

    location = var.default_location
    tags     = var.default_tags
  }
}

Thank you for logging this question @davidkarlsen... and great work on the advanced configuration!!
Unfortunately, the issue above is something which will be difficult to resolve in the module without a complete change to the naming convention used for our resources. This is something which is in consideration but will need to wait for a significant re-design of the module as it will require resource migrations within the Terraform state to avoid a complete re-deployment of critical resources (something which Hashicorp are in the process of making easier in the latest releases of Terraform, but isn't ready for us to rely on).
For now, I think the best way to address this is to remove the following resource reference and replace it with a literal value, as I believe this is the item causing the problem:
firewall_policy_id = azurerm_firewall_policy.firewall_policy.id

I appreciate this isn't idea, but until we can address #233 this is an unfortunately limitation of our current design.
You can also find more details relating to your scenario within issue #214 where another customer came across this challenge.

@krowlandson that's not it, doing that change will still give:
Error: Invalid for_each argument │  │   on .terraform/modules/caf-enterprise-scale/resources.connectivity.tf line 2, in resource "azurerm_resource_group" "connectivity": │    2:   for_each = local.azurerm_resource_group_connectivity │     ├──────────────── │     │ local.azurerm_resource_group_connectivity will be known only after apply │  │ The "for_each" value depends on resource attributes that cannot be │ determined until apply, so Terraform cannot predict how many instances will │ be created. To work around this, use the -target argument to first apply │ only the resources that the for_each depends on. ╵ Releasing state lock. This may take a few moments...

Interesting, thank you for the update @davidkarlsen.
It's possible it may also be due to the resource references within each of the IP configurations 😞
Most likely this one:
                    public_ip_address_id          = azurerm_public_ip.vpn_gw[0].id

but also possibly this one:
                    subnet_id                     = data.azurerm_subnet.gateway_subnet.id

As we've already discussed with you in #232, we are planning to add native support for active-active configuration by just setting active_active = true in release v1.2.0 which should remove the need to create a custom IP configuration and partially mitigate this.

No, I don't think so, because all of that is working, it's first when I add:
git diff main
diff --git a/main.tf b/main.tf
index b237b40..4a1bcba 100644
--- a/main.tf
+++ b/main.tf
@@ -47,6 +47,13 @@ provider "azurerm" {

 data "azurerm_client_config" "core" {}

+resource "azurerm_user_assigned_identity" "vpn_client_gw" {
+  location = var.default_location
+  name     = "isfss-baas-dev-vpngw-client"
+  #resource_group_name = local.comms_resource_group_name
+  resource_group_name = "es-connectivity-norwayeast"
+}
+
 module "caf-enterprise-scale" {
   source  = "Azure/caf-enterprise-scale/azurerm"
   version = "1.1.2"
@@ -97,6 +104,14 @@ module "caf-enterprise-scale" {
                     subnet_id                     = data.azurerm_subnet.gateway_subnet.id
                   }
                 ]
+                vpn_client_configuration = {
+                  address_space        = ["<IP_ADDRESS>/24"]
+                  vpn_auth_types       = ["AAD"]
+                  vpn_client_protocols = ["OpenVPN"]
+                  aad_issuer           = "https://sts.windows.net/${data.azurerm_client_config.core.tenant_id}/"
+                  aad_audience         = azurerm_user_assigned_identity.vpn_client_gw.client_id
+                  aad_tenant           = "https://login.microsoftonline.com/${data.azurerm_client_config.core.tenant_id}"
+                }
               }
             }
           }

that it fails.

Have you tested the module doing S2S and P2S at the same time?

As we've already discussed with you in #232, we are planning to add native support for active-active configuration by just setting active_active = true in release v1.2.0 which should remove the need to create a custom IP configuration and partially mitigate this.

But please leave the option to pass an ip_configuration, that means we can allocate the IPs outside of the module and keep them fixed, even if the VPN-gw would be re-created.

But please leave the option to pass an ip_configuration, that means we can allocate the IPs outside of the module and keep them fixed, even if the VPN-gw would be re-created.

Custom provided values will always take precedence over default config settings, so this won't be a problem 😄

Have you ever tested the module doing S2S and P2S at the same time?

In short, no. But if you have narrowed it down to that specific change, I would see whether the following line is causing the issue:
aad_audience         = azurerm_user_assigned_identity.vpn_client_gw.client_id

As per the suggestions above, we have a number of issues where parsing in values which cannot be determined until after apply can cause the error you've observed.
This is one of the factors we consider when recommending to decompose your deployment into multiple stages so you're inputs to the module are already known.

As we've already discussed with you in #232, we are planning to add native support for active-active configuration by just setting active_active = true in release v1.2.0 which should remove the need to create a custom IP configuration and partially mitigate this.

But please leave the option to pass an ip_configuration, that means we can allocate the IPs outside of the module and keep them fixed, even if the VPN-gw would be re-created.

Note that we have left the option to specify a custom ip_configuration as requested:
https://github.com/Azure/terraform-azurerm-caf-enterprise-scale/blob/a0801f92c3c96b328388e453a3a15ef1d79e7def/modules/connectivity/locals.tf#L620-L658
We have also used the presence of this value as a control to determine whether to create azurerm_public_ip resource(s) for the associated resource, as shown here:
https://github.com/Azure/terraform-azurerm-caf-enterprise-scale/blob/a0801f92c3c96b328388e453a3a15ef1d79e7def/modules/connectivity/locals.tf#L685-L686
As an FYI, I don't believe any changes we made in this release will make any difference to the original error you were getting for depends on resource attributes that cannot be determined until apply and I'm not sure it would be possible either with the current module architecture. This is something I hope to look at in the future though.

We now have the variables to configure this surfaced in module version 2.0.0. @davidkarlsen please can you confirm if this is still an issue?

I have a WIP branch, but I need to sort out some errors before we can merge it. I hope to do so over the coming weeks. I'll get back to you.
Thanks for the release!

Anything we can help with @davidkarlsen?
Hopefully the upgrade guide covers everything but good to know if we missed anything.

Picking up this again.
I've added some of the params that are now required:
 module "caf-enterprise-scale" {
   source  = "Azure/caf-enterprise-scale/azurerm"
-  version = "1.1.4"
+  version = "2.0.0"
   providers = {
     azurerm              = azurerm
     azurerm.connectivity = azurerm
@@ -166,8 +166,11 @@ module "caf-enterprise-scale" {
             azure_firewall = {
               enabled = true
               config = {
-                address_prefix   = var.azure_firewall_range
-                enable_dns_proxy = true
+                address_prefix           = var.azure_firewall_range
+                sku_tier                 = "Standard"
+                threat_intelligence_mode = "Deny"
+                base_policy_id           = azurerm_firewall_policy.firewall_policy.id
+                enable_dns_proxy         = true
                 availability_zones = {
                   zone_1 = true
                   zone_2 = true

and now end up with a shorter list of:
The given value is not suitable for child module variable
│ "configure_connectivity_resources" defined at
│ .terraform/modules/caf-enterprise-scale/variables.tf:203,1-44: attribute
│ "settings": attribute "hub_networks": element 0: attribute "config":
│ attribute "azure_firewall": attribute "config": attributes "dns_servers",
│ "private_ip_ranges", and "threat_intelligence_allowlist" are required.
╵

Seems dns-servers needs to be explicitly listed now, I can't use "Default" ? Unsure about private_ip_ranges and threat_intelligence_allowlist

@krowlandson sorry, i see that is actually covered in the migration guide, closing the gaps now.

No worries @davidkarlsen... Please let us know if anything is missing!

Moving parameters around and reading migration guide, but it's still a bit unclear to me where I should place ip_configuration for my VNG:
  # module.caf-enterprise-scale.azurerm_virtual_network_gateway.connectivity["/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/virtualNetworkGateways/es-vpngw-norwayeast"] will be updated in-place
  ~ resource "azurerm_virtual_network_gateway" "connectivity" {
        id                         = "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/virtualNetworkGateways/es-vpngw-norwayeast"
        name                       = "es-vpngw-norwayeast"
      ~ tags                       = {
          ~ "deployedBy"   = "terraform/azure/caf-enterprise-scale/v1.1.4" -> "terraform/azure/caf-enterprise-scale/v2.0.0"
            # (4 unchanged elements hidden)
        }
        # (9 unchanged attributes hidden)

      ~ ip_configuration {
          ~ name                          = "vnetGatewayConfig1" -> "es-vpngw-norwayeast-pip"
          ~ public_ip_address_id          = "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/publicIPAddresses/VpnGw0" -> "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/publicIPAddresses/es-vpngw-norwayeast-pip"
            # (2 unchanged attributes hidden)
        }
      ~ ip_configuration {
          ~ name                          = "vnetGatewayConfig2" -> "es-vpngw-norwayeast-pip2"
          ~ public_ip_address_id          = "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/publicIPAddresses/VpnGw1" -> "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/publicIPAddresses/es-vpngw-norwayeast-pip2"
            # (2 unchanged attributes hidden)
        }
      - ip_configuration {
          - name                          = "vnetGatewayConfig3" -> null
          - private_ip_address_allocation = "Dynamic" -> null
          - public_ip_address_id          = "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/publicIPAddresses/VpnGw2" -> null
          - subnet_id                     = "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/virtualNetworks/es-hub-norwayeast/subnets/GatewaySubnet" -> null
        }

I can't find any place for it in https://github.com/Azure/terraform-azurerm-caf-enterprise-scale/blob/246cf7de44369b2a40a1b07fafdd8b8b792e7c35/tests/modules/settings/settings.connectivity.tf#L17

🦆 Confused myself - I notice the settings are now spread over two different sections, and the "old" section is now also renamed - made it all a bit hard to follow (what is the logic behind this) - but I am closing in on the diffs now.

OK, having applied it all, it now fails at:
Error: Creating/Updating Virtual Network Gateway: (Name "es-vpngw-norwayeast" / Resource Group "es-connectivity-norwayeast"): network.VirtualNetworkGatewaysClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="VirtualNetworkGatewayBgpPeeringAddressCannotBeModified" Message="The BgpPeeringAddress for the virtual network gateway /subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/virtualNetworkGateways/es-vpngw-norwayeast cannot be modified" Details=[]

how can I preserve my bgp setup? My diffs is:
diff --git a/main.tf b/main.tf
index d777433..e105380 100644
--- a/main.tf
+++ b/main.tf
@@ -8,7 +8,7 @@ terraform {
   required_providers {
     azurerm = {
       source  = "hashicorp/azurerm"
-      version = "~> 2.99.0"
+      version = "~> 3.0.2"
     }
     cloudflare = {
       source  = "cloudflare/cloudflare"
@@ -56,7 +56,7 @@ data "azurerm_client_config" "core" {}

 module "caf-enterprise-scale" {
   source  = "Azure/caf-enterprise-scale/azurerm"
-  version = "1.1.4"
+  version = "2.0.1"
   providers = {
     azurerm              = azurerm
     azurerm.connectivity = azurerm
@@ -81,44 +81,28 @@ module "caf-enterprise-scale" {
           }
         }
         azurerm_virtual_network_gateway = {
-          connectivity = {
-            vpngw = {
-              (var.default_location) = {
-                enable_bgp    = true
-                active_active = true
-                bgp_settings = [{
-                  asn               = var.az_bgp_asn
-                  peering_addresses = []
-                }]
-                ip_configuration = [
-                  {
-                    name                          = "vnetGatewayConfig1"
-                    public_ip_address_id          = azurerm_public_ip.vpn_gw[0].id
-                    private_ip_address_allocation = "Dynamic"
-                    subnet_id                     = data.azurerm_subnet.gateway_subnet.id
-                  },
-                  {
-                    name                          = "vnetGatewayConfig2"
-                    public_ip_address_id          = azurerm_public_ip.vpn_gw[1].id
-                    private_ip_address_allocation = "Dynamic"
-                    subnet_id                     = data.azurerm_subnet.gateway_subnet.id
-                  },
-                  {
-                    name                          = "vnetGatewayConfig3"
-                    public_ip_address_id          = azurerm_public_ip.vpn_gw[2].id
-                    private_ip_address_allocation = "Dynamic"
-                    subnet_id                     = data.azurerm_subnet.gateway_subnet.id
-                  }
-                ]
-                vpn_client_configuration = [{
-                  address_space        = [var.client_vpn_ipaddress_range]
-                  vpn_auth_types       = ["AAD"]
-                  vpn_client_protocols = ["OpenVPN"]
-                  aad_issuer           = "XXX
-                  aad_audience         = var.client_vpn_audience
-                  aad_tenant           = "XXXX"
-                }]
-              }
+          connectivity_vpn = {
+            (var.default_location) = {
+              ip_configuration = [
+                {
+                  name                          = "vnetGatewayConfig1"
+                  public_ip_address_id          = azurerm_public_ip.vpn_gw[0].id
+                  private_ip_address_allocation = "Dynamic"
+                  subnet_id                     = data.azurerm_subnet.gateway_subnet.id
+                },
+                {
+                  name                          = "vnetGatewayConfig2"
+                  public_ip_address_id          = azurerm_public_ip.vpn_gw[1].id
+                  private_ip_address_allocation = "Dynamic"
+                  subnet_id                     = data.azurerm_subnet.gateway_subnet.id
+                },
+                {
+                  name                          = "vnetGatewayConfig3"
+                  public_ip_address_id          = azurerm_public_ip.vpn_gw[2].id
+                  private_ip_address_allocation = "Dynamic"
+                  subnet_id                     = data.azurerm_subnet.gateway_subnet.id
+                }
+              ]
             }
           }
         }
@@ -161,13 +145,43 @@ module "caf-enterprise-scale" {
                 address_prefix           = var.virtual_network_gateway_range
                 gateway_sku_expressroute = ""
                 gateway_sku_vpn          = var.vpn_gw_sku
+                advanced_vpn_settings = {
+                  enable_bgp                       = true
+                  active_active                    = true
+                  private_ip_address_allocation    = ""
+                  default_local_network_gateway_id = ""
+                  bgp_settings = [{
+                    asn               = var.az_bgp_asn
+                    peer_weight       = 32768
+                    peering_addresses = []
+                  }]
+                  vpn_client_configuration = [{
+                    address_space         = [var.client_vpn_ipaddress_range]
+                    vpn_auth_types        = ["AAD"]
+                    vpn_client_protocols  = ["OpenVPN"]
+                    aad_issuer            = "XXX"
+                    aad_audience          = var.client_vpn_audience
+                    aad_tenant            = "XXX"
+                    radius_server_address = null
+                    radius_server_secret  = null
+                    revoked_certificate   = []
+                    root_certificate      = []
+                  }]
+                  custom_route = []
+                }
               }
             }
             azure_firewall = {
               enabled = true
               config = {
-                address_prefix   = var.azure_firewall_range
-                enable_dns_proxy = true
+                address_prefix                = var.azure_firewall_range
+                sku_tier                      = "Standard"
+                private_ip_ranges             = []
+                threat_intelligence_mode      = "Deny"
+                threat_intelligence_allowlist = []
+                base_policy_id                = azurerm_firewall_policy.firewall_policy.id
+                dns_servers                   = []
+                enable_dns_proxy              = true
                 availability_zones = {
                   zone_1 = true
                   zone_2 = true

Hi @davidkarlsen
I'm back in the office on Monday. I'll have a proper look at this then if that's OK although it sounds like something in your configuration is still resulting in an unexpected change so it might be helpful to have a copy of your full before and after config if that's possible? Could you share via a private repo using branches for each?

@krowlandson I can share most of it privately, although the diff above should show it.
What's really strange too, is that the vpn gw shouldn't really change according to the plan:
  # module.caf-enterprise-scale.azurerm_virtual_network_gateway.connectivity["/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/virtualNetworkGateways/es-vpngw-norwayeast"] will be updated in-place
  ~ resource "azurerm_virtual_network_gateway" "connectivity" {
        id                         = "/subscriptions/***/resourceGroups/es-connectivity-norwayeast/providers/Microsoft.Network/virtualNetworkGateways/es-vpngw-norwayeast"
        name                       = "es-vpngw-norwayeast"
      ~ tags                       = {
          ~ "deployedBy"   = "terraform/azure/caf-enterprise-scale/v1.1.4" -> "terraform/azure/caf-enterprise-scale/v2.0.1"
            # (4 unchanged elements hidden)
        }
        # (9 unchanged attributes hidden)

        # (5 unchanged blocks hidden)
    }

This code https://github.com/Azure/terraform-azurerm-caf-enterprise-scale/blob/246cf7de44369b2a40a1b07fafdd8b8b792e7c35/resources.connectivity.tf#L216 does not seem to match what you can give as input: https://github.com/Azure/terraform-azurerm-caf-enterprise-scale/blob/main/variables.tf#L263

@krowlandson any update here?

This code
https://github.com/Azure/terraform-azurerm-caf-enterprise-scale/blob/246cf7de44369b2a40a1b07fafdd8b8b792e7c35/resources.connectivity.tf#L216
does not seem to match what you can give as input: https://github.com/Azure/terraform-azurerm-caf-enterprise-scale/blob/main/variables.tf#L263

Thank you for this... it seems we didn't clean this one up correctly. I'll get a PR raised to fix this.
I'm also taking a look at the rest of this issue today.

@davidkarlsen, as discussed offline we will close this issue as the original ask is now resolved.
Regarding the error you experienced on update, we have been unable to reproduce this behaviour but believe this to be an external issue. As you were able to resolve this by ensuring that the target resource configuration (tags) matched those in code (thereby negating the need to update the resource), we believe this may be either the AzureRM Provider, the SDK, or something on the Azure resource provider side causing this. If anyone else experiences this, we'll continue investigation as necessary.
Thank you for your support and patience working through this.