Crash while resizing window

http://pastebin.com/9FajR4du

Hi @GBitencourt and thanks for the report!
What system are you running the game on and where did you get the game from? Latest version on Steam? Is there anything unusual on your system that might impact window sizing? Like some sort of window position/size saving utility program, or anything of the kind?
The log statement is very useful and I see where the crash happen, I think we can avoid it at the very least by just canceling the resize or something like that, but am curious what caused that condition to occur in the first place.

I'm using windows 10. Downloaded the game on Steam. No, nothing.
Cancel the resizing would fix. You also could put prompt window to choose
the video configuration in the first launch...
I launched the game and started the tutorial, so it started in 800x600
windowed, so instead in change the resolution, I first maximized the
window, I didnt like it because it stretched the graphics, so I put it back
to normal and tried to resize it to keep the ratio and touch the screen
borders, than it crashed. I later launched, changed the screen resolution
and avoided to modify the window size through the window border.
Thanks,
Gustavo
On Mon, Aug 1, 2016 at 3:44 PM, Rasmus Praestholm<EMAIL_ADDRESS>wrote:

Hi @GBitencourt https://github.com/GBitencourt and thanks for the
report!
What system are you running the game on and where did you get the game
from? Latest version on Steam? Is there anything unusual on your system
that might impact window sizing? Like some sort of window position/size
saving utility program, or anything of the kind?
The log statement is very useful and I see where the crash happen, I think
we can avoid it at the very least by just canceling the resize or something
like that, but am curious what caused that condition to occur in the first
place.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MovingBlocks/DestinationSol/issues/105#issuecomment-236669749,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMUNsQyVgeRbgLRs6csEtzTMwwnvBOB7ks5qbj6LgaJpZM4JZ1V8
.

We've been able to reproduce this issue now. Thanks again for reporting it @GBitencourt :-)

No problem! Good luck and thanks to keep me in touch!
On Thu, Aug 4, 2016 at 12:28 AM, Rasmus Praestholm<EMAIL_ADDRESS>
wrote:

We've been able to reproduce this issue now. Thanks again for reporting it
@GBitencourt https://github.com/GBitencourt :-)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MovingBlocks/DestinationSol/issues/105#issuecomment-237442890,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMUNsSg3raJgtoCmCeqeYm3NGKzpO7gIks5qcVxKgaJpZM4JZ1V8
.

Anyone still got the paste? I fixed this issue for our version... but i don't remember what we changed.

Just got a new report of what is probably the same issue, and I think we can probably still figure out reproducing it. New pastebin also expires but here it is copy pasted in (probably another of the weird crash errors instead of just picking a safe number and logging a warning):
USER-GIVEN INFO:
Tried to change the size of the window using the cursor. I was able to grab the corner, but then the mouse was captured again and it brought the window down to 0 size and crashed.

ERROR STACK TRACE:
com.badlogic.gdx.utils.GdxRuntimeException: java.lang.AssertionError: normalizing NaN angle
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:127)
Caused by: java.lang.AssertionError: normalizing NaN angle
    at org.destinationsol.common.SolMath.norm(SolMath.java:80)
    at org.destinationsol.common.SolMath.angleDiff(SolMath.java:406)
    at org.destinationsol.game.input.Mover.needsToTurn(Mover.java:138)
    at org.destinationsol.game.screens.ShipMixedControl.update(ShipMixedControl.java:75)
    at org.destinationsol.game.screens.MainScreen.updateCustom(MainScreen.java:203)
    at org.destinationsol.ui.SolInputManager.update(SolInputManager.java:220)
    at org.destinationsol.SolApplication.update(SolApplication.java:132)
    at org.destinationsol.SolApplication.safeUpdate(SolApplication.java:111)
    at org.destinationsol.SolApplication.render(SolApplication.java:91)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:215)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)

Just got a new report of what is probably the same issue, and I think we can probably still figure out reproducing it. New pastebin also expires but here it is copy pasted in (probably another of the weird crash errors instead of just picking a safe number and logging a warning):
USER-GIVEN INFO:
Tried to change the size of the window using the cursor. I was able to grab the corner, but then the mouse was captured again and it brought the window down to 0 size and crashed.

ERROR STACK TRACE:
com.badlogic.gdx.utils.GdxRuntimeException: java.lang.AssertionError: normalizing NaN angle
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:127)
Caused by: java.lang.AssertionError: normalizing NaN angle
    at org.destinationsol.common.SolMath.norm(SolMath.java:80)
    at org.destinationsol.common.SolMath.angleDiff(SolMath.java:406)
    at org.destinationsol.game.input.Mover.needsToTurn(Mover.java:138)
    at org.destinationsol.game.screens.ShipMixedControl.update(ShipMixedControl.java:75)
    at org.destinationsol.game.screens.MainScreen.updateCustom(MainScreen.java:203)
    at org.destinationsol.ui.SolInputManager.update(SolInputManager.java:220)
    at org.destinationsol.SolApplication.update(SolApplication.java:132)
    at org.destinationsol.SolApplication.safeUpdate(SolApplication.java:111)
    at org.destinationsol.SolApplication.render(SolApplication.java:91)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:215)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)

Closing this from age / high likelihood now invalid. Somewhat keeping track from newer issue #393
On win10 using the windows key to escape the window from in-game without pause I can resize without a crash at least, so that's something seemingly fixed :-)
Anybody still experiencing issues please open a new issue or add details to #393


Invalid file url , cannot access file

I'm not sure why, but the path i'm passing in is valid.  I have the right access to read and write to this file. Any insight as to why this might be happening
file:///storage/sdcard/Android/data/XXXXXXXX/files/presentations/1269/abc/Https_testing.pdf
{message: "invalid file url 'file:///storage/sdcard/Android/d…pdf' or no viewer for mime type 'application/pdf'", details: {…}}details: {status: 0, message: "File 'file:///storage/sdcard/Android/data/com.inde…esting.pdf' is not available (cannot access file)"}message: "invalid file url 'file:///storage/sdcard/Android/data/dddddd/files/presentations/1269/abc/Https_testing.pdf' or no viewer for mime type 'application/pdf'"proto: Object
_logError @ sitewaertsdocumentviewer.js:344
_onError @ sitewaertsdocumentviewer.js:349
(anonymous) @ sitewaertsdocumentviewer.js:431
exec.url @ sitewaertsdocumentviewer.js:204
callbackFromNative @ cordova.js:294
(anonymous) @ VM584:1
androidExec @ cordova.js:971
canViewDocument @ sitewaertsdocumentviewer.js:177
viewDocument @ sitewaertsdocumentviewer.js:365
webpackJsonp../src/pages/meeting/meeting.ts.MeetingPage.openPDFOnDeviceUsingDocViewer @ main.js:303344
webpackJsonp../src/pages/meeting/meeting.ts.MeetingPage.handleOpenLink @ main.js:303285
(anonymous) @ main.js:303233
postMessage (async)
onclick @ android.html:8

Still facing the same issue


Dependencies too restrictives

Quokka setup.py defines the following dependencies:

capstone>=4.0.2,<5,
networkx>=2.4,<3,
protobuf>=3.12.2,<4,
pypcode>=1.1.1,<2,

As capstone 5.0.0 is now released, it makes quokka incompatible with latest capstone version. I am wondering why we purposely restricted the maximum version. I suggest:

removing max version enforcement (unless truly incompatible)
removing pypcode as a mandatory dependency. It brings a lot of additional dependencies and is not used in most Quokka usages. Thus I'd suggest moving it as extra_require, and  importing it when being used (and failing nicely if it is not installed).

I am wondering why we purposely restricted the maximum version. I suggest:

The idea here is to make sure we don't introduce a breaking change in Quokka before it has been tested. If the dependency follows semantic versioning best practices, it guarantees that incompatible API change only occur during major version update ( exactly those who are prevented by this requirement).

removing pypcode as a mandatory dependency

I completely agree here :)


Add Upload functionality

Your library is great could you add upload files too that would be brilliant like retrofit 2 but with pause and resume ability unlike that one.

@Stevemoretz you need to create an issue ticket, not a pull request for this.


linting rating

how does it work to rate the code with a score out of 10

I answered this in my group's issues just now (https://github.com/ubsuny/23-Homework4G4/issues/68)


ACCUMULO-4157 Bug fix for removing WALs to quickly

DON'T MERGE - internal PR for viewing
Keep track of first time a tserver is seen down and only remove WALs for that server if past configurated threshhold
Much work left to be done here, but trying to keep the changes small to fix the bug.  I'll create another ticket to refactor and cleanup

There was a misleading message logged, but I don't remember what it was.  Did you fix that?  I just saw a log message that was changed and that made me remember.  But not sure if that was the misleading one we saw.

Yes, it was number 1 on the ticket, https://issues.apache.org/jira/browse/ACCUMULO-4157
Used to say
log.debug("deleted " + entry.getValue() + " from " + entry.getKey());
at https://github.com/apache/accumulo/blob/1.6/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectWriteAheadLogs.java#L211
Now says
log.debug("asking tserver to delete " + entry.getValue() + " from " + entry.getKey());

@keith-turner I think I have fixes for your suggestions and the commit is pushed.  It looks much nicer.  Still working on a test for the collect method when servers are down to get more of an end to end test


Remote version is empty.

Fix this issue:
The current version is , but you have 2.2.0.

Sorry for not replying earlier. This changes the behaviour of GVM significantly. Since this radical change of behaviour was never discussed upfront (and also I don't agree with), I cannot merge the PR.
GVM functions much like a browser does, only in the shell. It makes regular calls back home for several reasons:

checks if new broadcasts are available, a core part of gvm
makes sure that you are still online, otherwise goes into offline mode
checks daily to see if new updates are available

I think that removing these checks will break gvm in many other places since it is vital for it to remain connected to the internet. Once again, would you try using a browser while being offline? Well neither would you do so with GVM as much of it's logic lives on the serverside. It's not merely a script application, it is a client-server application.
Hope the explanation makes sense!

OK I know. I make these changes because connect to api.gvmtool.net is too slow from here, and also have some bugs(remote version is empty and update failed because download not complete, but the available gvm has been removed), often timeout or hang. I have to spend much time at every time to use gvm. So I want gvm will use offline resources as much as possible. It's unnecessary for gvm to connect internet at every time. The browser also holds local caches for speed up, isn't it?
But you are right. My changes will cause gvm never check update unless gvm selfupdate. Maybe check update and broadcast in gvm-init.sh at every day is better.
Regards.

Many of the issues you were experiencing have been fixed now. They are on
DEV and I'll be rolling them out shortly.
I have fixed remote version being blank (because of multiple shell issue).
Also, broadcasts are now very lightweight calls that only retrieve a
broadcast id, no longer the entire broadcast message.
Unfortunately we do need to ensure that you are online because most
commands in GVM rely on the internet. Here I refer to commands like list,
install, default, broadcast etc. which all rely on dynamic content from the
API. Also, browsers only cache static content.
On Wed, 17 Jun 2015 at 15:35 Feng Yu<EMAIL_ADDRESS>wrote:

OK I know. I make these changes because connect to api.gvmtool.net is too
slow from here, and also have some bugs(remote version is empty and update
failed because download not complete, but the available gvm has been
removed), often timeout or hang. I have to spend much time at every time to
use gvm. So I want gvm will use offline resources as much as possible. It's
unnecessary for gvm to connect internet at every time. The browser also
holds local caches for speed up, isn't it?
But you are right. My changes will cause gvm never check update unless gvm
selfupdate. Maybe check update and broadcast in gvm-init.sh at every day
is better.
Regards.
—
Reply to this email directly or view it on GitHub
https://github.com/gvmtool/gvm-cli/pull/306#issuecomment-112825983.

Ah ha, it's right. I've already considered(Only not checking update and broadcast automatic).
Usage: gvm <command> <candidate> [version]

version is optional, if not provide, checking online. Otherwise check local if exits, find in local, use it, if not, connect the internet and download. This is my basic idea.
The candidate with specified version is static content. :)


Support Laravel 5.5

This may be a little late, but we must support this soon before the next version is out.

To support Laravel 5.2 we need to remove dependency of Illuminate HTML and Form(issue #168). This is due to the change of bindShared() method to singleton() method in Illuminate/Foundation.

In the interim, change to use laravelcollective/html instead.
See https://laravelcollective.com/docs/5.2/html

We should jump straight to version 5.5 instead.

TODO
Laravel 5.3:
The fluent query builder now returns Illuminate\Support\Collection instances instead of plain arrays. This brings consistency to the result types returned by the fluent query builder and Eloquent.
If you do not want to migrate your query builder results to Collection instances, you may chain the all method onto your calls to the query builder's get or pluck methods. This will return a plain PHP array of the results, allowing you to maintain backwards compatibility:
$users = DB::table('users')->get()->all();

$usersIds = DB::table('users')->pluck('id')->all();

Upgrading to Laravel 5.8 for support of PHP 7.4 and up.


GridMap lighting issues when using imported meshes as tiles

Godot version
4.0 beta 1
System information
EndeavourOS 64-bit, 5.19.8-arch1-1 kernel, Ryzen 5 3600, Nvidia RTX 3090, Vulkan on driver version 515.65.01
Issue description
When I use a GridMap with imported Blender meshes, it causes problems with the lighting/shadows as shown below. There is a distinct line where a shadow is made, regardless of location, distance from camera, and light rotation. I've tested with a flat plane MeshInstance and the lighting problem does not show. Toggling the GridMap visibility will also turn off this lighting inconsistency.

This problem actually showed up when I switched from alpha 15 to alpha 17. However, upon checking out the beta and seeing that the bug was still present, I'm making this bug report.
Steps to reproduce

Make a 3D model in Blender
Export to GLTF
Import into Godot as new scene
Scene -> Export As... -> MeshLibrary...
Create GridMap
Add MeshLibrary created above as the Mesh Library for the GridMap
Paint tiles on GridMap
Create an OmniLight3D or Spotlight3D

Minimal reproduction project
Grid Map Lighting Bug.zip
I've included the .blend file of the tiles I made for this test.

Try removing the .godot/ folder while the editor is closed, then open the editor again. See https://github.com/godotengine/godot/issues/64854.

Ah yes, this works now. Thank you!

So, it worked for the test that I uploaded. However, it seems to still pose a problem. Would this be a problem with when I initially imported it via Blender? I see that .blend files are no longer showing up in the File Browser.

I see that .blend files are no longer showing up in the File Browser.

Double-check that Blender import is enabled in the Project Settings and that a Blender path is set in the Editor Settings.

So, it was initially having the same problems. Upon redoing the import process, it works now.


Shoot-specific EnvoyFilter Remains in Old Ingress Namespace when Upgrading Shoot to Zone-HA

How to categorize this issue?

/area networking
/kind bug
What happened:
A Shoot runs on a zonal-HA Seed, but is itself not highly available. This means it uses an ingress namespace like istio-ingress--az-1, i.e. a "zonal" ingress namespace for the zone its control plane is in. When converting this Shoot to Zone-HA (controlPlane.highAvailability.failureTolerance.type: zone), its ingress namespace changes (to istio-ingress). With this change, a Shoot -specific EnvoyFilter is created in the istio-ingress namespace. In our environment, we're observing that the shoot-specific EnvoyFilter in the previous (non-HA) ingress namespace remains after converting the Shoot to HA. This is not bad per se (no traffic is routed via this ingress anymore for the Shoot in question), but it seems like something that should be removed to fully complete the switch.
What you expected to happen:
After the conversion of the Shoot to zonal HA, I expect the non-HA ingress namespace (for the single zone the Shoots control plane used to be in) to have no leftovers from this particular Shoot.
How to reproduce it (as minimally and precisely as possible):

Deploy a non-HA Shoot on an HA Seed, so that it uses a zonal ingress namespace (let's say istio-ingress--az-1 for clarity).
Confirm that Gardener has created an Envoyfilter object in that ingress namespace, called shoot-<projectID>-<shootName>.
Upgrade the Shoot to zone-HA by setting controlPlane.highAvailability.failureTolerance.type: zone and wait for the Shoot to be converted.
Observe the newly created EnvoyFilter object in the HA ingress namespace (istio-ingress) with the same name as in the old namespace (shoot-<projectID>-<shootName>).
In the old ingress namespace istio-ingress--az-1, the shoot-<projectID>-<shootName> EnvoyFilter still exists (unnecessarily).

Anything else we need to know?:
This issue has been opened based on this slack thread.
Environment:

Gardener version: current (v1.86.0)
Cloud provider or hardware configuration: OpenStack

Such a cleanup would come out of the box if we used a ManagedResource, also in the light of https://github.com/gardener/gardener/issues/8241.


Upgrade Hyrax to latest commit

Descriptive summary

[ ] Please update to the most available commit for Hyrax.
[ ] Please provide a summary of the changes in the PR so the entire team understands the context of the changes.

Rationale
To stay up to date with the latest Hyrax developments upstream.
References

#111 ( @lsitu - notes a File ingest job change will potentially impact )

@hweng - feel free to wait until later in the week, or next week if you'd like. Longshou's update from last Sprint is fairly recent.

Re-assigning to @lsitu since @hweng is focused on the derivatives issue for damspas at the moment.


Gridmap shows after reload_current_scene() if hidden in editor

Godot version
3.5.2 RC2
System information
Windows 10
Issue description
If a gridmap is hidden in the editor and get_tree().reload_current_scene() is used, the gridmap will reappear on reset. Using hide() or visible = false in _ready() will not work:

The only fix is to use:

func _ready():
    show()
    hide()

Steps to reproduce

Add a gridmap node
Set visibility in editor to false
Use get_tree().reload_current_scene()

Minimal reproduction project
brokenhideshow.zip

Can confirm in 3.5.2 Stable and 4.1.1 Stable under Linux (X11).


Add timestamp to file selection dialog

Or do you want me to add an option for enabling this? I find it useful when selecting log files in deoptigate.

How's this?

Now having a strong desire to sort these by the date, too. But I imagine some people will prefer the (incidental?) filename sort.

Did the text formatting manually, as text-table just gives a long string with newlines. Not too bad.
Fixed the style issue.
Removed the time zone info, as it's always whatever node thinks your locale is

Decided not to implement sorting options etc, that's too far into re-implement a file manager territory.
Looks like this now:

Did the text formatting manually,

That's a lot of code suddenly in the middle there. How did text-table not work for you? It always worked for me. I'd prefer to use an existing module that does this than reinventing the wheel here and adding all that code.
If you can't get to work please encapsulate all the formatting into a separate function (ideally also in a separate file) instead of just in the middle of creating the message.
Thanks for the work so far .. I'd like to get this to a good state so we can merge as I like the feature :)

Oh, I don't mind the feedback. Totally understand your concerns.
The only output I managed to get from text-table was a big ol' string with a bunch of newlines in it. I must have been tired when writing the code because at the time as I thought I needed each "cell" as a separate string. I see now that I don't. (other justifications: It's 7 extra lines of code in a function already dedicated to text formatting, and if I were to split it out, both functions would still be strongly coupled)
This new version uses text-table. Right-aligning the first column seems bugged, so I have to align by the :
Now looks like this:


x-proxy-header and README

Some proxies and application servers inject HTTP headers into the requests.  Server-side code
may use these fields, but they are not required in the client API.
eg: https://cloud.google.com/appengine/docs/go/requests#Go_Request_headers
  /locations:
    get:
      parameters:
      - name: X-AppEngine-Country
        in: header
        x-proxy-header: true
        type: string
        description: Provided by AppEngine eg - US, AU, GB
      - name: country
        in: query
        type: string
        description: |
          2 character country code.
          If not specified, will default to the country provided in the X-AppEngine-Country header
      ...

@nalbion ok I understand now.


Map Fix via Child Object

Summary of Changes

Fixes underlying issue detailed in #51 by eliminating BackingObject
Deletes old implementation of RogueLikeMap and AdvancedRogueLikeMap (replaced with a single class now called RogueLikeMap that can fulfill both roles)
RogueLikeMap class implements IScreenObject directly by copying the implementation directly from SadConsole.ScreenObject
RogueLikeMap contains a DefaultRenderer property which is an IScreenSurface

This value is automatically added as a child object to the map itself so that when the map is added to the hierarchy it is rendered
Value can be assigned custom surface implementations created via new CreateRenderer overload
This is required to support overloading surface-specific methods

CreateRenderer and the corresponding removal function (now RemoveRenderer) are now public

Notes
This is an attempt to support the same use cases as before, but eliminate the use of the BackingObject.  I attempted to implement the BackingObject concept via custom interface implementations on another branch, however this proved unsuccessful; the class structure combined with cast-and-checks for screen surface support performed in SadConsole internals code left it inviable.
All of the map classes have been condensed into one.  This class implements IScreenObject by copying the implementation from SadConsole's ScreenObject.  This is absolutely less than ideal from a code maintainability perspective, but I'm unaware of any other options that create clear code with obvious behavior.  Perhaps in the future, it might be beneficial for SadConsole to provide helper functions for implementing this interface similar to what GoRogue 3 did with IGameObject; but this is likely a discussion for a separate venue.
This one map class has no backing object; instead, it has a DefaultRenderer field.  This is a ScreenSurface that, when assigned to, is automatically added as a child of the map; thus when the map is added to the SadConsole hierarchy, the renderer displays the map without the user needing to deal with it separately.  There are constructor parameters that allow you to ensure that a renderer is created when the map is created; thus replicating the functionality of what was previously RogueLikeMap.
The DefaultRenderer can be assigned null if a user has a case where they do not want the automatic functionality; this could be useful for use cases previously involving AdvancedRogueLikeMap.
Because the map itself no longer attempts to be a screen surface, a user that needs to override surface-specific methods needs the capability to use a custom IScreenSurface implementation and/or ScreenSurface subclass as a renderer.  To support this, a CreateRenderer overload was added that takes a Func as a parameter that takes necessary parameters, and is expected to create some IScreenSurface instance, and return it.  Therefore, the user can do something like myMap.DefaultRenderer = myMap.CreateRenderer(params, go, here); to use a custom screen surface implementation as the default renderer.
This CreateRenderer overload is not as straightforward as I would like, but the process of connecting a screen surface to the map involves utilizing a custom cell surface, and I was unable to find a reliable way to change the Surface of an arbitrary IScreenSurface after its creation; it is expected to be a constructor parameter.  Therefore, the creation of the screen surface instance must take place inside the CreateRenderer method, and this was the only way I could think of to support arbitrary implementations.  I'm certainly open to suggestions for improvement, especially in this portion.
The CreateRenderer and RemoveRenderer (previously DestroyRenderer) functions are now public, so that a user can use them to support any case that would previously involve AdvancedRogueLikeMap.
Additionally; the DefaultRenderer property is exposed to the user so that they can assign to it; however this does sacrifice the ability to protect the user from modifying that surface directly.  It is now the user's responsibility to realize that the surfaces that render the map are meant to have the contents of their cell surfaces automatically maintained by the map, and that modifying them via the surface editing methods provided in SadConsole (inadvertently or otherwise) may lead to unexpected/bad behavior.  This is at least mitigated slightly by the having the map itself NOT implement IScreenSurface, thus in theory reducing the probability of accidental modification.
Another side effect of these changes is that surface-specific components can no longer be added directly to the map; they must instead be added to a renderer.  See this example game code for an example.
From a code maintainability and clarity perspective, this is not my favorite piece of the integration library, as it duplicates over 600 lines of code directly from SadConsole; so if there are any suggestions for improvements/alternate methods, I'm more than happy to discuss.

This works a lot more cleanly for my project. I pushed the test changes here: https://github.com/AnotherEpigone/novalia/commit/8861e2fb8465eef4f9fbceb8cd768d3d80ab68ac


Investigate outcomes of a user pod using all of a node's CPU

In #2445 it seems that in at least utoronto's AKS based cluster, a single user using all CPUs can cause trouble. This can be mitigated with #2447 that sets limits to half of the node's capacity.
I'd like to explore this situation in depth to ensure that we understand how to provide a reliable setup without compromising more than needed on performance and/or cost. I find this investigation to be critical as we are relying on shared nodes (#2121) in other clusters besides the educational hubs addressed by #2447.
Here are some preliminary concrete questions I'd like to look into as part of this issue:

[ ] What CPU requests/limits was granted for user pods in #2445?
[ ] What is the minimum CPU capacity needed for a successfull startup of a user server with the utoronto based image?

This could possibly be trialed using very low CPU requests matching limits

[ ] What requests/limits are granted to system pods like kube-proxy in AKS/EKS/GCP?

@pnasrat I've failed to reduce your comment into actionable items to take in scope of this issue =/
I'm looking to understand how to provide a reliable setup, ideally idependent of cpu requests/limits for user pods as that compromises performance/costs. I'll probably do some manual testing where a user server is hogging CPU to trial hypothesises formed while investigating this.
Is there something else you wish to see done as part of this issue?

perhaps this is more a longer term thing - but the subject impliied to me understanding the scenarios of cpu exhaustion, and that's where I'd generally expect a reproducible load test  running against various configuration scenarios

In terms of reliability as tradeoff I was thinking around eg the tradeoffs around bin packing pods to nodes and what sort of utilization/availability/latency targets are etc

As I mentioned on slack these are just suggestions. It's your investigation look forward to the results


Using mapMultiRowFields with a v-data-table results in Error

Hi,
I've been trying to make the mapMultiRowFields function on my v-data-table (vuetify) work properly. As soon as I change any of the text fields inside this v-data-table I get this error:
"Do not mutate vuex store state outside mutation handlers"
Here is my vuex store
const state = {
//current data. can either be a loaded existing contract or a new unsaved contract
current: {
Salesitems: [
{
index: 0,
Grade: {
id: '',
title: ''
},
Mc: {
id: '',
title: ''
},
Salesdescription: {
id: '',
spec_id: '',
species_id: 0,
title: ''
},
Salesitem: {
id: '',
amount: 0,
commission: 0,
comm_pct: 0,
costprice: 0,
grade_id: '',
itemqty: 0,
measurement_id: '',
size_id: '',
unitprice: 0,
},
Size: {
id: '',
title: ''
},
Spec: {
id: '',
title: ''
},
Species: {
id: 0,
title: 'N/A'
}
},
],
}
}
const getters = {
getField,
}
const mutations = {
updateField,
resetState (state){
state.current.Salesitems = []
state.current.Salesitems.push(getDefaultState())
},
}
And here is my part of my component:
computed: {
...mapFields('contract', {
Contract__id: 'id',
Contract__currency_id: 'current.Contract.currency_id',
Contract__salestype_id: 'current.Contract.salestype_id',
}),
...mapMultiRowFields('salesitem',{
SalesItems: 'current.Salesitems'
}),
...mapGetters('species', {
allSpecies: 'allSpecies'
}),
And i use v-model on the items inside the data-table like so:

Thanks for taking the time to post your code! But it is still a lot of work to replicate this myself without a working reduced test case. Please create a CodeSandbox which replicates your problem. Thx.

Thank you for replying to my question. I have since done a sort of bypass
to overcome this issue. You can close this issue for now.
On Sun, Mar 8, 2020 at 3:09 PM Markus Oberlehner<EMAIL_ADDRESS>wrote:

Thanks for taking the time to post your code! But it is still a lot of
work to replicate this myself without a working reduced test case. Please
create a CodeSandbox https://codesandbox.io/s/94l98vx0p4 which
replicates your problem. Thx.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/maoberlehner/vuex-map-fields/issues/85?email_source=notifications&email_token=AM2ZLXBIJY4UKURWUUQGEX3RGNACHA5CNFSM4KNAP5OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEOEOMVQ#issuecomment-596174422,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AM2ZLXHLXRKJM3TZTBXIAO3RGNACHANCNFSM4KNAP5OA
.

--
Van Joe Chua

Thank you for replying to my question. I have since done a sort of bypass to overcome this issue. You can close this issue for now.
…
On Sun, Mar 8, 2020 at 3:09 PM Markus Oberlehner @.***> wrote: Thanks for taking the time to post your code! But it is still a lot of work to replicate this myself without a working reduced test case. Please create a CodeSandbox https://codesandbox.io/s/94l98vx0p4 which replicates your problem. Thx. — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#85?email_source=notifications&email_token=AM2ZLXBIJY4UKURWUUQGEX3RGNACHA5CNFSM4KNAP5OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEOEOMVQ#issuecomment-596174422>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AM2ZLXHLXRKJM3TZTBXIAO3RGNACHANCNFSM4KNAP5OA .
-- Van Joe Chua

Could you share your bypass?

Hi Peter,
Instead of using mapMultiRowFields to update the data, I used a normal vuex
action. I used the getter part of your plugin to get the data.
Thanks,
Van Joe
On Wed, Apr 1, 2020 at 5:56 AM Peter<EMAIL_ADDRESS>wrote:

Thank you for replying to my question. I have since done a sort of bypass
to overcome this issue. You can close this issue for now.
… <#m_3259604586074860359_>
On Sun, Mar 8, 2020 at 3:09 PM Markus Oberlehner @.***> wrote: Thanks
for taking the time to post your code! But it is still a lot of work to
replicate this myself without a working reduced test case. Please create a
CodeSandbox https://codesandbox.io/s/94l98vx0p4 which replicates your
problem. Thx. — You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#85
https://github.com/maoberlehner/vuex-map-fields/issues/85?email_source=notifications&email_token=AM2ZLXBIJY4UKURWUUQGEX3RGNACHA5CNFSM4KNAP5OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEOEOMVQ#issuecomment-596174422>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AM2ZLXHLXRKJM3TZTBXIAO3RGNACHANCNFSM4KNAP5OA
.
-- Van Joe Chua
Could you share your bypass?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/maoberlehner/vuex-map-fields/issues/85#issuecomment-606898029,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AM2ZLXBVKXUOK5QPHGDR7STRKJRHZANCNFSM4KNAP5OA
.

--
Van Joe Chua


Sieve Mark as read

There seems to be an error with the "Mark as seen" option. Is does not work. Looking in the script that is created i see the following line:
addflag "\Seen";
but it should be:
addflag "\ \Seen";      without the space between the \ but github seems to remove one \ if i put two of them after another.
with two backslashes because acording to RFC 5323 (https://tools.ietf.org/html/draft-ietf-sieve-imapflags-05):
0.5. Changes from the revision 02

BugFix: all backslashes must be escaped

Thanks!

Sorry to ask here, but where do you configure sieve filter ?

NicolasKAROLAK, please see this link
https://github.com/RainLoop/rainloop-webmail/issues/419

Thanks!
5 février 2015 12:02 "offspringus"  a écrit:

NicolasKAROLAK, please see this link

#419 (https://github.com/RainLoop/rainloop-webmail/issues/419)
—

Reply to this email directly or view it on GitHub (https://github.com/RainLoop/rainloop-webmail/issues/426#issuecomment-73029174).

Fixed in the 1.8.1 version.


check on the page redirection

Seems the redirection is hitting a dead end or its my end only? @karegapauline

@Fnyasimi let me try to make gh-pages default.

@karegapauline there is a problem with the sub-domain. Let's use this https://landimi2.github.io/BHKi-Training-Activities/ at the moment

@LandiMi2 this is the site to which the subdomain redirects. I don't think it should have issues now. @Fnyasimi test it?

@LandiMi2 small error, there's no space between the topic of the day and the descriptions

are you using the cname or the custom domain?


Update high-availability.md

Adding line that AZ is only available in Premium SKU. there is a "Note" on this; however, it is not called out specifically in the section talking about HA for APIM.

@dlepow

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


[ Application ] Doc for Logistic Regression

Add doc for logistic regression application.
Self evaluation:

Build test:	 [X]Passed [ ]Failed [ ]Skipped
Run test:	 [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: jijoong.moon<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.4.20191203. Thank you for submitting PR #566. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://nnsuite.mooo.com/.

INFO: You can read if there are misspelled characters at our misspelling check report. Please read http://nnsuite.mooo.com/nntrainer/ci/repo-workers/pr-checker/566-202009181141380.39545702934265-7a9a9baa87ca0b973389c6945195c911c38e65de/report/misspelling_result.txt.

INFO: You can read if there are misspelled characters at our misspelling check report. Please read http://nnsuite.mooo.com/nntrainer/ci/repo-workers/pr-checker/566-202009181353440.048031091690063-5b46dfca22104998a953310d3406956a1f78c4f1/report/misspelling_result.txt.


TS-3407 Removes the legacy h2-14 identifiers

Linux build failed! See https://ci.trafficserver.apache.org/job/Github-Linux/548/ for details.

FreeBSD build failed! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/653/ for details.

FreeBSD build failed! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/654/ for details.

Linux build failed! See https://ci.trafficserver.apache.org/job/Github-Linux/549/ for details.

FreeBSD build successful! See https://ci.trafficserver.apache.org/job/Github-FreeBSD/657/ for details.

Linux build successful! See https://ci.trafficserver.apache.org/job/Github-Linux/552/ for details.

👍


feat(backend): run wallet grpc server with a password

Description
We will run the grpc server using a session password: the password is provided when the wallet is started.
Or the password could be configred using the conf. variable: TARI_WALLET_GRPC_PASSWORD.
Motivation and Context
We should protect the wallet sensitive infromation.
How Has This Been Tested?
Both cases are maunally tested.
Run the wallet with -- --grpc-password=12345678A and called getBalance.
When the correct password is provide balance is shown.
If not then 16 UNAUTHENTICATED: Invalid gRpc password is shown.
Run without a password and balance is shown with or without authorization.
Setup:
grpc-password=12345
Metadata: {"authorization": "7d4e3eec80026719639ed4dba68916eb94c7a49a053e05c8f9578fe4e5a3d7ea"}

I've been thinking about this. Let's rather do this properly with TLS.
Since that's a slightly bigger effort, let's deprioritise it for now.


Authcodepanel UI

Decide on a definite size, background colour (one for light, one for dark).

Maybe the progress font should change colour when there's 5s left or so - set it to a shade of red?


Minor issue with typing: Should be Integer[] instead of Int

Small issue on your branch changes that I didn't immediately notice - the typing for universityRankingRange should be Integer[] not int[]. If you could make that small change, everything should be working fine

Why not use int[]? It's more efficient, I made the swap from integer[] to int[] intentionally. If you don't specifically need it as an object, then we can just use int[], it's easier

Got it, will change that implementation on my end

Minor issue I noticed while changing the typing - saveProfile still uses Integer[], meaning that the ServerProfileDAO and the ProfileDataAccessInterface are both using Integer[] for the universityRankingRange - changed that in my commits but just wanted to let you know if there's anything else that relies on those functions that might be affected


fix(AutoOperate): ignore targets with no valid operation configuration (GitHub #204)

Codecov Report
Attention: 12 lines in your changes are missing coverage. Please review.

Comparison is base (7162f51) 90.11% compared to head (9119123) 89.83%.

:exclamation: Current head 9119123 differs from pull request most recent head 55f39ff. Consider uploading reports for the commit 55f39ff to get more accurate results

Files
Patch %
Lines

.../support/aop/MethodArgumentAutoOperateSupport.java
0.00%
4 Missing and 2 partials :warning:

...re/support/aop/MethodResultAutoOperateSupport.java
37.50%
3 Missing and 2 partials :warning:

...ClassBasedAutoOperateAnnotatedElementResolver.java
0.00%
1 Missing :warning:

Additional details and impacted files
@@             Coverage Diff              @@
##                dev     #205      +/-   ##
============================================
- Coverage     90.11%   89.83%   -0.29%
+ Complexity     1529     1528       -1
============================================
  Files           149      149
  Lines          3755     3767      +12
  Branches        367      370       +3
============================================
  Hits           3384     3384
- Misses          203      210       +7
- Partials        168      173       +5

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


fix the error caused by helm lint not pulling values outside of the default value for schema validation

What this PR does / why we need it:
Close #8880
Special notes for your reviewer:
If applicable:

[ ] this PR contains documentation
[ ] this PR contains unit tests
[*] this PR has been tested for backwards compatibility

@donggangcj Can you check out the failed test in CI?

Yeap! I am solving this error.

@hickeyma Done;

@donggangcj Can you check out the failed test in CI?

Done;

Hello, I have also ran into this issue and would like to see it resolved.  @bacongobbler I created the requested unit test along with necessary code changes the unit test exposed, but I do not have access to push to this pull request.  How should I proceed?

Hello, I have also ran into this issue and would like to see it resolved.  @bacongobbler I created the requested unit test along with necessary code changes the unit test exposed, but I do not have access to push to this pull request.  How should I proceed?


Ambiguity in overriding ToolsVersion settings

The "Order of Precedence" section should describe a 100% precise and unambiguous algorithm for determining the ToolsVersion to be used to build the given project.
Many of the cases mention extremely ambiguous terms "ToolsVersion" and "current ToolsVersion". The whole algorithm is about determining "the ToolsVersion value to use"; there is a "ToolsVersions" attribute in the project, "ToolsVersions" property in the MSBuild task, a "ToolsVersions" value of the version of Visual Studio used or installed on the machine. I have no idea which of these distinct things is used in each context in the algorithm description. the cases listed are not mutually exclusive and not exhaustive. Please apply strict logic to fix this algorithm and make it precise and unambiguous.
Copied from https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_queries/edit/460302/?triage=true

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

ID: 578f06ee-4e25-db51-aafc-0932c805b455
Version Independent ID: a47ae76e-5748-b469-fce2-03e0e7f15fb7
Content: Overriding ToolsVersion Settings - Visual Studio
Content Source: docs/msbuild/overriding-toolsversion-settings.md
Product: visual-studio-dev15
GitHub Login: @Mikejo5000
Microsoft Alias: mikejo

I'll take a look at this.

@rainersigwald Rainer, is "current ToolsVersion in steps 3, 4 and 6d in the Order of Precedence section ambiguous? And "ToolsVersion" in 6a?

see also https://developercommunity.visualstudio.com/content/problem/404485/vs2019-msbuildtoolsversion-is-not-a-version.html


Build with R v4.0

Basically only diff with your meta.yaml is that I've dropped libgfortran-ng and r-openssl.
Used conda build --R 4.0 cacao. This keeps the tar.bz2 name without py/r versions as discussed.
I've uploaded to https://anaconda.org/pcgr/cacao/files

Awesome! Thanks heaps


Immediate UI Needs

Let's use this as a spot to dump UI needs, questions to ask, user stories, and discussions.

Some initial needs:

filetree, basically a complete audit/rebuild of what this should look like
dialogs/ux flow of adding/removing contents managers, including things like auth dialogs

@emilythefan and I are going to start working on some wireframes for the filetree. We're planning to do a bit of exploration of how best to handle multiple file systems/views into file systems, and some of the 'add a contents manager' flows.
@timkpaine regarding authentication for remote file services - could you give us a brief overview of the actual technical requirements for those? My knowledge on the subject is fairly limited, I'm basically at "FTP you need server, username, password; for the others you need... other stuff?" which isn't really enough to go on for designing the whole auth flow. Thanks!


Popup menus are displayed incorrectly in MuseScore.

Hyprland Version
 System/Version info
Hyprland, built from branch  at commit 1b48642fd15c433c53876f1b933dcd46265caf8f dirty ().
Tag: v0.30.0

flags: (if any)

Bug or Regression?
Bug
Description
A "Popup menu" is a menu that appears when you click "File" or "Edit".
If qt is running on XWayland:
Most pop-up menus display correctly.
However, when creating a new score, the settings such as the tempo are moved to the back layer when you click them, and appear to have disappeared (you can see them when you move the window).
If using qt5-wayland:
Pop-up menus are opend in the center of the screen.
Tooltips will also be displayed in the center of the screen.
Additionally, the startup screen will be maximized.
Normal boot screen

Maximized startup screen

Also, the drawing of shadows is unnatural.

I don't know because I don't use any Qt applications other than MuseScore,
but similar problems may occur with other Qt applications.
How to reproduce

Install qt5-wayland
Open MuseScore
Clicking the button to open the menu.
Hover your mouse over the button for a while to display the tooltip.
Verify that the problem occurs.

Crash reports, logs, images, videos
I am using translation to use English, so you may see some unnatural expressions.

Same issue on questasim:

Window 2770cb50 -> #mBar#file:
        mapped: 1
        hidden: 0
        at: 879,321
        size: 161,438
        workspace: 2 (2)
        floating: 1
        pseudo: 0
        monitor: 0
        class: Menu
        title: #mBar#file
        initialClass: Menu
        initialTitle: #mBar#file
        pid: 416546
        xwayland: 1
        pinned: 0
        fullscreen: 0
        fullscreenmode: 0
        fakefullscreen: 0
        grouped: 0
        tags:
        swallowing: 0
        focusHistoryID: 2

Looks like popup menu position problem is resolved for Questasim application on v0.42.0.

@akku1139 ?

I'm not currently using Hyprland so I don't know what happened.
I think I'll try using it again.

I still have same problem
hyprland 0.42.0-1 from pacman
Arch Linux x86_64, Linux 6.10.5-zen1-1-zen
MuseScore4 4.3.2-1 from AUR


Correct ventilation for sites without a homepage

From issue: N/A
High level changes:
Ventilation of a site with a homepage uses the homepage at the URL specified in the CSV file, and moves all other pages at the root level under the homepage.
Before this change, ventilation of a site without a homepage didn't work at all. Now all root pages are moved under a synthetic node at the URL specified in the CSV file (resulting in a "flat" layout not unlike what would happen if there was a homepage)
Low level changes:

Fix and expand ventilate() and homepageify() methods

It works (see above). Submitting now


Reload Page Error Katex Rendering

描述这个Bug
I am correctly importing and initializing the Markdown plugin for my vue3 project, so much so that the markdown initializes correctly the latex string when i open the page for the first time, as an example:

			You are given positive integers
			<math xmlns="http://www.w3.org/1998/Math/MathML"
							><semantics
								><mrow><mi>N</mi></mrow
								><annotation encoding="application/x-tex"
									>N</annotation
								></semantics
							></math
						>N
			...

but then when i refresh the markdown does not render the latex correctly anymore, it seems that it does not try to render it at all:

			You are given positive integers
			N and
			K, and a sequence of
			length N,
			A=(A_1,A_2,\ldots,A_N).
			Extract all elements of
			A that are multiples of
			K, divide them by
			K, and print the
			quotients.

how can i make the markdown re-run manually the rendering? so that i can trigger a re-render when it does not render properly?
I cannot provide you with the repo as it is private and its visibility out of my reach
Thank you.
版本号
md-editor-v3: ^5.0.2, vue: ^3.5.12, @vitejs/plugin-vue: ^5.1.4, vite: ^5.4.10, and as component I am using MdPreview
问题重现链接
No response

The editor provides a rerender method to forcibly re-render the content. You can try using this method to see if it works for you.


Incorrect Code for Day of the month with ordinal

Describe the bug
A clear and concise description of what the bug is.
Right now, the code is 'Do' which gives the wrong date, the correct code is 'do'

I couldn't reproduce this. Do is day of month, do is day of week.
https://momentjs.com/docs/#/displaying/format/


Two share requests running in parallel can override each other

Describe the bug
We had a situation where a dataset owner was approving a lot of share requests very quickly. What ended up happening is that we see in CloudTrail that the pivotRole was putting a new bucket policy on the same bucket twice at the exact same time. What ended up happening is that one share request overrode the other because both requests ran in parallel, figured out how the policy needs to be updated and tried to update it. In the end one request overrode the other.
From my understanding share requests run as ecs tasks. There is probably no easy way to ensure that only one such task can be running at a time for 1 dataset. Therefore we probably need to introduce locking into the sharing mechanism so that other tasks have to wait until others are done before they attempt to read the existing bucket policy and make changes.
How to Reproduce
It is not trivial to do but we've seen this happen multiple times already. The result with S3 bucket sharing is that access request is granted and the share works but the bucket policy is missing permissions.
Expected behavior
Share requests running in parallel should never override one another.
Your project
No response
Screenshots
No response
OS
N/A
Python version
N/A
AWS data.all version
2.2
Additional context
No response

Hi @zsaltys, thanks for the issue. It is an important task and we will look into it. We can work together on the design in this issue

⚠ ⚠ [WIP - not ready for review yet]
Issue: Share processes executed in parallel on the SAME dataset override each other and cause sharing failures.
Solution: We need a way to ensure that shares on the SAME dataset are executed sequentially.
Design
Alternatives

Evaluate and wait in ECS task - Change logic in ECS task, wait if there are shares on the same dataset in a parallel task (what @zsaltys suggested above)
Metadata with queue order, wait in ECS task - Add order in share request metadata, change logic in ECS task, wait depending on the queue order
Evaluate and Re-queue in Worker Lambda - Change logic in Worker Lambda or add another Lambda that requeues the SQS task if the target dataset is the same one.
Metadata with queue order,  and Re-queue in Worker Lambda - Change logic in Worker Lambda or add another Lambda that requeues the SQS task if the target dataset is the same one.
ECS task to manage sharing tasks
Batch same-dataset shares and process them in the same ECS task.
Embed ECS tasks in Step Functions - A little of an overkill for an infrequent issue.
Place Eventbridge Pipe in front of sharing ECS task -> Might be an issue with execution time limitations.

I will dive deep into the first 4 alternatives because they are the most promising. Let me know if you want to assess any other idea.
Evaluate and wait in ECS task
Data.all triggers all sharing tasks. Inside each task we evaluate if there are other concurrent sharing tasks on the same dataset, if so, the task awaits until no concurrent tasks are being executed.
Here is an example. Note that it won't work, it will have problems choosing between task2 and task3 after it is done with task 1.
APIs approving share requests all targeting the same dataset.
Share1
Share2
Share3

Each API triggers an ECS task
Task1 -> another ECS share-tasks running? ---> YES ---> is thisShare.targetDataset in listAllOtherRunningShares.targetDatasets? ---> NO ---> execute sharing
Task2 -> another ECS share-tasks running? ---> YES ---> is thisShare.targetDataset in listAllOtherRunningShares.targetDatasets? ---> YES ---> wait
Task3 -> another ECS share-tasks running? ---> YES ---> is thisShare.targetDataset in listAllOtherRunningShares.targetDatasets? ---> YES ---> wait

CONS: ECS task might have started before we check the thisShare.targetDataset in listAllOtherRunningShares.targetDatasets condition. We still might have issues on parallel tasks when more than 2 tasks run at the same time.
PROS: everything in one place. No additional metadata.
Queue order in share APIs and Wait in ECS Task
We introduce a metadata field in RDS to handle the queue order. The queue order is defined in the sharing approve/revoke APIs. All sharing tasks are triggered. Only the queue=1 item is processed. ECS tasks update the queue order information for other tasks.
Example:
APIs approving share requests all targeting the same dataset.
Share1-> queue=1
Share2-> queue=2
Share3-> queue=3

Each API triggers an ECS task
Task1 -> queue=1? ---> YES = execute sharing ---> when it finishes it subtracts 1 from all items.queue field
Task2 -> queue=1? ---> NO = wait
Task3 -> queue=1? ---> NO = wait

After Task1 is complete
Share2-> queue=1
Share3-> queue=2

Task2 -> queue=1? ---> YES = execute sharing ---> when it finishes it subtracts 1 from all items.queue field
Task3 -> queue=1? ---> NO = wait

CONS: additional RDS column
PROS: Ensures one process happens after the other (API calls happening at the exact same same time is extremely rare). Relatively easy to implement. Logic stays in the sharing task and sharing APIs. Easy to debug if a sharing task has been queued but not executed (queue>0)
Re-queue in Worker Lambda
The worker Lambda evaluates either a Loc
PROS: Trigger ECS task when it is needed.
CONS: Specific module logic in generic Worker lambda violates modularization principles. We would need to write it in a modular re-usable way.

Concurrency constraint on ECS task group (group per dataset) would be perfect if only it would exist... https://github.com/aws/containers-roadmap/issues/232

We could also address this by introducing a locking mechanism for the resources.
We can introduce a centralized mechanism that multiple tasks can use to coordinate access. We can use a new Amazon RDS table as the mechanism to manage locks.
Steps involved:

Create a Locking Table:

Create a dedicated table in RDS database to store information about locks. This table could have columns such as dataset_id and is_locked.
CREATE TABLE dataset_locks (
    dataset_id VARCHAR(255) PRIMARY KEY,
    is_locked BOOLEAN
);

Acquire Lock Function:
This function checks whether a lock exists for the dataset and sets it if it's not already locked.

import psycopg2

def acquire_lock(dataset_id, connection):
    with connection.cursor() as cursor:
        cursor.execute(
            "UPDATE dataset_locks SET is_locked = TRUE WHERE dataset_id = %s AND NOT is_locked RETURNING *",
            (dataset_id,)
        )

Release Lock Function:

Implement a function to release the lock for a specific dataset.
def release_lock(dataset_id, connection):
    with connection.cursor() as cursor:
        cursor.execute(
            "UPDATE dataset_locks SET is_locked = FALSE WHERE dataset_id = %s",
            (dataset_id,)
        )

Use Lock in Share Request Processing:

Before processing a share request for a specific dataset, we attempt to acquire the lock. If the lock is successfully acquired, proceed with processing. If not, wait or handle accordingly.
dataset_id = "your_dataset_id"

connection = psycopg2.connect("your_database_connection_string")

if acquire_lock(dataset_id, connection):
    try:
        # Process the share request
        # ...
    finally:
        release_lock(dataset_id, connection)
else:
    # Another task is already processing, wait or handle accordingly

We can have this RDS table in the infra accounts.
Let me know what you think of using this technique

Im in favor of the "Locking in RDS + check/wait in ECS" solution. Even though it's not generic and would only work for tasks running in ECS it's also the simplest and we know that this problem only exists for datasets at the moment where we run manual SDK calls.
I don't think it's a problem that ECS tasks can wait because the only concern there is cost and this problem is such an edge case that the impact of this waiting is very small.
The "Locking in RDS + re-queue" is more flexible, there's no waiting, it would work for non ECS tasks too but it's also more complex, new permissions and there's a worry of what happens if a message cannot be re-queued like an outage?
Fore the first solution we should just make sure that two tasks cannot believe they both have a lock at the same time. I propose that we have a separate lock table with a field like resource_uri which can be used for other resources not just dataset uris if there's such in the future. This table can be reused by lamba approach if we decide to switch to it later on. You can also add a field like version to the locks table and use it to make sure two resources cannot get a lock at the same time.

Agree with @zsaltys , about using "Locking in RDS + check/wait in ECS" solution.
Although, I think we can use the same task table to creating locking and unlocking for the dataset URI. If we extend the task table with a new column targetItem ( this could be a dataset name, any other task name ). Thus whenever a task is created, along with the payload of the task ( targetUri , created ,etc ) it will also add the dataset name / dataset URI in the task record in RDS.
When a task is created, the status is PENDING ( this is the current status used in data.all ) . The AWS Worker once receives the task calls the ECS. Once the task is submitted to ECS and running in ECS, it can put the state to 'IN_PROGRESS' state. Thus, any other tasks running in ECS for the same dataset will wait till there is no IN_PROGRESS state in the task table for this dataset. Once the task is completed then the task will be put into COMPLETED state.
For "Locking in RDS + check/wait in ECS" or the "Locking in RDS + re-queue", will have to make sure that the reads (SELECTs ) and the UPDATEs are locked ( row-locked) on the postgres level  at the time of transaction so that we don't have the same issue in which two shares are parallely working for the same dataset.
Ref - https://www.postgresql.org/docs/current/sql-select.html#SQL-FOR-UPDATE-SHARE
https://www.postgresql.org/docs/current/explicit-locking.html


[$1000] Routing Number shows an error before typing anything

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

Action Performed:
1- Click on your avatar
2- click on Worspaces option
3- select any workspace
4- Click on bank account option
5- click on Connect manually
6- Close the keyboard without typing anything
Expected Result:
Routing Number shouldn't show any error before typing ( Account Number works perfectly)
Actual Result:
Routing Number shows an error before typing anything
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

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

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: 1.3.49-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/d1f8146e-9756-4d69-97ec-2f9b3c82eb71
https://github.com/Expensify/App/assets/43996225/882d2785-ee20-46bd-9608-e96264e27b4e
Expensify/Expensify Issue URL:
Issue reported by: @mejed-alkoutaini
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1690724240140599
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01c0ac78d2c9b90a4f
Upwork Job ID:<PHONE_NUMBER>700144640
Last Price Increase: 2023-08-02

Proposal,
I am submitting my proposal to resolve the "Routing Number" error display issue in the FormAlertWrapper component. The current problem displays an error message prematurely, even before any user input. To address this, I will make the following changes:
Conditional Error Rendering: I will update the FormAlertWrapper to show error messages only when there are validation issues or when users attempt to submit incomplete forms.
Enhanced Offline Handling: The component will handle offline scenarios gracefully, displaying appropriate messages to inform users about their connection status.
Accessibility & Localization: I will ensure that the error messages are accessible and support multi-language localization.
My goal is to deliver a polished solution that improves the user experience by providing accurate error feedback and seamless form interactions.
I am excited to collaborate on this project and welcome any specific preferences or additional requirements you may have.
Thank you for considering my proposal. I am eager to contribute to your project's success.
Best regards,
Hanzalah Imran

Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~019b0a755f7bda1754

Proposal
Please re-state the problem that we are trying to solve in this issue.
The issue is that the Routing Number field in the form shows a validation error prematurely when the keyboard is closed without entering any input.
What is the root cause of that problem?
When the keyboard is closed without entering any input, the Routing Number field is automatically filled with an empty string. Subsequently, when you select another field or lose focus on the Routing Number field, the validation process is triggered. However, since the Routing Number is empty, it is currently displaying an error.
What changes do you think we should make in order to solve the problem?
If the Routing Number field is an empty string, we need to display an error message stating "Please input the Routing Number field." If you prefer not to show this error message, we can prevent the error from being displayed when the Routing Number field is empty. However, this approach may introduce potential new issues, so it is recommended to display the error message as "Please input the Routing Number field."
In BankAccountManualStep.js, you can find validate function and then we can update the error message.
const validate = useCallback(
    (values) => {
        const errorFields = {};
        const routingNumber = values.routingNumber && values.routingNumber.trim();

        if (
            !values.accountNumber ||
            (!CONST.BANK_ACCOUNT.REGEX.US_ACCOUNT_NUMBER.test(values.accountNumber.trim()) && !CONST.BANK_ACCOUNT.REGEX.MASKED_US_ACCOUNT_NUMBER.test(values.accountNumber.trim()))
        ) {
            errorFields.accountNumber = 'bankAccount.error.accountNumber';
        } else if (values.accountNumber === routingNumber) {
            errorFields.accountNumber = translate('bankAccount.error.routingAndAccountNumberCannotBeSame');
        }
        if (!routingNumber) {
            errorFields.routingNumber = 'bankAccount.error.routingNumberEmpty';
        }
        if (!CONST.BANK_ACCOUNT.REGEX.SWIFT_BIC.test(routingNumber) || !ValidationUtils.isValidRoutingNumber(routingNumber)) {
            errorFields.routingNumber = 'bankAccount.error.routingNumber';
        }
        if (!values.acceptTerms) {
            errorFields.acceptTerms = 'common.error.acceptTerms';
        }

        return errorFields;
    },
    [translate],
);

And in en.js, add the error message.

What alternative solutions did you explore? (Optional)
We can ignore the empty string error in the validate function.

const validate = useCallback(
(values) => {
const errorFields = {};
const routingNumber = values.routingNumber && values.routingNumber.trim();
    if (
        !values.accountNumber ||
        (!CONST.BANK_ACCOUNT.REGEX.US_ACCOUNT_NUMBER.test(values.accountNumber.trim()) && !CONST.BANK_ACCOUNT.REGEX.MASKED_US_ACCOUNT_NUMBER.test(values.accountNumber.trim()))
    ) {
        errorFields.accountNumber = 'bankAccount.error.accountNumber';
    } else if (values.accountNumber === routingNumber) {
        errorFields.accountNumber = translate('bankAccount.error.routingAndAccountNumberCannotBeSame');
    }
    if (routingNumber && (!CONST.BANK_ACCOUNT.REGEX.SWIFT_BIC.test(routingNumber) || !ValidationUtils.isValidRoutingNumber(routingNumber))) {
        errorFields.routingNumber = 'bankAccount.error.routingNumber';
    }
    if (!values.acceptTerms) {
        errorFields.acceptTerms = 'common.error.acceptTerms';
    }

    return errorFields;
},
[translate],

);

Proposal About Bank Account Manual Step - Form Validation Enhancement
Problem Statement:
In the Bank Account Manual Step component, there is an issue with form validation where error messages persist even after the user closes the input field without entering any data. This creates a confusing user experience as the errors should disappear when the user starts typing.
Root Cause:
The issue arises from how the error state is managed in the component. The current implementation does not handle the scenario when the user closes the input field without entering any data, resulting in the error message remaining visible.
Proposed Solution:
Please check my fixed solution in the below video now no errors are shown initially only errors are shown on continue button pressed:
Fixed Video Demo

To fix the form validation issue and ensure a smooth user experience, the following changes are recommended:

Introduce isFormSubmitted State: Add a new state property isFormSubmitted to track whether the form has been submitted.

Modiied the validate Method: I have adjusted the validate method to set errors for the input fields only when the form is submitted (isFormSubmitted is true). If the form has not been submitted, the method will return an empty error object, ensuring that errors disappear when the user closes the input field without entering any data.

Modified  the submit Method: In the submit method, I have set the isFormSubmitted state to true when the form is submitted. This will enable the validation to occur based on the user's interaction with the form.

Removed onFocus and onBlur: I have temporarily remove the onFocus and onBlur event handlers from the input fields. These event handlers were causing issues and will be re-evaluated for a better solution in the future.

Updated Code:
Relative Path of file: src/pages/ReimbursementAccount/BankAccountManualStep.js
import React from 'react';
import {Image} from 'react-native';
import lodashGet from 'lodash/get';
import HeaderWithBackButton from '../../components/HeaderWithBackButton';
import CONST from '../../CONST';
import * as BankAccounts from '../../libs/actions/BankAccounts';
import Text from '../../components/Text';
import TextInput from '../../components/TextInput';
import styles from '../../styles/styles';
import CheckboxWithLabel from '../../components/CheckboxWithLabel';
import TextLink from '../../components/TextLink';
import withLocalize from '../../components/withLocalize';
import * as ValidationUtils from '../../libs/ValidationUtils';
import ONYXKEYS from '../../ONYXKEYS';
import exampleCheckImage from './exampleCheckImage';
import Form from '../../components/Form';
import shouldDelayFocus from '../../libs/shouldDelayFocus';
import ScreenWrapper from '../../components/ScreenWrapper';
import StepPropTypes from './StepPropTypes';

const propTypes = {
    ...StepPropTypes,
};

class BankAccountManualStep extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            errors: {},
            isFormSubmitted: false, // New state property to track form submission
        };
        this.submit = this.submit.bind(this);
        this.validate = this.validate.bind(this);
        this.handleInputChange = this.handleInputChange.bind(this);
    }

    handleInputChange(inputID, value) {
        // Clear the error for the specific input when the user starts typing
        this.setState((prevState) => ({
            errors: {
                ...prevState.errors,
                [inputID]: undefined,
            },
        }));
    }

    validate(values) {
        // Only set the errors if the form is submitted
        if (this.state.isFormSubmitted) {
            const errorFields = {};
            const routingNumber = values.routingNumber && values.routingNumber.trim();

            if (
                !values.accountNumber ||
                (!CONST.BANK_ACCOUNT.REGEX.US_ACCOUNT_NUMBER.test(values.accountNumber.trim()) && !CONST.BANK_ACCOUNT.REGEX.MASKED_US_ACCOUNT_NUMBER.test(values.accountNumber.trim()))
            ) {
                errorFields.accountNumber = this.props.translate('bankAccount.error.accountNumber');
            } else if (values.accountNumber === routingNumber) {
                errorFields.accountNumber = this.props.translate('bankAccount.error.routingAndAccountNumberCannotBeSame');
            }
            if (!routingNumber || !CONST.BANK_ACCOUNT.REGEX.SWIFT_BIC.test(routingNumber) || !ValidationUtils.isValidRoutingNumber(routingNumber)) {
                errorFields.routingNumber = this.props.translate('bankAccount.error.routingNumber');
            }
            if (!values.acceptTerms) {
                errorFields.acceptTerms = this.props.translate('common.error.acceptTerms');
            }

            this.setState({errors: errorFields});
            return errorFields;
        }
        return {};
    }

    submit(values) {
        // Set isFormSubmitted to true when the form is submitted
        this.setState({isFormSubmitted: true});

        // If values of routing number and account number are empty give error
        if (!values.routingNumber || !values.accountNumber) {
            // alert('Please enter routing number and account number');
            const errorFields = {};
            const routingNumber = values.routingNumber && values.routingNumber.trim();

            if (
                !values.accountNumber ||
                (!CONST.BANK_ACCOUNT.REGEX.US_ACCOUNT_NUMBER.test(values.accountNumber.trim()) && !CONST.BANK_ACCOUNT.REGEX.MASKED_US_ACCOUNT_NUMBER.test(values.accountNumber.trim()))
            ) {
                errorFields.accountNumber = 'bankAccount.error.accountNumber';
            } else if (values.accountNumber === routingNumber) {
                errorFields.accountNumber = this.props.translate('bankAccount.error.routingAndAccountNumberCannotBeSame');
            }
            if (!routingNumber || !CONST.BANK_ACCOUNT.REGEX.SWIFT_BIC.test(routingNumber) || !ValidationUtils.isValidRoutingNumber(routingNumber)) {
                errorFields.routingNumber = 'bankAccount.error.routingNumber';
            }
            if (!values.acceptTerms) {
                errorFields.acceptTerms = 'common.error.acceptTerms';
            }

            this.setState({errors: errorFields});
            return errorFields;
        } else {
            BankAccounts.connectBankAccountManually(
                lodashGet(this.props.reimbursementAccount, 'achData.bankAccountID') || 0,
                values.accountNumber,
                values.routingNumber,
                lodashGet(this.props, ['reimbursementAccountDraft', 'plaidMask']),
            );
        }
    }

    render() {
        const shouldDisableInputs = Boolean(lodashGet(this.props.reimbursementAccount, 'achData.bankAccountID'));

        return (
            <ScreenWrapper includeSafeAreaPaddingBottom={false}>
                <HeaderWithBackButton
                    title={this.props.translate('workspace.common.connectBankAccount')}
                    stepCounter={{step: 1, total: 5}}
                    shouldShowGetAssistanceButton
                    guidesCallTaskID={CONST.GUIDES_CALL_TASK_IDS.WORKSPACE_BANK_ACCOUNT}
                    onBackButtonPress={this.props.onBackButtonPress}
                />
                <Form
                    formID={ONYXKEYS.FORMS.REIMBURSEMENT_ACCOUNT_FORM}
                    onSubmit={this.submit}
                    validate={this.validate}
                    // Remove onFocus/onBlur when we have a better solution for
                    submitButtonText={this.props.translate('common.continue')}
                    style={[styles.mh5, styles.flexGrow1]}
                >
                    <Text style={[styles.mb5]}>{this.props.translate('bankAccount.checkHelpLine')}</Text>
                    <Image
                        resizeMode="contain"
                        style={[styles.exampleCheckImage, styles.mb5]}
                        source={exampleCheckImage(this.props.preferredLocale)}
                    />
                    <TextInput
                        autoFocus
                        shouldDelayFocus={shouldDelayFocus}
                        inputID="routingNumber"
                        label={this.props.translate('bankAccount.routingNumber')}
                        defaultValue={this.props.getDefaultStateForField('routingNumber', '')}
                        keyboardType={CONST.KEYBOARD_TYPE.NUMBER_PAD}
                        disabled={shouldDisableInputs}
                        shouldSaveDraft
                        shouldUseDefaultValue={shouldDisableInputs}
                        error={this.state.errors.routingNumber} // Pass the error message to the TextInput component
                        onChangeText={(value) => this.handleInputChange('routingNumber', value)}
                    />
                    <TextInput
                        inputID="accountNumber"
                        containerStyles={[styles.mt4]}
                        label={this.props.translate('bankAccount.accountNumber')}
                        defaultValue={this.props.getDefaultStateForField('accountNumber', '')}
                        keyboardType={CONST.KEYBOARD_TYPE.NUMBER_PAD}
                        disabled={shouldDisableInputs}
                        shouldSaveDraft
                        shouldUseDefaultValue={shouldDisableInputs}
                        error={this.state.errors.accountNumber} // Pass the error message to the TextInput component
                        onChangeText={(value) => this.handleInputChange('accountNumber', value)}
                    />

                    <CheckboxWithLabel
                        style={styles.mt4}
                        inputID="acceptTerms"
                        LabelComponent={() => (
                            <Text>
                                {this.props.translate('common.iAcceptThe')}
                                <TextLink href={CONST.TERMS_URL}>{this.props.translate('common.expensifyTermsOfService')}</TextLink>
                            </Text>
                        )}
                        defaultValue={this.props.getDefaultStateForField('acceptTerms', false)}
                        shouldSaveDraft
                        error={this.state.errors.acceptTerms} // Pass the error message to the CheckboxWithLabel component
                    />
                </Form>
            </ScreenWrapper>
        );
    }
}

BankAccountManualStep.propTypes = propTypes;
export default withLocalize(BankAccountManualStep);

Please review these changes in which I have ensured that error messages are displayed correctly during form submission and cleared appropriately when the user interacts with the form. It will improve the overall user experience and streamline the validation process in the Bank Account Manual Step component.
Looking forward to fixing it for production as well!
Thanks
Regards

Contributor details
Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~012f6c0781bee2ce23

As the person who authored https://github.com/Expensify/App/pull/23306, I agree with @chiragxarora. I don't think we can fix this regression while keeping the solution we implemented in that PR.
CC @eVoloshchak @techievivek

I think we can put this on HOLD for now until we have decided the next step here

We have reverted the original fix https://github.com/Expensify/App/issues/21838#issuecomment-1672542172 that caused this regression, so we can close this now.


Update mendix-profile.md

We added a daily points limit to writing Marketplace reviews to counter the spammers.
Now it's also reflected in the docs :)

Thanks @maxvandop-mendix


completion popup should be closed when appropriate

Example, start typing a symbol followed by a dot or equal sign

Fixed


Don't allow other components to steal the swipe

Remove ability for Navigator or NavigatorExperimental to take over the pan. This should fix #21.

Perfect! Thanks @cridenour :+1:
I saw https://github.com/facebook/react-native/commit/52ddfd9b51cbaa05176efc8c9dfa7b581be01a97 the other day and thought I should probably do the same, glad you beat me to it ;)

That was definitely my inspiration as well!


Small parsing error leading to SQL error

Hi,
You're doing a great job, thanks a lot!
I noticed a small bug:
!pick cute(cute

This command does pass the regex
https://github.com/blackhole12/sweetiebot/blob/6cb6d7592405d980817bdfc08af951d43d766818/tagmodule/TagModule.go#L19
It also passes getTagIDs (it detects the ( as a separator))
but this will lead to a SQL error. It could lead to a SQL injection if someone created an UPDATE tag, a SELECT tag... (which is unlikely), because of how the clause is injected
https://github.com/blackhole12/sweetiebot/blob/6cb6d7592405d980817bdfc08af951d43d766818/tagmodule/TagModule.go#L363
but otherwise it's not too harmful

Nice job ! Thanks


immediatePurgeDataOn30Days is not in the workspace schema

This page says "Workspaces with 30 days retention may actually retain data for 31 days. If it is imperative that data be kept for only 30 days, use the Azure Resource Manager to set the retention to 30 days and with the immediatePurgeDataOn30Days parameter."
I looked for the parameter immediatePurgeDataOn30Days in the ARM template schema for "Microsoft.OperationalInsights/workspaces", but the parameter doesn't seem to exist: https://docs.microsoft.com/en-us/azure/templates/microsoft.operationalinsights/2020-03-01-preview/workspaces
Additionally, I don't see the immediatePurgeDataOn30Days parameter when I export an ARM template for an existing LogAnalytics workspace.
I found one reference to immediatePurgeDataOn30Days in a fork of this repository (https://github.com/CharanBR/azure-docs/blob/bba7bbf5a145fa3b4ca51fd6b17e90b279057c8d/articles/azure-monitor/platform/template-workspace-configuration.md), but it's set within a "features" object that also isn't in the ARM template schema.
Could you please confirm whether this parameter actually exists?

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

ID: a73a8a62-95c6-9ec9-9199-695ad1e5e8a9
Version Independent ID: 6089f013-8b5b-661c-9ee4-d6b267737357
Content: Manage usage and costs for Azure Monitor Logs - Azure Monitor
Content Source: articles/azure-monitor/platform/manage-cost-storage.md
Service: azure-monitor
Sub-service: ****
GitHub Login: @bwren
Microsoft Alias: bwren

Thank you for your detailed feedback.  We are looking into the issue, and we will respond when we have more information.

@wedaly My sincere apologies for delayed response on this.
Thanks for sharing the private repo, was able to deploy the workspace with immediatePurgeDataOn30Days property.

Since was able to deploy the Log Analytics workspace I presume the REST API offers the availability to deploy with the property
immediatePurgeDataOn30Days.
Currently I do see the Application insights REST API documentation calling out availability of immediatePurgeDataOn30Days property.
For existing Log Analytics workspace with immediatePurgeDataOn30Days property , exporting the template via Azure portal seems to have limitation where it doesn't show up this property as we export.
Hope this information helps, I will work with our internal team to understand the gap in Log Analytics REST API document on why it doesn't list out immediatePurgeDataOn30Days and take it as backlog item to update the document and also if there is any further information on the limitation of exporting ARM template with immediatePurgeDataOn30Days property, will share it accordingly.
At this point it appears that there's no further edits or updates needed to the documentation referenced on this  thread. However if there is any learning from our interaction with our team on REST API documentation we will update this document as needed. We will go ahead and close this issue, however if you have any further queries please tag us in your reply and will be happy to reopen the thread and continue the conversation. Thank you


[Feature Request] Copying files from Android to PC by invoking ACTION_GET_CONTENT intent and using adb pull

Is it possible to add a feature, such that when a specified keywords are pressed (ex: Ctrl + Shift + F) the scrcpy application running in Android device will invoke an intent to select a file name/content and then using the adb pull on the server/PC to save the selected file into PC.
Thank you.

that's a weird thought. Selecting something on the device means there needs to be an app with a user interface, which currently does not exist. (ACTION_GET_CONTENT alone won't bring you anywhere.) If, after that, scrcpy was allowed to write anything to the pc silently I'd see a huge security risk, if even possible.
Other thing would be a reverse drag and drop. Given a not yet existing file browser coupled with scrcpy, it would be possible to select something in that file browser on the device and drag it out of the scrcpy window (or a special area of the window) to start a download/pull. Maybe.
Much much easier to build a windows app which lets you browse the device's files, like macs have for android devices.

The thought was just a reverse of what the scrcpy already has, copy files to Android device by drag&drop. @rickx I don't see a security risk when this action will be initiated by the user with the intention to copy files from Android device to PC. The biggest security risk already lies in how we are remotely controlling the device ;)


Fix broken link in first email

The link to Adopt-a-Street should be: http://www.sfpublicworks.org/get_involved/adopt-street-program

Thanks for the new link! Updated the e-mail (though it was the second adoption email, not the first, unless I'm missing something).

sorry, you're right! 2nd email. thank you!!!


Functionality diary button: Access old entries?

As @thierna has noted while testing the app (https://github.com/sitcomlab/simport-learning-app/issues/156): When the user clicks on the diary button, a menu for adding a new entry pops up.
However, the user might expect to have access to their previous diary entries as well. As an alternative, the diary button on the map would open the diary menu.
Before implementing this, we should discuss the implications etc.

We coud add an additional button in the header bar which would open the diary page. I'm not sure about the placement though

A
B
C

I would tend to the the "Block Button"-option.
I think the list icon in the header next to the X is a bit too small and the floating action button seems to be a bit out of place. But that's just my opinion. What do you think @thierna?

I would have thought to open the diary menu but this would mean an additional click to create a new entry. I like the button that says "meine Einträge öffnen" but I would place it at the bottom of the page so that it doesnt distract from creating a new entry. also would make it less blue.


Mutliple OpenAPI Spec Endpoints on One App

I am working on an application that has quite a large number of endpoints. I have been using tags to group sets of API however the APIs themselves are quite different so I was wondering if there is a way of hosting multiple OpenAPI endoints.
E.g.
area1 -> /area1/swagger
area2 -> /area2/swagger

--- Not an actually solution, just some opinion / findings into how I feel it should be possible ---
I think this would work very well with APIRouter.
If you try right now you get a A response class is needed to generate OpenAPI which comes from line 161 in fastapi.openapi/utils.py:
161:    assert route.response_class, "A response class is needed to generate OpenAPI"
162:    route_response_media_type: Optional[str] = route.response_class.media_type

Removing the assert and replacing route_response_media_type with application/json actually makes it runnable, and It's actually not that far from being correct?
I've tried it with test_additional_response_extra.py test:
from fastapi import APIRouter, FastAPI
from fastapi.testclient import TestClient
from fastapi.openapi.utils import get_openapi

app = FastAPI()
router = APIRouter()
sub_router = APIRouter()

def custom_openapi():
    if app.openapi_schema:
        return app.openapi_schema
    custom_open_schema = get_openapi(
        title='FastAPI',
        version='0.1.0',
        routes=router.routes,
    )
    app.openapi_schema = custom_open_schema
    return app.openapi_schema

app.openapi = custom_openapi

@app.get("/")
def read_another_item():
    return {"lol": "yo"}

@sub_router.get("/")
def read_item():
    return {"id": "foo"}

router.include_router(sub_router, prefix="/items")

app.include_router(router)

openapi_schema = {
    'openapi': '3.0.2',
    'info': {'title': 'FastAPI', 'version': '0.1.0'},
    'paths': {
        '/items/': {
            'get': {
                'responses': {
                    '200': {
                        'description': 'Successful Response',
                        'content': {'application/json': {'schema': {'type': 'string'}}}
                    }
                },
                'summary': 'Read Item',
                'operationId': 'read_item_items__get',
            }
        }
    },
}

client = TestClient(app)

def test_openapi_schema():
    response = client.get("/openapi.json")
    assert response.status_code == 200, response.text
    assert response.json() == openapi_schema

def test_path_operation():
    response = client.get("/items/")
    assert response.status_code == 200, response.text
    assert response.json() == {"id": "foo"}

The only difference is the inclusion of {'type': 'string'} inside schema, this doesn't happen when running under app.routes.
Obviously the example isn't complex, but I don't see a reason not to have this.

thanks for this. Will look later on in the week and let you know how i go

from fastapi import FastAPI
from starlette.applications import Starlette
from starlette.routing import Mount

api1 = FastAPI(title="API1")
api2 = FastAPI(title="API2")

@api1.get("/test")
def test_api1():
    return "API1"

@api2.get("/test")
def test_api2():
    return "API2"

app = Starlette(routes=[
    Mount("/api1", api1),
    Mount("/api2", api2)
])

@ArcLightSlavik -- thanks for looking in to this 👍
@SebastianLuebke thanks for your solution. It worked really well 👍

Thanks for the help here @SebastianLuebke and @ArcLightSlavik! 🍰
And thanks for coming back to close the issue @cryptoroo ☕

Sorry for the long delay! 🙈  I wanted to personally address each issue/PR and they piled up through time, but now I'm checking each one in order.


[Feature] Implement human-readable ABI parser

Component
dyn-abi, json-abi, Other (please provide more details)
Describe the feature you would like

add parse methods to alloy_json_abi::{Error, Event, Function} that parses $name($($inputs),*)($($outputs),*) into these structs (outputs is just for Function)
implement parser in alloy-sol-type-parser

Additional context
No response

Hi Dani, I'd like to try this one.
Just a question, do you want like three impl block for Error, Event, Function?
Also, when you say to implement the parser in alloy-sol-type-parser you mean to do the logic there and then in the impl block just call the real parser in alloy-sol-type-parser?
Thanks


Reactivate Pymoo

Pymoo has been temporarily deactivated since tests began to fail (probably after a dependency update). It should be reactivated asap.
#1255

This happened in #1266.


chore: remove GIT and GIT_IMPORT feature flags.

Description
Remove GIT and GIT_IMPORT feature flags from FE code.
Fixes #18028
Type of change

Chore

Test Plan
Issues raised during DP testing
Checklist:
Dev activity

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Test plan has been approved by relevant developers
[ ] Test plan has been peer reviewed by QA
[ ] Cypress test cases have been added and approved by either SDET or manual QA
[ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
[ ] Added Test Plan Approved label after reveiwing all Cypress test

PR: https://github.com/appsmithorg/appsmith/pull/17170 is dependent upon it.

/ok-to-test sha=f3eb50f


Update persisting-shell-storage.md

Moved the list clouddrive-section for Bash to the top as it is in PowerShell.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: mgessenay sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

@mgessenay : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks for the change!  #sign-off


"/usr/bin/docker: Error response from daemon: grpc: the connection is unavailable.",

Is this a BUG REPORT or FEATURE REQUEST? (choose one):
BUG REPORT

Environment:

Cloud provider or hardware configuration:

OS (printf "$(uname -srm)\n$(cat /etc/os-release)\n"):
centos 7.3

Version of Ansible (ansible --version):

Kargo version (commit) (git rev-parse --short HEAD):
master
Network plugin used:
calico
Copy of your inventory file:
[kube-master]
jdancer-master
[etcd]
jdancer-master
jdancer-worker
[kube-node]
jdancer-worker
[k8s-cluster:children]
kube-node
kube-master
Command used to invoke ansible:
Output of ansible run:

"stderr": "/usr/bin/docker: Error response from daemon: grpc: the connection is unavailable.\ntime="2017-03-31T03:32:56-04:00" level=error msg="error getting events from daemon: context canceled" ",
"stderr_lines": [
"/usr/bin/docker: Error response from daemon: grpc: the connection is unavailable.",
"time="2017-03-31T03:32:56-04:00" level=error msg="error getting events from daemon: context canceled" "
Anything else do we need to know:

It's very hard to tell what went wrong. It looks like docker issue
It would be nice to add the following info to the bug.

Output of systemctl status -l docker:

journalctl -xe

docker version

docker info

uname -a

:), thanks.   i change to v 1.6  and deploy k8s on old cluster. maybe i need to clean all.

jdancer-master kubelet: E0331 15:39:28.355226   82231 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get http://<IP_ADDRESS>:8080/api/v1/services?resourceVersion=0: dial tcp <IP_ADDRESS>:8080: getsockopt: connection refused