CurrentImplementationApiVersionSelector behaves differently based on whether an operation still exists on latest API version

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
To preface, one of the projects I work on had not updated since 5.0.0 (apparently we didn't catch the name change), so I realize this might be a dated report. However I couldn't find a workaround in the past issues, so I'm hoping someone can help.
As of 5.1.0 (before the name change), the behavior of the CurrentImplementationApiVersionSelector has changed so that only operations or perhaps routes that still exist on the latest version of the API actually work. I believe that ReportApiVersions has also changed since this time because a route that does not exist for the latest version of an API now reports that version in its api-supported-versions header, which was not previously the case. After reading several issues such as https://github.com/dotnet/aspnet-api-versioning/issues/679, I gather that you guys went with a solution that saved overhead in favor of granularity.
Expected Behavior
The issue my team is now facing is that upgrading becomes a breaking change for clients of our API. For example, given:
// Program.cs

builder.Services.AddApiVersioning(options =>
{
  options.ReportApiVersions = true;
  options.AssumeDefaultVersionWhenUnspecified = true;
  options.ApiVersionReader = new QueryStringApiVersionReader("version");
  options.ApiVersionSelector = new CurrentImplementationApiVersionSelector(options);
}).AddApiExplorer(options => options.GroupNameFormat = "'v'VVV").AddMvc();

...

// PetsV1Controller.cs

[ApiVersion(1.0, Deprecated = true)]
[ApiController]
[Route("pets")]
public class PetsV1Controller : ControllerBase
{

  [HttpGet("{petId}")]
  public async Task<PetViewModelV1> GetPetAsync(
    [FromRoute] string petId)
  {
    // get pet
  }

  [HttpGet("{petId}/vaccinations")]
  public async Task<IEnumerable<VaccinationViewModelV1>> GetPetVaccinationsAsync(
    [FromRoute] string petId)
  {
    // get pet vaccinations
  }
}

...

// PetsV2Controller.cs

[ApiVersion(2.0)]
[ApiController]
[Route("pets")]
public class PetsV2Controller : ControllerBase
{

  [HttpGet("{petId}")]
  public async Task<PetViewModelV2> GetPetAsync(
    [FromRoute] string petId)
  {
    // get pet
  }
}

In <=v5.0.0, calling GET /pets/{petId}/vaccinations without providing version behaves exactly the same as GET /pets/{petId} does. Today, the latter will work as you would expect and the former returns a 400 Bad Request. Is there a solution or workaround to achieve the previous behavior to prevent having to deal with a breaking change with our clients (it is also our desired behavior in general for this particular API service)? Any guidance would be appreciated.

Currently on .NET 7.0 attempting to use the latest 7.x versions of your libs; could potentially look at going to 8.x if that would help in any way.

Steps To Reproduce
No response
Exceptions (if any)
No response
.NET Version
7.0
Anything else?
No response

@commonsensesoftware The information above is incorrect. We have a test named for this that started failing after upgrade and I had only manually tested the change. It looks like the issue is actually with our testing rather than behavior of ApiVersioning. I apologize for any wasted time.
I can close this ticket and log another one, but what is the likelihood of implementing a feature/workaround for operation based versioning similar to what I described?

Honestly, it's been a couple of years now and I don't fully recall if or what the behavior of this situation may have been back in the 5.x days. You may be right.
One thing that changed in 6.0+ has to do with the way routing is resolved under the hood. Previously all candidates were considered and the final set was disambiguated by API version. This seems sound and reasonable, but there some edge cases that didn't work correctly; specially, 405, 406/415 when versioning by media type, and arguably even 404. There was also the strange case of a version-neutral, which would match absolutely any valid API version, even if it didn't exist anywhere. The primary goal was to fix 405/415, but some other things came with it. These conditions are evaluated higher in the routing system and out of the control of API Versioning. To make things behave correctly, endpoints now anchor on their version when built in the routing tree. A consequence of that behavior is that some scenarios short circuit much earlier in evaluation than before. In this particular case, the candidate is eliminated because there are no matching endpoints. An ancillary benefit is faster evaluation and it's no longer possible to match a nonexistent API version. Those were never goals, but they're nice to have. Version-neutral APIs now have runtime behavior that matches what you see in OpenAPI (e.g. their are in every version, but not versions that don't exist).
Arguably the behavior you are asking for was never intended to work that way. Versions are meant to be collated and matched against an entire logical API, not individual endpoints or actions. The current version should be of the Pets API and not a specific endpoint. Bare in mind that when API Versioning is guiding the routing system, there is very little information available. The best action has to be resolved from nothing more than the incoming request URL and resolved API version. At this point in the pipeline, the possible candidate actions aren't even known yet.
All that being said, there are some options to preserve the old behavior. Since many candidates are eliminated earlier in the pipeline, there are a lot fewer 400 cases where something could match. Remember that API Versioning doesn't know which endpoints can match for the IApiVersionSelector. What it does know is that multiple endpoints with the same logical name (not even template) are collated together. pets/{id} and pets/{id:int} are semantically equivalent, but not the same so grouping on templates is not very feasible. The IApiVersionSelector is provided the incoming request and all known, collated versions. If an endpoint has been removed from the API, there is no way for API Versioning to know that at this point in the evaluation.
Option 1
There are 3 internal variations you could handle:

Have the newer versions call into or execute the next version
Use URL rewriting and transfer the request
Redirect the client with 301 or 308

Option 2
You know your API better than API Versioning so you know which APIs really exist. There is certainly risk to potentially pull the carpet out from under clients by advancing a version without them knowing about it, but that is up to you. It seems like you have an established behavior.
To match a request to an endpoint that has an API version lower that the collated set of all versions, you would need to have a custom IApiVersionSelector that matches the incoming request URL and the current API version. You don't necessarily have to do that for all endpoints, but certainly any that have current versions lower than the highest version of the logical API. This would mean, that if pets/42/vaccinations is requested, you would have to map it back to 1.0 since 2.0 is the current version of the Pets API, but that endpoint doesn't exist in it.
Option 3
If things were working exactly the way you wanted in the old libraries, then you could split your API across implementations with YARP.  Versions 1-(n) would be hosted using the old libraries and host, while new versions are hosted on the new libraries and host. When the older versions are finally sunset, you can shut down the old host and remove YARP if you want to. This is probably the only guaranteed method to ensure there are no runtime behavior changes. You can use [AdvertiseApiVersions] to report the existence of API versions that are not in the old API and old versions that don't exist in the new APIs. Clients that request API versions explicitly will get routed to the correct place. To continue routing implicitly, you'd have to specify that in your YARP configuration. I'm not sure how you'd generate that programmatically, but it may be possible.

Thanks for the thorough response. I'll update here with a decided direction when we're finished in case it's useful to others.


Is it possible to get new_window_reconnect_ssh

Is it possible to get the equivalent of tmux_conf_new_pane_reconnect_ssh but for windows? That works for paths with tmux_conf_new_window_retain_current_path. I am wondering tmux_conf_new_window_reconnect_ssh is not implemented.

Hello @Jendker 👋
It's just that I never got a used for it 🙂

Oh, I see. I was wondering if there is any technical reason behind it. Thanks! I will open the PR if I get to implement it.

Hello @Jendker 👋
Can you please give the gh-632 branch a try?

It works great. Thank you so much!


Use httplib

Passes my tests, looks good to me. (Much improved structuring, by the way. Awesome.)
I'll port these changes over to iron_worker_python. At some point, I'll have to come up with a better way to test App Engine integration.


The serialized_dag table is cleared when every new instance is started

Describe the bug
The serialized_dag table is cleared when every new instance (e.g. worker) is started.
This results in the following errors:

killing a recently started task (zombie)
DagNotFound exception, when trigger_dag is calling
DAG <dag_id> seems to be missing from DagBag error in webserver
dag-processor error (https://github.com/apache/airflow/issues/40082)

The error occurs very often because when starting a new image (e.g. for new worker) each time the airflow db migrate command is called from entrypoint, which in turn runs reserialize_dags and clears the whole serialized_dag table.
Originally posted by @millin in https://github.com/apache/airflow/issues/40082#issuecomment-2253016337

Thank you, @millin . I will try to take a look today and get back to you with what I find. I am surprised the serialized_dag is cleared with every call to db migrate. I thought it is basically a no-op in case the DB is already up to date.

I am also surprised, however the defaults of reserialize_dags argument is True:
https://github.com/apache/airflow/blob/f0ef69198ec0b7ad0c489cbccf76f6130445fedf/airflow/cli/cli_config.py#L659-L666
I can suggest a quick fix
--- await run_command("airflow db migrate", env=environ)
+++ await run_command("airflow db migrate --no-reserialize-dags", env=environ)

But I'm not sure it won't cause problems when updating the Airflow version

Yeah, I also noticed the reserialize_dags argument. In addition to not being super comfortable about using an argument which is not documented, I also think the re-serialization is required if we are doing a version upgrade, which is possible with MWAA in case of version upgrade. Ideally, Airflow shouldn't be doing the re-serialization if the DB is already migrated, and we should probably report this as a bug in Airflow. However, for MWAA, we will probably have to change the code to do the check ourselves and avoid calling db migrate if the DB is already initialized.

@millin , this should fix the issue you reported: https://github.com/aws/amazon-mwaa-docker-images/pull/125. I am currently out of office, but MWAA developers should pick the PR and merge it internally. Feel free to ping them if you don't hear any response, or alternatively reach out to AWS support to ensure the team stays on top of this issue, as it is pretty important and might impact multiple customers without them necessarily noticing.

The fix has been deployed to all regions. Customers can trigger environment update to receive the latest image.


Picking always runs

deckgl.js always adds input event handlers to its canvas, even when no layers have specified mouse event callbacks. This means that picking runs on every mouse event (move and click and drag) right now.
We should only be adding those handlers when the application indicates it wants to respond to input events.
Planning to fix as part of the event handling refactor.
/cc @Pessimistress

Is this still an issue? @ericsoco @Pessimistress

Yes. We do not do any checking before calling pickLayers. In a common scenario, if no layers are pickable, when mouse moves, we unnecessarily switch context to the picking frame buffer, renders nothing, then return an empty pixel. Worst case scenario, if all layers are pickable but no onHover callback is assigned, we still run the full picking render cycle.

Yes, the TODO is now in layer-manager


loader error when using with React

Hey guys, hope you're doing well.
I'm trying to implement brackets by using React, somehow getting this error.
I will be thankful to you guys if you help me with this. (I'm stuck on this issue for so long)
here's the error I'm getting:
./node_modules/brackets-json-db/dist/index.js 12:10
Module parse failed: Unexpected token (12:10)
File was processed with these loaders:
./node_modules/react-scripts/node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
| const clone = rfdc();
| class JsonDatabase {
->   internal;
|   /**
|    * Creates an instance of JsonDatabase, an implementation of CrudInterface for a json file.

You cannot use the JsonDatabase (from package brackets-json-db) in the browser. This is only supported on Node.js, since it reads the filesystem.
For the browser, you should either have a backend which returns the data for you, or if you want to stay in the browser, you can use brackets-memory-db.
This could be named better, I agree...


documentPictureInPicture bypasses snow

A new feature exists in chromium under an origin trial https://chromestatus.com/feature/5755179560337408
Probably should be treated like a popup.
onclick = async () => {
    w = await documentPictureInPicture.requestWindow();
    w.alert.call(window, 'hello world');
    w.close();
}

Thanks for the heads up!
Will look in to that soon 🙏

At the moment easiest way to test it is with chrome://flags/#document-picture-in-picture-api

Here's a draft. harder than i thought. still need to write the tests. #79

merged fix #79

Lol now i see the connection. Awesome job man!! https://twitter.com/bugschromium/status/1681366231293603840?s=46&t=3av-wxCFEbML6grYvIm18A @NDevTK


Nat.ble 0 0 evaluates to false, should be true

Prerequisites
Please put an X between the brackets as you perform the following steps:

[x] Check that your issue is not already filed:
https://github.com/leanprover/lean4/issues
[x] Reduce the issue to a minimal, self-contained, reproducible test case.
Avoid dependencies to Mathlib or Batteries.
[x] Test your test case against the latest nightly release, for example on
https://live.lean-lang.org/#project=lean-nightly
(You can also use the settings there to switch to “Lean nightly”)

Description
#eval Nat.ble 0 0 -- evaluates to false, but should be true

Context
Discussion on Zulip
Steps to Reproduce

just

#eval Nat.ble 0 0
#eval Nat.ble 42 42

Expected behavior: [Clear and concise description of what you expect to happen]
should evaluate to true
Actual behavior: [Clear and concise description of what actually happens]
but evaluates to false
Versions
[Output of #version or #eval Lean.versionString]
"4.11.0"
[OS version, if not using live.lean-lang.org.]
Mac OSX Sequoia 15.1
Additional Information
[Additional information, configuration or data that might be necessary to reproduce the issue]
Impact
Add :+1: to issues you consider important. If others are impacted by this issue, please ask them to add :+1: to it.

This also happens for Nat.blt, and breaks soundness of Lean.ofReduceBool


Fix: The title field is cleared when the Confirm task button is pressed

Details

IOS - The title field is cleared when the Confirm task button is pressed
Fixed Issues

$ https://github.com/Expensify/App/issues/22078 https://github.com/Expensify/App/issues/23210
PROPOSAL: https://github.com/Expensify/App/issues/22078#issuecomment-1645010647
Tests

Login to New Expensify on an iOS handset
Click on + icon
Click on assign task
Enter title and click on next
Enter an assignee
Click on Confirm task
Verify that Title field is not cleared when navigating
Try to update title, description and assignee
Verify that everything works as expected

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

Login to New Expensify on an iOS handset
Click on + icon
Click on assign task
Enter title and click on next
Enter an assignee
Click on Confirm task
Verify that Title field is not cleared when navigating
Try to update title, description and assignee
Verify that everything works as expected

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

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

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/129500732/cefe2eba-c31d-4f05-9400-1a5aef028638

Mobile Web - Chrome
https://github.com/Expensify/App/assets/129500732/989748ca-43ef-43ca-a79b-8b3693304fda

Mobile Web - Safari
https://github.com/Expensify/App/assets/129500732/7fb348c0-4561-42f0-8769-a556944990c0

Desktop
https://github.com/Expensify/App/assets/129500732/06b2a944-49aa-43be-a90a-1917fca6eb47

iOS
https://github.com/Expensify/App/assets/129500732/bdcf4aef-d147-4fc1-97e5-0c2cf25f9b10

Android
https://github.com/Expensify/App/assets/129500732/dad908ec-9c30-449c-9279-731d1a8bb9cb

This already happens on staging but should we fix TaskAssigneeSelectorModal as well?
https://github.com/Expensify/App/assets/108292595/c69d7643-5ce7-413e-9649-2c6b49276764

@robertjchen can you please confirm https://github.com/Expensify/App/pull/23342#issuecomment-1648571208?

I think assignee page can be fixed separately as it already happens on all envs and a little complex than title, description pages (new/edit assignee pages are in one component)
For tracking, I reported that bug on slack.

Good question, I think we should address that separately with another PR 🤔

While testing, found a few bugs which happen on staging. Report them on slack:

Cannot change assignee after task created - mentioned here
Empty screen shows for a brief moment in change task assignee modal
Task assignee disappears after editing task title

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

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

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/108292595/92c5ead3-e1e2-4bfc-9ba7-a9ed71a62d11

Mobile Web - Chrome
https://github.com/Expensify/App/assets/108292595/52214ff5-5f35-4138-be69-9575c2809559

Mobile Web - Safari
https://github.com/Expensify/App/assets/108292595/82a97be8-2992-403e-8c31-40ad69db0114

Desktop
https://github.com/Expensify/App/assets/108292595/dc8895e2-9932-4807-9c32-bcc001733406

iOS
https://github.com/Expensify/App/assets/108292595/19637f3a-edfa-4935-91dd-fca5e78bf091

Android
https://github.com/Expensify/App/assets/108292595/5ad6f2c0-3361-4df8-9f66-b6da15b504e0

Sure! Though, to reduce confusion and delays, let's make sure the list of requested Reviewers is clear so that no one is left waiting or gets passed over for review 👍

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/robertjchen in version: 1.3.46-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/robertjchen in version: 1.3.47-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/marcaaron in version: 1.3.46-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Beamanator in version: 1.3.47-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Connected Textures Not Working

None of the connected textures mod working, if we need to give names, Continuity, Fusion, CTM, Athena doesn't work, i would like a support!

I would say this would be one of those painful task. sweats
Because you have to deal with many ctm methods beside standard original from Optifine, CTM above ChiselTeam (Chisel mod) is another one with different set of methods.

Support for connected textures has now been added to MiEx. It currently only supports Optifine's CTM format.
You can get the latest version of MiEx with this feature here: https://github.com/BramStoutProductions/MiEx/releases/tag/v1.6.0

Support for connected textures has now been added to MiEx. It currently only supports Optifine's CTM format.
You can get the latest version of MiEx with this feature here: https://github.com/BramStoutProductions/MiEx/releases/tag/v1.6.0

I HATE OPTIFINE, WHY NOT CONTINUITY :(

Support for connected textures has now been added to MiEx. It currently only supports Optifine's CTM format.
You can get the latest version of MiEx with this feature here: https://github.com/BramStoutProductions/MiEx/releases/tag/v1.6.0

I HATE OPTIFINE, WHY NOT CONTINUITY :(

Continuity uses the same Optifine CTM format. So, resource packs that work with Continuity also work with Optifine and thus with MiEx.

Support for connected textures has now been added to MiEx. It currently only supports Optifine's CTM format.
You can get the latest version of MiEx with this feature here: https://github.com/BramStoutProductions/MiEx/releases/tag/v1.6.0

I really want to say that I greatly appreciate you putting in the time to put in this suggestion! As someone who loves building structures that use modded blocks, I think this is going to be very handy with my workflow. Don't stress yourself, and keep up the great work!


Changes for 1.0.0 (maybe?)

Project structure
This should be an invisible change to normal users. It would simply be a quality of life change for myself and anyone else who may work on this in the future. Having a separate module for each script is unnecessary with the use of entry_points in the setup, and there's a much better way of organizing a CLI program like this to reduce code duplication and effort (see, e.g., httpie). I'm a fan of this structure, and, as a side benefit, it makes it easy to run as a module (python -m gmusicapi_scripts).
CLI
So, the CLI for these scripts has been solid since the beginning. I've been able to keep backward compatibility without feeling burdened by it. But, there are cases of working around some limitations of the docopt CLI parsing library that let it down. One example is the filtering options. A simple filter option could be changed from -f 'artist:myartist' to -f artist myartist. It may also be changed to enhance the filtering options in a way that would allow multiple filter sets to be handled in one script call rather than requiring multiple script calls.
I may add a top-level entry_point (gms). E.g. gms upload would be equivalent to the current gmupload. At this point, I plan to keep separate entry_points for each, keeping the current commands intact.
Tab completion is also worth taking a look at.
Decoupling
There are some parts of gmusicapi-scripts that are unnecessarily coupled to gmusicapi-wrapper (or vice-versa). Specifically I'm speaking about the upload/download methods. At the time, it made the most sense to get them out of gmusicapi-scripts and into gmusicapi-wrapper. But they are far too specific to be in a general wrapper. With the project restructuring, it makes sense to move them back into gmusicapi-scripts and promoting the _upload/_download generator methods as first-class methods in gmusicapi-wrapper.
Another instance of this is with logging. See the next section.
Logging
The logging situation is the result of haste at a time where I had little time. There is no gmusicapi-scripts logger; it simply piggy-backs off gmusicapi-wrapper. This is not ideal nor desired.
Once separated, adding timestamped logging to file as well as the console output would certainly be a welcome addition.

There are likely more things that could be improved; feel free to add any suggestions or comments. I will update this issue as necessary.

Not sure if this is possible, but - it would be cool to have some sort of switch to skip over previously downloaded files if they already exist in the target location. I use gmusicapi to do a backup of all my Google purchases to another storage location with the following command:
gmdownload "/mnt/%albumartist%/%album%/%track2%. %title%"

Both gmdownload and gmsync down will sequentially download all files, regardless of whether they exist in the target location. I prefer to run the command(s) against the entire library to ensure that I don't miss any recently purchased songs.

This isn't really a 1.0.0 thing. I don't remember if it was a design decision or just something I overlooked. I'll open up a separate issue for improving the local song detection in gmsync down for tracking. Any discussion can be done there. I think I'll probably both include the parent directory of the common prefix that I already get when not using CWD to solve the specific case that you're running into. And I will probably also add an option to add arbitrary directories to scan for local songs for cases where you want to download to a different base directory altogether.

I think a lot could be done to improve gmsync. My use case for it, which it doesn't appear equipped to handle yet, is as follows:

Google Music is the entrypoint for library management (file edit and deletion will primarily happen here)
Local filesystem mirrors Google Music (edits / deletions in gmusic will be reflected upon sync down to local fs)
Local filesystem (could be a separate folder from the GM mirror) is the entrypoint for new uploads, though in that case there would be a somewhat unnecessary download as it goes from local fs, up to remote, then synced down to a separate folder. It would be nicer if it was a true bidirectional sync but that is complicated.

I haven't thoroughly tested your scripts so I don't entirely understand what they are capable of, but I gather that the main missing piece here would be, as @bendwyer pointed out, checking for existing files. Does this also mean gmsync down does not currently delete files in the local fs that do not exist in the remote? That would also be a requirement for my use case.

@gryphonmyers
I'm pretty sure yours is a fairly rare setup. I'm not sure I want to add such a specific option, but we'll see.

(I'm assuming not) diff file attributes to determine overwrite candidates

How would syncing work if it weren't able to compare the files in some way? It's done by normalizing and comparing artist, title, album, and track number. But deletion is currently limited to things that are successfully transferred in the implementation. It could be made to behave differently, but it might just be better for you to use gmusicapi-wrapper (or gmusicapi iteslf) and create a script for your use case.

PS I have most things done that I initially wanted to get done, if not all. There are a couple things I would like to get feedback on, but nobody has given any as of yet:

#72 - Just some general questions about how people use the filter options.
#75 - Questions about glob vs regex for the filepath inclusion/exclusion options.

@bendwyer: You might have something to say about the 2nd one.

How would syncing work if it weren't able to compare the files in some way? It's done by normalizing and comparing artist, title, album, and track number. But deletion is currently limited to things that are successfully transferred in the implementation. It could be made to behave differently, but it might just be better for you to use gmusicapi-wrapper (or gmusicapi iteslf) and create a script for your use case.

By file attributes I basically meant modified date. If I make edits to a file in gmusic, the sync down should overwrite my local copy of the same file based on the fact that it was more recently modified.

I'm pretty sure yours is a fairly rare setup. I'm not sure I want to add such a specific option, but we'll see.

It could be made to behave differently, but it might just be better for you to use gmusicapi-wrapper (or gmusicapi iteslf) and create a script for your use case.

Fair enough. Your scripts seem relevant / useful for what I need to do but maybe you're trying to solve a different set of problems.


Fix: RU - typo fix (issue #353)

Typo fix
Russian localization - typo fix (issue https://github.com/HugoGiraudel/sass-guidelines/issues/353)

Thanks! :)

No problem!
Apologies for a false promise to fix it quickly, lots of work


Fixed #86

Added code to display the current list of rounds/slots with editable
names. A delete button is next to each so they can be removed, and an
"Add Slot" button added so rounds/slots can be added.
Updated Admin.php code to remove everything from round table and
re-create it based on the information submitted.
Also added new UI strings to translations -- German translation needs
work!

Notes:

The German translation needs work -- my German isn't very good.
admin.html now includes some javascript directly.  Should it be broken out into a separate file?
If this approach is acceptable, I'll make another pull request to fix issue #81, that uses the same approach.

Looks good to me! thank you!

Even the german translation is perfect :)
I don't know a nice german word for Slot myself... and for the admin page, the english translation is not as important...
admin.html with javascript: I don't mind. It is not a lot of code. As long as it is maintainable I am fine with it.
Again thank you! Looking forward to the other pull request!

I just put the code online at https://bof.demo.solidcharity.com/, and I noticed I have not translated anything on the admin page into German. So don't worry about it. As long as the frontend stuff will be translated, but I can make sure of that, so you don't need to spend too much effort on that.


Core.TaxonomyPickerWeb - taxonomypickercontrol.js - forEach function not compatible in IE8

Hi,
Its an excellent component. Many thanks for sharing.
While I was using this component in IE8, I came across an error, which is the modal pop up opens up with no terms in tree view.
On my investigation.
Issue:
Function "buildTermSetTreeLevel" in taxonomypickercontrol.js uses forEach to loop around termList and create a tree structure. IE8 does not support forEach function, hence it causes error.
Resolution:
There can be many solutions to it but I am mentioning 2.

We can use jQuery.each instead.
Or
We can add a prototype for forEach in project initiating scripts allowing use of forEach() in implementations that don't natively support it
prototype code can be referred at below link
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

The bigger question is: What browsers to PnP in general support, what versions should the components support?
Switched over from forEach to a plain old for loop in the #621 PR which should resolve the issue.

@jansenbe I think this issue can be closed now that #621 is merged

yes, thx for your great work here!


Running dev script requires running two terminals

Since tailwindcss is running in jit mode, a postcss process needs to be running in watch mode in parallel with next dev. Since the dev script currently may not be directly compatible with Windows developers anyways, why not simplify dev for Unix-like developers? I think running postcss in the background should be possible.

Solved by #8


Included response output for flow commands. Closes #4086

Included response output for flow commands. Closes #4086

Thank you @nanddeepn
We'll try to review it ASAP!


How could i load package locally ?

Hello,  i am using nuxt2.10 and @nuxtjs/pwa": "3.0.0-beta.19",
also i add this package to stop importing script from cdn jsdeliver.
this is my workbox config:
  workbox: {
    config: {
      modulePathPrefix: '/node_modules/workbox-cdn/workbox/workbox-sw.js',
    },
  },

the problem is when i build the project
the generated sw.js will look like this:
<EMAIL_ADDRESS>
// --------------------------------------------------
// Configure
// --------------------------------------------------

// Set workbox config
workbox.setConfig({
  "modulePathPrefix": "/node_modules/workbox-cdn/workbox/workbox-sw.js",
  "debug": false
})

still i have the importscript from cdn,
how can i change or remove it?
and also i have these error on my console and network tab.

Thank you in Advance.

Oh that was my mistake,
i wrote a script to copy workbox file in static folder
then i add that in my nuxt config :
  workbox: {
      workboxURL: `/workbox/workbox-sw.js?${Date.now()}`,
  }

and it works. :)

Oh that was my mistake, i wrote a script to copy workbox file in static folder then i add that in my nuxt config :
  workbox: {
      workboxURL: `/workbox/workbox-sw.js?${Date.now()}`,
  }

and it works. :)

I have the same problem. could you please let me know what your solution is ?
Thx


Can I use EF 7 with immutable object?

Can I use EF 7 with immutable object with read-only properties and without parameter less constructor?
As example:
public class User
{
    public User(int id, string name)
    {
        Id = id;
        Name = name;
    }

    public int Id { get; }
    public string Name { get; }
}

This would be enabled by https://github.com/aspnet/EntityFramework/issues/240 (which we are planning to do)

3 years and a simple immutable objects can not be used (unless you do some workarounds), this is really sad, considering c# 7 and 8 come with more and more support for functional programming

@antonioortizpola I recommend that you create a new issue including details about the code that you would like to write. There have been improvements around this area and some things already work.

Thanks for the response!, however, I do not see a point in open a new thread, since the code already posted at the beginning is exactly what i would like to do, the closest to this is to add a protected empty constructor and the one with your parameters, but still feel more like a workaround than a solution.
This takes more importance with the addition of Records in C# 8, since could simplify some entity mappings.
Also, with functional programming taking more and more importance, it would be nice to see immutable objects as a considered option.

@antonioortizpola In 2.1 preview1, the code for the entity type above should work fine. However, be aware that if the key is real read-only (as it is above, as opposed to exposing a read-only public API), then store-generated keys will not work since they need to set the key field after reading it from the database.

@antonioortizpola it is a process thing: In our triage meeting we review open issues with no milestone assigned. We never discuss comments on closed issues.
Anyway, the other reason I asked you to create a new issue with the code that you would like to write is because I was hoping it would capture your untainted expectation on what to do beyond object mapping: there is more to immutable object support that just writing an immutable class and being able to map it (as @ajcvickers, this generally will work in 2.1). Specifically, what are your expectations re performing updates on the database. I see two possibilities:

You will never perform updates on the database. Only inserts and deletes. I.e. immutability extends to rows in the database.
You expect to be able to replace immutable instances with other immutable instances with different data. I believe this only works under very constrained conditions in 2.1.

@ajcvickers do you remember if we already closed-as-fixed some issue based on what you did in 2.1 that enables immutable objects. Otherwise, mind if we use this issue?

Thanks for the responses. I understand about the process thing, sorry if I sounded rude or putting pressure, i just wanted to know, in general i'm happy with the normal approach and the performance hits are neglectable, however, after learning some functional programming and using immutability, we have been able to improve some particulars parts of our system with concurrent code, reducing our bugs, locks and other things with very elegant code, (we thought use Dapper,  but EF is working great).
In that context, our process works with the objects and the ORM works as a simple parser, and we included EF-Plus to handle some updates avoiding load entities, but our "DataProviders" are filling with temporal objects or protected constructors, I did not know that the above code will work from 2.1, sorry about that :S.
Sadly our main system is pre-Core, so we will not have that feature over there, luckily we are working in some new developments with core so we will try that right away. So thanks again for the effort, the attention and the openness, i will be watching #240 and this for updates.
Also, i will check the docs page to add this to the discussion if someone want something similar.

Triage: filed #11457 to cover updates to immutable entities. Closing this as a duplicate of #10703.


Add hash method to metadata to speed up comparing it in a hash key

Which issue(s) this PR fixes:
no
What this PR does / why we need it:
Object#hash  is called when using an object as the hash key or reference value from a hash object with the object.
Current Struct's implementation is comparing all inner variables.
https://github.com/ruby/ruby/blob/0623e2b7cc621b1733a760b72af246b06c30cf96/struct.c#L1200-L1203
This impl is a bit redundant. Especially in fluentd, it can be overhead.
e.g. Output#handle_stream_simple creates a hash object using an object as a key. this method is called per emit(one of the most called methods in fluentd).
benchmark
require 'benchmark/ips'

A = Struct.new(:l, :c, :r)

B = Struct.new(:l, :c, :r) do
  def hash
    l
  end
end

a = A.new(1, 2, 3)
b = B.new(1, 2, 3)

Benchmark.ips do |x|
  x.report("not hash defined") do
    { a => 1 }
  end

  x.report("hash defined") do
    { b => 1 }
  end
end

aa = { a => 1 }
bb = { b => 1 }

Benchmark.ips do |x|
  x.report("not hash defined ref") do
    aa[a]
  end

  x.report("hash defined ref") do
    bb[b]
  end
end

a2 = A.new(1, 2, 4)
b2 = B.new(1, 2, 4)

Benchmark.ips do |x|
  x.report("not hash defined ref not exist") do
    aa[a2]
  end

  x.report("hash defined ref not exist") do
    bb[b2]
  end
end

Warming up --------------------------------------
    not hash defined    95.271k i/100ms
        hash defined   213.133k i/100ms
Calculating -------------------------------------
    not hash defined      1.121M (± 6.8%) i/s -      5.621M in   5.040657s
        hash defined      3.320M (± 6.6%) i/s -     16.624M in   5.030596s
Warming up --------------------------------------
not hash defined ref    90.976k i/100ms
    hash defined ref   212.802k i/100ms
Calculating -------------------------------------
not hash defined ref      1.207M (± 6.0%) i/s -      6.095M in   5.071473s
    hash defined ref      4.270M (± 2.0%) i/s -     21.493M in   5.035820s
Warming up --------------------------------------
not hash defined ref not exist
                        96.979k i/100ms
hash defined ref not exist
                       166.564k i/100ms
Calculating -------------------------------------
not hash defined ref not exist
                          1.215M (± 2.2%) i/s -      6.110M in   5.029940s
hash defined ref not exist
                          2.463M (± 1.8%) i/s -     12.326M in   5.005410s

Docs Changes:
no need
Release Note:
same as title

timekey.object_id is safe for existing use cases?
metadata is used in buffer for hash key.

I think so. the following code returns the same result.

A = Struct.new(:l, :c, :r)

B = Struct.new(:l, :c, :r) do
  def hash
    l.object_id
  end
end

a = A.new(nil, 2, 3)
a2 = A.new(nil, 2, 3)
a3 = A.new(nil, 2, 4)
a4 = A.new(1, 2, 4)
a5 = A.new(1, 2, 4)

b = B.new(nil, 2, 3)
b2 = B.new(nil, 2, 3)
b3 = B.new(nil, 2, 4)
b4 = B.new(1, 2, 4)
b5 = B.new(1, 2, 4)

aa = { a => 1, a2 => 2, a3 => 3 }
aa2 = { a => 1 }
bb = { b => 1, b2 => 2, b3 => 3 }
bb2 = { b => 1 }

p (a == a2)  == (b == b2)
p (a3 == a2) == (b3 == b2)
p aa[a]      == bb[b]
p aa[a2]     == bb[b2]
p aa[a3]     == bb[b3]
p aa2[a]     == bb2[b]
p aa2[a2]    == bb2[b2]
p aa2[a3]    == bb2[b3]
p (a4 == a5) == (b4 == b5)

If this has a problem with exsiting case, we will revert it.


Bendy-lib doesn't work with sodium

I installed emotecraft, then installed bendy-lib, but the limbs still did not bend when playing emotions, although they should have bent thanks to bendy-lib. I tried removing sodium from the mods folder and it helped. I don’t want to use sodium analogues, but at the same time I want my emotions to be played correctly. I used emotecraft 2.4.0, bendy-lib 4.0.0, sodium 0.5.8+mc1.20.4, minecraft version 1.20.4

Have same issue on 1.20.1 Fabric, but I found a list, which is working. Try use older version of sodium


PeerJ R3C4

the statistics given are from the point of view of the editorial team. What would be more interesting would be an analysis the submissions in the first year, by article topic, community served, geographic distributions (is this USA or European focused?) and so on. It is hard to tell from the user interface at http://joss.theoj.org/papers

Great idea. We can go back and tag completed submissions manually if needed and make a plan to automate going forward.

This is basically how I got all the data on the year-one papers to begin with, so that's doable.

My suggested response:

We have added a new Figure 8 and paragraph on page 15 describing the geographic distribution of authors; in the first year, about 48% of authors come from the US, and 40% from Europe.
However, categorizing the submissions by the community/topic is more challenging, since we do not currently have a tagging system in place. We do have plans to support tagging of articles by domain/research topic and programming language, and enable easier searching based on these tags.


[1.12] Pink Slime liquid adheres to no mob cap

This is likely not normally an issue ... until you generate an RFTools dimension with said liquid, and it crashes the server as millions of the things spawn - even in peaceful

:wave: Sorry but Industrial Foregoing has ended support for version 1.12. I'm closing this issue as it will no longer be updated for that version. Thanks for playing with the mod.


Python provider - small bugfix and improvement

@sideffect0 doesn't look like this is merged to master, did you remove it?

was merged, may be commit history probs?
https://github.com/instapk/django-fileprovider/commit/1ad72b7a5c362e28fd4506bdbd87e5d9c6aa2545


Setting oauth2_interceptRequest if not already defined

I have a common.http file that I import before every request. The script in this file sets the oauth2_interceptRequest to disable SSL verification:
    exports.oauth2_interceptRequest = function(request, context) {
      request.options = { https: { rejectUnauthorized: false }};
    };

Unfortunately, it seems that assigning to the oauth2_* variables invalides any access token obtained for the oauth2 prefix, and thus a new access token is retrieved for every request.
Note that I implement a OAuth2 Password Grant type returning an access token with a lifetime in hours, and there is no refresh token. Accordingly oauth2_keepAlive is not set.
Of course exports is empty when the common.http file is run, so I can't test that. Wrapping the above code in if (typeof oauth2_interceptRequest === undefined) does not seem to work.
What can I do?

Unfortunately, it seems that assigning to the oauth2_* variables invalides any access token obtained for the oauth2 prefix, and thus a new access token is retrieved for every request.

Not quite. A change in an *.http file causes the variables for this file to be discarded. Changes in Javascript files with the name httpyac also discard the variables (code). External scripts imported with require would not discard the variables.

Of course exports is empty when the common.http file is run, so I can't test that.

exports is empty, but all variables are added to the context. The context can be also accessed using this. You can test if the variable is not defined using if (!this.oauth2_interceptRequest).
e.g. testVars not defined on first request and will not be replaced. On second request the variable will use value second
GET https://httpbin.org/anything?foo={{this.testVar}}
{{
  exports.testVar = "second";
}}

Thanks for the quick clarifications!
It seems I can't get rid of the extra requests. I'll try to write an example that does not depend on our internal systems and will update this issue.

By the way, should I propose a documentation update MR on how to disable SSL verification?

For me it was just the way to do it either via Environment or via Metadata. This is documented.
https://httpyac.github.io/guide/metaData.html#no-reject-unauthorized
Using property noRejectUnauthorized on request in scripting also works and is also documented (but more hidden, you need to click a link): https://httpyac.github.io/guide/scripting.html#access-to-variables
Using request.options is more or less not desired to use. This is a special feature from got/ http request and will not change behaviour of e.g wegsocket requests.


borderRadius not working on IOS

Environment
I have this issue only with IOS platform

Description
This is my code :
 <MaterialIcon name={props.iconName} size={25} color='white' style={{padding:5, borderRadius: 50, backgroundColor: '#727272'}}/>

As you can see i set borderRadius 50 but i can't see any changes
Demo
And this is what it look like :

Any help regarding this would be helpful

doesn't work for me

This worked for me. https://github.com/facebook/react-native/issues/13760#issuecomment-314291934


docs: use gjs as codefence lang

Glimmer JS/TS syntax highlighting support was added to GitHub a couple of months ago. This PR uses that lang for codefences where <template> tag is being used.

gjs works:
const two = 2;

<template>
  {{two}}
</template>

gts:
const two = 2;

<template>
  {{two}}
</template>

glimmer-ts:
const two = 2;

<template>
  {{two}}
</template>

did we misconfigure something in linguist?

hmm. that's silly


Login > Getting "Response code 503(ServiceUnavailable)" error intermediate while login any user

Roles: All
Describe the bug
Login > Getting Response code 503(ServiceUnavailable) error intermediate while login any user
Steps to Reproduce
Login any user
Expected Result
User should be logged in.
Actual Result
Getting Response code 503(ServiceUnavailable) error intermediate while login any user
Login:

Note: Issue frequency is around 40-50%
FYI: @ParkeBrown @michaelmarshall
cord-field# fd0a52d4

@iPiyushPatel any other factors that seem to be affecting who could log in and not on this test?

Also helpful to know time range of test in case there is crossover with Fastly outage.

HI @ParkeBrown  No found any specific factor to affecting the issue but I faced this issue during the testing and after some time it's not replicating. I'll keep eye on the issue and update here if found any particular time frame or steps to reproduce the issue. Thanks!

Haven't been able to replicate this issue yet with my logins. Will keep periodically attempting.

Hi @ParkeBrown @CarsonF @parashara1
I've verified on latest develop e8bb4ac and can't reproduce this issue
See video :
https://user-images.githubusercontent.com/5212585/134922289-e966e20c-2c6a-4322-9bf3-2a90523bc414.mp4


Large Variation in Compute Times

Please make sure that this is a bug. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:bug_template
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04.1 LTS
TensorFlow installed from (source or binary): source
TensorFlow version (use command below): 1.12.0
Python version: Python 2.7.15rc1
Bazel version (if compiling from source): 0.21
GCC/Compiler version (if compiling from source): (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
CUDA/cuDNN version: 10.0/7.4.2
GPU model and memory: NVIDIA Corporation GP104GL [Quadro P5000] (2 GPUs)

Describe the current behavior
I am running a toy matrix multiplication example multiple times on TensorFlow (code here). When I look into the timeline for multiple iterations, I see an increase in the time to compute the same graph over multiple iterations. Specifically, look at these three timelines:
Timeline 1
Timeline 3
Timeline 8
For MatMul_25, first iteration shows compute time to be ~8000 ms, while 3rd iteration shows that compute time is ~15000 ms and 8th iteration shows that compute time is ~27000 ms.
Describe the expected behavior
I expect compute times of the same matrix multiplication operation to be stay similar over multiple iterations instead of increasing linearly. Is this the expected behavior or am I missing something ?
Code to reproduce the issue
code to rerun the toy example can be found here.
Other info / logs
Timelines generated when I ran the code are in this folder

I am trying to write a custom graph partitioner and am stuck on this issue for a very long time. If someone can help me figure this out, it will be great. Thanks!

@penpornk, it will be great if can comment on this issue.
Thanks!

@xilenteyex I'm so sorry for the delay! I'll look into this soon!

Cc'ing our GPU expert, @reedwm, as I mostly work on the CPU side.

@xilenteyex This is a stale issue. Looks like this was resolved in recent TF1.x version. I have tried your code with TF1.15.5 on colab and I cannot reproduce the issue. Please check the gist here
Also, please note that there is no support for TF1.x issues.
I am closing this issue as this was resolved. Please feel free to reopen the issue (if it persists) after testing with TF2.x. Thanks!


popTo method signature is different from implementation

Ionic version:  (check one with "x")
[ ] 1.x
[ ] 2.x
[x] 3.x
I'm submitting a ...  (check one with "x")
[x] bug report
[ ] feature request
[ ] support request
Current behavior:
When calling nav.popTo, the intellisense leads me to believe that the signature is this: popTo(page: Page | string | ViewController, params?: any, opts?: NavOptions, done?: Function), which is found in nav-controller.ts on line 477 (master branch), but the actual implementation is in nav-controller-base.ts on line 116 as popTo(indexOrViewCtrl: any, opts?: NavOptions, done?: () => void).
Calling popTo and passing animation parameters like popTo(MyPage, null, { animate: false }) results in errors, of course. The quick fix is to ignore intellisense and call it like popTo(MyPage,  { animate: false })
Expected behavior:
I expect the signature and implementation to match. The abstract class signature needs to be changed to match the implementation.

Thanks for using Ionic, we will look into this.

We just figured this out. There is an issue in our docs, which is causing the IntelliSense to be wrong here and are pushing a fix for that as we speak. This will make it into the next release. Thanks!


Update BCs Version to v11.00.0

This PR updates the BCs to use v11.00.0 by default.

Your development orb has been published. It will expire in 30 days.
You can preview what this will look like on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/geos-esm/circleci-tools?version=dev:828a579d78941b2459a54f07da1987b06d6e023a

Your development orb has been published. It will expire in 30 days.
You can preview what this will look like on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/geos-esm/circleci-tools?version=dev:828a579d78941b2459a54f07da1987b06d6e023a


Fix dubbo-bom

What is the purpose of the change
issue: #7913
Fix dubbo-bom
Brief changelog
Verifying this change

Checklist

[x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
[ ] Add some description to dubbo-website project if you are requesting to add a feature.
[ ] GitHub Actions works fine on your own branch.
[ ] If this contribution is large, please follow the Software Donation Guide.

Codecov Report

Merging #7915 (89c2530) into master (e226823) will decrease coverage by 0.25%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #7915      +/-   ##
============================================
- Coverage     60.21%   59.95%   -0.26%
  Complexity      544      544
============================================
  Files          1089     1089
  Lines         43852    43805      -47
  Branches       6402     6369      -33
============================================
- Hits          26404    26262     -142
- Misses        14495    14595     +100
+ Partials       2953     2948       -5

Impacted Files
Coverage Δ

...a/org/apache/dubbo/rpc/filter/AccessLogFilter.java
28.35% <0.00%> (-50.75%)
:arrow_down:

...va/org/apache/dubbo/rpc/support/AccessLogData.java
53.16% <0.00%> (-37.98%)
:arrow_down:

...ng/transport/dispatcher/all/AllChannelHandler.java
68.96% <0.00%> (-20.69%)
:arrow_down:

...rg/apache/dubbo/remoting/utils/PayloadDropper.java
76.92% <0.00%> (-15.39%)
:arrow_down:

...ng/transport/dispatcher/WrappedChannelHandler.java
43.47% <0.00%> (-15.22%)
:arrow_down:

...dubbo/common/status/support/LoadStatusChecker.java
50.00% <0.00%> (-11.54%)
:arrow_down:

...in/java/org/apache/dubbo/common/utils/JVMUtil.java
81.13% <0.00%> (-11.33%)
:arrow_down:

...mmon/threadpool/support/fixed/FixedThreadPool.java
80.00% <0.00%> (-7.50%)
:arrow_down:

.../remoting/transport/netty4/NettyClientHandler.java
79.66% <0.00%> (-6.78%)
:arrow_down:

...moting/transport/netty4/NettyEventLoopFactory.java
30.00% <0.00%> (-6.37%)
:arrow_down:

... and 34 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e226823...89c2530. Read the comment docs.


Scope-aware expanding selection using Alt+Up (like in IntelliJ)

This would be a great feature to add to Atom. By pressing Alt+Up the selection expands gradually with each repeated Alt+Up. IntelliJ users will know what I'm talking about smile
For example:
function do(something) {
  var someVar = 'hi there';
  var someVar2 = 'hello';
}

Having the cursor blinking inside the word there and pressing Alt+Up repeatedly would select:

there
hi there
'hi there'
var someVar = 'hi there';
everything inside the function block, i.e. the two rows declaring the vars
the function block including the { and }
the whole function declaration
... you get the idea

Kind of hard to describe, but download the IntelliJ Community Edition and try it out. It is one of the single best features in IntelliJ, would love to see it in Atom.
I found this issue from another website and from another user who named joscarsson.

Definitely would like to see this. Maybe a plugin?

Hello @oyazik ... there is an Atom package that already provides this functionality, the expand-selection package. You may want to check it out!


Ayushiiests patch 1

PR Description

Some notes

[ ] Please make sure that you placed the files in an appropriate folder

[ ] And that the files have indicative names.

[ ] Please note that Classiq runs automatic code linting, which may minorly alter some files.

[ ] If you're familiar with pre-commit, you may run pre-commit install, and then at each commit, your files will be altered in a similar way

@AYUSHIIESTS Please open a new PR with the required name, I'm closing this one, thanks.


iOS Admob crash -Multiple locks on web thread not allowed

Godot version:
3.0.6
OS/device including version:
iOS
Issue description:
Android / iOS admob plugin
https://github.com/kloder-games/godot-admob
Everything works well in android.
However, iOS has problems.
For example, an error occurs after Reward Video is terminated.
2018-11-13 04:30:20.350877+0900 hoonword[4062:184752] [avas] AVAudioSessionPortImpl.mm:56:ValidateRequiredFields: Unknown selected data source for Port Speaker (type: Speaker)
2018-11-13 04:30:20.374741+0900 hoonword[4062:185038] void _WebThreadLock(), 0x10c2ef040: Multiple locks on web thread not allowed! Please file a bug. Crashing now...
(lldb)
I am struggling with this problem for a few days, but I am not an iOS developer, so it is difficult. I would be very grateful if you gave me the answer.

Indeed, I prefer that it gets debugged on the godot-admob repo (there's an issue for it there: kloder-games/godot-admob#53). If it turns out to be a bug in Godot's iOS platform, this issue can then be reopened/a new issue can be opened with more specific details on what causes the error in Godot.

I also asked the module developer, but I have not heard the answer yet. What bugs? Where should I fix it?

I also asked the module developer, but I have not heard the answer yet. What bugs? Where should I fix it?

You just asked a few hours ago, give them some time :) I'm sure the module developer can help debug it further. Then if you identify a Godot bug together, we can move the discussion here.

Thank you. I thought you already knew the answer to the problem. I will do my best to solve the problem.


prometheus-server pod getting crashloop back off error

This is the pod log
level=error ts=2024-11-08T06:19:48.406640681Z caller=runutil.go:100 msg="function failed. Retrying in next tick" err="trigger reload: reload request failed: Post "http://<IP_ADDRESS>:9090/-/reload\": dial tcp <IP_ADDRESS>:9090: connect: connection refused"
-->
What happened?
I have updated the EKS cluster and after that the Prometheus-server pod went to crash loop back off state.
Did you expect to see some different?
How to reproduce it (as minimally and precisely as possible):
Environment

Prometheus Operator version:
prometheus-server:
Image:      quay.io/prometheus/prometheus:v2.51.2
Port:       9090/TCP
Host Port:  0/TCP
Args:
--storage.tsdb.retention.time=15d
--config.file=/etc/config/prometheus.yml
--storage.tsdb.wal-compression
--web.console.libraries=/etc/prometheus/console_libraries
--web.console.templates=/etc/prometheus/consoles
--web.enable-lifecycle
Liveness:     http-get http://:9090/-/healthy delay=60s timeout=10s period=15s #success=1 #failure=3
Readiness:    http-get http://:9090/-/ready delay=60s timeout=4s period=5s #success=1 #failure=3
Environment:

Kubernetes version information:
kubectl version
Client Version: v1.30.1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.29.8-eks-a737599

kind: Deployment

* Prometheus Logs:

level=error ts=2024-11-08T06:19:48.406640681Z caller=runutil.go:100 msg="function failed. Retrying in next tick" err="trigger reload: reload request failed: Post "http://<IP_ADDRESS>:9090/-/reload\": dial tcp <IP_ADDRESS>:9090: connect: connection refused"

**Anything else we need to know?**:

@lilic Can you please help ?


[feature] - Implement @codistica/husky-hooks-handlers

Packages interested

[X] monorepo
[ ] codistica-browser
[ ] codistica-core
[ ] codistica-demo
[ ] codistica-dev-tools
[ ] codistica-node
[ ] codistica-react
[ ] codistica-scriptfiber
[ ] codistica-types

Purpose

[ ] New documentation.
[ ] Bug fixing.
[X] New features.
[ ] Refactoring.
[ ] New tests.
[ ] Other:

Description

None.

Develop branch rebased to correct typo in f132d91.
New commits mapping:

f132d91 -> 8663ebf
19d50ea -> d5dd14d
7c3475b -> efea9d1


Expose base classes and hide metaclasses

This is a bit of a drive-by but I figured it was easier to write this PR than explain it in an issue :/
Previously the abstract base classes for post-processing layers and GCN stacks were private. I realised this when I started to write up some hints on how to write your own and found that the base classes weren't documented. The registry metaclasses, however, are public and documented. I think this could lead to some major confusion, as the actual functionality you need to implement isn't in the metaclass, its in the base class. I think the metaclasses are really implementation details for the string encoding stuff, and they're the metaclasses of the base classes so inheritors shouldn't need to use them explicitly anyway.
So I've...
Changes made in this Pull Request:

Made AtomFeatureMeta, BondFeatureMeta, PostprocessLayerMeta and GCNStackMeta private by prepending them with underscores, removing them from __all__, and removing their re-exports as appropriate
Made BaseGCNStack public by adding it to the gcn module re-exports
Made Feature public by adding it to the feature module re-exports
Updated the GNNModel docstring to use the base classes instead of the metaclasses.

I think this was just an oversight but if it's intended then no worries!
PR Checklist

[ ] Tests?
[ ] Docs?
[ ] CHANGELOG updated?
[ ] Issue raised/referenced?

Wow that went badly


Boxfile feature parity with Pagodabox Boxfile

I'm not quite certain if this is something that can be dealt with here, but I figured I'd ask. I'm working on setting up my team's local development environment using Nanobox. I'm finding that there are inconsistencies between the Boxfile I use for production and the one I'd use in the local environment. More specifically:
The naming convention database1 on PB is not the same as the specific naming requirements of Nanobox mariadb1. The "type" parameter is not honored in Nanobox.
The stability parameter of each individual service does not match between environments. On PB, the parameter must be set to production where on NB it must be set to stable.
These are minor inconsistencies, true... but it prevents the Nanobox build from being able to complete without generating a new Boxfile for each environment. This can be accommodated with Git, but it requires managing a separate branch just to host a separate Boxfile.
I guess, the first question would have to be; is it your intention to maintain portability of the Boxfile between these two services? Judging by the description laid out in the blog post announcing Nanobox, it would seem that this was a primary concern. My $0.02 would have to be that it is important for Pagodabox customers to have the ability to test locally, and may be something that is taken into consideration.
The second question then becomes; have you run into this issue before, and what is the best way to deal with it?

Hi Frank,
Nanobox is very similar to Pagoda Box, but very different in important ways. You probably already know this, but we are the same team behind both Pagoda Box and Nanobox. Nanobox is an iteration of Pagoda Box. Unfortunately, parity between the two projects is no longer a goal of the Nanobox project. In fact, major changes for the Nanobox Boxfile are in the works that will push it further away from Pagoda Box.
It's true that Nanobox originally started out as a local development tool for Pagoda Box, but we learned early on that we needed to diverge. Nanobox is on the verge of becoming its own separate service that will provide a seamless workflow from local development into production apps on your cloud provider of choice. If you're interested, you can sign up for the private beta on nanobox.io.

Thank you for the explanation, I appreciate that very much.
Would it be sensible to submit an issue allowing the possibility to rename the Boxfile on nanobox so that I do not have to maintain two when using the services together?
I think I understand the direction of Nanobox a little better now, and I'm excited about the possibilities. Just hoping that, in the meantime, I have a workable solution for our new development team. I recently convinced my boss to utilize Pagodabox instead of AWS so that we did not have to constantly fiddle with server maintenance and I've been pleased so far. However, it would be extremely nice to be able to test the entire stack locally.
Thank you again!


VirtualService HTTPMatchRequest headers StringMatch ignores header 'host'

Bug description
We are trying to route base on host header such that foo.bar.somethingA.example.com can be routed to the same service as foo.bar.somethingB.example.com. We would like to match on foo.*.example.com. http: match: headers: user-agent: regex: ... works fine so we know it's not a configuration issue but putting in host or Host for header does not work.
Followed @howardjohn suggestion for #15456 and encountered this issue.
Expected behavior
The documentation HTTPMatchRequest does not indicate that 'host' or 'Host' is treated differently. Expect to be able to match on Host (tried variations) but nothing works.
We have been looking through the code over the weekend to determine if the host header is treated differently but don't see anything in pilot/config and networking though we are not very familiar with the codebase.
Steps to reproduce the bug
Create a simple port 80 gateway (host: '*')
Add the appropriate DNS for the LoadBalancer
Add the following virtual service:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: example-vs
  namespace: testing
spec:
  gateways:
  - traxitt-system/system-gateway
  hosts:
  - '*'
  http:
  - match:
    - headers:
        host:
          exact: foo.bar.example.com
    route:
    - destination:
        host: example-service
        port:
          number: 80

All variations (exact, prefix, regex) are ignored for host header
Version (include the output of istioctl version --remote and kubectl version and helm version if you used Helm)
1.3.0 and 1.4.7 (1.5.1 failed to start on our cluster because of #22463 )
How was Istio installed?
istioctl (everything else works - we have ~10 services running)
Environment where bug was observed (cloud vendor, OS, etc)
DigitalOcean

See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route_components.proto.html?highlight=header match#config-route-v3-headermatcher, I think you need Host -> :authority

I don't think I'd have found that without your help. Thank you!
Not sure how to update the istio docs but I'll go ahead and close this issue.

You can submit a PR or issue to istio/istio.io repo. Thanks!
Actually if its part of
https://istio.io/docs/reference/config/networking/virtual-service/ it would
be the istio/api repo though since those are generated from the API directly
On Mon, Apr 20, 2020 at 3:26 PM Narayan Sainaney<EMAIL_ADDRESS>wrote:

Closed #23083 https://github.com/istio/istio/issues/23083.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/23083#event-3253808568, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEYGXKHLZ6VB2ZUEH5ZA43RNTDZPANCNFSM4MMUG54A
.

Thanks a lot! That saved my day!
For anyone stumbling on this, here is a functioning Virtual Service:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service
spec:
  hosts:
    - "*.example.com"
  gateways:
    - my-gateway
  http:
    - match:
        - headers:
            ":authority":
              regex: ".*-foo.example.com"
      route:
        - destination:
            host: service1
            port:
              number: 80
    - match:
        - headers:
            ":authority":
              regex: ".*-bar.example.com"
      route:
        - destination:
            host: service2
            port:
              number: 80

So when you apply this and:
curl https://hello-foo.example.com/

goes to service1, while:
curl https://hello-bar.example.com/

goes to service2


Geode crashes when attempting to load a level using GDShare

Platform
Windows
Geode Version
v1.3.4
Mods Installed
Betterinfo v3.0.7
custom keybinds v1.1.2
demonlist-button v1.0.0
fps bypaass v1.0.4
fps shower v1.0.2
gmd api v1.0.2
gdshare v1.0.1
nongd v1.0.6
practice music v1.0.5
Steps to Reproduce
I went to the build tab and level create screen, then clicked the load levels button. selected a level titled "Unamed 1.gmd" and the game crashed
Crash Report
https://pastebin.com/Kmc0ADgy crash report
https://pastebin.com/tyfSkrBg log file
Additional Information
No response

Go report this issue to its developer Hjfod (though he no longer maintains his mods)
Make the issue on that repository someone will get to it eventually


US150404 - Migrate get-lms-release to composite action

This brings the get-lms-release action more inline with the others in this repo, and we no longer need to hardcode a node version or check in node_modules. I separated this into two commits so it's hopefully easier to review - the first one is the actual changes and the second deletes the node_modules folder.
I've been testing this and comparing the old output with the new output in a test BSI PR: https://github.com/Brightspace/brightspace-integration/pull/8766/files
Example output: https://github.com/Brightspace/brightspace-integration/actions/runs/4554318642/jobs/8032013535

I separated this into two commits so it's hopefully easier to review - the first one is the actual changes and the second deletes the node_modules folder.

Or if it'd be easier, I can revert the second commit for now and then add it back before merging.


use module-scoped engine

Codecov Report

Merging #267 (a65a335) into master (a09c774) will decrease coverage by 0.08%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #267      +/-   ##
==========================================
- Coverage   82.43%   82.34%   -0.09%
==========================================
  Files          39       39
  Lines        2949     2951       +2
==========================================
- Hits         2431     2430       -1
- Misses        518      521       +3

Impacted Files
Coverage Δ

quetz/database.py
94.73% <100.00%> (-5.27%)
:arrow_down:

quetz/testing/fixtures.py
97.65% <100.00%> (-1.57%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a09c774...a65a335. Read the comment docs.


Correction for raw affiliation Montpellier Interdisciplinary center on Sustainable Agri-food systems (MoISA), French National Research Institute for Sustainable Development (IRD), Montpellier, France

Correction needed for raw affiliation Montpellier Interdisciplinary center on Sustainable Agri-food systems (MoISA), French National Research Institute for Sustainable Development (IRD), Montpellier, France
raw_affiliation_name: Montpellier Interdisciplinary center on Sustainable Agri-food systems (MoISA), French National Research Institute for Sustainable Development (IRD), Montpellier, France
new_rors: 05q3vnk25;011xg1225
previous_rors: 05q3vnk25
works_examples: W4362572284
contact: 4d5bb3be2a0320251a40c521c0ab380d:5034d27e815ebd27 @ supagro.fr

This issue was accepted and ingested by the OpenAlex team on 2024-12-19. The new affiliations should be visible within the next 7 days.


CDAT Migration: Update mp_partition_driver.py to use Dataset from dataset_xr.py

Description

Related to #871

Analyze files for CDAT migration

[x] mp_partition_driver.py -- Two lines for Dataset class from dataset.py, replace with Dataset class from dataset_xr.py
[x] mp_partition_parameter.py -- None
[x] mp_partition_parser.py -- None
[x] mp_partition_plot.py -- None
[x] mp_partition_viewer.py -- None

Checklist

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[x] Any dependent changes have been merged and published in downstream modules

If applicable:

[ ] New and existing unit tests pass with my changes (locally and CI/CD build)
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have noted that this is a breaking change for a major release (fix or feature that would cause existing functionality to not work as expected)

Hi @chengzhuzhang, I analyzed all of the mp_partition related modules and only found these changes. Does this set run and if yes, should I test it? I did not try yet.

This set should run as is, just there is a new enhancement planned to add a new figure that uses new variables from v3 output. Maybe have it a try to see if the code refactor works. Note that this set requires monthly time-series of a set of variables such as, LANDFRAC, T, CLDICE, CLDLIQ exist in test_data_path.

Hi @chengzhuzhang, I analyzed all of the mp_partition related modules and only found these changes. Does this set run and if yes, should I test it? I did not try yet.

This set should run as is, just there is a new enhancement planned to add a new figure that uses new variables from v3 output. Maybe have it a try to see if the code refactor works. Note that this set requires monthly time-series of a set of variables such as, LANDFRAC, T, CLDICE, CLDLIQ exist in test_data_path.

I forgot that "mp_partition" has been running by default in the run_all..py script. I just ran the code and it successfully generates the plots. There are no visible differences as far as I can tell.

cdat-migration-fy24: https://portal.nersc.gov/project/e3sm/cdat-migration-fy24/871-mp-partition/mp_partition/mixed-phase_partition/mixed-phase_partition.png
main: https://portal.nersc.gov/project/e3sm/cdat-migration-fy24/main/mp_partition/mixed-phase_partition/mixed-phase_partition.png
Diff: https://portal.nersc.gov/project/e3sm/cdat-migration-fy24/871-mp-partition/mp_partition/mixed-phase_partition_diff/mixed-phase_partition.png

I will merge this PR once the build passes.


Manifest and file creation during runtime

Hi,
I'm run Mosquitto in gsc.
It creates the log file when the application is started and I get the following message after it is up and running
Error: Unable to open logfile /var/log/mosquitto/mosquitto.log for writing.

If I want to have a log file, I have to add the /var/log/mosquitto/mosquitto.log to the allowed files.
But then I get the following message from Gramine:
Gramine detected the following insecure configurations:

- loader.insecure__use_cmdline_argv = true   (forwarding command-line args from untrusted host to the app)
- sgx.allowed_files = [ ... ]                (some files are passed through from untrusted host without verification)

Gramine will continue application execution, but this configuration must not be used in production!

If I add it to the trusted_files I get the following error message.
Traceback (most recent call last):
  File "/gramine/meson_build_output/bin/gramine-sgx-sign", line 70, in <module>
    main() # pylint: disable=no-value-for-parameter
  File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/dist-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/gramine/meson_build_output/bin/gramine-sgx-sign", line 30, in main
    expanded = manifest.expand_all_trusted_files()
  File "/gramine/meson_build_output/lib/python3.6/site-packages/graminelibos/manifest.py", line 193, in expand_all_trusted_files
    append_trusted_dir_or_file(trusted_files, tf, expanded)
  File "/gramine/meson_build_output/lib/python3.6/site-packages/graminelibos/manifest.py", line 57, in append_trusted_dir_or_file
    raise ManifestError(f'Cannot resolve {path}')
graminelibos.manifest.ManifestError: Cannot resolve /var/log/mosquitto/mosquitto.log

If I create the file in the dockerfile and add it to the trusted_files I get the messages:
Error: Unable to open logfile `/var/log/mosquitto/mosquitto.log` for writing.
error: Disallowing create/write/append to a trusted file '/var/log/mosquitto/mosquitto.log'

Is the allowed_files the only way to make this file available for the application?

There are several solutions, depending on your exact circumstances. I'm assuming that you want to have a properly-enabled production-ready high-security Mosquitto workload running inside the SGX enclave (in other words, not just for testing). I'm also assuming that Mosquitto uses this file only for writing (and never for reading, otherwise the attacker could put some malicious contents and break Mosquitto).
You should ask yourself a question: what is contained in this Mosquitto log file /var/log/mosquitto/mosquitto.log? Two possibilities:

Contents of this file contain security-critical messages, e.g., this file leaks confidential data, or leaks which connections from which clients occurred at which time (depends on your threat model, if this is a security risk for you or not), or exposes addresses of functions in enclave memory (this annuls Gramine's ASLR, again, you must decide if this is a significant security risk for you or not).
Contents of this file do not contain any security-critical messages. For example, the log file simply dumps some statistics periodically, and you don't care that this statistics can be analyzed by the attacker.

If you have option 2, then you don't care and just use sgx.allowed_files = "/var/log/mosquitto/mosquitto.log". Gramine will print a warning about this, always. Is this something that you find annoying and misleading? You can always move this Gramine log to a separate file using loader.log_file = "...".
If you have option 1, then you must not use sgx.allowed_files. You can not use sgx.trusted_files as well (they are only for read-only files). So you have several options:

Configure Mosquitto in such a way so it never uses this log file.
Configure Mosquitto in such a way so it dumps the log into your specified file. Then, you can specify a dummy /dev/null as a file (and then the log is written to nowhere) or a file on tmpfs Gramine FS mount point (and then the log becomes in-enclave-only and ephemeral).
Use sgx.protected_files.

Hi @dimakuv
thanks for the detailed explanation!
I would like to create my setup as you describe here:

Configure Mosquitto in such a way so it dumps the log into your specified file. ...  file on tmpfs Gramine FS mount point (and then the log becomes in-enclave-only and ephemeral).

Do you have documentation on how to achieve this?

https://gramine.readthedocs.io/en/latest/manifest-syntax.html#fs-mount-points ;)

Hi,
this works for me :) Thank you very much!
One last question :) Can I also get rid of this message loader.insecure__use_cmdline_argv = true?
If I set the property to false in my manifest, I get the error:
Exception: Duplicate key with different values found: `loader.insecure__use_cmdline_argv`

I'm also unsure what is the consequence of this.
Would I be still able to set the CMD in the dockerfile and does it work?
Would I be still able to run the docker with overridden arguments?

You are not supposed to add loader.insecure__use_cmdline_argv in the manifest file used by GSC.
GSC already controls this manifest option, via the --insecure-args command-line option to ./gsc build. See: https://gramine.readthedocs.io/projects/gsc/en/latest/#cmdoption-gsc-build-insecure-args
I bet you specify this command-line option when you perform ./gsc build. Simply remove this option, and there will be no loader.insecure__use_cmdline_argv = true in the final manifest file, and you won't see the message from Gramine.

Would I be still able to set the CMD in the dockerfile and does it work?

Yes, if the --insecure-args command-line option is omitted from ./gsc build command, then GSC uses ENTRYPOINT + CMD values from the base Docker image. For some context, see https://stackoverflow.com/a/53544006/6325371. For GSC code, see https://github.com/gramineproject/gsc/blob/c4d5c2ddc7376645f396f069c06f6ba02aea2ee7/gsc.py#L52 and the usage of binary_arguments.

Would I be still able to run the docker with overridden arguments?

No, you won't be able. Providing arbitrary arguments during Docker run is insecure.

Hi @dimakuv

I bet you specify this command-line option when you perform ./gsc build.

Yes, you are right. I forget to remove the option 😄
Thank you for clarifying! This helped me to understand the behaviour!

@dzygann Can we close this issue now?

Yes, thanks again :)


az login error- Failed to establish a new connection: [Errno -2] Name does not resolve

I have never seen this error before. While trying to authenticate with browser, I am getting below error. I checked that I am able to resolve other external as well as internal url's without any problem. The problem so far seems to be with az login only.
I am using az docker 2.32.0 as my image.
docker run -it -v ${HOME}/azcli/:/root/ --network bridge mcr.microsoft.com/azure-cli:2.32.0
bash-5.1# az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXX to authenticate.
<urllib3.connection.HTTPSConnection object at 0x7f31ba0839d0>: Failed to establish a new connection: [Errno -2] Name does not resolve

@jiasli for awareness

Similar to https://github.com/Azure/azure-cli/issues/21247

Duplicate of https://github.com/Azure/azure-cli/issues/16524


Supporting Luarocks 3.0.1

I believe you should not make your code dependent on a particular version of luarocks
and if anything , if that must be the case then use the latest version Luarocks 3.0.1
luaver="" && [ -n "$luaver" ] || luaver=`/usr/bin/lua5.1 -e 'print(_VERSION:sub(5))'`; \
mkdir -p "/usr/local/lib/luarocks/rocks-5.1/luarocks/2.4.4-1/lua/luarocks"; \
lprefix=`echo "/usr/local/lib/luarocks/rocks-5.1/luarocks/2.4.4-1/lua" | sed 's,/lib/luarocks/.*,,'`; sed "s,LUAROCKS_PREFIX=.*,LUAROCKS_PREFIX=[[$lprefix]],g" /share/lua/$luaver/luarocks/site_config.lua > "/usr/local/lib/luarocks/rocks-5.1/luarocks/2.4.4-1/lua/luarocks/site_config.lua"
sed: can't read /share/lua/5.1/luarocks/site_config.lua: No such file or directory
Makefile.luarocks:13: recipe for target 'copy_site_config' failed
make: *** [copy_site_config] Error 2

Error: Failed installing dependency: https://luarocks.org/luarocks-2.4.4-1.src.rock - Build error: Failed installing.

I believe you should not make your code dependent on a particular version of luarocks

If it were possible, it would be really great…

if that must be the case then use the latest version Luarocks 3.0.1

Maybe try to look when Luarocks 3.0 was released and when I wrote Luapak.


[BUG] Edition dropdown doesn't refresh page content

when switching an edition the coaches & projects don't update

Duplicate #315


Change content about income on signing page

to
"The combined income of myself and joint-owners and partners living with me on 1 July 2018 for the 2017/2018 tax year was $36479.04"


Apply Job types on Pipeline page(#2eh4wwh)

Related Issues

Closes #
Short Description and Why It's Useful

Screenshots of Visual Changes before/after (If There Are Any)

IMPORTANT NOTICE - Remember to add changelog entry
Contribution and Currently Important Rules Acceptance

[ ] I read and followed contribution rules

Will be done differently. Closing


All non student roles display Instructor view

The Instructor view is given to all roles not listed as 'Student'.  If you have a custom role, guest role, ect, they will be presented with the Instructor view.  This should be changed to use a permission to check for instructor level permissions like 'site.upd' or have a set of permissions that can be checked or unchecked from the realms tool
if(this.role != null && this.role.equals("Student")){

Thanks for creating this issue. We will be working on a refactor of Attendance, aimed at Sakai 13.x, which changes the tool to be permission-based instead of role-based as well as other needed upgrades. If you have any other specific permissions that you would like to be configurable (create attendance item, take attendance, grade, view grades, etc.) please let me know and I'll add it to my notes.

@davidpbauer Have you made a start on the refactor, yet? Longsight are likely going to be working on making attendance permissions based, at least one of our clients wants that to happen. We don't want to duplicate efforts.

Hi @adrianfish. We haven't started this work yet, but we're meeting March 14 to prioritize our development projects between now and August 2019. The attendance refactor and improvements are on our list, so whether it's this or another issue/improvement we will be working on the tool this Spring/Summer.
I definitely agree that we don't want to duplicate efforts, so perhaps we should continue to discuss as Longsight determines what they need to support this tool.

@davidpbauer How did the meeting go? We've a client who wants us to work on the permissions side of things, so we'll probably get on with that unless you've got that work scheduled over the new month or so. Need to get that work signed off, but that's the timescale.

Hi @adrianfish. Our meeting went well. By the end of May, we plan to finish our upgrade to 12.6 and all of the attendance work. Since you are on such a tight timeline, it may be best if you start on the permissions work because we are tackling our upgrade to 12.6 first. Our other Attendance goals include improving performance (especially in large sites with lots of items), a feature for students to check in themselves, and some general styling and code cleanup.
I'd be happy to collaborate on the permissions work if you want to lead that effort but need an extra hand.