[Hold for payment 2022-01-27] Add aria-role and aria-label to Terms of Service and Privacy Policy

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

Action Performed:

Navigate to settings
Click on about
Using the navigation keys, try to click on Terms of Service or Privacy Policy

Expected Result:
User should be able to reach the terms of service and privacy policy by using the navigation keys
Actual Result:
Terms of Service & Privacy Policy are non-accessible (non-tabbable, can’t be read & opened by screen reader).
Workaround:
Unknown.
Platform:

Where is this issue occurring?

Web
Desktop App

Version Number: 1.0.93-0
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/44479856/132074528-5c21bc34-535c-40fd-9586-a25d69b50a2c.mov
Expensify/Expensify Issue URL:
View all open jobs on GitHub

From Mateo Morris (Couldn't find the user in GH) https://expensify.slack.com/archives/C01GTK53T8Q/p1630607495347700

Terms of Service & Privacy Policy are non-accessible (non-tabbable, can’t be read & opened by screen reader). Just needs an aria-role & aria-label.

Triggered auto assignment to @johnmlee101 (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Proposed Solution:
We have to set accessible and accessibilityLabel for terms of service and privacy policy link within src/pages/settings/AboutPage.js
At present accessible and accessibilityLabel not added as shown code below:
https://github.com/Expensify/App/blob/6cd518e81fb60415ba8d4d4a659fdc5dfa95b6fd/src/pages/settings/AboutPage.js#L130-L133
https://github.com/Expensify/App/blob/6cd518e81fb60415ba8d4d4a659fdc5dfa95b6fd/src/pages/settings/AboutPage.js#L143-L146
Once code updated for both it looks as under:
  <Text
      style={[styles.chatItemMessageHeaderTimestamp, styles.link]}
      onPress={() => Linking.openURL(CONST.TERMS_URL)}
      accessible
      accessibilityLabel={translate('initialSettingsPage.readTheTermsAndPrivacyPolicy.phrase2')}
  >

  <Text
      style={[styles.chatItemMessageHeaderTimestamp, styles.link]}
      onPress={() => Linking.openURL(CONST.PRIVACY_URL)}
      accessible
      accessibilityLabel={translate('initialSettingsPage.readTheTermsAndPrivacyPolicy.phrase4')}
  >

At present External label not set with this issue, so just giving suggestion. It might be helpful for someone if handled internally.
If this issue consider as External and my solution accepted then kindly invite me on Upwork project. Here is my Upwork profile: https://www.upwork.com/freelancers/~01c718889ed7821f82
Thank you.

Proposal
After taking another look, it turns out there's an existing component we can use instead which includes the aria-role. And since the link text is descriptive, aria-label is redundant: "The aria-label attribute provides a way to place a descriptive text label on an object, such as a link, when there are no elements visible on the page that describe the object" w3.org
So these lines here
https://github.com/Expensify/App/blob/6cd518e81fb60415ba8d4d4a659fdc5dfa95b6fd/src/pages/settings/AboutPage.js#L130-L150
should be replaced with
<TextLink
    style={[styles.chatItemMessageHeaderTimestamp, styles.link]}
    href={CONST.TERMS_URL}
>
    {translate(
        'initialSettingsPage.readTheTermsAndPrivacyPolicy.phrase2',
    )}
</TextLink>
{' '}
{translate(
    'initialSettingsPage.readTheTermsAndPrivacyPolicy.phrase3',
)}
{' '}
<TextLink
    style={[styles.chatItemMessageHeaderTimestamp, styles.link]}
    href={CONST.PRIVACY_URL}
>
    {translate(
        'initialSettingsPage.readTheTermsAndPrivacyPolicy.phrase4',
    )}
</TextLink>

https://user-images.githubusercontent.com/39444813/132089833-3258330b-be47-4a5a-a5fd-a65e47df7fdb.mov

Hi @mateomorris , your solution also looks good. One thing I notice is that whenever we use TextLink component as per your suggestion it shows  pipe at left and right of text. If we add accessibilityLabel to Text component as per my solution, it shows box around the text, i.e. similar to shows box around close and back button on that page when tabbing. i.e. Both approach have same result but some visual difference, not sure it will make any difference from usage/ui point of view or not. Thanks.

@PrashantMangukiya I noticed that, but in this case it's still better to use TextLink because it renders to an anchor tag as opposed to a span (i.e. it's accessible to both keyboard and screenreader users). A compromise would be to add accessibilityRole="link", but accessibility-wise it's always preferable to use native web elements whenever possible.

@johnmlee101 Whoops! This issue is 2 days overdue. Let's get this updated quick!

Hey all, love the proactiveness here. Going to mark as external and review the two proposals.

I'm leaning towards @mateomorris 's implementation since TextLink already has the accessibilityRole defined as part of the component, so we don't have to add new attributes to do the same thing. However, the only downside is the weird piping highlighting, but I think that all TextLinks deal with that today? So it seems like a larger issue that should be addressed with that component, rather than the issue here.

Both implementations are great, and I appreciate you both coming up with solutions early on!

@mateomorris Upwork job posted here! https://www.upwork.com/jobs/~015732100d25e1724d

Just creeping on some issues 😅 If we're assigning the job to @mateomorris let's assign this issue to him 👍

@johnmlee101 Mind confirming?

Updated the assignment!

Hi @mateomorris, I've placed this issue on hold as per this update, as we are prioritising issues related to a feature release scheduled for 9/24. As an apology for the delay, we will add a $100 bonus as a thank you for waiting.

Holding per Kadie's message

Still holding per Kadie's message

Still holding

@JmillsExpensify, @johnmlee101, @mateomorris Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

Still on hold!

Please refer to this post for updated information on the n6 hold, we've raised the bonus to $250 for all issues where a PR is created before the N6 hold is lifted.

This issue has not been updated in over 15 days. @JmillsExpensify, @johnmlee101, @mateomorris eroding to Monthly issue.
P.S. Is everyone reading this sure this is really a near-term priority? Be brave: if you disagree, go ahead and close it out. If someone disagrees, they'll reopen it, and if they don't: one less thing to do!

The n6-hold ended a few weeks ago so I believe we can merge https://github.com/Expensify/App/pull/5173 soon

Bumped the PR

Looks like we're waiting on an approval in the linked PR. Staying the course until then!

Waiting two more days for no regressions and then I'll process the payment.

@mateomorris Hmm, I wasn't able to find an active contract in Upwork for this PR. Probably a mistake on my part. Have you been paid for this job yet?

@JmillsExpensify strange, it must have expired since it was from a while ago. I haven't been paid for it.

Strange indeed. I've gone ahead and created another active job for your work: https://www.upwork.com/jobs/~010c60fca196d9f4ad. Please apply here and I'll make sure this is processed for you. Thanks!

@mateomorris Just checking in. I'm ready to process the payment and close this issue when you're able to apply in Upwork. Thank you!

Thanks for the reminder @JmillsExpensify, just applied. I increased the proposal amount to account for the Hold (250) and for discovering the issue (250, don't think that was paid out before).

All checked out! Offer sent, will process as soon you accept and then we can close this issue. 😄

Payment processed and contract closed. Thank you!


[IOTDB-1592]BugFix: SLimit Not effective in align by device

IoTDBAlignByDeviceIT.selectSlimitTest have problem, Old IT didn't test out problems
JIRA:https://issues.apache.org/jira/browse/IOTDB-1592

Sorry...the changes about the return value can be deleted.

    convertSpecialClauseValues(alignByDevicePlan, measurements);
    // assigns to alignByDevicePlan
    alignByDevicePlan.setMeasurements(measurements);
    alignByDevicePlan.setMeasurementInfoMap(measurementInfoMap);
    alignByDevicePlan.setDevices(devices);
    alignByDevicePlan.setPaths(paths);

private void convertSpecialClauseValues(QueryPlan queryPlan, List<String> measurements)
      throws QueryProcessException {
    convertSpecialClauseValues(queryPlan);
    // sLimit trim on the measurementColumnList
    if (specialClauseComponent.hasSlimit()) {
      int seriesSLimit = specialClauseComponent.getSeriesLimit();
      int seriesOffset = specialClauseComponent.getSeriesOffset();
      measurements = slimitTrimColumn(measurements, seriesSLimit, seriesOffset);

It's enough, right?

slimittrimcolumn() didn't change the value of measurements, it just return a sublist of it. So we just need to get the sublist and assign it to measurements.


How I can install this in my vps?

I would like a tutorial, please

I'm sorry but i don't have time to write a tutorial. It's pretty much the same about setting up any nodejs app. Maybe this article would help

something very strange is happening... on my notebook I'm running the project and it opens normally at 3000...
however, when doing the same procedure on the VPS, port 3000 is not exposed.
just in case, I uploaded another project that I have on port 3001 of the server and it is exposing correctly...
what could be going on?
it's a VPS with nginx and ubuntu 22.04
Interestingly, if I do a reverse proxy pointing to domain.com -> 3000 it works...if I activate SSL the project runs but it doesn't accept using the routes.


Add release notes to README.md

We forgot to add the release notes to the README.

Forgot to turn my trusty whitespace remover off, so apologies, but there is an option in GitHub to view non-whitespace changes.


[Nominations Open] Top CDF Contributor Award 2022 🏆

This issue is to receive nominations for the Top CDF Contributor Award 2022.
This award recognizes excellence of technical contributions to the CDF and its projects. This individual commits key pieces to projects and, more importantly, contributes in a way that benefits the project neutrally as a whole.
To nominate someone, reply to this issue with the following:

Full name of the person you’re nominating
Short description of their contributions to the Continuous Delivery Foundation and why they should win.

Nomination Deadline: Tuesday, March 29, 2022
More details are available here: https://cd.foundation/cdf-community-awards/

Brad McCoy
Brad McCoy is one of our top contributors. He is also an Ambassador to the CNDF. Brad is focused on building out an integration between Ortelius, Keptn and ArgoCD. He is the leader of the Ortelius Architecture group - New Zealand. He has independently built a strong team of contributors, recruiting individuals from his time zone including contributors from Africa. He is committed to teaching, mentoring open-source contributors and building a better way to manage microservcies via the Ortelius unified catalog. Brad has participated in code contributions, outreach and management of the Ortelius open-source project. His hard work is appreciated and critical to the Ortelius community. Is full bio can be found at https://www.linkedin.com/in/bradmccoy3/

nomination: Cameron Motevasselani
Cameron has stepped up in the Spinnaker community with a role in the platform SIG among other areas. Cameron is stepping up to help to drive better processes and management in the community - and he does all of this with a great attitude. He's stepped up to help mentor participants in the Google Summer of Code and in working to get access and controls standardized across the community.
He has been an active member in the community for many years on the contributor side as well as on the community side. He has spoken about and evangelized Spinnaker in meetups and across many other events.
Cameron should win this award for the Spinnaker Most Valuable Contributor not only for all that he has done over the years, but most importantly for all that he is doing to help nurture, grow, and reinvigorate the community.

Nomination: Cameron Motevasselani
Cameron has been an active member in the Spinnaker community for many years on the contributor side as well as on the community side on the platform SIG (among other areas). He has spoken about and evangelized Spinnaker in meetups and across many other events. Most recently he’s stepped up to take on a greater leadership role to help drive better process and management in the community. In addition, he’s taken the time to help mentor participants in the Google Summer of Code and worked to get access and controls standardized across the community. And he’s one the most pleasant, collaborative people you could ever ask to work with on a program.
Cameron is worthy of the award for the Spinnaker Most Valuable Contributor not only for all that he has done over the years, but most importantly for all that he is doing now to help nurture, grow, and reinvigorate the community.

Nomination: Steve Taylor
Steve Taylor has been an active member of the CDF for 3 years. He has contributed to the Tekton project, the primary contributor to the Ortelius Project, works on the CDEvents SIG, helped build out the first CDF Landscape, and now serves on the CDF TOC. Steve's extensive architecture background and willingness to serve wherever he is needed has helped lead the CDF through its early beginnings to what the CDF is today. Steve's commitment to the CDF is unmatched. He is worthy of recognition.

Nomination: Steve Taylor
Steve Taylor has been an active member of the CDF for 3 years. He has contributed to the Ortelius + Tekton project, Steve also helped other contributors a lot and educate the Ortelius community from day 01. Steve's efforts bring a knowledge-sharing attitude within the community. Steve helped the individual who wanted to contribute to OS and provide the necessary knowledge to the individuals who wanted to contribute to the OS with Steve's efforts we were able to outreach the community and he worked hard for diversity and inclusion in the community.

Nomination: Andrea Frittoli
Andrea has been committed to the CDEvents SIG, CDEvents Vocabulary and POC. His work in this area has been relentless. This important project would not have progressed at this speed without Andrea's input, expertise and contribution. Andrea's work includes both technical efforts as well as outreach efforts, organizing the CDEventsCon in Valencia, tracking the status of the team and jumping in to do whatever it takes to get this level of effort off the ground. Andrea deserves this nomination. We could use more contributors just like him.

Nomination: Andrea Frittoli
Andrea has been heavily involved in the CDF community by acting as chair of SIG Event, a CDF TOC member, presented at conferences and also being a strong driver and contributor to the bring the CDEvents forward. He has also been very active planning meetup sessions such as the CDEventsCon during Kubecon and the CDEVents Summit during cdCon in Texas.
Andrea has a drive to create interoperability within CDF by contribute to different SIGs and being part of the TOC.
Andrea should win the Top CDF Contributor award for his energy both in SIG Events and in CDEvents.

Nomination: Terry Cox
Terry has been involved in CDF community since the very early days and he currently serves the community as chair of SIG MLOps and SIG Best Practices. In addition to leading these critical topics and community initiatives, he also contributes to other groups and initiatives within CDF such as SIG Interoperability and SIG Software Supply Chain by sharing his perspective, ideas, concerns and providing guidance. He also acts as a bridge for the community by bringing up the work that is happening and the topics that are discussed in various standard bodies into the attention of the community. He is a frequent participant to CDF Technical Oversight Committee meetings, sharing his thoughts with other participants that take part in the TOC.
Terry should win the CDF Top Contributor Award since the topics he is driving and contributing are impactful to the future of the CD domain as well as critical for organisations while they are on their way to adapt best practices.

Nomination: Steve Taylor
Steve Taylor has helped with the inclusion of the APAC region by creating meetings in the APAC timezone.  We have enjoyed our fortnightly meetings with Steve and have grown together because of him.  I am impressed by how he mentors folks in the community, especially begineers, and makes them feel welcome and appreciates their contributions.

🚫 Nominations are now closed!
Voting will start April 13, link will be posted here.

Thank you, everyone! Award ceremony happened at cdCon 2022.
Congratulation to the winner @afrittoli!
All winners here: https://github.com/cdfoundation/awards/blob/main/README.md


Delete mockgen mocks

The project has several mockgen mocks and a build step that auto-updates them on each build, but they appear to be unused, so this PR deletes them.

Are these mocks serving a purpose I'm overlooking?
If not, it seems better to delete them and eliminate a build step and code clutter.


Make pathfinding handle avoiding specific areas

Is your feature request related to a problem? Please describe.
There are cases when a path is dangerous for some specific builds (low hp, low level, etc). That risks the bot dying.
Making the pathfinder able to avoid those paths stops that from happening as well as making it easier to do bosses etc where you have to avoid hazards like Scurrius etc.
Describe the solution you'd like
Make the pathfinder use a list of WorldArea's of places you want to avoid, that would probably be passed by the script maker in the Walker.walkTo method.
Describe alternatives you've considered
I haven't gotten anything else to work, but I think what I'm proposing is a reasonable request that might also help other script makers.
Additional context
Example: When running to black chins from burning amulet to lvl 41 wildy the pathfinder is going to run through green dragons, I would like to avoid that by specifying that the area where dragons can roam is off limits.
A similar thing to what im proposing is done with avoidWilderness in addNeighbor.

This is script-specific. You can make your own path to accomplish this.

The issue is that sometimes the pathfinding should be dynamic, if I were to avoid specific tiles that change id need to know what the path is with only safe tiles. Which is what the pathfinding should handle, not the script.


Make sure size works correctly for AssociationProxy / QueryProxy

I think I saw this not working correctly.  In ActiveRecord:

count always does a query for COUNT
length always loads the data into memory and then does a #length on the array
size does a count if the data isn't loaded and a length if the data is loaded

Released as 6.0.0.alpha.5


configuration has an unknown property 'vueOptions'

vue init webpack xxx

first time to  npm run build had no problems, when continue to build it make a mistake.

webpack 2 no longer allows custom properties in configuration.

WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
 - configuration has an unknown property '__vueOptions__'. These properties are valid:
   object { amd?, bail?, cache?, context?, dependencies?, devServer?, devtool?, entry, externals?, loader?, module?, name?, node?, output?, performance?, plugins?, prof
ile?, recordsInputPath?, recordsOutputPath?, recordsPath?, resolve?, resolveLoader?, stats?, target?, watch?, watchOptions? }
   For typos: please correct them.
   For loader options: webpack 2 no longer allows custom properties in configuration.
     Loaders should be updated to allow passing options via loader options in module.rules.
     Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader:
     plugins: [
       new webpack.LoaderOptionsPlugin({
         // test: /\.xxx$/, // may apply this only for some modules
         options: {
           __vueOptions__: ...
         }
       })
     ]

I couldn't find vueOptions on the webpack template, so you probably added that in a way that is not supported by webpack 2. You should follow the help provided in the output


Fix: Entering the incorrect magic code spins the 'sign-in' button continuously offline

Details

Fix: Entering the incorrect magic code spins the 'sign-in' button continuously offline
Fixed Issues

$ https://github.com/Expensify/App/issues/18311
PROPOSAL: https://github.com/Expensify/App/issues/18311#issuecomment-1532380252
Tests

Go to login screen. Turn off the internet.
Enter the magic code.
Verify that Sign in button doesn't spin continuously
Turn on the internet.
Verify that app continues to login.

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

Offline tests
Bug is related to offline mode itself. No extra steps needed.
QA Steps

Go to login screen. Turn off the internet.
Enter the magic code.
Verify that Sign in button doesn't spin continuously
Turn on the internet.
Verify that app continues to login.

[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 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] 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

Web

https://github.com/Expensify/App/assets/16502320/77d81085-3ddd-4d6e-ae10-535aedb27ee9
Mobile Web - Chrome

https://github.com/Expensify/App/assets/16502320/91601cfe-10b8-437a-8f8f-05aec38cc911
Mobile Web - Safari

https://github.com/Expensify/App/assets/16502320/c6747325-317c-4b8a-a70d-a69351c4f042
Desktop

https://github.com/Expensify/App/assets/16502320/074b716c-0c92-48d6-b7a5-d2532486d2df
iOS

Android

https://github.com/Expensify/App/assets/16502320/97416e2b-ee3d-4095-acb4-007f05400bf0

I couldn't record offline mode with ios simulator, it required native device.

@hungvu193 Please resolve conflicts

@Santhosh-Sellavel I've just resolved conflict!

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 & Desktop
https://github.com/Expensify/App/assets/85645967/c9c8c483-f799-4560-9875-b7551ab46feb

Mobile Web - Chrome
https://github.com/Expensify/App/assets/85645967/ffec7d03-f1ca-48f4-8718-0c0f26c4ab1d

Android
https://github.com/Expensify/App/assets/85645967/fbcafab2-24b4-461f-b0b6-5ab0e477e36a

: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/puneetlath in version: 1.3.17-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/chiragsalian in version: 1.3.17-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Power Consumption Table

Provide a power consumption table to better inspect the capability requirements of the ports and cables.

https://1drv.ms/x/s!AlbApt6q_F88g_ImcoMv1upCLwAzwA

@qmascarenhas The table is finished.
I didn't convert the voltages, just estimated values.

I've ordered 2 4-port USB-A 3.0 hubs - 1 powered via usb-c ... you have a short usb-c to usb-c cable by any chance?
Hubs should be in tomorrow so you will have them for Thursday.

I only have regular c to a cables. All c to c cables I have are thunderbolt.


[WebView] WebView contents inside of the bottom sheet of the ModalBottomSheetLayout is not scrollable

Description
webView contents inside of the bottom sheet of the ModalBottomSheetLayout is not scrollable
Steps to reproduce

Implement Accompanist WebView in accompanist ModalBottomSheetLayout
Check the web page, web page contents is not scrolling by default.
Adding Modifier.verticalScroll(rememberScrollState()) not working in all web pages.
(Note: It works fine in normal compose view without adding verticalScroll).

Expected behavior

All the web page contents should be visible and also can scrollable without adding any code, if web view isVerticalScrollBarEnabled is enabled.

Additional context
I found same type of question is raised here. Although ticket is closed.

I also experience the same issue. Does anyone know about any workaround?

I'm facing the same issue. I had a workaround by doing but then once you move forward in web views the scroll state remains the same. eg if you scroll down to the middle of page, next webview page will be in the middle of the page.:
Column(
    modifier = modifier
        .fillMaxSize()
        .verticalScroll(rememberScrollState())
) {
    AndroidView(factory = {
        WebView(it).apply {
            webViewClient = WebViewClient()
            layoutParams = ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
            )
            loadUrl(url)
        }
    }, update = {
        it.loadUrl(url)
    }
    )
}

facing the same issue.

I am facing similar issues. But some pages are not even visible when adding scrolling to the WebView. Since the webViewState has isLoaded = true and pageTitle contains a string, I think it's a visibility problem.

What do i do
On Wed, Aug 16, 2023, 11:02 AM Yiran001 @.***> wrote:

I am facing similar issues. But some pages are not even visible when
adding scrolling to the WebView. Since the webViewState has isLoaded = true
and pageTitle contains a string, I think it's a visibility problem.
—
Reply to this email directly, view it on GitHub
https://github.com/google/accompanist/issues/1462#issuecomment-1680783726,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A6VPCDVNOZYSSBWG6YKOUYTXVTOGRANCNFSM6AAAAAATQ3KBME
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Facing the same issue

This issue belongs to accompanist ModalBottomSheetLayout not to WebView, I have tested it with regular AndroidView interop with regular WebView and same issue

Just as an info. I saw today that Accompanist WebView will be deprecated see: https://google.github.io/accompanist/web/


[as2_core] Support launchers with namespace and node name

Basic Info

Info
Please fill out this column

Issue(s) this addresses
#511

ROS2 version tested on
Humble

Aerial platform tested on
Gazebo

Description of contribution in a few bullet points

Add support to config files with namespace and node name

Done in #557


feat(Icon): adding states and correct color control to icon

JIRA
no JIRA ticket
Description
Allows the use of states with the icon and the use of the color from props rather than only style

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Shayna Hay seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


[🪲BUG] Option contracts are always a multiple of 100 shares.

Describe the bug
You don't need to make this variable configurable

this is a bug

rapido rapido

@tfukaza fix pls


Does not add marker to map

Inside my controller I have a function that grabs data from my factory and calls addMarker.  Here's my problem:
If I call addMarker inside this function the map displays with no marker, and I get this error:
[AngularJS - Leaflet] 'center' is undefined in the current scope, did you forget to initialize it?
If I call addMarker outside of this I get a null data error because the data has not loaded yet.
myFactory.getDarta().then(function(data) {
$scope.myData = data;
$scope.addMarker($scope.myData);
});
$scope.addMarker = function (item) {
	angular.extend($scope, {
	    center: {
	        lat: item.latitude,
	        lng: item.longitude,
	        zoom: 13
	    },
	    markers: {
	        store: {
	            lat: item.latitude,
	            lng: item.longitude,
	            message: "Drag me to your position",
	            focus: true,
	        }
	    }
	});

};

a

@mikekay01 , can you please tell me how did you solve that problem. Beacause if i try to add markers in the way you did, not via function but in the beginning, leaflet doesnt add them. they ARE in map, but not displayed


[Flaky Test] Throw an  io.netty.util.IllegalReferenceCountException

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Search before asking

[X] I have searched in the issues and found no similar issues.

Describe the flaky test
Caused by: io.netty.util.IllegalReferenceCountException: refCnt: 0
at io.netty.buffer.AbstractByteBuf.ensureAccessible(AbstractByteBuf.java:1454)
at io.netty.buffer.AbstractByteBuf.checkIndex(AbstractByteBuf.java:1383)
at io.netty.buffer.PooledByteBuf.duplicateInternalNioBuffer(PooledByteBuf.java:196)
at io.netty.buffer.PooledByteBuf.nioBuffer(PooledByteBuf.java:213)
at io.netty.buffer.AbstractByteBuf.nioBuffer(AbstractByteBuf.java:1231)
at org.apache.uniffle.common.netty.buffer.NettyManagedBuffer.nioByteBuffer(NettyManagedBuffer.java:48)
at org.apache.uniffle.common.ShuffleIndexResult.getIndexData(ShuffleIndexResult.java:84)
Actions URL
https://github.com/apache/incubator-uniffle/actions/runs/12158115239/attempts/1
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

Maybe we shouldn't use PooledByteBuf. Because we will release the memory after we used the memory. You can see https://github.com/apache/incubator-uniffle/blob/28475fced12f5a4b79152d146ead1917982f44b9/storage/src/main/java/org/apache/uniffle/storage/handler/impl/DataSkippableReadHandler.java#L82
cc @advancedxy @rickyma WDYT?

Users can choose whatever kind of bytebuf they want: client: #1767 server: #2145
We basically will release every bytebuf, but it does not mean that we don't need PooledByteBuf. We use PooledByteBuf to reduce the number of interactions with the operating system for memory allocation and deallocation. This helps to avoid potential issues such as abnormal growth of RSS (Resident Set Size) memory, which might occur due to frequent and inefficient memory management (especially when using glibc, that's why we recommend using mimalloc).

But it will throw a ref count exception. I suspect that we released a reused bytebuf in the ByteBuf pool.

I suspect that the issue is caused by TransportFrameDecoder
  @Override
  public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
    // Release all buffers that are still in our ownership.
    // Doing this in handlerRemoved(...) guarantees that this will happen in all cases:
    //     - When the Channel becomes inactive
    //     - When the decoder is removed from the ChannelPipeline
    for (ByteBuf b : buffers) {
      b.release();
    }
    buffers.clear();
    headerBuf.release();
    super.handlerRemoved(ctx);
  }


netapplier: VLAN MTU change workaround

If we modify a VLAN interface MTU then we need to reapply the state. If
we do not reapply the state, the rest of the VLAN interfaces based on
the same interface get their MTU restored by default.
Ref: https://bugzilla.redhat.com/1751695
Signed-off-by: Fernando Fernandez Mancera<EMAIL_ADDRESS>

This is not working properly. The test pass but then I get an error. Probably I am missing something. Any suggestion? Thanks.

Coverage increased (+0.2%) to 66.219% when pulling c00f5beb39c5be95aa7a1a9c9c20df2f8b8818fe on ffmancera:vlanmtu_workaround into e856027a9436d8fc184971f32f57ba122ba80bb1 on nmstate:master.

Coverage increased (+0.2%) to 66.219% when pulling c00f5beb39c5be95aa7a1a9c9c20df2f8b8818fe on ffmancera:vlanmtu_workaround into e856027a9436d8fc184971f32f57ba122ba80bb1 on nmstate:master.

Here is the error from the VLAN test. Thanks.
===================================================================== test session starts =====================================================================
platform linux -- Python 3.7.4, pytest-4.6.6, py-1.5.4, pluggy-0.13.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /tmp/nmstate, inifile: tox.ini
plugins: cov-2.8.1
collected 7 items

tests/integration/vlan_test.py::test_add_and_remove_vlan PASSED                                                                                [ 14%]
tests/integration/vlan_test.py::test_vlan_iface_uses_the_mac_of_base_iface PASSED                                                                       [ 28%]
tests/integration/vlan_test.py::test_add_and_remove_two_vlans_on_same_iface PASSED                                                                      [ 42%]
tests/integration/vlan_test.py::tests_two_vlans_on_eth1_change_mtu PASSED                                                                               [ 57%]
tests/integration/vlan_test.py::tests_two_vlans_on_eth1_change_mtu ERROR                                                                                [ 57%]ERROR:root:NM main-loop aborted: Connection deletion failed on con/None: error=g-dbus-error-quark: No such interface “org.freedesktop.NetworkManager.Settings.Connection” on object at path /org/freedesktop/NetworkManager/Settings/12 (19)
Traceback (most recent call last):
  File "/usr/local/bin/pytest", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/site-packages/_pytest/config/__init__.py", line 82, in main
    return config.hook.pytest_cmdline_main(config=config)
  File "/usr/local/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 92, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 86, in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/usr/local/lib/python3.7/site-packages/_pytest/main.py", line 243, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/local/lib/python3.7/site-packages/_pytest/main.py", line 206, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/local/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 92, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/usr/local/lib/python3.7/site-packages/pluggy/manager.py", line 86, in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 203, in _multicall
    gen.send(outcome)
  File "/usr/local/lib/python3.7/site-packages/_pytest/terminal.py", line 662, in pytest_sessionfinish
    outcome.get_result()
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/usr/local/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/usr/local/lib/python3.7/site-packages/_pytest/runner.py", line 73, in pytest_sessionfinish
    session._setupstate.teardown_all()
  File "/usr/local/lib/python3.7/site-packages/_pytest/runner.py", line 325, in teardown_all
    self._pop_and_teardown()
  File "/usr/local/lib/python3.7/site-packages/_pytest/runner.py", line 297, in _pop_and_teardown
    self._teardown_with_finalization(colitem)
  File "/usr/local/lib/python3.7/site-packages/_pytest/runner.py", line 315, in _teardown_with_finalization
    self._callfinalizers(colitem)
  File "/usr/local/lib/python3.7/site-packages/_pytest/runner.py", line 312, in _callfinalizers
    six.reraise(*exc)
  File "/usr/lib/python3.7/site-packages/six.py", line 693, in reraise
    raise value
  File "/usr/local/lib/python3.7/site-packages/_pytest/runner.py", line 305, in _callfinalizers
    fin()
  File "/usr/local/lib/python3.7/site-packages/_pytest/fixtures.py", line 859, in finish
    six.reraise(*e)
  File "/usr/lib/python3.7/site-packages/six.py", line 693, in reraise
    raise value
  File "/usr/local/lib/python3.7/site-packages/_pytest/fixtures.py", line 852, in finish
    func()
  File "/usr/local/lib/python3.7/site-packages/_pytest/fixtures.py", line 803, in _teardown_yield_fixture
    next(it)
  File "/tmp/nmstate/tests/integration/conftest.py", line 62, in preserve_old_config
    yield
  File "/usr/lib/python3.7/site-packages/libnmstate/netapplier.py", line 67, in apply
    state.State(desired_state), verify_change, commit, rollback_timeout
  File "/usr/lib/python3.7/site-packages/libnmstate/netapplier.py", line 155, in _apply_ifaces_state
    con_profiles=ifaces_add_configs + ifaces_edit_configs,
  File "/usr/lib64/python3.7/contextlib.py", line 119, in __exit__
    next(self.gen)
  File "/usr/lib/python3.7/site-packages/libnmstate/netapplier.py", line 246, in _setup_providers
    mainloop.error
libnmstate.error.NmstateLibnmError: Unexpected failure of libnm when running the mainloop: run execution
+ run_exit
+ dump_network_info
+ docker_exec '
      nmcli dev; \
      nmcli con; \
      ip addr; \
      ip route; \
      cat /etc/resolv.conf; \
      head /proc/sys/net/ipv6/conf/*/disable_ipv6; \
    '
+ docker exec -t -i 04620e9c18de911e2a871ff61126786ab14062c53f91fa2ad35b7ec50bc54f5e /bin/bash -c 'cd /tmp/nmstate &&
      nmcli dev; \
      nmcli con; \
      ip addr; \
      ip route; \
      cat /etc/resolv.conf; \
      head /proc/sys/net/ipv6/conf/*/disable_ipv6; \
    '
DEVICE    TYPE      STATE      CONNECTION
eth1      ethernet  connected  eth1
eth1.101  vlan      connected  eth1.101
eth1.102  vlan      connected  eth1.102
eth0      ethernet  unmanaged  --
eth2      ethernet  unmanaged  --
lo        loopback  unmanaged  --
NAME      UUID                                  TYPE      DEVICE
eth1      29214628-fd6b-4570-b0f1-fb39e2d8e391  ethernet  eth1
eth1.101  376271c4-b6f6-4a2c-8bbd-7ac84eb884df  vlan      eth1.101
eth1.102  f29f4cc2-e924-4682-8560-acec306e71fb  vlan      eth1.102
ens3      f35c6104-3566-4fe3-87bf-8dfb2dbb661d  ethernet  --
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
6: eth1.102@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2200 qdisc noqueue state UP group default qlen 1000
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
7: eth1.101@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc noqueue state UP group default qlen 1000
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
191: eth0@if192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet <IP_ADDRESS>/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
       valid_lft forever preferred_lft forever
195: eth1@if196: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2200 qdisc noqueue state UP group default
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
197: eth2@if198: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:13:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/16 dev eth0 proto kernel scope link src <IP_ADDRESS>
search redhat.com
nameserver <IP_ADDRESS>
options ndots:0

It is passing all the integration tests except the "test_rollback_for_vlans" from vlan_test.py. I have not been able to find out what is going wrong. Any suggestions about that? Thanks!

Looks like this solution will not work with commit=False.
(apply with commit=True and the execute an explicit commit command before the timeout triggers)
We need this supported for the VDSM scenario.

Thank you. It looks better now.
There are some details especially with the verification that need to be addresed, IMHO the code should work like this (I used pseudo code now, hope this is more clear than my comments in the actual code from yesterday).
def _apply_ifaces_state()
    ...
    with checkpoint:
        # apply changes without the MTU changes for VLAN
        # apply changes to actually adjust the MTU
        disable_ipv6()
        verify_change()

If this is not working, please explain.

That suggestion works! Thank you very much :)

All changes done. CI is failing for another reason (that test case is also failing in another PR).

Please order the functions/methods from top to bottom such that the caller comes before the callee, allowing reading the story from top to bottom, such that the details are always below.
It makes it easier to review and read the code.

Sorry about that. Done! Thanks for point it out!

I have included the changes suggested by @cathay4t. If you don't like this new approach then we can go back to the old one at any time.

This is the NM version used in the tests: NetworkManager-1.20.5-1.cab2e4fc96.el8.x86_64
If it includes the fix, then only the tests are needed. The production code should be redundant.

@tyll , all comments of your last review have been answered as far as I can see.
I'm merging this change.


Added docstring and comments to synchronous HS

Coverage decreased (-0.3%) to 76.901% when pulling 1e0ab524a94d26f6724af383f677bed606bb9879 on kpeterson1:dev-algs into 833b8aef5f8eea199c357559656284f465d6975d on amin10:master.


[BugFix] Fix iceberg timestamp partition column percision lost

Fixes https://github.com/StarRocks/starrocks/issues/21216
Replace #21225
What type of PR is this:

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[x] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.1
[x] 3.0
[ ] 2.5
[ ] 2.4

[FE PR Coverage Check]
:heart_eyes: pass : 3 / 3 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/connector/iceberg/ScalarOperatorToIcebergExpr.java
3
3
100.00%
[]

@Mergifyio backport branch-3.1

@Mergifyio backport branch-3.0

@Mergify backport branch-2.5


Inference is failed after loading the engine file

Hi,
Here is my environment setting:
CentOS 7.0
PyTorch 1.1.0
TensorRT <IP_ADDRESS> with CUDA9.0
CUDA9.0
cuDNN7.5.0 with CUDA9.0
Python3.6.8

After installed the dependencies of this repo.
I tried the test.py, and serialized the engine into file "test.engine"
Then I try to load it and execute the inference as normal tensorrt python code, as below:
def get_engine(engine_file):
        with open(engine_file,"rb") as f, trt.Runtime(TRT_LOGGER) as runtime:
                print("Engine Loaded")
                return runtime.deserialize_cuda_engine(f.read())
        return None

if __name__ == '__main__':
    img = np.random.rand(1, 3,299,299)
    img /= 255.0
    img -= 0.5
    img *= 2.0
    bindings = []
    img = np.ascontiguousarray(img)
    engine = get_engine('test.engine')
    stream = cuda.Stream()
    context = engine.create_execution_context()
    output = np.empty(1000, dtype = np.float32)
    d_input = cuda.mem_alloc(1 * img.nbytes)
    d_output = cuda.mem_alloc(1 * output.nbytes)
    bindings = [int(d_input), int(d_output)]
    cuda.memcpy_htod_async(d_input, img, stream)
    context.execute_async(1, bindings, stream.handle, None)
    cuda.memcpy_dtoh_async(output, d_output, stream)
    stream.synchronize()

Then I get below error:
$ python3 test_run.py
Engine Loaded
[TensorRT] WARNING: TensorRT was compiled against cuDNN 7.5.0 but is linked against cuDNN 7.5.1. This mismatch may potentially cause undefined behavior.
[TensorRT] WARNING: TensorRT was compiled against cuDNN 7.5.0 but is linked against cuDNN 7.5.1. This mismatch may potentially cause undefined behavior.
[TensorRT] ERROR: Parameter check failed at: engine.cpp::enqueue::451, condition: bindings[x] != nullptr

Any advice will be welcome.
Thanks,

example in readme generate a engine with two outputs. so you need to alloc memory for second output and add it to bindings.

Hi @traveller59
Thanks for your reply.
After update the 2 outputs to the test script, the error disappeared.
def infer(engine, x, batch_size):
        n = engine.num_bindings
        print('%d bindings' % n)
        print(x.shape)
        h_input = cuda.pagelocked_empty(trt.volume(engine.get_binding_shape(0)),  dtype=trt.nptype(trt.float32))
        h_output = cuda.pagelocked_empty(trt.volume(engine.get_binding_shape(1)),  dtype=trt.nptype(trt.float32))
        d_input = cuda.mem_alloc(h_input.nbytes)
        d_output = cuda.mem_alloc(h_output.nbytes)
        stream = cuda.Stream()
        context = engine.create_execution_context()
        cuda.memcpy_htod_async(d_input, h_input, stream)
        context.execute_async(batch_size,bindings=[int(d_input), int(d_output)], stream_handle=stream.handle)
        cuda.memcpy_dtoh_async(h_output, d_output, stream)
        stream.synchronize()
        return h_output

if __name__ == '__main__':
    img = np.random.rand(1, 3, 299, 299)
    #img /= 255.0
    #img -= 0.5
    #img *= 2.0
    bindings = []
    img = np.ascontiguousarray(img)
    #out = infer(get_engine('test.engine'), input, 1)
    engine = get_engine('test.engine')
    #runtime = trt.infer.create_infer_runtime(G_LOGGER)
    stream = cuda.Stream()
    context = engine.create_execution_context()

    output = np.empty(1000, dtype = np.float32)
    output2 = np.empty(1000, dtype = np.float32)
    d_input = cuda.mem_alloc(1 * img.nbytes)
    d_output = cuda.mem_alloc(1 * output.nbytes)
    d_output2 = cuda.mem_alloc(1 * output2.nbytes)
    bindings = [int(d_input), int(d_output), int(d_output2)]

    for i in range(100):
        a1 = time.time()
        cuda.memcpy_htod_async(d_input, img, stream)
        context.execute_async(1, bindings, stream.handle, None)
        cuda.memcpy_dtoh_async(output, d_output, stream)
        cuda.memcpy_dtoh_async(output2, d_output2, stream)
        stream.synchronize()
        a2 = time.time()
        print('Batch {}-th, Time {}ms'.format(i, a2-a1))
    print(output)
    print(output2)

I snooped the data in array output and output2, the output2 is all zero and the output is as below:
[1. 1. 1. 0. 0. 1. 1. 1. 1. 1. 0. 1. 0. 1. 1. 0. 0. 1. 0. 1. 0. 0. 0. 0. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1. 1. 1. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0. 1. 1. 0. 1. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 0. 1. 0. 0. 1. 0. 1. 1. 0. 1. 0. 0. 1. 1. 0. 0. 0. 0. 0. 1. 0.1. 0. 0. 1. 1. 0. 0. 1. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.0. 1. 0. 0. 0. 1. 1. 0. 0. 1. 1. 0. 1. 0. 0. 1. 0. 0. 0. 1. 1. 1. 0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 1. 1. 1. 0. 0. 0. 0. 1. 1. 0. 1. 1. 1. 0. 1. 1. 1. 1. 1. 1. 0. 0. 0. 1. 0. 1. 0. 1. 1. 1. 0. 0. 0. 0. 1. 0. 0. 0. 1. 1. 0. 1. 1. 0. 0. 0. 1. 0. 1. 0. 0. 1. 0. 0. 1. 1. 0. 0. 0. 1. 0. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 1. 1. 1. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 0. 1. 0. 0. 1. 1. 0. 1. 0. 1. 1. 0. 0. 1. 0. 0. 1. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 1. 1. 1. 0. 1. 1. 0. 0. 0. 0. 0. 0. 1. 1. 1. 0. 0. 0. 1. 1. 0. 1. 0. 0. 1. 1. 1. 0. 0. 1. 0. 1. 0. 1. 0. 0. 0. 1. 0. 1. 0. 1. 1. 0. 0. 1. 1. 0. 1. 1. 0. 1. 0. 1. 0. 1. 1. 0. 0. 1. 0. 0. 1. 1. 0. 1. 1. 1. 0. 0. 0. 0. 1. 1. 1. 1. 0. 1. 0. 1. 1. 0. 1. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 1. 1. 1. 0. 1. 1. 0. 1. 1. 1. 1. 1. 0. 1. 0. 0. 1. 1. 1. 1. 1. 1. 1. 0. 1. 0. 1. 1. 0. 0. 0. 0. 1. 1. 1. 1. 1. 0. 1. 0. 0. 1. 0. 1. 1. 1. 0. 0. 0. 0. 0. 1. 1. 0. 1. 1. 1. 0. 0. 0. 1. 0. 1. 0. 1. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 0. 0. 0. 0. 0. 1. 1. 0. 1. 1. 1. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 1. 1. 1. 0. 1. 1. 0. 1. 0. 0. 1. 0. 0. 1. 0. 1. 1. 0. 0. 0. 0. 1. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 1. 1. 0. 1. 1. 1. 0. 0. 1. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0. 1. 0. 0. 1. 1. 1. 1. 1. 1. 1. 0. 1. 0. 1. 1. 1. 0. 1. 0. 0. 1. 0. 0. 0. 0. 1. 0. 1. 1. 1. 0. 1. 0. 0. 1. 1. 0. 0. 0. 1. 1. 0. 1. 1. 1. 0. 0. 0. 0. 1. 0. 0. 1. 1. 1. 0. 1. 1. 1. 1. 1. 0. 0. 1. 1. 0. 0. 1. 0. 0. 0. 1. 1. 0. 0. 1. 1. 1. 1. 1. 0. 1. 0. 1. 1. 1. 1. 0. 0. 0. 1. 0. 0. 1. 1. 1. 0. 0. 0. 0. 1. 0. 1. 1. 0. 0. 0. 1. 1. 1. 0. 0. 0. 0. 0. 1. 1. 0. 0. 1. 0. 1. 0. 0. 1. 0. 1. 1. 1. 1. 0. 1. 0. 0. 0. 1. 0. 1. 0. 1. 1. 0. 0. 0. 1. 0. 0. 0. 1. 0. 1. 1. 0. 1. 0. 1. 1. 1. 1. 1. 1. 0. 1. 1. 0. 1. 0. 0. 1. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 1. 1. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 0. 0. 0. 1. 0. 1. 1. 0. 1. 0. 0. 1. 1. 0. 1. 1. 1. 0. 0. 0. 0. 1. 0. 1. 1. 1. 0. 0. 1. 1. 0. 1. 1. 0. 1. 0. 0. 1. 0. 1. 1. 1. 1. 0. 1. 0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 1. 0. 1. 0. 1. 0. 0. 1. 1. 0. 0. 0. 1. 1. 1. 1. 1. 0. 0. 1. 1. 1. 1. 1. 1. 0. 1. 0. 0. 1. 0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 1. 0. 1. 1. 0. 0. 1. 0. 0. 1. 1. 1. 1. 1. 1. 0. 0. 0. 1. 1. 0. 0. 0. 1. 0. 1. 0. 1. 1. 1. 1. 0. 0. 1. 1. 0. 1. 0. 0. 0. 1. 1. 0. 0. 1. 0. 1. 0. 1. 1. 1. 0. 1. 0. 0. 0. 0. 1. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0. 1. 0. 1. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0. 1. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 1. 0. 1. 1. 1. 0. 0. 0. 1. 1. 0. 1. 1. 1. 1. 1. 0. 0. 1. 0. 1. 1. 1. 1. 0. 0. 0. 1. 0. 0. 1. 0. 1. 0. 0. 0. 0. 0. 0. 1. 1. 0. 1. 1. 0. 0. 0. 1. 1. 1. 0. 1. 0. 1. 1. 1. 1. 0. 1. 0. 0.]

Meanwhile, I randomized the same shape input by torch.rand().cuda() and input it into the pytorch model, and the output tensor is as below:
tensor([[-1.1718e+00,  4.6266e-01,  1.0212e+00,  2.2632e-01,  4.7583e-01,
         -6.3883e-01,  1.0015e-01,  1.5616e+00,  1.0254e+00,  1.1679e+00,
          1.8992e+00,  2.9743e+00,  3.4913e+00,  2.1630e+00,  2.3985e+00,
          2.6715e+00,  3.0376e+00,  1.4133e+00,  3.0594e+00,  2.1019e+00,
          1.1495e+00,  5.6692e+00,  3.9588e+00,  3.3769e+00,  2.3353e+00,
         -1.0645e+00, -7.9425e-01, -8.1189e-01, -1.1870e+00, -5.1096e-01,
         -8.8577e-02,  2.2844e-01, -1.5711e+00, -2.0256e-01, -3.3481e-01,
...

Seems my conversion configuration is incorrect, would you give some advice?
Thanks

you need to convert image to np.float32.
please don't use raw API... you can try my high-level API in newest code.

Hi, I tried your newest inference code and get the output results.
I noticed you compared different results by norm to check the coherency.
I also tried to import the same randomly generated input to original pytorch method, like below
import torch
import torchvision
import tensorrt as trt
import torch2trt
import time
import numpy as np

TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
net = torchvision.models.inception_v3(pretrained=True).eval()
img = np.load('input_raw.bin.npy')
inputs = torch.from_numpy(img)
model = net.cuda()
inp = inputs.cuda()
for i in range(1):
    a1 = time.time()
    out = model(inp)
    a2 = time.time()
    print('{}, {}, {}'.format(i, out, a2-a1))

But got a different result compared to the tensorrt way. Would you leave some comments about how to address this issue?


Andrew/change log

This is just for logging all changes for the DB so Create Update and Delete it will run when ever those actions are done on the DB
Hence no coverage as its running in the Context layer

Please provide coverage report for the Unit Test

Just for you MT


Disable cyan audit

Note: Build is currently failing since the changes in this pr rely on anticipated changes to demux-js, namely an update of the IndexState interface.  See https://github.com/EOSIO/demux-js/pull/132


Is the lack of Free Mem somehow related to the Power Cable?

I have noticed that everytime i run some sort of "heavy" process on the pi like: - Copy the whole LND folder to make a backup or - Install Zap Connet. My Free Memory goes to values below 80 which i think is kindda critical. I have experienced several times this issue and a quick restart of the pi usually fix it, but I would like to understand why this is happening? Is that related to the Power Cable?
This is usually the mem issues it goes as low as 60.

the Cable i bought is the one that comes with the ABOX, 5V 3A

Cable and power supply ratings mean nothing as they often don't reflect reality (lies).
I can imagine power supply, or any other, problems that impact network data could possibly cause LND to use more RAM as it dynamically handles channel connectivity. I'm sorta guessing here but I've seen LND at times using excessive RAM and I'm assuming this is from some "abnormal" condition.

Cable and power supply ratings mean nothing as they often don't reflect reality (lies).
I can imagine power supply, or any other, problems that impact network data could possibly cause LND to use more RAM as it dynamically handles channel connectivity. I'm sorta guessing here but I've seen LND at times using excessive RAM and I'm assuming this is from some "abnormal" network condition.

I thought it could be some sort of punctual issue with my system since i never see anyone in here complaining about the RAM. But as far as i understood from your answer just make the quick restart and move along...

Cable and power supply ratings mean nothing as they often don't reflect reality (lies).
I can imagine power supply, or any other, problems that impact network data could possibly cause LND to use more RAM as it dynamically handles channel connectivity. I'm sorta guessing here but I've seen LND at times using excessive RAM and I'm assuming this is from some "abnormal" network condition.

I thought it could be some sort of punctual issue with my system since i never see anyone in here complaining about the RAM. But as far as i understood from your answer just make the quick restart and move along...

see my edited msg above.  You should run the power-test script to test your power supply.

PowerTest script (all in one line):
wget https://raw.githubusercontent.com/rootzoll/raspiblitz/4abbdd18aa0ec44553d1fd875f2c5a6b98d9721c/home.admin/config.scripts/blitz.powertest.sh && sudo chmod +x blitz.powertest.sh && ./blitz.powertest.sh
if that one fails to run try this one:
wget https://raw.githubusercontent.com/openoms/raspiblitz/powertest/home.admin/XXpowertest.sh && sudo chmod +x XXpowertest.sh && ./XXpowertest.sh

If I remember correctly a result of voltage drops below 1.25V signal an inferior power supply and probably should be replaced.

wget https://raw.githubusercontent.com/openoms/raspiblitz/powertest/home.admin/XXpowertest.sh && sudo chmod +x XXpowertest.sh && ./XXpowertest.sh

thanks for this... seems like i need a new power supply according to the test.

I think u guys advised one right? would you share it with me? Im in Europe btw and thanks again

Well it seems like im in need of a new power supply according to the test

Guess u guys recommended one in the past right? Would u share it with me? Im in Europe btw

See the shopping lists on the main RaspiBlitz page.  @rootzoll keeps them pretty up to date with what we know at the time to be the best choices.

Even if your memory problem persists after new PS, at least you have removed one possible (and common!) source of problems.

Well it seems like im in need of a new power supply according to the test

I think u guys recommended one in another thread right? Would u share it with me? Im in Europe btw

This is mine, but i never received messages of undervoltage problems...

This is mine, but i never received messages of undervoltage problems...

try running this and see if anything shows up..
sudo cat /var/log/syslog | grep -i undervolt

This is mine, but i never received messages of undervoltage problems...

try running this and see if anything shows up..
sudo grep "Under-voltage detected!" /var/log/syslog

Ooops it seems I have a problem

Ooops it seems I have a problem

Actually it looks fine.  It says zero undervoltage reports.
So "Under-voltage detected!" was not in there?  I think it's OK.

But 1.23V is pretty bad. I'd replace that PS. Btw, found out my PS is equally as bad.

Ooops it seems I have a problem

Actually it looks fine. It says zero undervoltage reports.
So "Under-voltage detected!" was not in there? I think it's OK.

Yes probably is fine sorry, when i saw the red I though there was a problem but in fact is "0". I have 2 screen for the raspberry, with one it gives me some undervoltage problem just on starting and I don't use anymore. With the one I use now never have problems. Well I will change the PS on next upgrade to verify, thx

I have 2 screen for the raspberry, with one it gives me some undervoltage problem

That's interesting. Which screen is this that caused under-voltage?  I would have thought all screens consume about the same amount of current.

Is the most beautiful LCD the one that cause the problem. Apparently they are the same but the one that make problem has the pin on the opposite side of the one I use now. I look on the back and they are similar, if you think can help i will post a pic on the back to compare them. Is this that i bought case+lcd+pen (the problematic one)

I have 2 screen for the raspberry, with one it gives me some undervoltage problem

That's interesting. Which screen is this that caused under-voltage? I would have thought all screens consume about the same amount of current.

Is the most beautiful LCD the one that cause the problem. Apparently they are the same but the one that make problem has the pin on the opposite side of the one I use now. I look on the back and they are similar, if you think can help i will post a pic on the back to compare them. Is this that i bought case+lcd+pen (the problematic one)


make detail classes hidden

Signed-off-by: Ashton Larkin<EMAIL_ADDRESS>🦟 Bug fix
Fixes #759
Summary
This hides the symbols of the detail::View class so that we can make changes to it as needed without breaking ABI. Since this is an ABI-breaking change, this has to be done in fortress.
Checklist

[x] Signed all commits for DCO
[ ] Added tests
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge

linking error in Ubuntu:
undefined reference to `ignition::gazebo::v6::detail::View::AddComponent(unsigned long, unsigned long, int)'

 https://build.osrfoundation.org/job/ignition_gazebo-ci-pr_any-ubuntu_auto-amd64/6028/
maybe the symbols need to be visible?

maybe the symbols need to be visible?

So, after looking into the linking errors and chatting with @mjcarroll offline, I believe that the symbols for detail::View need to be visible. The reason for this is because when users call EntityComponentManager::Each, View::Component is called, which then calls View::ComponentImplementation. Since we are using templates for things like Each, this means that the templates are expanded where it's being used, so the detail::View class needs to be visible in order for downstream users to be able to call ecm.Each. There's also at least one other method that has this same issue (template method that uses a view in the definition): EntityComponentManager::AddComponentsToView
So, unless we can hide the templates somehow, then I believe we will need to keep detail::View symbols as visible, which is probably why they were never hidden in the first place.
@chapulina what do you think? I think we should probably close this PR and also close #759, with a note explaining why we can't hide the symbol visibility. Perhaps it would also be worth adding some documentation to the detail::View class, explaining why it's visible and not hidden.

@chapulina what do you think?

Ouch, ok, it makes sense. I thought that we shouldn't need to make the symbols visible because they were headers. Gotta learn more about symbol generation.
I guess then that we can't ever make ABI breaking changes to detail. So even though users shouldn't be using them directly, we'll be keeping them stable. This is something good to know, and it means that our message to users can be simpler: "Anything that's installed will be kept ABI / API stable, regardless of whether they're in a detail folder."

I guess then that we can't ever make ABI breaking changes to detail

I don't think this statement is 100% true. If you look at ComponentStorageBase.hh, both the ComponentStorageBase and ComponentStorage classes are hidden, and work just fine since these classes aren't used in template methods elsewhere (i.e., these classes are completely self-contained in their respective library). So, I think it's more accurate to say that we can't make ABI breaking changes to some  things in detail, which means that there's still a chance of API/ABI breaking changes for some things in detail.
I went ahead and reverted back to visible symbols in detail::View and added a note that explains why detail::View needs to be visible in https://github.com/ignitionrobotics/ign-gazebo/pull/788/commits/f6606d782ad80f92df528c582ee703cf68a90ad4. I also updated the PR title. If this looks good to you, I think we can merge this PR and then close #759.


refactor(hummock manager): make sync group be part of transaction

I hereby agree to the terms of the Singularity Data, Inc. Contributor License Agreement.
What's changed and what's your intention?
When we create new compaction groups or drop existing compaction groups, we will create a transaction to alter groups and release a new HummockVersion to indicate this change simultaneously.
Checklist

[x] I have written necessary rustdoc comments
[x] All checks passed in ./risedev check (or alias, ./risedev c)

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

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

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

This PR makes group creation in compaction group manager and hummock version atomic, which is a great improvement. I am thinking about whether we can further simplify group creation: can we avoid reverting a compaction group creation completely and thus avoid leaking hummock manager in stream manager?

IIUC, currently a new compaction group can only be created during table/mv creation (we can support group split via RPC in the future but just ignore that for now), which means compaction group creation always comes with a barrier. In this case, if we can make the following three operations atomic, group creation will never be reverted:

CompactionGroupManager::register_table_ids
HummockManager::sync_group
HummockManager::commit_epoch

Given that CN can write table state without knowing the exact compaction group id, making the above operations atomic becomes possible. Here is my idea:

Put a TableId to (CompcationGroupId, TableOption) map as part of the CreateStreamingJob command
After completing MV creation barrier collection, pass the above map into commit_epoch.
Inside commit_epoch, do the following operations in sequence:

init a etcd transaction
register table ids in compaction group manager and put it into the transaction.
create GroupConstruct version delta, apply to hummock version and put it into the transaction.
execute existing logics in commit_epoch
commit the ectd transaction

With this, we can safely avoid reverting group creation during MV creation and avoid storing a ref to HummockManager in stream manager.

IIUC, currently a new compaction group can only be created during table/mv creation (we can support group split via RPC in the future but just ignore that for now), which means compaction group creation always comes with a barrier. In this case, if we can make the following three operations atomic, group creation will never be reverted:

CompactionGroupManager::register_table_ids
HummockManager::sync_group
HummockManager::commit_epoch

Given that CN can write table state without knowing the exact compaction group id, making the above operations atomic becomes possible. Here is my idea:

Put a TableId to (CompcationGroupId, TableOption) map as part of the CreateStreamingJob command
After completing MV creation barrier collection, pass the above map into commit_epoch.
Inside commit_epoch, do the following operations in sequence:

init a etcd transaction
register table ids in compaction group manager and put it into the transaction.
create GroupConstruct version delta, apply to hummock version and put it into the transaction.
execute existing logics in commit_epoch
commit the ectd transaction

With this, we can safely avoid reverting group creation during MV creation and avoid storing a ref to HummockManager in stream manager.

What if this barrier is without checkpoint?
If so, meta will not do commit_epoch() :-(

Inside commit_epoch, do the following operations in sequence:

Even commit_epoch succeeds, following ops like post_collect or finish_commands can fail, thus call for a revert.

IIUC, currently a new compaction group can only be created during table/mv creation (we can support group split via RPC in the future but just ignore that for now), which means compaction group creation always comes with a barrier. In this case, if we can make the following three operations atomic, group creation will never be reverted:

CompactionGroupManager::register_table_ids
HummockManager::sync_group
HummockManager::commit_epoch

Given that CN can write table state without knowing the exact compaction group id, making the above operations atomic becomes possible. Here is my idea:

Put a TableId to (CompcationGroupId, TableOption) map as part of the CreateStreamingJob command
After completing MV creation barrier collection, pass the above map into commit_epoch.
Inside commit_epoch, do the following operations in sequence:

init a etcd transaction
register table ids in compaction group manager and put it into the transaction.
create GroupConstruct version delta, apply to hummock version and put it into the transaction.
execute existing logics in commit_epoch
commit the ectd transaction

With this, we can safely avoid reverting group creation during MV creation and avoid storing a ref to HummockManager in stream manager.

What if this barrier is without checkpoint? If so, meta will not do commit_epoch() :-(

IIUC, completion of MV creation must be bound to a checkpoint epoch so commit_epoch will be called for sure.

Inside commit_epoch, do the following operations in sequence:

Even commit_epoch succeeds, following ops like post_collect or finish_commands can fail, thus call for a revert.

You are right... I missed the fact that post operation of commit_epoch can fail and compaction group creation should be reverted. The root cause is under the current meta implementation, we cannot perform a single transaction containing all types of metadata updates (catalog, hummock version, compaction grpup, framgment, ...) and thus we use something similar to 2PC. In this case, revertion is unavoidable...
Not related to this PR: a better metadata management can be have a single MetadataManager management each sub-manager and we can commit metadata change belong to an epoch in one shot.


Cancel code completion and code hint upon go-to line (bookmark, breakpoint, etc.)

Fixes #95056.
When doing an action that does a "go-to line" such as Go to Next/Previous Breakpoint or Go to Next/Previous Bookmark, this ensures the code hint or currently open code completion is cleared when jumping lines.

Thanks! And congrats for your first merged Godot contribution :tada:

I thought i was merging this but it seems I missed it in my batch. Good timing as kleonc had some comments :D

Ideally CodeEdit should respond to all caret movements and cancel it when needed there instead of needing to cancel it in each of these separately. This can be done in another PR if we want to merge this one as is.

I'd say adjusting the search bar behavior here would make sense.
A more general solution on CodeEdit level sounds great, but it might get complicated to generalize the decision whether the hint needs to be canceled and when it needs to be updated by querying the ScriptLanguage (e.g. when moving the cursor inside the same call we would need to update the hint, not cancel it, to highlight the correct current argument). Querying too often might also have performance implications for GDScript at the moment, due to the lack of caching. So merging this as a simple fix for now would make sense to me.

Ideally CodeEdit should respond to all caret movements and cancel it when needed there instead of needing to cancel it in each of these separately. This can be done in another PR if we want to merge this one as is.

I'd say adjusting the search bar behavior here would make sense.
A more general solution on CodeEdit level sounds great, but it might get complicated to generalize the decision whether the hint needs to be canceled and when it needs to be updated by querying the ScriptLanguage (e.g. when moving the cursor inside the same call we would need to update the hint, not cancel it, to highlight the correct current argument). Querying too often might also have performance implications for GDScript at the moment, due to the lack of caching. So merging this as a simple fix for now would make sense to me.

Alright, updated to clear when using "Go to Line..." and when searching using the search bar.

Thanks! And congrats for your first merged Godot contribution :tada:


A simple error handling would be nice

Fixes #32

When an error occurs, an auto-error class is added to change the color of border input to red


WIP: Add shell command

runme shell allows to open a new shell session which inherits all (most?) of the properties of the current and user's shell. For example, it inherits environment variables and it uses user's defined shell using the SHELL env.
The main purpose of running runme shell is to open a stateful shell session in which runme run commands can be executed and their side-effects are preserved. For example, executing a command that exports shell variables within a runme shell should preserve them:
➜ ./runme shell
detected prompt: ➜
runme: welcome to runme shell
runme: artifacts will be stored in /var/folders/g9/rrx_zc9n6xq6wf6y28n92r3w0000gn/T/runme-1001-1812127229

➜ ./runme ls --filename test-shell.md
NAME  FIRST COMMAND      # OF COMMANDS  DESCRIPTION
set   export A="Test A"  1              First, set an environment variable.
get   echo $A            1              Then read it.

➜ ./runme run --filename test-shell.md set

# this line is inserted automatically
➜ export A="Test A"

➜ ./runme run --filename test-shell.md get

# this line is inserted automatically
➜ echo $A
Test A

Todo

Consider changing the UX. ./runme run --filename test-shell.md get should not print echo $A, even though, it's automatically. The better UX could be to just output the result directly. Note that this won't be a problem when a trigger will be from outside, for example, when it will be VS Code.

It will be replaced with https://github.com/stateful/runme/pull/93.


[OneExplorer] Introduce ArtifactLocator

This commit refactors ConfigObj class by introducing Artifact and ArtifactLocator
ONE-vscode-DCO-1.0-Signed-off-by: dayo09<EMAIL_ADDRESS>

@Samsung/one-vscode PTAL :-D


Update Jira User-Agent Dummy Value To Be More Intuitive

The previous value MY-UA-STRING might cause confusion on whether to replace that string with an actual browser user agent string. Any non-whitespaced string should work here.
Also made some minor changes to the same README.md
Related Discord conversation

https://app.clubhouse.io/larder/story/3530


SAK-40908 - Update _lessonbuilder.scss

nexprev typo , should be nextprev as everywhere else

@lgekeler you also need to sign the ICLA, you only need to do this step once in a lifetime:
https://www.apereo.org/licensing/agreements/icla
To be listed here:
http://licensing.apereo.org/completed-clas

I don’t know - but for me the simple approach is delete it, make a JIRA and redo it against master.  Once you get your JIRA made, you can indicate which versions this needs to be back-ported to.
/Chuck
P.S. So cool!

On Nov 9, 2018, at 8:22 AM, lgekeler<EMAIL_ADDRESS>wrote:
Thanks.
FWIW, I was unable to create a pull request against master; Github told me
to choose a branch. I'm creating the jira now. What is the process for
associating the two? (Or should I start from scratch against master?)
LG
Laura Gekeler
LMS Administrator
Learning Platforms
Apereo Foundation https://www.apereo.org/content/projects-communities
Board '14-2020
University of Notre Dame
<EMAIL_ADDRESS>

Okay. I will close this one. With CLA in hand, am I able to submit a pull against Master?

@lgekeler - just an FYI: if I understand the issue as described in SAK-40908, you'll have to change more than just the selector of the rule for this class.
Changing the style selector will not change the element's class in the tool. You'll need to change the class in the markup for all instances of those navigation buttons in Lessons. You'll also want to ensure that class isn't being used by any other markup, JavaScript, RSF, or styles elsewhere in the tool.
Let us know if you need assistance making these additional changes and we'll try to help.

We'll also have to advertise this change because it will break all institutions' custom stylesheets who are targeting ".nexprev" currently.

Good catch though. Thanks for fixing it for us!


Problem updating content when the editor is created from a textarea

From the MediumEditor readme:

MediumEditor also supports textarea. If you provide a textarea element, the script will create a new div with contentEditable=true, hide the textarea and link the textarea value to the div HTML content.

MediumEditor subscribes to changes in the content editable input event using native methods to keep the <textarea> value synced with the editable region.
The problem is that this plugin uses jquery to trigger the input even on the editable region, and jquery only triggers handlers that have been subscribed through it. So changes from the embed plugins aren't updated on the textarea.

Duplicate #179


Fix bootstrap script

Description
Fixing the bootstrap script to correctly seed the database.
Fixes # (issue) Please Link Issues
#98
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[x] Unit Tests
[x] Integration Tests
[x] Manual Tests

Checklist:

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

Adding warnings for now till I figure out how to inherit from the base model class and unregister a class after the fact in a way that makes it not remember the old entry using the same table_name


[FEATURE] network-policy resource

What area do you want to see improved?
terraform provider
Is your feature request related to a problem? Please describe.
We're using the cloudfoundry_network_policy resource of the community provider to allow container-to-container communication on our internal routes. There is no analogous resource in the new provider
Describe the solution you would like
A new cloudfoundry_network_policy resource to be able to fully migrate off of the community provider. The format of the old one is fine with me, but it would also be fine to change it.
Example of the old policy in use:
resource "cloudfoundry_network_policy" "backend_routing" {
  policy {
    source_app = data.cloudfoundry_app.source.id
    destination_app = data.cloudfoundry_app.destination.id
    port = "61443"
  }
}

Describe alternatives you have considered
No response
Additional context
No response

The provider uses the go-cf-client and network-policy is not supported by it at the moment. Need to decide whether to contribute there and bring it or develop it as a separate module here in the provider or invoke the existing one used by community_provider.