Removes a deprecated note

Removes a note that seems to be a leftover from when cert-manager's manifest had to be applied with --validate=false.
/kind cleanup
Signed-off-by: irbekrm<EMAIL_ADDRESS>

/lgtm
(I've no experience with Openshift  but this looks totally reasonable in context for the file)

Thanks!


Nested code blocks have problems when copying by Copy button

````
```dataviewjs
const files=dv.pages
```
````

The copied content will become

1

```dataviewjs</div></div><div><div class="codeblock-customizer-line-number"><span class="codeblock-customizer-line-number-element">2</span></div><div class="codeblock-customizer-line-text">const files=dv.pages</div></div><div><div class="codeblock-customizer-line-number"><span class="codeblock-customizer-line-number-element">3</span></div><div class="codeblock-customizer-line-text">```

Ahh. I will look at this  today

Sorry,  I can't reproduce this. Did this happen in edit mode or reading mode? If you can reproduce it multiple times, please describe how did you do it.

Nevermind, I can reproduce it.

Can you please check if the problem still persists in version 1.2.2?

hello, I found that this is not a problem with nested code, but rather a problem with not specifying the code language
Even if I only wrote three points but did not specify a code language, this situation would occur

while I specify a code language, it work well

oh I see. This exaplins why I was able to reproduce it once, and why I wasn't it other time. I will look into this again. Thanks for the info!

As it turned out, this was the case not only for nested code blocks, but for every code block, without a language specified. I fixed it in version 1.2.3. Please test it out, and if there is a problem report back. I am closing the issue. If there is some problem, I'll reopen it.

Now it's working properly，thanks to your hard work.


feat(tier4_external_api_msgs): add bagtaker messages.

Related Links

https://tier4.atlassian.net/wiki/spaces/T4DC/pages/2479522726/bagtaker
https://tier4.atlassian.net/wiki/spaces/T4DC/pages/2476605764/GUI#⚙設計
https://tier4.atlassian.net/browse/T4PB-12283
https://tier4.atlassian.net/wiki/spaces/SI/pages/2470576470/2022-07-08+bagpacker+rosbag
Description

Add the Bagtaker service messages to the tier4_external_api_msgs for copying the rosbag logs to the external storage device.
added service messages: RosbagCopyList.srv, StartRosbagCopy.srv
added topic message: RosbagCopyStatus.msg
Remarks

Pre-Review Checklist for the PR Author
PR Author should check the checkboxes below when creating the PR.

[x] Code is properly formatted
[x] Assign PR to reviewer

Checklist for the PR Reviewer
Reviewers should check the checkboxes below before approval.

[ ] Commits are properly organized and messages are according to the guideline
[ ] Code is properly formatted
[ ] PR title describes the changes

Post-Review Checklist for the PR Author
PR Author should check the checkboxes below before merging.

[ ] All open points are addressed and tracked via issues or tickets
[ ] Write release notes

CI Checks

Build and test for PR: Required to pass before the merge.
Check spelling: NOT required to pass before the merge. It is up to the reviewer(s). See here if you want to add some words to the spell check dictionary.

@ito-san @0x126 動作的に問題なかったのと影響はbagtakerにしかないので入れてしまっても良さそうです
何かコメントなどあればお願いします

リリースノート追加してなかったので追加しました
https://tier4.atlassian.net/wiki/spaces/AIP/pages/2473561308/WIP+autoware.universe+v0.6.0+Release+Notes#msg-%3A-bagtaker用のmsg-typeの追加


chore: prepare learn for move

how to get ride of these notifications? this mrugesh is too talkative sending billion of messages..
Get Outlook for iOShttps://aka.ms/o0ukef

From: mrugesh mohapatra<EMAIL_ADDRESS>Sent: Thursday, September 27, 2018 8:05 AM
To: freeCodeCamp/freeCodeCamp
Cc: Subscribed
Subject: [freeCodeCamp/freeCodeCamp] chore: prepare learn for move (#18188)

You can view, comment on, or merge this pull request online at:
https://github.com/freeCodeCamp/freeCodeCamp/pull/18188https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FfreeCodeCamp%2FfreeCodeCamp%2Fpull%2F18188&data=02|01||f24bd4bfc020426f961608d6248ab137|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636736575427782832&sdata=x2wrzjPibD4R3cdxsO9CJGI9J39pvUUeWxY%2B%2BOTvsLQ%3D&reserved=0
Commit Summary

Inital commit
Reformat step challenges
initial commit
Fix codemirror SSR
ignore local build files
Remove NODE_ENV from build script
Update store on new challenge
Remove unused file
Style layout and components
Add tests for Map components
Add Travis CI
Update README
Merge pull request #1 from Bouncey/feat/monacoEditor
Merge pull request #2 from Bouncey/fix/testFormatting
Merge pull request #3 from Bouncey/fix/editorLayout
Merge pull request #4 from Bouncey/chore/moveTemplates
Merge pull request #5 from Bouncey/fix/rxHelpers
Normalise tests and introduce front end libs json
Handle front-end-libs challenges
Fix firefox css tests
Inital user auth commit
Format
Make babel transformed challenges more robust
Remove unused code
Adjust Nav styling
Add Data Vis seed
Remove auth0 for deploy
Initial sign in flow
Format
Remove callback page
Add Intro pages through markdown
Merge pull request #6 from Bouncey/feat/featureBuild
Merge pull request #13 from Bouncey/feat/contribs
Merge pull request #12 from Bouncey/feat/featureBuild
fix contributing
Merge pull request #15 from Bouncey/feat/backendView
Merge pull request #16 from Bouncey/feat/backendTests
Merge pull request #18 from Bouncey/feat/transitionIntros
Merge pull request #22 from Bouncey/feat/sitemap
Merge pull request #23 from Bouncey/feat/favicons
Merge pull request #24 from Bouncey/feat/offline
Merge pull request #26 from freeCodeCamp/QuincyLarson-patch-1
chore: fix build status badge (#27)
Merge pull request #29 from Simbaxo/carets-in-map
Merge pull request #33 from Bouncey/feat/auth0
Merge pull request #34 from Bouncey/feat/interviewPrep
Merge pull request #38 from Bouncey/feat/codeStorage
Merge pull request #39 from Bouncey/fix/completiongModal
Merge pull request #41 from domwakeling/issue35
Add prerequisits to CONTRIBUTING.md (#40)
Merge pull request #43 from Bouncey/feat/introOnBlockClick
Merge pull request #37 from tchaffee/fix/stub-superblock-index-pages
Merge pull request #45 from Bouncey/fix/ui
Merge pull request #50 from Bouncey/fix/mapModal
Merge pull request #48 from Bouncey/feat/GA
Fix typo, add instruction to copy .env in CONTRIBUTING.md (#62)
Merge pull request #64 from ekaoddlass/fix-issue-52
Merge pull request #71 from SMM-dev/trBug
Merge pull request #70 from SMM-dev/patch-1
Merge pull request #68 from Bouncey/fix/updatePreviewOnMount
Merge pull request #72 from Bouncey/feat/mapFromIntro
Merge pull request #73 from Bouncey/fix/introsInMap
Update enzyme adapter for react tests (#80)
Merge pull request #81 from Bouncey/feat/searchInNav
Fix/monaco resizing (#82)
Fix: Map UI & Tool panel styles (#83)
Use @freecodecamp/curriculum package (#85)
Feat: User Integration (#92)
change editor theme (#95)
Update CONTRIBUTING for the use of the backend (#98)
Fix: Babel errors in the browser console for user code (#99)
Bump curriculum package version (#100)
Update users currentChallengeId when on a new challenge (#101)
Merge pull request #104 from scissorsneedfoodtoo/fix/firefox-pane-resizing
Merge pull request #106 from tchaffee/fix/checkmarks
Redirect non-emailVerified users to www (#108)
Add HMTL Intro (#109)
Chore/redirects (#113)
Merge pull request #114 from Bouncey/fix/fetchUserComplete
Merge pull request #116 from Bouncey/fix/styles
fix: all things (#124)
Merge pull request #135 from Bouncey/fix/introCheckMark
Typo and rewrote phrase about hypertext links (#126)
Wrote the Introduction to the Responsive Web Design Projects section. (#133)
fix(typo): Fixes typo the made the local completedChallenges array unusable (#142)
write up for React intro stub (#143)
Bump Curriculum (#144)
Reduce GA events to stay within limits (#157)
Challenge SidePanel tweaking (#162)
Feat: Donation integration (#151)
Change public key (#163)
make forum open in new tab (#148)
Send challenge files to the backend for persistence (#170)
fix: moved Responsive Web design Projects Intro to right location (#147)
feat(intro): add js algo and data structure projects(#145)
changed logo link to home page (#174)
Fix scrollbar issues (#160)
feat: rosetta code intro stub (#175)
Add MathJax (#150)
fixing grammatical and spelling errors in javascript intro (#169)
Add cats.json file which is required for at least 5 challenges (#179)
Add description for alog&DS
Fix navbar (#164)
Fixed: Added styles for mobile (#167)
fix: Decode HTML entities in the test output (#111)
add description
update description
splitter between editors and preview hidden if preview is null (#182)
Temp: Remove MathJax (#186)
Fix for ctrl key having no impact on submit process (#181)
Update some working to make it flow a little better
chore(seed): update curriculum to latest
fix a spelling error
improved Redux intro
fix(contributing.md): fixed a typo in the instruction list
Fix: Hint Button (#196)
The code editor will auto focus when you complete a challenge ad move to next one closes #192
updating styles for night-mode
fix(theme): add night mode to learn
fix(editor): update night mode styles for the editor
chore(seed): update to v3.0.1
fix(theme): fixes #209 (upcoming lessons readability in night mode)
fix(layout): night mode background color now fits full screen
fix: add overflow for firefox on instructions panel
making code blocks more readable
changing blockquote and .token colors to #00bfb0
fix: night mode tweaks (#214)
fix: "onNext" is called instead of "next" on an Observable. (#219)
fix accessibility issues
Feat: Download Solution Button (#191)
feat: update 404 page (#194)
Fix: 404 page quote in Night Mode
Introduction to React Redux Challenges
Formatting and more exact edit link
Removed old jquery CDN and added a more accessible CDN
Fixed typos in introductory text
fix(help): add param for correct category
chore(seed): chore(seed): Update curriculum to v3.1.0
fix(challenges): typo error (#260)
fix: after fixing syntax errors in editor for JS/React lessons, log/preview doesn't work.
Added a few styles to increase heirarchy of curriculum list
chore(seed): update curriculum to v3.1.1 (#258)
chore(google): Add google scripts (#283)
Renabled MathJax and testing default 3324 delimeters to see if other challenge descriptions break.
Removed the base tag from the header of the preview iframe. The href and target attributes were causing links within the iframe to open a new tab and would point to /, which created problems with some challenges where users should link to other page elements like a footer.
Reimplemented MathJax with custom $inlineMath$ delimeters to prevent it from rendering SASS and other challenge descriptions as math functions.
Did some retooling and was able to disable MathJax for the entire page from a top-level div by adding the class name tex2jax_ignore. Brought the dasherize function into Show.js and used it to pass a new prop section down through Side-Panel.js into Challenge-Description.js to add a section class name to each of the challenge-instructions divs. Then was able to use the delimiters that caused problems before, but only for the Rosetta Code challenges.
Put content in Project Euler stub
Put content in Data Structures stub
Corrected grammar mistake and made small wording change
Add safe rel to link
fix: Sass has not been compiled when tests running
Added reporting of console.log from editor. Refactored a little.
grammar, spacing, spelling fixes
Removal of br tags and safe rels on links
Attempted to make the nav bar closer in style to the old beta site / current main site. Adjusted the font weights, the size and position of the search bar, and the nav bar on the right. Also made the  tags for the curriculum and forum buttons clickable and change styles when hovered over, just like on the main freecodecamp.org site.
changing link colors
fix(styles): Fix styles for day mode and signed in avatar
Fix(avatar): Be more specific with css selectors
Add 'watch a video' button and video modal.
Fix challenge tests that rely on
chore(seed): update curriculum to v3.2.0
Feat: Add news link to Nav (#261)
feat: add scrimba curriculum
Put content in Coding Interview Prep Algorithms intro stub (#226)
update gatsby dependecies
update use of gatsby-link
Import graphql from Gatsby
Rename boundActionCreators to actions
Rename pathContext to pageContext
Convert the layout's children to a normal prop
add webpack-cli
update babel and jest
update gatsby settings
update monaco editor
update frame-runner webpack config
fix warning async="true"
remove react-router-redux
mock MonacoEditor on build-html stage
remove inlined css in htmljs
add styles and adjust the monacoEditorMock to show backend challenges
Added a readme to Introduction to the API and microservices projects
add redux-devtools-extention
formatting and linting
adjust styles
fix missing styles
update packages and remove unused
reset form project's fields on submit
Remove br tags and use safe link rels
Adding content to replace stub in - "Introduction to the Front End Libraries Projects" (#221)
Introduction to Data Visualization Challenges (#229)
fix:modifying js code themes (#230)
Increase visibility of Glitch boilerplate (#252)
fix(introductions): fix 'unintentially' spelling in HelmetJS intro (#253)
Edited the intro page for apis-and-microservices-projects (#262)
fix random page flickering on page load #256 (#264)
fix: spelling errors (#265)
fix(.gitignore) add environment specific files to .gitignore (#266)
Put Content in Front End Libraries Projects stub (#268)
Changed the stub introduction page (#277)
Escape underscore in 'node_modules' (#282)
feat(updates): Store updates if the server is not responding
fix(error handling): Simplified error handling
fix(console): output user logs after running tests
fix(help): change help button to direct user to correct forum (#284)
Moved li element into Login and SignedIn components and added class names for more precise styling.


brew install graphviz failed

brew config output
HOMEBREW_VERSION: 3.1.8
ORIGIN: https://github.com/Homebrew/brew
HEAD: e0bfcdaf258dadaaf8c102d4cb51f23b6fdb2c4c
Last commit: 2 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 07a2cf3127f6a890207b3654018d6fe78f89b14e
Core tap last commit: 7 days ago
Core tap branch: master
HOMEBREW_PREFIX: /usr/local
HOMEBREW_BOTTLE_DOMAIN: https://mirrors.aliyun.com/homebrew/homebrew-bottles
HOMEBREW_CASK_OPTS: []
HOMEBREW_DISPLAY: /private/tmp/com.apple.launchd.t1zjOy8VFA/org.xquartz:0
HOMEBREW_EDITOR: nvim
HOMEBREW_MAKE_JOBS: 16
Homebrew Ruby: 2.6.3 => /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.3_2/bin/ruby
CPU: 16-core 64-bit kabylake
Clang: 12.0.0 build 1200
Git: 2.24.1 => /usr/local/bin/git
Curl: 7.64.1 => /usr/bin/curl
macOS: 10.15.7-x86_64
CLT: <IP_ADDRESS>.59
Xcode: 12.4

brew doctor output
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: A newer Command Line Tools release is available.
Update them from Software Update in System Preferences or run:
  softwareupdate --all --install --force

If that doesn't show you any updates, run:
  sudo rm -rf /Library/Developer/CommandLineTools
  sudo xcode-select --install

Alternatively, manually download them from:
  https://developer.apple.com/download/more/.

[X] I ran brew update and am still able to reproduce my issue.
[X] I have resolved all warnings from brew doctor and that did not fix my problem.

What were you trying to do (and why)?
brew install graphviz
What happened (include all command output)?
==> Pouring libtiff-4.3.0.catalina.bottle.tar.gz
tar: Error opening archive: Failed to open '/Users/zhang/Library/Caches/Homebrew/downloads/f9004d3169ace5a3e9081f0de7bc6e10496bf373328e56cefebbce5383057776--libtiff-4.3.0.catalina.bottle.tar.gz'
Error: Failure while executing; tar --extract --no-same-owner --file /Users/zhang/Library/Caches/Homebrew/downloads/f9004d3169ace5a3e9081f0de7bc6e10496bf373328e56cefebbce5383057776--libtiff-4.3.0.catalina.bottle.tar.gz --directory /private/tmp/d20210520-13750-t067hx exited with 1. Here's the output:
tar: Error opening archive: Failed to open '/Users/zhang/Library/Caches/Homebrew/downloads/f9004d3169ace5a3e9081f0de7bc6e10496bf373328e56cefebbce5383057776--libtiff-4.3.0.catalina.bottle.tar.gz'
What did you expect to happen?
installation success
Step-by-step reproduction instructions (by running brew commands)
brew install graphviz

it fixed it, Thanks!


Change enum to singular

Enum was called ActionTypes changed to ActionType.

 TBL123: Link action rules to action plans at create time (Update)


I am interested in figuring out a SSR solution. Can we discuss here?

I wanted to open a discussion if there are any ideas about creating an SSR solution that works on the web.
From my understanding the main issue with SSR in Ionic is the routing in Next JS uses a folder structure where Ionic is using its version of React Router to do transitions. The pages directory is where Next looks for where to go and also what to SSR.
The solution in this repo has been to not use the page directory other than for a single pointer to the AppShell which would have all the React Router stuff.
I could vaguely imagine a solution where we could still use the pages directory and each page has a conditional logic to decide if it shows an App directory with IonRoutes (mobile) or loads the component directly, possibly passing SSR data along (web). If the component needs to fetch data, it can see if it was loaded with data already from the server. If not, then fetch the data clientside. And finally, new routes can be done with a custom useRouter hook that takes handles useIonRoute and Next's useRouter.
For now, I wouldn't account for the new Next App directory cause that's more complexity.
I can fiddle around with it and produce a repo at some point if there's interest. But I just want to see if maybe people already have a solution, or have suggestions or improvements for this proposal.

I see. But what about getServerSideProps + next/dyanmic w/ ssr:false? We may not get a fully rendered page, but I think accessing data server side before the page load could still be useful. I don't think we would need a custom server.

Want to ask few things, so if we want a mobile app with SEO on the web, we can use next js + capacitor correct? but we will lose the native transition and routing from ionic because we did not use it (using next js file routing).

I suppose if you set up next js correctly and can get it working on
capacitor, then I would imagine yes. But this repo uses ionic and I'm still
trying to figure out how SEO is possible here.
On Sun, May 21, 2023 at 3:02 AM Sami Kalammallah @.***>
wrote:

Want to ask few things, so if we want a mobile app with SEO on the web, we
can use next js + capacitor correct? but we will lose the native transition
and routing from ionic because we did not use it (using next js file
routing).
—
Reply to this email directly, view it on GitHub
https://github.com/mlynch/nextjs-tailwind-ionic-capacitor-starter/issues/44#issuecomment-1556136790,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYFLNZPRJGWYD2QFQ5ZBYQDXHHRZ3ANCNFSM6AAAAAAX2H6KLE
.
You are receiving this because you authored the thread.Message ID:
<mlynch/nextjs-tailwind-ionic-capacitor-starter/issues/44/1556136790@
github.com>

If you just use Next.js with Capacitor and build your own UI, SSR should work. You won't have the native style transitions but you can still build a quality app and can design your own transitions if you like (a simple fade or modal animation might suffice for most of the app anyways)

Got it, thank you @quarkstars @mlynch

The issue is that ionic web components are web components and can't be SSR'ed in Next.js since Next.js doesn't have a window object. There are workarounds (such as using a custom Next.js server) but those workarounds then make it not able to run on Vercel (at least that used to be a limitation, I haven't been following if there's any progress there)

@mlynch
Could you give more details on workarounds?
Especially regarding the use of a custom Next.js server. I don't mind having a custom server for now (hoping to use Vercel at some point).
Why does using a custom server solve the problem of using window?
What do I need to change in the server configuration to support window?

The issue is that ionic web components are web components and can't be SSR'ed in Next.js since Next.js doesn't have a window object. There are workarounds (such as using a custom Next.js server) but those workarounds then make it not able to run on Vercel (at least that used to be a limitation, I haven't been following if there's any progress there)

@mlynch Could you give more details on workarounds? Especially regarding the use of a custom Next.js server. I don't mind having a custom server for now (hoping to use Vercel at some point). Why does using a custom server solve the problem of using window? What do I need to change in the server configuration to support window?

This looks promising, maybe give it a look: https://github.com/jagreehal/nextjs-stenciljs-ssr-example

FWIW, I've been trying a few different approaches to SSR with Ionic + Next.js (and the app directory). I think this is a promising PoC: https://github.com/jkhaui/app-dir-ionic-ssr
But implementing a client-side routing system that plays nicely with Next.js' in-built router will probably be challenging


CAMEL-11382 - Creating IgniteComponent from Ignite Instance throws IllegalStateException

Creating an IgniteComponent from configuration works fine, but when I try and create one from an existing Ignite instance it throws an IllegalStateException when starting the component: "No configuration resource or IgniteConfiguration was provided to the Ignite component."
Looking at the code it appears the lifecycleMode is ignored as it is only set to COMPONENT_MANAGED and cannot be altered outside of the class.

This PR causes camel-ignite to fail unit tests, do this happen for you also?

Failed tests:
org.apache.camel.component.ignite.IgniteSetTest.testCollectionsAsCacheObject(org.apache.camel.component.ignite.IgniteSetTest)
  Run 1: IgniteSetTest.testCollectionsAsCacheObject:142 Not true that <157> is equal to <101>
  Run 2: IgniteSetTest.testCollectionsAsCacheObject:142 Not true that <158> is equal to <101>
  Run 3: IgniteSetTest.testCollectionsAsCacheObject:142 Not true that <152> is equal to <101>

org.apache.camel.component.ignite.IgniteSetTest.testOperations2(org.apache.camel.component.ignite.IgniteSetTest)
  Run 1: IgniteSetTest.testOperations2:78 Not true that <154> is equal to <100>
  Run 2: IgniteSetTest.testOperations2:78 Not true that <151> is equal to <100>
  Run 3: IgniteSetTest.testOperations2:78 Not true that <160> is equal to <100>

Flaked tests:
org.apache.camel.component.ignite.IgniteSetTest.testRetainSingle(org.apache.camel.component.ignite.IgniteSetTest)
  Run 1: IgniteSetTest.testRetainSingle:126 Not true that <[hello10, hello10]> contains exactly <[hello10]>. It has unexpected items <[hello10]>
  Run 2: PASS

Tests run: 47, Failures: 2, Errors: 0, Skipped: 0, Flakes: 1

Thanks, can you fix checkstyle also
mvn compile -P sourcecheck

Absolutely, sorry I didn't notice that step fro mthe contribution guide.

Thanks for the PR it has been merged. Do you mind closing this?

Sure. Thanks Claus.


Enhancement: Working around dotenv related errors while using non-standard bundlers

To Reproduce:
Try to use the library from client-side javascript, bundled with vite.
Bug Description:
Currently building a client-side app and running into issues with vite.
Expected Behaviour:
To allow seamless integration with client-side and server-side js, we should document usage and caveat for non-standard use cases.

I will continue to figure out workarounds for this issue and post them here (I don't think we should remove dotenv, per se) 👍

For starters, process not being available is a vite issue.
Workaround --> https://github.com/vitejs/vite/issues/1973#issuecomment-787571499
Next Issue Faced:

I believe this is because I defined proces.env as an (empty) object.

@suvam0451 Released your patch in https://github.com/junhoyeo/threads-api/releases/tag/v1.5.4. Thank you very much! 🎉


Enforce conversion method return type & redefine Comparable

Pull Request Description
Fixes #10355 by enforcing return type of Xyz.from conversion methods. Most frequent violations are caused by ordering support - hence 280b7a7357d07b87998f5e0198c990024d9682d7 defines Comparable.new to address the problem.
Important Notes

Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[ ] The documentation has been updated, if necessary.
[ ] All code follows the
Scala,
Java,
style guides.
[ ] Unit tests have been written where possible.
[ ] Benchmarks continue to be fast

With https://github.com/enso-org/enso/commit/280b7a7357d07b87998f5e0198c990024d9682d7 we seem to get following results:
sbt:enso> runEngineDistribution --run test/Base_Tests
2450 tests succeeded.
401 tests failed.
38 tests skipped.
9 groups skipped.

Can we still return errors from
conversions as we use that?

Can we still return errors from conversions as we use that?

Yes. Error.throw - e.g. DataflowErrors are special "all fit" values and they pass thru without any check.

at 112 failing tests after 4443559

At 33  failing tests with 18dde9b. Time to execute some benchmarks:

engine
stdlibs

The problem for today is that following program works:
from Standard.Base import Vector, Comparable

type T
    Value a b

type T_Comparator
    compare t1 t2 = Comparable.from t1.a . compare t2.a
    hash t = Comparable.from t.a . hash

Comparable.from (that:T) = Comparable.new that T_Comparator

main = [T.Value 1 2, T.Value 1 2] . distinct

but when one changes the first line to
from Standard.Base import all

then it doesn't and yields:
Execution finished with an error: Assertion Error: 'Expecting Ordering or Nothing, but got: Error:Error (By 1 Decimal_Comparator) (By 1 Default_Comparator) with type Error calling T_Comparator.compare[v.enso:7:5-55] self=_ t1=_ t2=_'
        at <enso> Map.get(Map.enso:220:40-70)

Time to re-run benchmarks:

engine
stdlib

There is only a single remaining failure:
  [FAILED] [PostgreSQL]  Interactions Between various operations: [9/10, 924ms]

      - [FAILED] aggregates and distinct [63ms]
          Reason: An unexpected dataflow error ((Incomparable_Values.Error Nothing Nothing)) has been matched (at test/Table_Tests/src/Common_Table_Operations/Integration_Tests.enso:70:13-72).
          at <enso> Incomparable_Values.type.handle_errors.handle.case handle(built-distribution/enso-engine-2024.3.1-dev-linux-amd64/enso-2024.3.1-dev/lib/Standard/Base/2024.3.1-dev/src/Errors/Common.enso:278:47-101)
          at <enso> Panic.catch(Internal)
          at <enso> Incomparable_Values.type.handle_errors<arg-1>(built-distribution/enso-engine-2024.3.1-dev-linux-amd64/enso-2024.3.1-dev/lib/Standard/Base/2024.3.1-dev/src/Errors/Common.enso:281-282)
          at <enso> Panic.catch(Internal)
          at <enso> Incomparable_Values.type.handle_errors(built-distribution/enso-engine-2024.3.1-dev-linux-amd64/enso-2024.3.1-dev/lib/Standard/Base/2024.3.1-dev/src/Errors/Common.enso:281-282)
          at <enso> Table.sort<arg-1>(built-distribution/enso-engine-2024.3.1-dev-linux-amd64/enso-2024.3.1-dev/lib/Standard/Table/2024.3.1-dev/src/Table.enso:916-917)

how do I run the PostgreSQL tests?

There is only a single remaining failure:

This failure has nothing to do with Nothing - it is just wrong error message - the culprit exception is from ObjectComparator:
          (v, u) -> {
            var result = compare_callback.execute(null, v, u);
            if (result.isNull()) {
              throw new CompareException(u, v);
            } else {

when comparing BigInteger(13) and BigInteger(5).

CI seems green, time for yet another round of benchmarks:

engine
stdlib

It is still not entirely clear to me why a custom comparator's compare method can throw Incomparable_Values.

There are many places where comparator's compare delegates to Ordering.compare. Ordering.compare doesn't return Nothing, but yields an error. So either we relax the rules, or all the delegations will be complicated by recovering from the error.

I don't see any big problems with that.

Yes, relaxing the rules costs us nothing and the delegation is then very simple.

engine
stdlib

Engine benchmarks are fine and my favorite stdlib benchmark looks way too optimistic:

Let's merge and see.


pageserver: abort process on IO errors

We added the infrastructure for this a while back (maybe_fatal_err etc), but there's lots of code that doesn't use it.
We hit these kinds of errors when an EC2 instance is dying.
We should be aborting the process on I/O errors when writing to layer files.

Write path done, need to investigate read path.

christian: panic when we we run out of place; disk-based eviction?
tenant config (?) fsync after rename
final thoughts: panic on fsync failure, discuss no space issue later


Check var in current $scope

Hi, I need to check if a var is defined in current $scope, and not in $parent. Let's me try explain it better..
I have a factory that checks a custom var called 'hasChange', and this var can be undefined in my current $scope, but when I check if it is undefined, it always is defined, because this var is always in my $parent scope.
There is any way to check var is defined ignoring the $parent scope?
I tried $scope.this, but it also have $parent value.

@giolvani scope is just an ordinary JavaScript object so you can check presence of a variable by using any standard JS tricks, ex.: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

Ouuch...
I really doesn't had attention for this way.
Thanks a lot


Update your download page!

Hy there, i found this on your download page.
It shows "Download Ferdi 5.4.3" but the link is "https://github.com/getferdi/ferdi/releases/download/v5.3.3/Ferdi.Setup.5.3.3.exe"

cheers

We are intentionally still shipping v5.3.3 for Windows due to #253 - all other platforms are up-to-date. We will get back to shipping the newest update once that problem is fixed.


OSX /var/log/system.log only gets msgs from Level >= 'warn'

I don't have much testing to help you out with just yet, but I noticed that 'info' and 'debug' dosen't work on OSX. When I spun up an Ubuntu 14.04 box, it worked out of the box.
Thanks for the great module! I'll try to see whats up with this, but maybe you're aware.
Cheers!

The default /etc/asl.conf (as of OS X 10.10) says:
# save everything from emergency to notice
? [<= Level notice] store

The notice level is above the info level in syslog (and thus, Bunyan), so info records are not stored by the default configuration.

@nicokaiser awesome, thanks for the answer, that makes total sense! Cheers!


Module not found: @walletconnect/client

C:/Users/jaibo/scaffold-eth/.yarn/cache/<EMAIL_ADDRESS>Module not found: @walletconnect/client tried to access tslib, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
This makes my yarn start to fail at compiling, any ideas on how I can fix this?
Thanks in advance

I also tried installing and starting other scaffold projects such as the aave-apeand nifty-ink but it also fails at starting the yarn, even though now I get this internal error message, any idea what could be causing this? Incompatible yarn version?
Internal Error: @uniswap-v1-app/monorepo@workspace:.: This package doesn't seem to be present in your lockfile; try to make an install to update your resolutions
    at J.getCandidates (C:\Users\jaibo\.yarn\releases\yarn-berry.cjs:2:348376)
    at n.getCandidates (C:\Users\jaibo\.yarn\releases\yarn-berry.cjs:2:337366)
    at C:\Users\jaibo\.yarn\releases\yarn-berry.cjs:2:359022
    at Module.w (C:\Users\jaibo\.yarn\releases\yarn-berry.cjs:2:418493)
    at C (C:\Users\jaibo\.yarn\releases\yarn-berry.cjs:2:358985)


OOM on 2x24GB GPU with a 30B model

On a 2x 3090 Ubuntu system, I am trying to run a QLoRA finetune on a 30B model WizardLM-30B-fp16 by splitting the single model across both cards because I think it cannot fit into a single card. Both cards have 0.315 GB VRAM in use before running the finetune.
I have been reading how 30B models can be trained on a single 24GB VRAM GPU like the 3090. Why am I only able to train it with a per-device batch size of 1 using a minimum of two 24GB GPUs? This is going to take over a month.
model_id = "TheBloke/WizardLM-30B-fp16"
nf4_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)
tokenizer = LlamaTokenizer.from_pretrained(model_id)
tokenizer.add_special_tokens({"pad_token": "[PAD]"})
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=nf4_config,
    device_map="auto",
)
model.gradient_checkpointing_enable()
model.config.use_cache = False
model.resize_token_embeddings(len(tokenizer))

config = LoraConfig(
    r=256,
    lora_alpha=512,
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
)
model = prepare_model_for_kbit_training(model)
model = get_peft_model(model, config)

trainable params: 408944640 || all params:<PHONE_NUMBER>8 || trainable%: 2.4216787546958454

Using a single card (2nd GPU):
per_device_train_batch_size=1
TrainingArguments(
    per_device_train_batch_size=1,
    gradient_accumulation_steps=1,
    **more_training_args,
)

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 794.00 MiB (GPU 0; 23.69 GiB total capacity; 21.16 GiB already allocated; 23.06 MiB free; 22.65 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

per_device_train_batch_size=2
TrainingArguments(
    per_device_train_batch_size=2,
    gradient_accumulation_steps=2,
    **more_training_args,
)

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.55 GiB (GPU 0; 23.69 GiB total capacity; 20.11 GiB already allocated; 297.06 MiB free; 22.38 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Using both cards:
per_device_train_batch_size=1
TrainingArguments(
    per_device_train_batch_size=1,
    gradient_accumulation_steps=1,
    **more_training_args,
)

Works!
GPU0 MEM 22.0/24.0 GB
GPU1 MEM 22.5/24.0 GB

per_device_train_batch_size=2
TrainingArguments(
    per_device_train_batch_size=2,
    gradient_accumulation_steps=2,
    **more_training_args,
)

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.55 GiB (GPU 1; 23.69 GiB total capacity; 19.56 GiB already allocated; 749.06 MiB free; 21.94 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Your LoRA rank might be too high (r = 128). I wouldn't recommend going above the effective batch size of 1 either, it seems to negatively affect the train loss with QLoRA.

@AlpinDale Is the effective batch size equal to the value of per_device_train_batch_size?

So @AlpinDale you are saying both of those settings should both be set to 1?

@Tostino Yes. Keep in mind though that an effective batch size of 1 results in a very slow training time.

What happens if you only lower LoRA rank? can you use larger batch sizes then?


Fix broken tests that got lost in the noise

While merging a lot of the things for v0.12.1, a few things got lost in the noise:

TestContainer/TestInsecureRootCapabilitesWithService does docker network access, and so should be given the host's docker config if it can be found.
TestModuleDevelopVersion has some duplication with TestModuleSchemaVersion - we can remove those, since all the permutations are tricky to handle in the develop test.

Tests are failing due to the known flake #7900.


[video_player] [Android] texture not updated while scrubbing when video is paused

Unlike on iOS, this never worked on Android.
To reproduce:

run app
press pause
scrub on the progress bar

Expected behaviour would be that it updates the texture while scrubbing. Current behaviour on Android is that the texture is not updated until you lift your finger.
Tested with:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

/// Controls play and pause of [controller].
///
/// Toggles play/pause on tap (accompanied by a fading status icon).
///
/// Plays (looping) on initialization, and mutes on deactivation.
class VideoPlayPause extends StatefulWidget {
  VideoPlayPause(this.controller);

  final VideoPlayerController controller;

  @override
  State createState() {
    return _VideoPlayPauseState();
  }
}

class _VideoPlayPauseState extends State<VideoPlayPause> {
  _VideoPlayPauseState() {
    listener = () {
      setState(() {});
    };
  }

  FadeAnimation imageFadeAnim =
      FadeAnimation(child: const Icon(Icons.play_arrow, size: 100.0));
  VoidCallback listener;

  VideoPlayerController get controller => widget.controller;

  @override
  void initState() {
    super.initState();
    controller.addListener(listener);
    controller.setVolume(1.0);
    controller.play();
  }

  @override
  void deactivate() {
    controller.setVolume(0.0);
    controller.removeListener(listener);
    super.deactivate();
  }

  @override
  Widget build(BuildContext context) {
    final List<Widget> children = <Widget>[
      GestureDetector(
        child: VideoPlayer(controller),
        onTap: () {
          if (!controller.value.initialized) {
            return;
          }
          if (controller.value.isPlaying) {
            imageFadeAnim =
                FadeAnimation(child: const Icon(Icons.pause, size: 100.0));
            controller.pause();
          } else {
            imageFadeAnim =
                FadeAnimation(child: const Icon(Icons.play_arrow, size: 100.0));
            controller.play();
          }
        },
      ),
      Align(
        alignment: Alignment.bottomCenter,
        child: VideoProgressIndicator(
          controller,
          allowScrubbing: true,
          padding: const EdgeInsets.symmetric(vertical: 48),
        ),
      ),
      Center(child: imageFadeAnim),
      Center(
          child: controller.value.isBuffering
              ? const CircularProgressIndicator()
              : null),
    ];

    return Stack(
      fit: StackFit.passthrough,
      children: children,
    );
  }
}

class FadeAnimation extends StatefulWidget {
  FadeAnimation(
      {this.child, this.duration = const Duration(milliseconds: 500)});

  final Widget child;
  final Duration duration;

  @override
  _FadeAnimationState createState() => _FadeAnimationState();
}

class _FadeAnimationState extends State<FadeAnimation>
    with SingleTickerProviderStateMixin {
  AnimationController animationController;

  @override
  void initState() {
    super.initState();
    animationController =
        AnimationController(duration: widget.duration, vsync: this);
    animationController.addListener(() {
      if (mounted) {
        setState(() {});
      }
    });
    animationController.forward(from: 0.0);
  }

  @override
  void deactivate() {
    animationController.stop();
    super.deactivate();
  }

  @override
  void didUpdateWidget(FadeAnimation oldWidget) {
    super.didUpdateWidget(oldWidget);
    if (oldWidget.child != widget.child) {
      animationController.forward(from: 0.0);
    }
  }

  @override
  void dispose() {
    animationController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return animationController.isAnimating
        ? Opacity(
            opacity: 1.0 - animationController.value,
            child: widget.child,
          )
        : Container();
  }
}

typedef Widget VideoWidgetBuilder(
    BuildContext context, VideoPlayerController controller);

abstract class PlayerLifeCycle extends StatefulWidget {
  PlayerLifeCycle(this.dataSource, this.childBuilder);

  final VideoWidgetBuilder childBuilder;
  final String dataSource;
}

/// A widget connecting its life cycle to a [VideoPlayerController] using
/// a data source from the network.
class NetworkPlayerLifeCycle extends PlayerLifeCycle {
  NetworkPlayerLifeCycle(String dataSource, VideoWidgetBuilder childBuilder)
      : super(dataSource, childBuilder);

  @override
  _NetworkPlayerLifeCycleState createState() => _NetworkPlayerLifeCycleState();
}

/// A widget connecting its life cycle to a [VideoPlayerController] using
/// an asset as data source
class AssetPlayerLifeCycle extends PlayerLifeCycle {
  AssetPlayerLifeCycle(String dataSource, VideoWidgetBuilder childBuilder)
      : super(dataSource, childBuilder);

  @override
  _AssetPlayerLifeCycleState createState() => _AssetPlayerLifeCycleState();
}

abstract class _PlayerLifeCycleState extends State<PlayerLifeCycle> {
  VideoPlayerController controller;

  @override

  /// Subclasses should implement [createVideoPlayerController], which is used
  /// by this method.
  void initState() {
    super.initState();
    controller = createVideoPlayerController();
    controller.addListener(() {
      if (controller.value.hasError) {
        print(controller.value.errorDescription);
      }
    });
    controller.initialize();
    controller.setLooping(true);
    controller.play();
  }

  @override
  void deactivate() {
    super.deactivate();
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return widget.childBuilder(context, controller);
  }

  VideoPlayerController createVideoPlayerController();
}

class _NetworkPlayerLifeCycleState extends _PlayerLifeCycleState {
  @override
  VideoPlayerController createVideoPlayerController() {
    return VideoPlayerController.network(widget.dataSource);
  }
}

class _AssetPlayerLifeCycleState extends _PlayerLifeCycleState {
  @override
  VideoPlayerController createVideoPlayerController() {
    return VideoPlayerController.asset(widget.dataSource);
  }
}

class AspectRatioVideo extends StatefulWidget {
  AspectRatioVideo(this.controller);

  final VideoPlayerController controller;

  @override
  AspectRatioVideoState createState() => AspectRatioVideoState();
}

class AspectRatioVideoState extends State<AspectRatioVideo> {
  VideoPlayerController get controller => widget.controller;
  bool initialized = false;

  VoidCallback listener;

  @override
  void initState() {
    super.initState();
    listener = () {
      if (!mounted) {
        return;
      }
      if (initialized != controller.value.initialized) {
        initialized = controller.value.initialized;
        setState(() {});
      }
    };
    controller.addListener(listener);
  }

  @override
  Widget build(BuildContext context) {
    if (initialized) {
      return Center(
        child: AspectRatio(
          aspectRatio: controller.value.aspectRatio,
          child: VideoPlayPause(controller),
        ),
      );
    } else {
      return Container();
    }
  }
}

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Video player example'),
        ),
        body: NetworkPlayerLifeCycle(
            'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4',
            (BuildContext context, VideoPlayerController controller) =>
                AspectRatioVideo(controller)),
      ),
    ),
  );
}

[✓] Flutter (Channel beta, v1.10.7, on Mac OS X 10.15 19A582a, locale en-CH)
    • Flutter version 1.10.7 at /Users/ben/flutter
    • Framework revision e70236e36c (3 weeks ago), 2019-10-02 09:32:30 -0700
    • Engine revision 9e6314d348
    • Dart version 2.6.0 (build 2.6.0-dev.0.0<PHONE_NUMBER>)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/ben/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.1, Build version 11A1027
    • CocoaPods version 1.8.3

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 40.2.2
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] VS Code (version 1.31.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.24.0

[✓] Connected device (1 available)
    • iPhone 11 Pro • 4318F8E4-22E5-4399-8A78-D755729F59DB • ios • com.apple.CoreSimulator.SimRuntime.iOS-13-1
      (simulator)

• No issues found!

I just the tested your code sample on
Flutter 1.12.13+hotfix.8 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 0b8abb4724 (4 weeks ago) • 2020-02-11 11:44:36 -0800
Engine • revision e1e6ced81d
Tools • Dart 2.7.0

It was able to change frame when dragging the bar
Is this the issue you're describing?
Thank you

@TahaTesser thank you for taking the time to reproduce. I updated the issue with clearer instructions and what is expected to happen.

Hi @cbenhagen
I forgot to pause the video and issue is reproduced
Thank you for your contribution

Hi @cbenhagen,
Thanks for filing the issue, I tested this on the latest stable version of flutter with video_player: ^2.1.6 and I could see that the texture isn't updating on IOS itself and I could see it updating on Android (pretty slow though) without lifting the pointer. I tested on the IOS Simulator and the Xiaomi K20 Pro Android device. Could you please confirm this behaviour using the latest version.
Here are the details

Output
IOS
https://user-images.githubusercontent.com/31410839/123745241-9daa2180-d8cd-11eb-9511-9f4eb7b8ed81.mov">
Android
https://user-images.githubusercontent.com/31410839/123745269-aac71080-d8cd-11eb-826b-68b87353bd30.mov

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.2, on macOS 11.4 20F71 darwin-arm, locale en-IN)
    • Flutter version 2.2.2 at /Users/mahesh/Documents/flutter
    • Framework revision d79295af24 (3 weeks ago), 2021-06-11 08:56:01 -0700
    • Engine revision 91c9fc8fe0
    • Dart version 2.13.3

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2021.1.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 57.0.5
    • Dart plugin version 211.7233

[✓] VS Code (version 1.57.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.23.0

[✓] Connected device (3 available)
    • iPhone 12 Pro Max (mobile) • 6A434744-B348-4FB3-AB10-131292174456 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-4
      (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 11.4 20F71 darwin-arm
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 91.0.4472.114

• No issues found!

Thank you.

Has anyone found a work around for this?


Add a helper for redirects

Flask, Pyramid, Django, etc. all include helpers for redirects. It would be nice if falcon had something similar, especially if it could be used from hooks.
Currently, I'm implementing a redirect in the same before hook I do validation from (e.g. returning 404 if an object doesn't match a route), but it seems like the responder methods on the resource must check the status code after the hook so as not to overwrite the redirect.

Makes sense. This is a pretty fundamental pattern, so I wouldn't be opposed to implementing it directly in the framework.

I'd like to take a stab at this.

I've actually just completed it. Sorry forgot to comment to say I was going to try it.


at RecyclerView nested(嵌套) RecyclerView,an interesting problem....

I have a problem,   at RecyclerView nested(嵌套) RecyclerView, It creates an interesting problem,  It's been rocking there.
can you help me,thank you very much.
this is the video connection:
https://res.cloudinary.com/liuyuesha/video/upload/v1540888109/test_snap_b2aa9s.mp4
Part of the code:
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
    if (holder instanceof RecommendSongsHolder) {

        FindBean.ModulesBean modulesBean = mFindDataList.get(position);
        List<FindRecommendSongInfo> program_list = modulesBean.getData().getTrack_list();

        LinearLayoutManager manager = new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false);
        ((RecommendSongsHolder) holder).recyclerView.setLayoutManager(manager);
        ((RecommendSongsHolder) holder).recyclerView.setHasFixedSize(true);
        ((RecommendSongsHolder) holder).recyclerView.setNestedScrollingEnabled(false);
        RecommendSongsChildAdapter songsChildAdapter = new RecommendSongsChildAdapter(mContext, mActivity, program_list, mDeviceDialog);
        ((RecommendSongsHolder) holder).recyclerView.setAdapter(songsChildAdapter);

        ((RecommendSongsHolder) holder).recyclerView.setOnFlingListener(null);
        SnapHelper snapHelper = new GravitySnapHelper(Gravity.START);
        snapHelper.attachToRecyclerView(((RecommendSongsHolder) holder).recyclerView);

    }

Do you have padding in your recyclerview? Can you share your layout's XML here?

Does it still happen if you remove the padding? I've been working on a fix for this tonight. Check the develop branch code and see if it works for you until I release the new version.

Sorry ,The project is for the company, Today is Sunday. I will try again tomorrow，thank you.

I remove the padding, it is ok.

Fixed in 2.0


Fail to run wasm demo in wasmer

@mfournial @Shillaker I like the idea to leverage wasm as runtime working with kantive to resolve the issues of performance and state. It is pretty straightforward to deploy faasm in k8s/knative and run a demo to understand the workflow. When I want to dig into the wavm of Faasm, I try to run the demo (hello) with another wasm runtime, wasmer, it failed with error message of "wasi_snapshot_preview1".
I opened this issue just try to understand how to develop wasm program for faasm and how to test it standalone outside Faasm.

Hi @luckyfengyong, Faasm currently doesn't support wasmer, so the results of running WebAssembly from the Faasm repo with wasmer are undefined. Faasm uses WAVM under the hood, and has experimental support for WAMR.
WebAssembly code in the Faasm repo is compiled with the WASI toolchain with a few modifications, so simple examples that don't have any Faasm-specific code should still run ok (e.g. a C/C++ hello world that doesn't include faasm.h or call any Faasm-specific functions).
The issue you're seeing is related to the imports needed by the demo/hello function. Below is a subset of the WAST for this file, showing the imports:
(module
   ...
  (import "wasi_snapshot_preview1" "proc_exit" (func $__wasi_proc_exit (param i32)))
  (import "env" "__faasm_write_output" (func $__faasm_write_output (param i32 i32)))
  (import "env" "__faasm_get_idx" (func $__faasm_get_idx (result i32)))
  (import "wasi_snapshot_preview1" "args_sizes_get" (func $__wasi_args_sizes_get (param i32 i32) (result i32)))
  (import "wasi_snapshot_preview1" "args_get" (func $__wasi_args_get (param i32 i32) (result i32)))
  (import "wasi_snapshot_preview1" "fd_close" (func $__wasi_fd_close (param i32) (result i32)))
  ...

As you can see, the module expects to import WASI functions from a module named wasi_snapshot_preview1 (which I think is the latest WASI standard). If this is not present then perhaps wasmer hasn't implemented this version of WASI. However, even if the WASI imports do resolve, it will still have trouble with the Faasm-related imports (e.g. __faasm_write_output), as these are only provided inside the Faasm runtime.
To run Faasm functions from the commandline, you can use the following:
# Open the CLI
./bin/cli.sh

# Compile, codegen, run
inv compile demo hello
inv codegen demo hello
inv run demo hello

If you need more detailed debugging and want to dig into the project, you'll need to look at setting up a local development environment.

@Shillaker Thanks a lot. I will check the logic how inv compile works and follow the instruciton to develop wasm for Faasm. I also found the issue  in wasi github regarding compatibility of snapshot migration.  But what you provided is more comprehensive.
Thanks again.


chaturbate is now changed & this repo is never work

Oh no this is bad, I will check it this week

hey- It looks like it's still working great, what problem you have encountered 🤔?
yamiodymel@DESKTOP:/github.com/teacat/chaturbate-dvr$ ./chaturbate-dvr -u karasarah

 .o88b. db   db  .d8b.  d888888b db    db d8888b. d8888b.  .d8b.  d888888b d88888b
d8P  Y8 88   88 d8' `8b `~~88~~' 88    88 88  `8D 88  `8D d8' `8b `~~88~~' 88'
8P      88ooo88 88ooo88    88    88    88 88oobY' 88oooY' 88ooo88    88    88ooooo
8b      88~~~88 88~~~88    88    88    88 88`8b   88~~~b. 88~~~88    88    88~~~~~
Y8b  d8 88   88 88   88    88    88b  d88 88 `88. 88   8D 88   88    88    88.
 `Y88P' YP   YP YP   YP    YP    ~Y8888P' 88   YD Y8888P' YP   YP    YP    Y88888P
d8888b. db    db d8888b.
88  `8D 88    88 88  `8D
88   88 Y8    8P 88oobY'
88   88 `8b  d8' 88`8b
88  .8D  `8bd8'  88 `88.
Y8888D'    YP    88   YD
---
2022/05/24 16:20:59 karasarah is online! fetching...
2022/05/24 16:21:00 the video will be saved as "./video/2022-05-24_16-20-59.ts".
2022/05/24 16:21:00 fetching media_w1828315226_b5128000_t64RlBTOjMwLjA=_5427.ts (size: 785652)
2022/05/24 16:21:01 fetching media_w1828315226_b5128000_t64RlBTOjMwLjA=_5428.ts (size: 926840)
2022/05/24 16:21:01 fetching media_w1828315226_b5128000_t64RlBTOjMwLjA=_5429.ts (size: 983240)
2022/05/24 16:21:02 fetching media_w1828315226_b5128000_t64RlBTOjMwLjA=_5430.ts (size: 1066712)
2022/05/24 16:21:03 fetching media_w1828315226_b5128000_t64RlBTOjMwLjA=_5431.ts (size: 978540)
2022/05/24 16:21:04 inserting 1 segment to the master file. (total: 5)
2022/05/24 16:21:04 inserting 2 segment to the master file. (total: 5)
2022/05/24 16:21:05 inserting 3 segment to the master file. (total: 5)

OH！It's my fault, now everything is okey!


Add Thank You option to the Contact US form

Ready for testing in test3

Denise to send a test 'Thank you' to see that Pat receives.

Test sent. @Vino-S please could you remove the hyphen so 'Thank-you' becomes 'Thank you'?

@Vino-S deploy the changes to production

Deployed


Add scripts that implement a cron job that syncs logs to a server

More details are in the README file.

quashed due to accidental push to upstream


luci-mod-admin-full: fix wrong dsl stats visualization

This patch fixes the wrong visualization of Noise Margin (SNR) and Signal Attenuation (SATN) stats
Signed-off-by: Luca Debernardi<EMAIL_ADDRESS>

@hauke
This touches the new stats introduced by you in https://github.com/openwrt/luci/commit/bedac198e5fb63da37ebaf5d9b49c215d18e010d
Does the change look ok?

On a DGN3500 a number of stats look swapped and the above mentioned patch would help address some of those:  (Data rate vs Max attainable look swapped, as do SNR and noise margin)
Data Rate: 2.432 Mb/s / 608 Kb/s
Max. Attainable Data Rate (ATTNDR): 2.088 Mb/s / 616 Kb/s
Latency: 8.0 ms / 8.0 ms
Line Attenuation (LATN): 58.3 dB / 31.5 dB
Signal Attenuation (SATN): 6.8 dB / 11 dB
Noise Margin (SNR): 54.6 dB / 31.5 dB
Aggregate Transmit Power(ACTATP): 17.3 dB / 12.6 dB
Forward Error Correction Seconds (FECS): 9290206 / 661

Data Rate and Max. Attainable Data Rate look fine to me, i have a 5 Mb/s line (capped by ISP at my request to avoid disconnections) and Data Rate is 4.999 Mb/s. Signal Attenuation and Noise Margin are certainly swapped

I'm happy to be wrong :-)


chore(vscode): disable the "run all" as it is disruptive

Current dependencies on/for this PR:

main

PR #1122   👈

This stack of pull requests is managed by Graphite.

Merge activity

Oct 31, 9:41 PM: @Boshen started a stack merge that includes this pull request via Graphite.


CX SQL_Injection @ website/admin/login.php [master]

SQL_Injection issue exists @ website/admin/login.php in branch master
Method <?php at line 1 of website\admin\login.php gets user input from the _POST element. This element’s value then flows through the code without being properly sanitized or validated, and is eventually used in a database query in method login_admin at line 57 of website\include\admins.php. This may enable an SQL Injection attack.
Severity: High
CWE:89
Vulnerability details and guidance
Checkmarx
Lines: 10

Code (Line #10):
   if ($user = Admins::check_login($_POST['adminname'], $_POST['password']))

Issue still exists.

Issue still exists.


replacing python 3.6+ fstring with .format

this replaces the assertion print out to use .format() , which is compatible with python 3.5

Looks good.
Minor nitpick. Could you restore the original formatting (spaces between arguments)?


WIP: OpenJDK 9 ea

Motivation for this change
Start figuring out how to build it before it's officially released.  :)
Things done

OpenJDK Specific Tasks

[ ] Test minimal (jre9_headless)
[ ] Figure out whether infinality patches are still relevant
[ ] Figure out whether *.pf symlink fix is still necessary
[ ] Decide if a bootstrap JDK external to nixpkgs is required
[ ] Test 32-bit

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

[x] NixOS
[ ] macOS
[ ] Linux

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

My current branch has all the gory details of my false starts, etc., and of course will need to some rebase -iing before being merged.  It does build though -- ./result/bin/java -version and ./result/bin/jshell both work.  :)

very cool, September release and we're basically ready?! :D

This is going in the right direction.

@0xABAB since most of your cleanup suggestions aren't specific to 9, I made a new commit b3e36f68a to apply them to 8.nix, then rebased my work on 9.nix (still starting w/ a copy of 8) on top of it.  If we should do that cleanup as a separate PR, LMK.

1st round of rebase -iing complete, leaving the commits with outstanding TODOs as children of the commits with more solid foundations.

The cleanup commit conflicts with 3cb745d5a69018829ac15f7d5a508135f6bda123.  It'll be trivial to resolve, just waiting for what I assume is the resulting mass-rebuild to happen before rebasing on top of it.  :)

I am merging this in, we can improve it later.

Sorry for letting it sit so long!


Modal not closing when hasBackdrop is false

Bug, feature request, or proposal:
Bug
What is the expected behavior?
Modal should close on clicking outside of it, even if the hasBackdrop is false
What is the current behavior?
Modal does not close when clicking outside of it
What are the steps to reproduce?
Open the modal and try to close it by clicking outside of it
Here's a plunkr:
https://plnkr.co/edit/6D8rfx?p=preview
What is the use-case or motivation for changing an existing behavior?
Modals should be able to be closed by clicking outside of them
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Angular 4.4.4

This is expected behavior. The backdrop's purpose is to catch clicks and dispatch them to the dialog to close itself. You're probably wanting to make it transparent? Try using
backdropClass: 'cdk-overlay-transparent-backdrop'

or any other custom class.

@willshowell's comment is correct. Closing since everything works as expected.


Apply iwyu suggestions to the code base

This applies all suggestions by include-what-you-use to the code base.
Unfortunately it resulted in a single commit and not in
per-module-commits. Removed includes from one module often results in
compilation errors in other modules which makes it very hard to split
the changes on a module-level.
Let me know if you think it's worthwhile to split this up. Probably it's a lot of work
and so far I don't see a good enough reason to do that.

The license_header check fails as usual because of OrbitQt/orbitcodeeditor.{cpp,h}.

The license_header check fails as usual because of OrbitQt/orbitcodeeditor.{cpp,h}.

I will rebase now and if the CI agrees I'm going to merge.

I will rebase now and if the CI agrees I'm going to merge.


Make utilizing 3rd party resources easy with concourse binary

It would be really nice to be able to load 3rd party resources with the concourse binary without recompiling the binary itself.

Not sure what you mean - third party resources should be added via resource_types.

I see what you mean! Awesome.
Already implemented.


move restore under stash command

#22

Codecov Report

Merging #28 (25ee990) into main (cec1100) will increase coverage by 0.13%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
+ Coverage   50.88%   51.01%   +0.13%
==========================================
  Files          16       15       -1
  Lines        1132     1129       -3
==========================================
  Hits          576      576
+ Misses        556      553       -3

Impacted Files
Coverage Δ

shellclear/src/bin/cmd/stash.rs
0.00% <0.00%> (ø)

shellclear/src/bin/shellclear.rs
1.05% <ø> (+0.02%)
:arrow_up:

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 cec1100...25ee990. Read the comment docs.


Transfer labels

From @topowright on December 15, 2017 9:8

Context

Problem, Idea, or Engagement

Possible solution or next step

Copied from original issue: ArcGIS/solutions-defense#532

This issue was moved to Esri/coordinate-conversion-addin-dotnet#462

This issue was moved to Esri/distance-direction-addin-dotnet#481

This issue was moved to Esri/military-symbol-editor-addin-wpf#205

This issue was moved to Esri/visibility-addin-dotnet#252

This issue was moved to Esri/military-tools-desktop-addins#36


Add none documented response property

Hi!
First of all thank you for the great package.
As I used it, I discovered a missing property which is not documented in the official GitLab API docs.
If you defined a CODEOWNERS file you get as "rule_type" "code_owner" and also the property "section". I only added the property to the response.

I'm usually not a bit fan of adding undocumented things, so a little bit in doubt if we should add this. Do you have a specific need to the field? And if so, can you point me to something that shows this field does indeed exist? Thanks!

Yes I can fully understand you.
I created a test repo on GitLab.
The response of following GET response will show the property:
https://gitlab.com/api/v4/projects/32139950/merge_requests/1/approval_rules
And yes I do have a need for this field as we want to distinguish between reviewer and assignee. Its a workflow thing for us. Based on the section we could set persons as assignee/reviewer.
Thank you for your time


Add gdpr support for adtelligent

Related pull request https://github.com/prebid/Prebid.js/pull/3359

released with 1.36


JS code within HTML file does not comment correctly with 'editor.action.commentLine' key binding

system

VSCode Version:

Version 1.6.1
Commit 9e4e44c19e393803e2b05fe2323cf4ed7e36880e
Date 2016-10-13T15:43:46.054Z
Shell 1.3.7
Renderer 52.0.2743.82
Node 6.5.0

OS Version:

Linux ubuntu02 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Steps to Reproduce:

Write some HTML and JS in a file, index.html

<head>
    <script type="text/javascript">
        alert(123);
    </script>
</head>

Hit ctrl+/ or what ever editor.action.commentLine has been mapped to

expected
<head>
    <script type="text/javascript">
       // alert(123);
    </script>
</head>

got
<head>
    <script type="text/javascript">
        <!-- alert(123); -->
    </script>
</head>

Same happens for trying to comment CSS within <style> tags.
Could possibly be the same for other languages such as PHP within HTML files?

Covered by #11081


Popover should appear on load when popover-is-open="true"

Trying to make a popover appear as soon as page loads. It seemed like this can be achieved by setting popover-is-open="true" but it doesn't work. Plunker

@csymeonides this is not yet supported:  https://github.com/angular-ui/bootstrap/blob/master/src/tooltip/tooltip.js#L151-L153

Thanks for clarifying - any idea if there's a temporary workaround?

I just remembered that I'm pretty sure we implemented this in #590.  Try using the master branch in your plunker and not the 0.13.3 release.

Yea, this is fixed in the 0.13.4-SNAPSHOT and will be released soon.  See this plunker for the code.

Excellent thank you!

Doesnt look this issue ie pop-over/tooltip opening on load is fixed in 0.13.4. Have the changes from 0.13.4-SNAPSHOT not been included in 0.13.4 ?
http://plnkr.co/edit/A38xRnjhaCMW97f2uh4Q?p=preview

@jikkujj - that's because *-is-open, by design, expects an expression (otherwise, it's not [and can't be] programmatic) and you're passing it a string.  in your plunker, in the PopoverDemoCtrl controller, set $scope.openOnLoad = true; and then in the HTML, say popover-is-open="openOnLoad" and you will see that it works.

But true is an expression isnt it into contrast to 'true'.
What i mean is that there should be a difference between "true" and "'true'"

It all depends on context and how it's used:  true by itself, is a boolean.  "true", 'true', and "'true'" are all strings in this context because they are attributes and the $parse service expects an expression.
Here's what we are doing.
The thing to remember is this attribute was added to allow people to programmatically control whether or not a popover or tooltip would display.  Even if we allowed the user to hard-code a boolean true value, there's no way to change it - at least, not very easily.
What problem are you trying to solve whereby you want to just put the string value of a boolean in there and have it magically work?

icfantv, perhaps, documentation should be more clear. All it says here https://angular-ui.github.io/bootstrap/ is "popover-is-open (Default: false) - Whether to show the popover." So yes, people assume that by passing "true", it will work. Thanks.

@icfantv, but isn't it the same as passing "true"? Adding $scope.openOnLoad = true; in the controller and then popover-is-open="openOnLoad" in the view doesn't make the popover show on page load. The effect is exactly the same as popover-is-open="true". Thank you.

It's said on https://angular-ui.github.io/bootstrap/ "For any non-supported value, the trigger will be used to both show and hide the popover. Using the 'none' trigger will disable the internal trigger(s), one can then use the popover-is-open attribute exclusively to show and hide the popover.", but adding popover-trigger="none" to the above code doesn't help as well. Popover just doesn't get displayed at all.

@nadyav, I'm on mobile at the moment.  Can you please file a complete and new issue documenting the issue you think is a bug, complete with a minimally wor minting plunker and we will investigate.  Please make sure you adhere to the issue template fully and use the latest versions of the requisite libraries in your reproduction.  Also please link this issue in your new one. thanks.

@icfantv, I have created a new issue here https://github.com/angular-ui/bootstrap/issues/5773. Perhaps, there is no bug, and I'm using settings incorrectly, but any help is highly appreciated. Thank you very much in advance.


Removed GetUrlWithoutQuery() and GetUrlAuthorityWithScheme() from Azure::Core::Url and added GetScheme().

Fixes https://github.com/Azure/azure-sdk-for-cpp/issues/2040

/azp run cpp - storage

/azp run cpp - keyvault


Triangulation

What is triangulation algorithm using in Satin?

its a custom one I wrote from scratch. Its modified ear clipping and handles holes.


Implement a heartbeat mechanism to keep idle connections alive

Describe the bug
For Kubernetes clusters hosted on Google Kubernetes Engine, hereby referred to as GKE, the backend service timeout is 30 seconds by default. As a result, any WebSocket connection that idles will be automatically closed after 30 seconds, forcing a reconnect. There are two ways to resolve this:

As a workaround, increase the backend service timeout.
 The front-end is already sending a ping periodically, so a PR to address this could just update the server accordingly. But it's probably better for the server to send the ping so that it can clean up stale connections when clients fail to send a pong back after a certain amount of pings and/or time.

This is encountered commonly enough for WebSocket apps deployed to Kubernetes clusters that IBM has documented the issue here. I can confirm myself that I ran into this issue for an unrelated project using a WebSocket server deployed to AWS' managed Kubernetes service and that a heartbeat mechanism will fix this issue for sure. Happy to open a PR if you're willing to accept it.
See the following output for an example of what's happening:
│ 2022-04-20T04:53:54.976301Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:53:54.977463Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:53:55.020683Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:54:24.979744Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:54:24.979798Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T04:54:59.116038Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:54:59.118349Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:54:59.165173Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:55:29.120557Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:55:29.120597Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T04:55:31.192008Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:55:31.193457Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:55:31.236369Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:56:01.196246Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:56:01.196298Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T04:56:35.329223Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:56:35.331623Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:56:35.387500Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:57:05.331969Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:57:05.332018Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T04:57:07.395933Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:57:07.397254Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:57:07.448145Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:57:37.398760Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:57:37.398831Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T04:58:11.534466Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:58:11.536506Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:58:11.589494Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:58:41.537675Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:58:41.537715Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T04:58:43.600252Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:58:43.601801Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:58:43.643807Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:59:13.602861Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:59:13.602899Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T04:59:15.675848Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T04:59:15.677216Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T04:59:15.728389Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T04:59:45.679293Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T04:59:45.679330Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T05:00:19.832378Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T05:00:19.834768Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T05:00:19.886100Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T05:00:49.835859Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T05:00:49.835904Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T05:03:00.212018Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T05:03:00.214576Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T05:03:00.256336Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T05:03:30.214772Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T05:03:30.214846Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T05:03:32.278332Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T05:03:32.279668Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T05:03:32.332569Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T05:04:02.282700Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T05:04:02.282745Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST                                                                                │
│ 2022-04-20T05:04:04.350007Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Enter room_id=FAST                                                                                │
│ 2022-04-20T05:04:04.351252Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] New websocket connection room_id=FAST                                                                                │
│ 2022-04-20T05:04:04.396989Z  info [bsocket_handler:mesh] [RFWmhiHJ0teOp8uuEkUTv7] Got clients: map[RFWmhiHJ0teOp8uuEkUTv7:Daniel Vu] room_id=FAST                                                                                │
│ 2022-04-20T05:04:34.353063Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Remove room_id=FAST                                                                                │
│ 2022-04-20T05:04:34.353103Z  info [        main:mux:wss] [RFWmhiHJ0teOp8uuEkUTv7] Exit room_id=FAST

Bug Report Checklist
n/a
Steps To Reproduce
Deploy a Kubernetes cluster to GKE using the example manifests in this repo. After doing so, join a room as the sole participant and leave the browser tab open for a few minutes.
Expected behavior
For a WebSocket connection to a GKE-hosted peer-calls pod, said connection should not be closed automatically after 30 seconds if idle.
Screenshots

Additional context
Helpful links explaining the need for a heartbeat mechanism:

https://stackoverflow.com/a/46112000
https://stackoverflow.com/a/35826016
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#pings_and_pongs_the_heartbeat_of_websockets

I think implementing 2) is probably the right direction here, and given I've had a lot of experience myself with Websockets and Go of late I might be able to help with this... 🤔

@danielxvu Thanks for reporting this. (2) makes sense to me as well. Can you take a look at #267 and see if that works for you?

@jeremija Will do, thanks for getting around to this!

I'm testing this today, will report back shortly with the results.

@jeremija Unfortunately something is still causing the WebSocket connection to be closed periodically. I do see the ping-pong happening as you can see from the following screenshot:

But as you can see from the following server-side logs, the connection keeps re-initializing.
2022-05-12T00:30:30.527448Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:30.528149Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:30.528614Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:30.557304Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:30.558400Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:30.559309Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:30.605086Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:30.625493Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:30.688417Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:30.745391Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:30.784003Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:44.372392Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Remove room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:30:44.372424Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Exit room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:30:46.459361Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Enter room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:30:46.459416Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] New websocket connection room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:30:46.500015Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Got clients: map[8fq82rV4RhLLIJ5uPOjfO1:Daniel Vu LiX0ngMVYphU2AzbgL1G11:wally] room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:30:46.584771Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:46.585402Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:46.585860Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:46.616279Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:46.617586Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:46.618042Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:46.662632Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:46.683157Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:46.741617Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:30:46.800747Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:30:46.839358Z  info [bsocket_handler:mesh] [LiX0ngMVYphU2AzbgL1G11] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=8fq82rV4RhLLIJ5uPOjfO1
2022-05-12T00:31:00.430260Z  info [        main:mux:wss] [LiX0ngMVYphU2AzbgL1G11] Remove room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:00.430306Z  info [        main:mux:wss] [LiX0ngMVYphU2AzbgL1G11] Exit room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:02.653013Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:02.653716Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:02.654270Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:02.707912Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:02.788184Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:02.883213Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:16.461173Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Remove room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:16.461213Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Exit room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:18.525423Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Enter room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:18.526747Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] New websocket connection room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:18.572961Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Got clients: map[8fq82rV4RhLLIJ5uPOjfO1:Daniel Vu LiX0ngMVYphU2AzbgL1G11:wally] room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:18.644728Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:18.645771Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:18.647281Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:18.738470Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:18.845429Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:34.715724Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:34.716613Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:34.717217Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:34.765578Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:34.830200Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:34.929329Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:48.527380Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Remove room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:48.527437Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Exit room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:50.605236Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] Enter room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:50.607233Z  info [        main:mux:wss] [8fq82rV4RhLLIJ5uPOjfO1] New websocket connection room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:50.649907Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Got clients: map[8fq82rV4RhLLIJ5uPOjfO1:Daniel Vu LiX0ngMVYphU2AzbgL1G11:wally] room_id=jPrCuNJL5cPEHYE9HDiUV6
2022-05-12T00:31:50.727108Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:50.728104Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:50.728582Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:50.824101Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11
2022-05-12T00:31:50.928306Z  info [bsocket_handler:mesh] [8fq82rV4RhLLIJ5uPOjfO1] Send signal to room_id=jPrCuNJL5cPEHYE9HDiUV6 target_client_id=LiX0ngMVYphU2AzbgL1G11

Here are the client-side logs:
InsertableStreams worker initialized https://peercalls.example.net/call/jPrCuNJL5cPEHYE9HDiUV6
audio.worklet.js:1 VUMeter initiated
index.js?v4.1.2-1-g7833718-dirty:2 play rejected AbortError
jPrCuNJL5cPEHYE9HDiUV6:1 Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause(). https://goo.gl/LdLk22

@jeremija I'm wondering if GKE wants us to set a value no matter what for the backend service timeout for whenever an HTTP connection gets upgraded to a WebSocket. The docs say:

If you are using WebSockets, the backend service timeout should be set to the maximum duration of a WebSocket, idle or active.

I tested increasing the timeout on master and doing so did resolve the issue. But I've deployed GKE LoadBalancer services for other WebSocket app deployments before and didn't have to increase the backend service timeout of 30 seconds on such occasions. So I'm wondering if the timeout increase is just a workaround and not actually addressing an underlying issue.
That being said, I think #267 could still be needed for Amazon EKS or IBM clusters and thus worth having regardless of whether it fixes this specific GKE issue.

@danielxvu we had the same problem. We solved it by using https://www.twilio.com/stun-turn.


Mark backendHubAccess @internal

why are we marking this internal? this will affect / break the @itwins/imodels-* pkgs
cc @robertas-kerpys @austeja-bentley

I think we only break them if we follow through implementing something described in below issue.
https://github.com/iTwin/itwinjs-backlog/issues/601
Technically they could still use the type even if it was marked internal I believe.
The main idea behind being marked internal is that we don't want 3rd party consumers of itwinjs (besides imodels-*) to call the functions in this interface explicitly. Any calls of this interface should most likely be as part of some other function within itwinjs itself. I agree though that it feels strange, especially if we want to eventually end up somewhere like https://github.com/iTwin/itwinjs-backlog/issues/601 describes.

Another problem: the docs build fails:
Add delta doc links: 4.603s
BWC Markdown: 2.582s
Invalid Link: "BackendHubAccess.createNewIModel" in file "changehistory/3.0.0"
Invalid Link: "BackendHubAccess.downloadChangeset" in file "changehistory/3.3.0"
Invalid Link: "BackendHubAccess.downloadChangesets" in file "changehistory/3.3.0"
Invalid Link: "BackendHubAccess.createNewIModel" in file "learning/imodelhub/permissions"
Invalid Link: "BackendHubAccess.deleteIModel" in file "learning/imodelhub/permissions"
Invalid Link: "BackendHubAccess.createNewIModel" in file "learning/imodelhub/imodels/createimodel"
Invalid Link: "IModelHost.hubAccess" in file "learning/imodelhub/imodels/createimodel"
One or more invalid links found.
D:\vsts_b\3\itwinjs-core\node_modules@bentley\bemetalsmith\lib\processDocs.js:309
throw err
We could probably get rid of the links in some cases, but I would think we'd want to atleast update pages like this: https://www.itwinjs.org/learning/imodelhub/imodels/createimodel/

@nick4598 you can keep the interface itself public while making the instances of it (e.g., IModelHost.hubAccess) internal, no?
Then the @itwin/imodel-* packages would have stability guarantees around the interfaces they are implementing.

might want to make nextversion.md comment?

@nick4598, do we have an example for how to set up IModelHost with hubAccess now @internal? I see GPB is still using this attribute to pass BackendHubAccess instance: https://github.com/iTwin/imodel-access-backend/blob/c97b0a856db73a3c4f1215b74224f1a40c6e7ac7/src/GeneralPurposeImodeljsBackend.ts#L166C72-L170.

no, this is correct. GPB should be allowed to use @internal apis.


Support appRoleAssignedTo on ServicePrincipal objects

Feature Request
I would like to view the app role assignments of a given service principal. This is supported by the Microsoft Graph as well as the Azure Graph with the list app role assignments API.
E.g. GET https://graph.windows.net/<tenant id>/servicePrincipals/<service principal id>/appRoleAssignedTo , which returns a list of AppRoleAssignment objects.
I am not finding any references to this in the codebase, is it supported?

Hi @jasonoxley-cai thanks for this issue!
And unfortunately the ms-graph API will not be included in this SDK. Now we do not have any official go SDK released for msgraph, but there are some community made SDK for msgraph for example this and this.
Given the above reason, I am closing this issue, hope you would not mind. Thanks