Connection Error

Hello, why do I get an error when running the front-end, I use --frontend-only, Are there any solutions? I can't find any code that makes the call.

Are you running the backend separately? The app needs the backend to be up in order to run. If you're doing --frontend-only you need to set the api_url within rxconfig.py to point to your backend.

I am not doing --frontend-only but still get

Possibly this could be because I run it via ssh -L 8000:localhost:8000  $my_serve_ip


MultiLanguageRecognizer for Bot Composer

Is your feature request related to a problem? Please describe.
I don't know if its possible yet but I have two LUIS apps for the two languages my bot should support. In a proof of concept I used MultiLanguageRecognizer  from botbuilder dotnet to switch between dutch and english recognizers. I want to do this in with Bot Composer but I believe this is not possible.
Describe the solution you'd like
The preferred solution for me would be a new card where I can provide the settings for my multiple luis apps. Which should use MultiLanguageRecognizer. The LUIS recognizer will switch based upon the locale (e.g.: 'nl-NL' or 'en-US').
Describe alternatives you've considered
I could make multiple Bot Composer applications but I prefer to keep it all in one application.
Additional context
I could make a mockup if needed.

Hi @GewoonMaarten, thank you for the issue.
We don't (yet) support the ability to apply the MultiLanguageRecognizer for Adaptive Dialogs, but this is on our roadmap.

I'd also be super interested in creating multilingual bots.
But what I also would like is create non-english LUIS apps. Currently within Composer I can only create a westus LUIS app with en-us as default language.
Any information if this will be supported soon @cwhitten?

@cwhitten Thanks for the reply. So I guess I have to wait a while. What is a good work around? Should I create 2 composer bots or can create some custom routing between 2 .dialog files?

Hello @GewoonMaarten & @stephanbisser. We're hopeful this feature is implemented in one of our upcoming releases (May 2020 or August 2020).

We are tracking this feature in #2394


Meter resets

I am attempting to implement a meter reset, according to the data sheet this used a function code of 0x0e or 14, I was wondering how I can apply this function code using this software, as this isn't on the list of standard functions that have a button in the UI.

The underlying modbus library used by this tool doesn't support FC 14


Fixed instructions for subscription mapping

When using the sample code in the readme, the parameter for subscription mapping would throw an error for not being required. Looked into the module and found the variable was incorrect, was es_subscription_ids_map and needed to be subscription_id_overrides as the map is a local and not a variable.

Great catch, thank you


Can only select first 5 items in TabBar, get exception on 6th and further.

Steps to Reproduce
I have a scrollable TabBar with 11 elements. The TabBar shows the correct text for all the elements, but only the first 5 tabs are selectable, when I tap the 6th tab or further I get an exception.
Logs
Launching lib/main.dart on iPhone 6 in debug mode...
Running Xcode clean...                                       3.8s
Starting Xcode build...
 ├─Assembling Flutter resources...                   10.1s
 └─Compiling, linking and signing...                 16.4s
Xcode build done                                            31.9s
Syncing files to device iPhone 6...                          3.7s

🔥  To hot reload your app on the fly, press "r". To restart the app entirely, press "R".
An Observatory debugger and profiler on iPhone 6 is available at: http://<IP_ADDRESS>:8100/
For a more detailed help message, press "h". To quit, press "q".
══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following assertion was thrown while handling a gesture:
'package:flutter/src/material/tab_controller.dart': Failed assertion: line 111 pos 12: 'value >= 0
&& (value < length || length == 0)': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new

When the exception was thrown, this was the stack:
#2      TabController._changeIndex (package:flutter/src/material/tab_controller.dart:111:12)
#3      TabController.animateTo (package:flutter/src/material/tab_controller.dart:163:5)
#4      _TabBarState._handleTap (package:flutter/src/material/tabs.dart:865:17)
#5      _TabBarState.build.<anonymous closure> (package:flutter/src/material/tabs.dart:940:21)
#6      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:478:14)
#7      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:530:30)
#8      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
#9      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:161:9)
#10     TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:123:7)
#11     GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
#12     BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:147:20)
#13     BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22)
#14     BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7)
#15     BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7)
#16     BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7)
#17     _invoke1 (file:///b/build/slave/Mac_Engine/build/src/flutter/lib/ui/hooks.dart:134)
#18     _dispatchPointerDataPacket (file:///b/build/slave/Mac_Engine/build/src/flutter/lib/ui/hooks.dart:91)
(elided 2 frames from class _AssertionError)

Handler: onTap
Recognizer:
TapGestureRecognizer#1dc75(debugOwner: GestureDetector, state: ready, won arena, finalPosition:
Offset(270.0, 149.5), sent tap down)

Analyzing /Users/luisharo/IdeaProjects/sch_test...
No issues found!
Ran in 8.8s

Flutter Doctor
[✓] Flutter (Channel beta, v0.2.3, on Mac OS X 10.13.4 17E199, locale en-US)
• Flutter version 0.2.3 at /Users/luisharo/flutter
• Framework revision 5a58b36e36 (3 weeks ago), 2018-03-13 13:20:13 -0700
• Engine revision e61bb9ac3a
• Dart version 2.0.0-dev.35.flutter-290c576264
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
• Android SDK at /Users/luisharo/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-27, build-tools 27.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_152-release-915-b08)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 9.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.3, Build version 9E145
• ios-deploy 1.9.2
• CocoaPods version 1.4.0
[✓] Android Studio (version 3.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)
[✓] IntelliJ IDEA Community Edition (version 2018.1)
• IntelliJ at /Applications/IntelliJ IDEA CE.app
• Flutter plugin version 23.1.3
• Dart plugin version 181.4203.498
[✓] Connected devices (2 available)
• Android SDK built for x86 • emulator-5554                        • android-x86 • Android 8.1.0 (API 27) (emulator)
• iPhone 6                  • B41B74EE-350C-4475-86D2-4306EE7B3ABF • ios         • iOS 11.3 (simulator)
• No issues found!

Could you provide a sample app that demonstrates this problem?

I found the problem. I was creating the TabController with a length of 5, so the length in the controller and the amount of tabs created wasn't matching.

This sounds like the sort of thing we should have caught earlier. Please leave the bug open and thanks for the report!

@all Most of the times, it was happening because of hot reload. Close the app and build it again. This should be resolved. Seems silly, I know :-) But trust me.


Link tooltip

Closes #67

Is this for #62 or #67?

Is this for #62 or #67?

Right, #67.
I make this PR to explore a way to implement this, but I conclude this disturb and is annoyed and there is no way to hidden the default one.
So, I think it is better to not go forward with this.


Wsk object in tests doesn't permit for overriding CLI localtion

Tests from the CLI repo (and perhaps others) should be more explicit in which CLI they are using - otherwise, a newly built CLI from the CLI repo doesn't get tested as expected unless actually installed in this repo's checkout. This is prone to error.

This is addressed by #3741 which allows for the CLI path to be overriden as needed now.


Bootstrap with Bucket source solution with flux_install deprecated

Our setup is kind of special in that we don't want to sync with GitRepo at all and instead we as Bucket as the sole source.
Therefore in our case, the endorsed bootstrap process doesn't make much sense because it doesn't support bootstrap with Bucket.
Is there any recommended way to install flux controllers with terraform? flux_install sounds like a good fit for our case, but seems it's going to be deprecated.
Appreciate any advice in advance :)

For install only, you can use the Terraform Helm provided. Docs here: https://registry.terraform.io/providers/fluxcd/flux/latest/docs/guides/install-helm-release


Stuck on Loading

Installed today. It is stuck on Loading. Reduced the delay interval down to 120 seconds but still no luck,

Did you run npm install in the module folder? Are there any errors in the developer console? (shift_ctrl_i)

I did run the npm install. No errors were found in the developer console.

which language have you selected to use?  Can you send me your config?

I have changed the source of the Spanish words to a more stable source.  Please do a git pull again. Spanish should work and be more stable going forward.

@hrjmsh Can you please advise if this has worked for you and if the issue can be closed?
Thanks

Yes, it has worked. Thank you,


Add Reactotron to base with global switch

[x] Issue does not already exist
Identify exactly what aspect your issue is about

[x] ignite base application
[ ] ignite the cli
[ ] ignite generated code

Let's add Steve's excellent developer library Reactotron

completed by #77


Linter reporting flow types as undefined

I just upgraded babel-eslint to 3.1.15 and babel to 5.5.6.
It appears that babel-eslint no longer ignores flow types. I'm getting 'no-undef' and 'camelcase' errors for all of the types throughout my codebase.
I'd post console output, but I can't imagine how it would be helpful to you.
Any ideas on how to move forward? Are any of you seeing this behavior? My co-workers are reporting the same thing on their machines.

It's correctly linting flow types, why are you expecting them to be ignored?

Sorry, here's a contrived example:
export function example(course: Course): boolean {
  return !isFantastic(course)
}

eslint throws the error: error "Course" is not defined, as if it were an undefined variable. Really, it's a flow type that is defined in an external "types" file.
Does that make more sense?

Very cool, doing some more testing and I see now that babel-eslint will actually inform us when a flow type is undefined, which is what you said above, but I didn't understand, @sebmck.
How do I inform babel-eslint of my types that are defined in external files?
Also, I get the 'no-undef' error on functions that return ReactElement, does that have to do with eslint-plugin-react?

@murphyrandle yeah we added support for flow types.
I think there's two ways to solve the external files. One is to import the types at the top like import type Course from './external-file';. The other is to define globals in your .eslintrc? ESLint also has environements with "env": node that import pre-defined globals.
Yeah if you are using react/jsx and are getting errors, our current recommendation is to use the plugin you mentioned.

okay, I'll take a look at importing types, thanks @hzoo.
Yes, here's an example of the react error:
var React = require('react')

module.exports = React.createClass({
  displayName: 'Test',
  render(): ReactElement {
    return (

    )
  }
})

example.jsx
  5:12  error  "ReactElement" is not defined  no-undef

✖ 1 problem (1 error, 0 warnings)

Yeah for that you can just add it to your globals.
If ReactElement is part of the react package then you could do import type {React} from 'react'; but not sure if that works.

Okay, for now I'm defining them as globals. Thanks, @hzoo.

since flow 0.22 you need to import ReactElement with
import { Element } from 'react';


Specify on which node you should run upgrade

File: ee/dtr/admin/upgrade.md
I saw new users getting confused about on which node the upgrade command should run.  It should no matter because UCP knows which worker nodes has replica, but not specifying that on the step caused enough confusion for at least one person (and probably for many other customers)

PR #10139 submitted on 13-January-2020.

Not added to topic to clarify that DTR upgrade command can be run on any available node.


pythonPackages.distribute: init at 0.7.3

Motivation for this change
Somewhat hacky? Uses build-python-package-common.nix attrs.
Only built successfully on pythonPackages.
Things done

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

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] 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"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

Why would we want to have this old stuff in Nixpkgs? I'm closing this.


Provide compile errors from #[ast] macro

#[ast] attribute is not meaningful unless the type it's on is in a file which is processed by AST codegen.
Make macro raise an error/panic if the file path needs to be added to AST codegen, with an error that says what to do. This will help people do the right thing.

[x] Error on invalid arguments to generate_derive (#4766)
[ ] Error on usage of #[ast] attribute on types outside of ast_codegen's view

Or... could we prevent the problem you're pointing out by just banning defining/importing types with same names as #[ast] types or other types which appear in AST (e.g. ReferenceId)? That's not quite as satisfying a solution, but would be much simpler than implementing a full resolution algorithm.

Originally posted by @overlookmotel in https://github.com/oxc-project/backlog/issues/107#issuecomment-2335140500


[Microsoft Teams] Find Chat command fails to load

Extension
https://www.raycast.com/sven/microsoft-teams
Description
Instead of seeing the list of available chats, I'm greeted with the "Something went wrong" page.
This is the error that I copied:
TypeError: Cannot read properties of null (reading 'createdDateTime')

h5:findChat.tsx:34:25
Or:index.js:5:5486
    at ray-list
lt:index.js:23:19621

Steps To Reproduce

Follow the setup instructions in the readme, including the creation of the App registration in the Azure Portal, complete with the granting of the required permissions.
Open the Find Chat command and log in successfully
Continue to the Find Chat command

Current Behaviour
No response
Expected Behaviour
No response

Thanks for the report @pindab0ter. Are the other features of the extension (setting the presence) work?

I can confirm that setting my status does work.

Sorry for the long delay @pindab0ter, I was a bit busy. Can you please send a screenshot from your app registration's API permissions page in the Azure AD? I guess we have problems here with the permissions.
The page should look like this:

This is what I have:

That's everything in the list and a few other things as well.

Sounds good! Looking forward to trying it out!
I can try to run a development build if you like, to see if it fixes the issue.

Fixed this in pull request #6603
Unfortunately the find chat command still isn’t finding all chats. Working on this.

Thanks for the confirmation @pindab0ter


Parsing error when using dot notation in use directive.

Before You File a Bug Report Please Confirm You Have Done The Following...

[X] I'm using eslint-plugin-svelte. (*.svelte file linting does not work with the parser alone. You should also use eslint-plugin-svelte with it.)
[X] I'm sure the problem is a parser problem. (If you are not sure, search for the issue in eslint-plugin-svelte repo and open the issue in eslint-plugin-svelte repo if there is no solution.
[X] I have tried restarting my IDE and the issue persists.
[X] I have updated to the latest version of the packages.

What version of ESLint are you using?
8.28.0
What version of eslint-plugin-svelte and  svelte-eslint-parser are you using?

<EMAIL_ADDRESS><EMAIL_ADDRESS>
What did you do?

Configuration
<!-- Paste your configuration here -->

Playground minimal reproduction here.
Same example in svelte REPL to show this is valid svelte syntax: link
<script>
  function myaction(n) {};

  const myobj = { myaction };
</script>

<!-- works -->
<div use:myaction />

<!-- Parsing error: Expected JS identifier.ESLint(FATAL) -->
<div use:myobj.myaction />

What did you expect to happen?
Parsed without error.
What actually happened?
Error: Parsing error: Expected JS identifier.ESLint(FATAL)
Link to GitHub Repo with Minimal Reproducible Example
https://ota-meshi.github.io/eslint-plugin-svelte/playground/#eJxVjkELgkAQhf/K5EkPm3ezwIMdwkNg0MWLraNM6KzsrlKI/721wuj2Zt7j45s8qSr0Ii/eCAFXbKXqEKwCNC2xFX07NMTCjNhaBCEOBcdGauqtSwD1wNKSYuie5Tv4HMA0F7yUUrGxrlG3O+xhWjcw7xwlXDHuqGiEwWC0TsLPf5E6l9oQN4BaKx1B+uhRWqzglANVyJZqQr1N88z5+sfkkmTBV/RHdQrbP7Y3vwCISlaj
Additional comments
Use case: HeadlessUI library

Thank you for posting issue.
I didn't know we could use member expressions for names. I will check and fix other directives as well.


RFC DataObject::RelationName() should return null for has_ones, not blank object

At the moment we end up with a lot of code around the codebase that looks like the below:
$file = File::get()->byID($fileID);
$parent = $file->Parent();
if ($parent && $parent->exists()) {
	// do something
}

This is due to the legacy behaviour of has_one and belongs_to returning blank objects when RelationID is empty. This is inconsistent with other ORM methods such as DataList::first() / ::last() which return nulls instead of blank objects, as well as Hierarchy::getParent
This also leads to odd behaviour code written around $object->Parent() ignores checks for empty return types, and mistakenly treats empty objects as non-empty, resulting in potentially buggy logic.
This logic should be simplified so that DataObject::getComponent() just returns null in any case a foreign key relation has 0.

see https://github.com/silverstripe/silverstripe-framework/issues/5452 - probably the inverse of this suggestions :P

Moving to https://github.com/silverstripe/silverstripe-framework/issues/5452


Add Scan to Database

If def scan(prefix: Optional[String]): Iterator[String] is added to Database, then you can do efficient filtration queries on keys. For example, SQL like queries of the form x LIKE 'abc%q' would translate to scan(r'abc').filter(_.matches('abc.*q')).  You would also be to iterate over the key-space using scan(), which could be useful for implementing backfill/migration services on top of a Database.

I think it would be difficult to properly integrate scans into the execution runtime, because the runtime doesn't generally know if two keys are adjacent (ie. it is very difficult to determine if a scan is more efficient than a get, because it is very difficult to know how many keys are between them).
It's possible that in future we could have another interface for database services like migration and backfill which would require the underlying database to implement scan.


Message Class to Interface conversion

Contains the Message.lvclass file as an interface instead of a class and supporting scripting modifications "Copy Class.vi" to support message making.
Same implementation as from https://github.com/illuminated-g/af-interface-msg and https://www.vipm.io/package/illuminatedg_lib_af_message_as_interface/

@niACS  do you approve this?

I did not.  But I am putting Casey forward as an authorized contributor.  I haven't reviewed the changes, and I'm not sure how to proceed at this point.  They're probably good, but I need to review with him.

@niACS ill start creating a contributor license agreement (CLA) for the AF since the one we have is icon editor specific.
this PR is approved based on Allens comment and since this is a sandbox branch.


added "hashChangeStart" and "hashChangeComplete" events

This PR adds events for when there is a hash-only change in the URL. This is needed because window.addEventListener('hashchange', ...) does not work with next.js because it is using pushState.

not sure how adding three lines decreased test coverage by 6.6%... I'm happy to add tests, it just wasn't obvious where to do so for this change.


the lazy routing works well in most situations, but one failed

🐞 Bug report
Command (mark with an x)

- [ ] new
- [ ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc

Is this a regression?

 Yes, the previous version in which this bug was not present was: ....
I use lazy routing in many components, and they all work well. However, in the management component, the terminal says it cannot find the management component. Only in this case.
Description
 A clear and concise description of the problem...
I definitely have a routing path and the management component but cannot go to the right path.
🔬 Minimal Reproduction

Restart and check my path for many times.
Check both the app-routing.modules.ts and along with other components using the lazy loading.
🔥 Exception or Error
the error message:
core.js:12501 ERROR Error: Uncaught (in promise): Error: Cannot find module './management/management.module'
Error: Cannot find module './management/management.module'
    at $_lazy_route_resource lazy namespace object:23
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
    at Object.onInvoke (core.js:14060)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)
    at zone.js:872
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:14051)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at resolvePromise (zone.js:814)
    at resolvePromise (zone.js:771)
    at zone.js:873
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
    at Object.onInvokeTask (core.js:14051)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
    at drainMicroTaskQueue (zone.js:595)
defaultErrorLogger @ core.js:12501
<EMAIL_ADDRESS>@ core.js:12549
next @ core.js:14528
schedulerFn @ core.js:10238
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.__tryOrUnsub @ Subscriber.js:196
push../node_modules/rxjs/_esm5/internal/Subscriber.js.SafeSubscriber.next @ Subscriber.js:134
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber._next @ Subscriber.js:77
push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next @ Subscriber.js:54
push../node_modules/rxjs/_esm5/internal/Subject.js.Subject.next @ Subject.js:47
<EMAIL_ADDRESS>@ core.js:10222
(anonymous) @ core.js:14082
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke @ zone.js:388
push../node_modules/zone.js/dist/zone.js.Zone.run @ zone.js:138
<EMAIL_ADDRESS>@ core.js:14019
onHandleError @ core.js:14082
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.handleError @ zone.js:392
push../node_modules/zone.js/dist/zone.js.Zone.runGuarded @ zone.js:154
_loop_1 @ zone.js:677
api.microtaskDrainDone @ zone.js:686
drainMicroTaskQueue @ zone.js:602
Promise.then (async)
scheduleMicroTask @ zone.js:578
push../node_modules/zone.js/dist/zone.js.ZoneDelegate.scheduleTask @ zone.js:410
push../node_modules/zone.js/dist/zone.js.Zone.scheduleTask @ zone.js:232
push../node_modules/zone.js/dist/zone.js.Zone.scheduleMicroTask @ zone.js:252
scheduleResolveOrReject @ zone.js:862
ZoneAwarePromise.then @ zone.js:962
<EMAIL_ADDRESS>@ core.js:14560
./src/main.ts @ main.ts:11
__webpack_require__ @ bootstrap:83
0 @ main.ts:12
__webpack_require__ @ bootstrap:83
checkDeferredModules @ bootstrap:45
webpackJsonpCallback @ bootstrap:32
(anonymous) @ main.js:1

My code in app-routing.modules.ts:
const routes: Routes = [
  { path: 'dashboard',  loadChildren: './dashboard/dashboard.module#DashboardModule' },
  { path: 'course', loadChildren: './course/course.module#CourseModule' },
  { path: 'management', loadChildren: './management/management.module#ManagementModule' },
  { path: 'user', loadChildren: './user/user.module#UserModule'},
  { path: '', component: WelcomeComponent },
  { path: '**', component: PageNotFoundComponent}
];

My code in management-routing.ts:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { ManagementDetailComponent } from './management-detail/management-detail.component';

const routes: Routes = [
  { path: '', component: ManagementDetailComponent },
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class ManagementRoutingModule { }

🌍 Your Environment
Angular CLI: 7.3.8
Node: 10.15.3
OS: win32 x64
Angular:
...
Package                      Version
@angular-devkit/architect    0.13.8
@angular-devkit/core         7.3.8
@angular-devkit/schematics   7.3.8
@schematics/angular          7.3.8
@schematics/update           0.13.8
rxjs                         6.3.3
typescript                   3.2.4
Anything else relevant?

This seems like a bug but we'll need to look at a reproduction to find and fix the problem. Can you setup a minimal repro please?
You can read here why this is needed. A good way to make a minimal repro is to create a new app via ng new repro-app and adding the minimum possible code to show the problem. Then you can push this repository to github and link it here.
This might be related to your directory structure so its really important to get an accurate repro to diagnose this.

https://github.com/melodybabee/repro-angular-app
I have uploaded the client-side code and the problem happens on src/app/app-routing.module.ts  line 9, that I can not get the page of localhost:4200/management, together with the URL beginning with localhost:4200/management.

i think it because you use incorrect file name
i clone your repo and can not build --prod
i found that  management.modules.ts has an extra s after module, so just rename it to management.module.ts and try agian

I followed these steps (with :
npm i -g<EMAIL_ADDRESS>git clone https://github.com/melodybabee/repro-angular-app
cd repro-angular-app
npm i
ng update @angular/cli @angular/core
ng serve

At this point I saw this build error:
kamik@RED-X1C6 MINGW64 /d/sandbox/repro-angular-app (master)
$ ng serve

Date: 2019-05-29T10:36:31.901Z
Hash: 9d4ea273349141724e85
Time: 8628ms
chunk {main} main.js, main.js.map (main) 1.88 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 145 kB [initial] [rendered]
chunk {polyfills-es5} polyfills-es5.js, polyfills-es5.js.map (polyfills-es5) 462 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.08 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 16.7 kB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 327 kB [initial] [rendered]

ERROR in src/app/app-routing.module.ts(9,52): error TS2307: Cannot find module './management/management.module'.

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
i ｢wdm｣: Failed to compile.

This looks correct and shows the problem at build time: Cannot find module './management/management.module'. Like @mix5003 said, the filename is incorrect.
But the error log in @melodybabee's original issue is difference. It is a runtime error, in the browser. I don't see that in this repository. Is something missing in the repro perhaps?

I renamed the management.module.ts document and it runs successfully. Thanks @mix5003 @filipesilva
The original error issue I mentioned  is from chrome console. The error log in the browser side is the same as @filipesilva said.

If you saw the same error on the build then I think this is working as expected.


Chosen change() method issue with Image-Select

I am using chosen together with Image-Select the following way:
                $select .html(html).chosen({width: "100%"})
                .change(function(evt, params){
                    vars.setValue($(this).val());
                })
                .on('chosen:showing_dropdown', function(evt, chosen) {
                    vars.container.parents('.panel').css('overflow','visible');
                });

After adding Image-Select I get the following error:

Uncaught TypeError: Cannot read property 'change' of undefined

I have tested it without using change() method and it works well...
How to implement the change() method with Image-Select?

I fixed it... Nothing to do with Image-Select.
                $select .html(html).chosen({width: "100%"});

                $select .change(function(evt, params){
                    vars.setValue($(this).val());
                })
                .on('chosen:showing_dropdown', function(evt, chosen) {
                    vars.container.parents('.panel').css('overflow','visible');
                });

I reopened the issue because the image is shown only inside chosen-single  but not chosen-drop

Any suggestions?

At the end my chosen.jquery.min.js wasn't up to date...


add sitemap.xml

add the gatsby plugin sitemap

Closed with: https://github.com/spences10/the-localhost-blog/commit/c3463e18201efaf41893ae0bd5f7f644fae94488


Xgboost is not installing on aws instance on Linux

For bugs or installation issues, please provide the following information.
The more information you provide, the more easily we will be able to offer
help and advice.
Environment info
Operating System: Linux instance at aws
Compiler:
Package used (python/R/jvm/C++): Python2.7
xgboost version used: 0.60
If installing from source, please provide

The commit hash (git rev-parse HEAD)
Logs will be helpful (If logs are large, please upload as attachment).

If you are using jvm package, please

add [jvm-packages] in the title to make it quickly be identified
the gcc version and distribution

If you are using python package, please provide

The python version and distribution
The command to install xgboost if you are not installing from source

If you are using R package, please provide

The R sessionInfo()
The command to install xgboost if you are not installing from source

Steps to reproduce

Python2.7
anaconda2 - conda version 4.3.30

What have you tried?
1.pip install xgboost
2. conda install py-xgboost
And Many more commands but no use.
Xgboost_logs.txt

Did you sudo? Also what version of Linux are you using? I have worked with Ubuntu 14.04 and it worked out just fine. See this post:
https://oreki47.blog/2017/10/05/ec2-ml-environment-setup/


The type or namespace name 'GroundTruth' does not exist in the namespace 'Osi3' (are you missing an assembly reference?)

I tried building the .cs files from the .proto via grpc.. but the file contains many errors which i am unable to resolve.
.proto file is...

and the erros are..

code is...

how to resolve them? Thanks in Advance !!

You're not providing enough information. Please share all of your .proto files if you want us to help you - but this is most likely an error you have in your own files.

@nicolasnoble this is the proto file of the groundtruth which the error is being generated of. i am also including the imports but its not helping me out. let me know if anything else is needed.

solved.. adding all the .cs to the project.. thank you!!!


errors in return expressions

The syntax for return expressions is very limited. Below are two tiny examples.
Issue #8 has a bigger example where the choreography ends with an if/else. It wants to return a value in one branch (fine) and loop in the other branch (error).

[ ] return value ==> ProjectionError

  defmodule TestChor do
    defchor [Buyer, Seller] do
      Buyer.get_book_title() ~> Seller.(b)
      Seller.get_price("book:" <> b) ~> Buyer.(p)
      0 # ** (Chorex.ProjectionError) Unrecognized code: 0
    end
  end

[ ] function call ==> MatchError

  defmodule TestChor do
    def double(n), do: n + n

    defchor [Buyer, Seller] do
      Buyer.get_book_title() ~> Seller.(b)
      Seller.get_price("book:" <> b) ~> Buyer.(p)
      double(3) # ** (MatchError) no match of right hand side value: 3
    end
  end

Return values need to be tied to an actor; e.g.:
defchor [Buyer, Seller] do
  ...
  Seller.(0)
end

We should have some better syntax/better error messages around this though.


Take energy from container for repairs if needed

This Pull Request has been merged by GitConsensus.
Vote Totals

Yes
No
Abstain
Voters

3
0
0
3

Vote Breakdown

User
Yes
No
Abstain

tedivm
✔

dragoonreas
✔

TheRealMaxion
✔

Vote Results

Criteria
Result

Has Quorum
True

Has Votes
True


Export TLS env vars and volumes to index cleaner and rollover jobs

Fixes #592
Fixes #471
and imports the es.tls.* options into the index cleaner/rollover cronjobs. Currently this imports all Volumes/VolumeMounts in the spec as well to mount the certificates which might not be optimal if the user mounts other Persistent Volumes or similar to their Jaeger client.

@pavolloffay, @malz, what's the state of this PR?

Looks like there's a compilation failure:
pkg/cronjob/spark_dependencies.go:113:3: missing ',' before newline in composite literal
pkg/cronjob/spark_dependencies.go:116:6: expected '(', found getStorageEnvs

Looks like there's a compilation failure:
pkg/cronjob/spark_dependencies.go:113:3: missing ',' before newline in composite literal
pkg/cronjob/spark_dependencies.go:116:6: expected '(', found getStorageEnvs

must have been introduced during the last merge, my bad!

Done in https://github.com/jaegertracing/jaeger-operator/pull/758
@malz thanks for the contribution!


Token still sometimes null from getTokenFromRedirect()

Sorry. Please don't get a court order or something against me asking so many questions :)
I've basically exactly copied your example code for logging in a user by Facebook. Here it is:
	public function facebooklogin()
	{
		try
		{
			$token = Facebook::getTokenFromRedirect();

			if(!$token)
			{
				ob_start();
				var_dump(Input::all());
				$params = ob_get_contents();
				ob_end_clean();
				Log::error($params);
				return Redirect::to('/error')->with('error', '<!snip!> (Error 101)');
			}
            ...

At this point it hits that redirect and we're done. The error code was just so I knew at which point the error redirect happens. The log shows the redirect URL parameters look like this:
[2015-01-17 14:20:46] production.ERROR: array(2) {
  ["code"]=>
  string(323) "AQCHTNya-xzAc9eOgs7gD1RdgsG90Tgx_WqZvpTtoag99El8d27A7FsSKyUm6QfvU8eZcuQh6PPsselYemqqQ2dXHbPlP2gJknA949-75M5b1EXVaBJ7DgWymG6JHh6r9T7-STbVceTJqQNCSVTZ0NVBsn_aYTG852aMMFZS0fPgGli98X3hgzNdod4nZpJ4lBM2XOYtUPeyIsI780zP1lMy3wcxtmEeeHQVeC4LRWUkahqoOBfiQAawRDO27slChM3NdyIUvoj4JpINCv-RW-mw5IUe3RqruohlcXi9DoL34avGxoGwc7pUcFoW-SB6v14"
  ["state"]=>
  string(32) "611e655b35c625ea319b0c482a3810d5"
}

Which presumably means the token wasn't empty. Am I missing something? Other than a clue? Or is it a bug?
Final point: this has never happened to me when testing. It's happened to some people while testing, and (in what is probably a coincidence) they were using the built in Android browser on their phones.
Update: I logged the whole URL and there's nothing else to it; just code and state. Also, I assume this is correct, but this is the relevant part of the config:
'default_scope' => ['email'],
'default_redirect_uri' => '/facebook/login',

Hey @robertlagrant! No worries - ask away! :)
You are correct, if the callback URL is receiving a code and state, those are the two things needed to validate the response and request an access token. So it looks like it was successful.
You mentioned that it was working fine when you were testing it. Did you make your Facebook app live? By default it will be in development mode until you explicitly make it public under your app dashboard & "status & review".

Thanks :) Come to South Africa and we'll buy you a beer.
Yeah it's set to live, and various people I know (who aren't app admins) can register and use it successfully, on a variety of devices. However, some say they can't.
Some thoughts/observations:

The user hits the first page, which detects they aren't logged in, and shows the log in with Facebook link. They click it. Because of the code listed above, which redirects them away as soon as it doesn't find a $token, they hit the error screen. Then they try hitting refresh, and it logs them in. Mind blown.
Why is it redirecting them away at the if(!$token) point if those variables are set? Is there a way this can be falsey even if both parameters are there?
I've set my mobile and site URLs to be exactly the same in Facebook's app config. Just in case that could be a problem. Also tried getting rid of the mobile URL because why not :) I've also set the app domain now.

Is there any other info I can provide that could be relevant to finding the problem? It seems very odd.

Lol, we'll if I end up in South Africa sometime, I'll def try to hit you up! :)
Strange. How are you initially detecting if they are logged in or not? And how are you generating the log in link?

The view (simplified):
@if(Auth::check())
    ...
@else

@endif

Where the login route is specified like this:
routes.php:
Route::get('/login', array('uses' => 'LoginController@login','as' => 'login'));

LoginController.php:
public function login()
{
    if(Auth::check())     // just in case they visit this manually
    {
        return Redirect::route('user-profile');
    }
    else
    {
        return Redirect::to(Facebook::getLoginUrl());
    }
}

Since the Facebook login status and the login status of your Laravel app are different, you can't rely on the fact that those two statuses will be in sync. So Auth::check() might return true since they could still be logged in with Laravel but the access token from Facebook might have already expired. For a little more info on this, check out the "Managing The User's 'Logged In' State With The Web Framework" header in this Facebook login flow article.
For your particular case, is Facebook the only way you let users log in? If so, I'd base their logged-in status on whether or not they are logged into Facebook. This can be done most efficiently by using your existing code in tandem with the JavaScript SDK.

Ah okay,maybe that's it. Strange though that for some of these users I can delete their entry in the users table and they get the Log in with Facebook button, so they fail auth check, then they get the url back with state and code as logged in  my code, but it thinks $token is empty and sends them to the error page! Also when they hit refresh, they see the logged in screen, which also blows my mind.
Anyway. I can try the JS framework, though it seems weird that the two logged in states wouldn't line up without it.
They currently can only log in via facebook, but was thinking of adding a site-based login by just having a site login button as well as a log in with Facebook one if they failed auth check.

Just realised something, having read your very nice article - I'm storing the access token against the user in the database, which your article says not to do. This (broken record time) doesn't explain why a new user would get an error, but I wonder if it's causing some weird mismatch. Do I need to bother with saving it, or does the sample login code get a new one every time anyway? Or is that only for the new version of the API?

Yeah, there might be an issue with the login flow you've got going on. I just posted a response comment on my blog that is related to this issue, it might help you out a bit:

The important thing to know about the FacebookJavascriptLoginHelper is that it is not making any calls to the Graph API to obtain a new token. It is simply reading from the cookie that the JS SDK set on your site. So once a user is logged in with the JS SDK, PHP will be able to grab the access token from the cookie the JS SDK set using the FacebookJavascriptLoginHelper on the next page request.

I usually log a user in with the JS SDK and then redirect them with JS to a callback URL on my server that uses the FacebookJavascriptLoginHelper to grab the access token and exchange it for a long-lived access token. Then I save the long-lived access token in a PHP session and mark the user as "logged in" in my web framework.

That way in PHP I can just make calls to the Graph API using the access token I've stored in the PHP session.

In general you don't need to store the access token in the database unless you're planning on making calls on behalf of the user when they are not logged into your app (like a 3AM CRON job or something).
I like to store long-lived access tokens in a PHP session when the user is logged in. Every time they come back to the site they need to click the "login with Facebook" button again to go through the whole process of logging in with the JS SDK, redirecting to the callback URL that makes a long-lived access token & stores it in a session and marks the user as "logged in" in Laravel.
Hope that helps!

Thanks, yes that's where my thoughts are going as well. When you say PHP session, do you use a Laravel session instead when working with Laravel?
Also, do you know why (even with storing the token in the DB; I don't think it was ever used) that $token would return as falsy? It feels as though there's some bug behind that somewhere.

do you use a Laravel session instead when working with Laravel

I just referred to it as a "PHP session" to disambiguate from the FacebookSession class in the PHP SDK 4.0 which has nothing to do with PHP sessions. :) So you can just use the native Laravel session handler.

do you know why [...] $token would return as falsy?

The Facebook::getTokenFromRedirect() method is just a wrapper for the native PHP SDK's FacebookRedirectLoginHelper::getSessionFromRedirect(). The wrapper will convert the response (either a FacebookSession or null) into an instance of AccessToken or null.
The method will return null if a code param doesn't exist on the callback URL, or the state param is missing or is not equal to the CSRF value that was generated by the SDK (and stored in a session).
So without seeing more of your code, I could suggest troubleshooting:

There's a problem generating the CSRF value that is set in the state param.
There's a problem storing the state value in the session.

Hope that helps!

Hey hi,i was also suffering with same issue i solved it by modifying bit of got in function isValidRedirect()
and it worked for me
I dont know whether it is right way or not but it did the trick :)
Here is the code from facbookredirectloginhelper
protected function isValidRedirect()
{
$savedState = $this->loadState();
if (!$this->getCode() || !isset($_GET['state'])) {
return false;
}
$givenState = $_GET['state'];
if(isset($_GET['state'])){
$savedState = $givenState;
}
$savedLen = mb_strlen($savedState);
$givenLen = mb_strlen($givenState);
if ($savedLen !== $givenLen) {
return false;
}
$result = 0;
for ($i = 0; $i < $savedLen; $i++) {
$result |= ord($savedState[$i]) ^ ord($givenState[$i]);
}
return $result === 0;
}

Nice, thanks. I was wondering about modifying that function, but couldn't work out what was needed in time. I'll experiment at some point and give feedback :)


Azure machine images

Quote from https://github.com/iterative/cml/issues/162#issuecomment-792704409

Currently we are recreating from scratch the instance environment each time we run a continuous integration job on Azure, because (apparently) we can't share instances images with a wider audience through the Azure Marketplace without having the Microsoft Partner qualification. (?)
The current workaround implies significantly longer total job execution times due to the increased instance configuration times, so being able to publish prebuilt CML base images to the Azure Marketplace —as we're already doing for AWS machine images— could be a nice improvement for end users.

Dealt with as part of #196; no need of a separate issue unless we plan to publish markeplace images.


[#94] Domino Art Mod

Description
Work in progress for Domino Art mod #94
For a new Mod contribution, please include the issue number for the Mod proposal and check through the list below.
Looking for feedback on API (or whatever else may be appropriate)
Docstrings/typing mostly completed but haven't checked in Sphinx.  Only 1 or 2 classes will be exposed to user.
Typical use case

from gurobi_optimods.domino import Solver, draw

#load example
solver = Solver.from_example(backend="skimage")
# backends for pillow and opencv also available

solver.set_params(width=40, max_dots=9)
# target image (resized, grayscale) shown in matplotlib installed

# user decides width=40 is too coarse
solver.set_params(width=60, max_dots=9)
# target image (resized, grayscale) shown if matplotlib installed

# user decides width=60 is too fine
solver.set_params(width=50, max_dots=9)
# target image (resized, grayscale) shown if matplotlib installed

# user decides width=50 is just right.  Eats porridge.

solution = solver.find_optimal_placements(max_domino_sets=15)

# user is told minimum domino sets needs to be 20 in order for a feasible solution to exist

solution = solver.find_optimal_placements(max_domino_sets=20)

# user draws solution with black dots on white tiles (warning shown if matplotlib not installed)
# function returns numpy array but they don't want to store it
_ = draw(style="black_dots", solution=solution)

# user decides there is a bit of noise in image, increases domino sets to 30
solution = solver.find_optimal_placements(max_domino_sets=30)

# user draws solution with white dots on black tiles
_ = draw(style="white_dots", solution=solution)

#prints some "domino stats" around solution
solution.print_stats()

Checklist

Implementation:

[x] Implementation of the Mod in the gurobi_optimods installable package
[ ] Tests for the Mod implementation in tests/
[ ] Docstrings for public API, correctly linked using sphinx-autodoc

Documentation page:

[ ] Background and problem specification
[ ] Example of the input data format (use gurobi_optimods.datasets for loading data)
[ ] Runnable code example
[ ] Presentation of solutions
[ ] Included in the mod gallery and toctree

Have a nice day!

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


Update plan-connect-performance-factors.md

Adding a bullet regarding performance impact when changing a member of large groups.

@billmath

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

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

#sign-off


Having caching_sha2_password authentication issues with mysql 8.0.30

Everything works, in that I don't see any issues with trilogy when running with mysql_native_password auth but the moment I switch to caching_sha2_password things break down in weird ways.
I am trying to understand where it fails but I am still learning how this works and I am only seeing a packet error.
It seems to perform authentication and create a successful connection to the mysql server when switching the client over to caching_sha2_password but then it fails during packet parsing for some reason.
I can see in show processlist during the handshake that the user moves from unauthorized to the user name but then it fails on the client just as its about to call trilogy_auth_recv or maybe its calling it too often with the wrong packet sequence/payload and the server disconnects. I am still debugging the issue.
I am using a debug version of the mysql server version 8.0.30-debug and I was about to debug the server side to see if it was indeed closing the connection because it didn't like something from the client.
Is this a known issue with caching_sha2_password and trilogy?

@composerinteralia just pulled the latest, that doesn't seem to help. The error that I am seeing is TRILOGY_UNEXPECTED_PACKET

It seems like I'm able to reproduce this (or at least something like it). I pushed up a failing test and do see a TRILOGY_UNEXPECTED_PACKET error. Does this capture the problem you are having?

@composerinteralia that does reproduce the problem exactly.
created PR - https://github.com/github/trilogy/pull/28
This seems to fix the test but do look into it more detail as you might want to capture the payload that the server is sending, in this case it just seems to be the plugin information which we don't care about that much, for other schemes, such as FIDO it might be more detailed.

Thanks for digging into that! The tests aren't green, but the error has changed to trilogy_auth_recv: 1159 Got timeout reading communication packets, so that's something.

@composerinteralia it seems to fix the test suite for me for the mysql server version that I am using, but I have a very strange version of the mysql server, its 8.0.30-debug as it built from source in debug mode, it might be breaking on other versions.

Trilogy not support caching_sha2_password is a HUGE issue. MySQL 8.1.0 was released and 'mysql_native_password' is deprecated and will be removed in future version of MySQL. [ https://dev.mysql.com/doc/relnotes/mysql/8.1/en/news-8-1-0.html ]

Could be total red herring, but I wonder if the known missing trailing \0 in auth handshake is related?

I believe caching_sha2_password is the default with official docker image based MySQL installations, so Trilogy doesn't work in our staging/production environments either. This is a deal breaker for me (which is a shame because I've had "move to Trilogy" on my todo list for a while now) and I'm sure us too.

Not supporting caching_sha2_password is a show stopper for us.

Found a working solution:
ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';
ALTER USER 'yourusername'@'%' IDENTIFIED WITH mysql_native_password BY 'youpassword';

@composerinteralia This issue is over 1 year old. Is there a way that can be addressed any time soon? I would love to introduce trilogy to my organization but we do use caching_sha2_password and there is no way they will switch back to mysql_native_password.
All in All I wonder if Trilogy will really gain traction. Sounds like the release cycles are slowing down and big issues like this are sitting idle for a while..

Is there a way that can be addressed any time soon?

Somebody would need to implement caching_sha2_password. It's not something we are actively working on at GitHub right now.

Any tips on where the current mechanism is implemented in Trilogy? And where in the MySQL2 client library or docs you found out how to implement it? Any tips? I’m sure like a lot of others in the community this is a huge issue and we’d love to help, given some pointers in the right direction.

@andyjeffries
Oh I created a quick PR a while back to fix this ( see https://github.com/trilogy-libraries/trilogy/pull/28 ), the code in question is in client.c. Trilogy does not use the mysql client library, it implements the mysql protocol in C without using the mysql client library. The mysql client protocol is documented here - see MySQL Protocol. The specific details on the caching_sha2_password plugin are here Caching_sha2_password authentication and work in multiple phases.
The fix I have captures the servers auth more data packet - see Protocol::AuthMoreData -  which Caching_sha2_password doesn't use per se.
Since this is authentication related, that server packet - AuthMoreData- should be kept and looked at in more detail depending on the authentication provider and connection phase. A plugin such as FIDO may this packet so this needs to be handled on a per provider basis.
Feel free to use the PR - https://github.com/trilogy-libraries/trilogy/pull/28 - and/or create a new PR.
Note that those links above change, the mysql documentation changes the links with each release and so they might not work at a later date.

SSo @composerinteralia can someone approve/merge the PR @abdulchaudhrycoupa created? If you need more eyes on testing it, I'm happy to do that.

Just to clarify I lost a lot of time trying to figure out why a server was failing to authenticate because the error message is very confusing. You can reproduce this in ruby with
Trilogy.new(host: "<IP_ADDRESS>", port: 3306, username: "test", password: "password", read_timeout: 2)
#=> gems/trilogy-2.6.0/lib/trilogy.rb:16:in `_initialize': trilogy_auth_recv: TRILOGY_UNEXPECTED_PACKET (Trilogy::QueryError)

However you can login without a password if you don't have one set. I have a github workflow which I managed to get working with the following config
    services:
      mysql:
        image: mysql:8.0.28
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: true

Unfortunately we don't want to change our prod servers to use mysql_native_password so until this is fixed it's a dealbreaker for us. I opened #141 to help others know about this limitation for now in the README.

It's due to be the default in the next version of Rails, I've added an issue to the Rails repo to hopefully get eyes on blocking that change until this is solved. https://github.com/rails/rails/issues/50355

We (Shopify, GitHub, and Rails Core) are all aware of the requirement for caching_sha2_password. #28 is not sufficient to merge, I'm working on the rest of what needs to happen in Trilogy. There are multiple branches that need to be implemented, this is not a simple implementation. I also need to refactor how the sequencing works because it's not a great implementation currently.
The work will be done sometime in the new year, it's not going to be finished before that. We get that you all need this change, but it's going to take time.

That's great. It had felt (to me at least) that GitHub was the official builder of this and the only reply that's been obviously from GitHub staff said:
It's not something we are actively working on at GitHub right now.
-- https://github.com/trilogy-libraries/trilogy/issues/26#issuecomment-1799538694
As long as we know Rails Core is aware of it (before it becomes default) and someone's working on it (so the rest of us, particularly small teams, can use it), that's perfect! Thank you!

Yes, GitHub is not actively working on it. I don't work at GitHub.

Sorry maybe I confused things with what I wrote 🤣
I meant that it felt like they were the only large rails group that might be working on it (as I hadn't seen anyone from Shopify or Rails Core post to say that they were aware of it), and that the confirmation was that they weren't.
I'd certainly consider Shopify and Rails Core to be large groups, and wasn't aware it was on their minds (hence I posted an issue in Rails today). For comparison at my startup there's me and one other guy, and we don't have spare capacity to work on it (unless ABSOLUTELY NO ONE else can/is).
So your confirmation that you are working on it, and both Shopify and Rails Core are aware is absolutely perfect.

To be honest I didn't comment on this issue that I was working on it until now because I didn't want to get asked constantly about when it was going to be done.
The thing about open source (life?) is no one has spare capacity. It's just moving around of priorities and what feels most important right now. Currently I'm working on something else that's more important so while I have a branch started for this, I'm not working on it this week. Then I'm off for 2 weeks.
It's on the radar, it's being worked on, but this really isn't nearly as simple to implement as described on this issue.
I will post an update when the PR is ready.

I absolutely agree. For what it's worth, now I know it's "in hand" I definitely won't chase you, my concern was this would go out and be the default without it working.
It felt, for want of a better term, under the radar. And even though I don't have any spare time to contribute to much open source (outside of my own open source gem Flexirest), I would hate for our community have major issues if this went out as default and broke left right and centre. As you say it's priorities, and my own not-for-profit martial arts club takes up my spare time.
Anyway, good luck with it - if you want someone to try your work in other environments when you feel it's ready, feel free to tag me and I can help do that.
Enjoy your Christmas break! (and thanks for the comments back here, genuinely appreciated)

thanks for the update @eileencodes - agreed, this is a non trivial fix - closed PR #28 as I'm not convinced its safe for use - enjoy working on the fix - 😆

Any update on this?

Ok we have a PR ready https://github.com/trilogy-libraries/trilogy/pull/165. As noted earlier this is a non-trivial change so I'd appreciate if you only comment on the PR if you:

Tested this in your app and found a bug.
Tested this in your app and found it to be working correctly.
See a security issue.

I'd like avoid "looks good" reviews without actual testing. Thanks for understanding. ❤

@eileencodes - I thought I would comment here rather than on the PR as this is likely just something I missed or my weird setup and if so forgive me.
Unix domain sockets works but the moment I switch to TLS proper, I get the error - 1043 Bad handshake - thats it.
I had to recompile trilogy using openssl 3 rather than 1.1 and the code seems to support it and compiles.
diff --git a/Makefile b/Makefile
index 948c719..2339fa6 100644
--- a/Makefile
+++ b/Makefile
@@ -13,8 +13,8 @@ EXAMPLES = example/trilogy_query
 UNAME_S := $(shell uname -s)

 ifeq ($(UNAME_S), Darwin)
-       CFLAGS += "-I$(shell brew --prefix openssl@1.1)/include"
-       LDFLAGS += "-L$(shell brew --prefix openssl@1.1)/lib"
+       CFLAGS += "-I$(shell brew --prefix openssl)/include"
+       LDFLAGS += "-L$(shell brew --prefix openssl)/lib"

I tried changing the example/trilogy_query.c to set the following hardcoded values, the certs are the defaults.
connopt.ssl_capath = "mysql-server/build/data/ca.pem";
connopt.ssl_cert = "mysql-server/build/data/client-cert.pem";
connopt.ssl_key = "mysql-server/build/data/client-key.pem";
connopt.ssl_mode = TRILOGY_SSL_VERIFY_CA;
connopt.ssl_cipher = "TLS_AES_128_GCM_SHA256";
connopt.flags = TRILOGY_CAPABILITIES_SSL;

I also tried TRILOGY_SSL_PREFERRED_NOVERIFY and TRILOGY_SSL_REQUIRED_NOVERIFY
The version of the mysql server I am using is mysqld 8.3.0-debug which uses openssl 3.
The mysql client works like so
mysql --tls-ciphersuites=TLS_AES_128_GCM_SHA256 --protocol=tcp -h localhost --ssl-mode=VERIFY_CA --ssl-ca='mysql-server/build/data/ca.pem' --ssl-cert='mysql-server/build/data/client-cert.pem' --ssl-key='mysql-server/build/data/client-key.pem' -u <user> -p

Confirmed the mysql client connection type using (its empty if its using unix domain sockets)
SELECT THREAD_ID FROM performance_schema.threads where connection_type = "SSL/TLS";

Its likely I did something wrong in example/trilogy_query.c but does trilogy have a debug mode that logs the TLS handshake byte sequence, basically whatever openssl logs in debug mode?

It compiles fine for me (in Docker using ruby:3.3.0-alpine), but it doesn't work for me.
trilogy_auth_recv: TRILOGY_UNSUPPORTED
Couldn't create 'feature-pr1946' database. Please check your configuration.
rake aborted!
Trilogy::QueryError: trilogy_auth_recv: TRILOGY_UNSUPPORTED (Trilogy::QueryError)
/usr/local/bundle/bundler/gems/trilogy-e5af495b7b23/contrib/ruby/lib/trilogy.rb:18:in `_connect'
/usr/local/bundle/bundler/gems/trilogy-e5af495b7b23/contrib/ruby/lib/trilogy.rb:18:in `initialize'

Trying to connect to a standard/default docker.io/library/mysql:8.0.33 container over TCP within a Kubernetes cluster.

Ok I see you're using the example @abdulchaudhrycoupa. I can reproduce but also get the same thing on main so...I don't think it's related to my PR. Here's the script we're using to test the implementation locally:
require "trilogy"

DEFAULT_HOST = ENV["MYSQL_HOST"] || "<IP_ADDRESS>"
DEFAULT_PORT = (port = ENV["MYSQL_PORT"].to_i) && port != 0 ? port : 3306

defaults = {
  host: DEFAULT_HOST,
  port: DEFAULT_PORT,
  username: "caching_sha2",
  password: "password",
  ssl: true,
  ssl_mode: Trilogy::SSL_PREFERRED_NOVERIFY,
  tls_min_version: Trilogy::TLS_VERSION_12,
}

c = Trilogy.new defaults
p c.query "SELECT (1)"

I'm not using TLS/SSL nor a unix socket. I've spent the afternoon so far trying to configure the pods to use TLS now, and I'll report back when I have it sorted.
As a minor part of this PR though, could that hint be added to the error - didn't feel like it was obviously that when I read the error message - and it feels like this could bite quite a few people going forward.

I've updated the error to be more clear, but I did mention this will not work without TCP over TLS or a unix socket in my original comment and on the PR.

I'm sure you did, wasn't blaming you, just saying that I'd forgotten and I'm sure others would forget or not notice too 👍

@eileencodes - ah so, I do get  Bad handshake on the mysql server when I change the ruby code to verify the CA
require "trilogy"

DEFAULT_HOST = ENV["MYSQL_HOST"] || "<IP_ADDRESS>"
DEFAULT_PORT = (port = ENV["MYSQL_PORT"].to_i) && port != 0 ? port : 3306

defaults = {
  host: DEFAULT_HOST,
  port: DEFAULT_PORT,
  username: "caching_sha2",
  password: "password",
  ssl: true,
  # ssl_mode: Trilogy::SSL_REQUIRED_NOVERIFY,
  ssl_mode: Trilogy::SSL_VERIFY_CA,
  # ssl_mode: Trilogy::SSL_VERIFY_IDENTITY,
  ssl_capath: '/mysql-server/build/data/ca.pem',
  ssl_cert: '/mysql-server/build/data/client-cert.pem',
  ssl_key: '/mysql-server/build/data/client-key.pem',
  tls_min_version: Trilogy::TLS_VERSION_12,
}

The server reports this
2024-03-14T11:38:32.431437-07:00 17 [Note] [MY-010914] [Server] Bad handshake

The bad handshake isn't caused by my PR, the handshake happens before auth. You'll see the same on main with a different user (can't use caching_sha2).


skipped test: test_explain_model_lightgbm_binary

Describe the bug
This is a reminder that this test is skipped for now.
Message from test:
skipping test until shap TreeExplainer for lightgbm binary classifier fixed
To Reproduce
Steps to reproduce the behavior:

Go to devops
Check nightly log

Expected behavior
test would run
Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

fixed as part of PR:
https://github.com/fairlearn/fairlearn


Problems with .webm recording example

Love this project! :)
Testing with locally built release 0.4.2 - just had to clone minidom as a dep and point at rxml 0.9.1 to overcome https://github.com/avstack/gst-meet/issues/64.
Now I'm running gst-meet against self-hosted Jitsi instances, but running into problems.
As a test I'm trying the basic .webm example in the README. But the pipeline isn't getting constructed correctly, resulting in the error:
ERROR handling pad-added: no suitable sink pad provided by sink element in recv pipeline.
I'm new to both Rust and GStreamer dev so please excuse the naive question!
Can you advise what might be wrong with this execution?
I've attached full debug logs and the generated pipeline graphs.
Debug execution:
$ GST_DEBUG=3 ./target/release/gst-meet \
    --verbose=GST_DEBUG=3 \
    --web-socket-url=wss://subd.mydomain.com:30972/xmpp-websocket \
    --xmpp-domain=meet.jitsi \
    --muc-domain=muc.meet.jitsi \
    --room-name=video \
    --video-codec=vp9 \
    --recv-pipeline="webmmux name=muxer ! queue ! filesink location=SomeRec2.webm
                        opusenc name=audio ! muxer.audio_0
                        vp9enc name=video ! muxer.video_0"
2023-02-28T16:47:05.089602Z  INFO Connecting XMPP WebSocket to wss://subd.mydomain.com:30972/xmpp-websocket
2023-02-28T16:47:06.191621Z DEBUG No cached session for DnsName(DnsName(DnsName("subd.mydomain.com")))
2023-02-28T16:47:06.193214Z DEBUG Not resuming any session
2023-02-28T16:47:06.490180Z DEBUG Using ciphersuite TLS13_AES_256_GCM_SHA384
2023-02-28T16:47:06.490240Z DEBUG Not resuming
2023-02-28T16:47:06.490323Z DEBUG TLS1.3 encrypted extensions: [ServerNameAck]
2023-02-28T16:47:06.490352Z DEBUG ALPN protocol is None
2023-02-28T16:47:08.477476Z DEBUG Ticket saved
2023-02-28T16:47:08.477618Z DEBUG Ticket saved
2023-02-28T16:47:08.480323Z DEBUG Client handshake done.
2023-02-28T16:47:08.484458Z DEBUG XMPP    >>> <open xmlns='urn:ietf:params:xml:ns:xmpp-framing' to="meet.jitsi" version="1.0"/>
...
....
2023-02-28T16:47:15.556242Z DEBUG new participant<EMAIL_ADDRESS>2023-02-28T16:47:15.556265Z DEBUG calling on_participant with new participant
2023-02-28T16:47:15.556271Z  INFO New participant: Participant { jid: Some(FullJID(cxkbwu-lazcgpvsxunl1vh7g@meet.jitsi/1ezbrEY1tl5x)), muc_jid: FullJID(video@muc.meet.jitsi/988a0a26), nick: Some("danMeLenvo") }
2023-02-28T16:47:15.561846Z DEBUG XMPP    <<< <presence xml:lang='en-US'<EMAIL_ADDRESS><EMAIL_ADDRESS>xmlns='jabber:client'><priority>0</priority><etherpad xmlns='http://jitsi.org/jitmeet/etherpad'>video</etherpad><versions xmlns='http://jitsi.org/jitmeet'><component name='focus'>1.0.900</component></versions><conference-properties xmlns='http://jitsi.org/protocol/focus'><property key='support-terminate-restart' value='true'/><property key='bridge-count' value='1'/></conference-properties><c ver='Lg0vhCNhxjoeKJi2/hukdsizNWA=' hash='sha-1' node='http://jitsi.org/jicofo' xmlns='http://jabber.org/protocol/caps'/><occupant-id id='c37HY98vJWTTHLigQ+xrOV9EUls4D6DdWVI5zqI26PA=' xmlns='urn:xmpp:occupant-id:0'/><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='owner' role='moderator'<EMAIL_ADDRESS>2023-02-28T16:47:15.561957Z DEBUG XMPP    <<< <presence xml:lang='en'<EMAIL_ADDRESS><EMAIL_ADDRESS>xmlns='jabber:client'><c ver='swMAgANtyBNi66ghGYklxmQQoAQ=' hash='sha-1' node='https://github.com/avstack/gst-meet' xmlns='http://jabber.org/protocol/caps'/><c xmlns='urn:xmpp:caps'><hash algo='sha-256' xmlns='urn:xmpp:hashes:2'>G/kN7Lvb58mV9M0f+E0V9ctHF3+2rT5irZCuqldbjGU=</hash></c><stats-id>gst-meet</stats-id><jitsi_participant_codecType>vp9</jitsi_participant_codecType><videomuted>false</videomuted><nick xmlns='http://jabber.org/protocol/nick'>gst-meet</nick><audiomuted>true</audiomuted><occupant-id id='rhh/iIq/9ShfPB2srQ6Z2wqaez29/fhRCtuc1s6bMO4=' xmlns='urn:xmpp:occupant-id:0'/><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='none' role='participant'<EMAIL_ADDRESS>code='110'/></x></presence>
2023-02-28T16:47:15.562026Z DEBUG XMPP    <<< <message<EMAIL_ADDRESS>type='groupchat'<EMAIL_ADDRESS>xmlns='jabber:client'><subject/></message>
2023-02-28T16:47:15.839274Z DEBUG XMPP    <<< <presence xml:lang='en'<EMAIL_ADDRESS><EMAIL_ADDRESS>xmlns='jabber:client'><stats-id>Minerva-ApL</stats-id><c ver='D50Kz2zZl6ZxcI7RzgE166vg6PM=' hash='sha-1' node='https://jitsi.org/jitsi-meet' xmlns='http://jabber.org/protocol/caps'/><features><feature var='https://jitsi.org/meet/e2ee'/></features><jitsi_participant_codecType>vp9</jitsi_participant_codecType><nick xmlns='http://jabber.org/protocol/nick'>danMeLenvo</nick><jitsi_participant_e2ee.idKey>TghRLZA99r+RQjzTgPBOGG79tzIrDiX7FtC6tQCOtio</jitsi_participant_e2ee.idKey><videomuted>false</videomuted><occupant-id id='luD+vN9wNutwXZ0jk7tZDhB0Tjo+Lk+x6E2NMGvkOg8=' xmlns='urn:xmpp:occupant-id:0'/><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='owner' role='moderator'<EMAIL_ADDRESS>2023-02-28T16:47:15.839428Z DEBUG XMPP    <<< <presence xml:lang='en-US'<EMAIL_ADDRESS><EMAIL_ADDRESS>xmlns='jabber:client'><priority>0</priority><etherpad xmlns='http://jitsi.org/jitmeet/etherpad'>video</etherpad><versions xmlns='http://jitsi.org/jitmeet'><component name='focus'>1.0.900</component></versions><conference-properties xmlns='http://jitsi.org/protocol/focus'><property key='support-terminate-restart' value='true'/><property key='bridge-count' value='1'/></conference-properties><c ver='Lg0vhCNhxjoeKJi2/hukdsizNWA=' hash='sha-1' node='http://jitsi.org/jicofo' xmlns='http://jabber.org/protocol/caps'/><occupant-id id='c37HY98vJWTTHLigQ+xrOV9EUls4D6DdWVI5zqI26PA=' xmlns='urn:xmpp:occupant-id:0'/><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='owner' role='moderator'<EMAIL_ADDRESS>2023-02-28T16:47:15.839505Z DEBUG XMPP    <<< <presence xml:lang='en'<EMAIL_ADDRESS><EMAIL_ADDRESS>xmlns='jabber:client'><c ver='swMAgANtyBNi66ghGYklxmQQoAQ=' hash='sha-1' node='https://github.com/avstack/gst-meet' xmlns='http://jabber.org/protocol/caps'/><c xmlns='urn:xmpp:caps'><hash algo='sha-256' xmlns='urn:xmpp:hashes:2'>G/kN7Lvb58mV9M0f+E0V9ctHF3+2rT5irZCuqldbjGU=</hash></c><stats-id>gst-meet</stats-id><jitsi_participant_codecType>vp9</jitsi_participant_codecType><nick xmlns='http://jabber.org/protocol/nick'>gst-meet</nick><audiomuted>true</audiomuted><videomuted>true</videomuted><occupant-id id='rhh/iIq/9ShfPB2srQ6Z2wqaez29/fhRCtuc1s6bMO4=' xmlns='urn:xmpp:occupant-id:0'/><x xmlns='http://jabber.org/protocol/muc#user'><item affiliation='none' role='participant'<EMAIL_ADDRESS>code='110'/></x></presence>
2023-02-28T16:47:15.839586Z DEBUG XMPP    <<< <message<EMAIL_ADDRESS>type='groupchat'<EMAIL_ADDRESS>xmlns='jabber:client'><subject/></message>
2023-02-28T16:47:16.901609Z DEBUG rtpbin request-pt-map [(GstElement) (GstRtpBin) rtpbin, (guint) 0, (guint) 101]
2023-02-28T16:47:16.901728Z DEBUG mapped pt to caps: Caps("application/x-rtp, payload=(int)101, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP9, rtcp-fb-nack-pli=(boolean)true, extmap-5=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01")
2023-02-28T16:47:16.902932Z DEBUG new jitterbuffer created for session 0 ssrc<PHONE_NUMBER>
2023-02-28T16:47:16.902962Z DEBUG jitterbuffer is for remote source: Source { ssrc:<PHONE_NUMBER>, participant_id: Some("988a0a26"), media_type: Video }
2023-02-28T16:47:16.902978Z DEBUG enabling RTX for ssrc<PHONE_NUMBER>
2023-02-28T16:47:17.100913Z DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) recv_rtp_src_0_1741222364_101]
2023-02-28T16:47:17.101013Z DEBUG pad added for remote source: Source { ssrc:<PHONE_NUMBER>, participant_id: Some("988a0a26"), media_type: Video }
2023-02-28T16:47:17.101286Z DEBUG created depayloader
2023-02-28T16:47:17.101366Z DEBUG linked rtpbin.recv_rtp_src_0_1741222364_101 to depayloader
2023-02-28T16:47:17.101428Z DEBUG rtpbin pads:
  send_rtp_src_0, peer=identity2.sink, caps=""
  send_rtp_sink_0, peer=rtpfunnel0.src, caps=""
  recv_rtp_sink_0, peer=identity0.src, caps="application/x-rtp"
  recv_rtcp_sink_0, peer=identity1.src, caps=""
  send_rtcp_src_0, peer=identity3.sink, caps="application/x-rtcp"
  recv_rtp_src_0_1741222364_101, peer=rtpvp9depay0.sink, caps="application/x-rtp, payload=(int)101, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP9, rtcp-fb-nack-pli=(boolean)true, extmap-5=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, ssrc=(uint)1741222364"
2023-02-28T16:47:17.103412Z ERROR handling pad-added: no suitable sink pad provided by sink element in recv pipeline
2023-02-28T16:47:17.103521Z DEBUG depayloader requested extension: 5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
0:00:12.028705332 16457 0x7fc6dc17c300 FIXME           videodecoder gstvideodecoder.c:1193:gst_video_decoder_drain_out:<vp9dec0> Sub-class should implement drain()
0:00:12.081289249 16457 0x7fc6bc0030c0 WARN                 basesrc gstbasesrc.c:3127:gst_base_src_loop:<nicesrc0> error: Internal data stream error.
0:00:12.081339245 16457 0x7fc6bc0030c0 WARN                 basesrc gstbasesrc.c:3127:gst_base_src_loop:<nicesrc0> error: streaming stopped, reason not-linked (-1)
2023-02-28T16:47:17.156277Z ERROR ../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstNiceSrc:nicesrc0:
streaming stopped, reason not-linked (-1)
2023-02-28T16:47:20.900425Z DEBUG Colibri <<< {"colibriClass":"EndpointConnectivityStatusChangeEvent","endpoint":"vfpe6d5wgk2xyycystyhjwg7","active":"false"}
2023-02-28T16:47:20.900525Z  INFO Colibri message: EndpointConnectivityStatusChangeEvent { endpoint: "vfpe6d5wgk2xyycystyhjwg7", active: false }
0:00:16.433961121 16457 0x7fc6bc0024c0 WARN              rtpsession rtpsession.c:3811:session_nack: Removing 1 expired NACKS
2023-02-28T16:47:21.822612Z DEBUG Colibri <<< {"colibriClass":"EndpointStats","from":"988a0a26","bitrate":{"upload":0,"download":0,"audio":{"upload":0,"download":0},"video":{"upload":0,"download":0}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":100,"jvbRTT":402,"maxEnabledResolution":720}
2023-02-28T16:47:21.822720Z  INFO Colibri message: EndpointStats { from: Some("988a0a26"), bitrate: Bitrates { audio: Bitrate { upload: 0, download: 0 }, video: Bitrate { upload: 0, download: 0 }, total: Bitrate { upload: 0, download: 0 } }, packet_loss: PacketLoss { total: 0, download: 0, upload: 0 }, connection_quality: 100.0, jvb_rtt: Some(402), server_region: None, max_enabled_resolution: Some(720) }
2023-02-28T16:47:24.968295Z DEBUG source stats: [
    Structure(
        "application/x-rtp-source-stats, ssrc=(uint)1741222364, internal=(boolean)false, validated=(boolean)true, received-bye=(boolean)false, is-csrc=(boolean)false, is-sender=(boolean)true, seqnum-base=(int)-1, clock-rate=(int)90000, octets-sent=(guint64)0, packets-sent=(guint64)0, octets-received=(guint64)8524, packets-received=(guint64)11, bytes-received=(guint64)9052, bitrate=(guint64)0, packets-lost=(int)-1, jitter=(uint)643, sent-pli-count=(uint)0, recv-pli-count=(uint)0, sent-fir-count=(uint)0, recv-fir-count=(uint)0, sent-nack-count=(uint)1, recv-nack-count=(uint)0, recv-packet-rate=(uint)41, have-sr=(boolean)true, sr-ntptime=(guint64)16692783972964389993, sr-rtptime=(uint)20641, sr-octet-count=(uint)6855, sr-packet-count=(uint)8, sent-rb=(boolean)true, sent-rb-fractionlost=(uint)0, sent-rb-packetslost=(int)-1, sent-rb-exthighestseq=(uint)12, sent-rb-jitter=(uint)643, sent-rb-lsr=(uint)2928987360, sent-rb-dlsr=(uint)288552, have-rb=(boolean)false, rb-ssrc=(uint)0, rb-fractionlost=(uint)0, rb-packetslost=(int)0, rb-exthighestseq=(uint)0, rb-jitter=(uint)0, rb-lsr=(uint)0, rb-dlsr=(uint)0, rb-round-trip=(uint)0;",
    ),
    Structure(
        "application/x-rtp-source-stats, ssrc=(uint)219036170, internal=(boolean)true, validated=(boolean)true, received-bye=(boolean)false, is-csrc=(boolean)false, is-sender=(boolean)false, seqnum-base=(int)-1, clock-rate=(int)-1, octets-sent=(guint64)0, packets-sent=(guint64)0, octets-received=(guint64)0, packets-received=(guint64)0, bytes-received=(guint64)0, bitrate=(guint64)0, packets-lost=(int)0, jitter=(uint)0, sent-pli-count=(uint)0, recv-pli-count=(uint)0, sent-fir-count=(uint)0, recv-fir-count=(uint)0, sent-nack-count=(uint)0, recv-nack-count=(uint)0, recv-packet-rate=(uint)0, have-sr=(boolean)false, sr-ntptime=(guint64)0, sr-rtptime=(uint)0, sr-octet-count=(uint)0, sr-packet-count=(uint)0;",
    ),
]
2023-02-28T16:47:24.968418Z DEBUG Colibri >>> {"colibriClass":"EndpointStats","from":null,"bitrate":{"audio":{"upload":0,"download":0},"video":{"upload":0,"download":0},"upload":0,"download":0},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":100.0,"jvbRTT":0,"serverRegion":null,"maxEnabledResolution":720}
^C2023-02-28T16:47:26.129911Z  INFO Exiting...
2023-02-28T16:47:26.129990Z DEBUG leave{self=JitsiConference { jid: FullJID(vfpe6d5wgk2xyycystyhjwg7@meet.jitsi/CDdRbg9zlLRo), config: JitsiConferenceConfig { muc: BareJID(video@muc.meet.jitsi), focus: Full(FullJID(focus@auth.meet.jitsi/focus)), nick: "gst-meet", region: None, video_codec: "vp9", extra_muc_features: [], start_bitrate: 800, stereo: false, recv_video_scale_width: 1280, recv_video_scale_height: 720, buffer_size: 200 }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: pausing all sinks
2023-02-28T16:47:26.130106Z DEBUG leave{self=JitsiConference { jid: FullJID(vfpe6d5wgk2xyycystyhjwg7@meet.jitsi/CDdRbg9zlLRo), config: JitsiConferenceConfig { muc: BareJID(video@muc.meet.jitsi), focus: Full(FullJID(focus@auth.meet.jitsi/focus)), nick: "gst-meet", region: None, video_codec: "vp9", extra_muc_features: [], start_bitrate: 800, stereo: false, recv_video_scale_width: 1280, recv_video_scale_height: 720, buffer_size: 200 }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: setting pipeline state to NULL
2023-02-28T16:47:26.132574Z DEBUG leave{self=JitsiConference { jid: FullJID(vfpe6d5wgk2xyycystyhjwg7@meet.jitsi/CDdRbg9zlLRo), config: JitsiConferenceConfig { muc: BareJID(video@muc.meet.jitsi), focus: Full(FullJID(focus@auth.meet.jitsi/focus)), nick: "gst-meet", region: None, video_codec: "vp9", extra_muc_features: [], start_bitrate: 800, stereo: false, recv_video_scale_width: 1280, recv_video_scale_height: 720, buffer_size: 200 }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: waiting for state change to complete
2023-02-28T16:47:26.132644Z DEBUG pipeline state is null
2023-02-28T16:47:26.132684Z DEBUG leave{self=JitsiConference { jid: FullJID(vfpe6d5wgk2xyycystyhjwg7@meet.jitsi/CDdRbg9zlLRo), config: JitsiConferenceConfig { muc: BareJID(video@muc.meet.jitsi), focus: Full(FullJID(focus@auth.meet.jitsi/focus)), nick: "gst-meet", region: None, video_codec: "vp9", extra_muc_features: [], start_bitrate: 800, stereo: false, recv_video_scale_width: 1280, recv_video_scale_height: 720, buffer_size: 200 }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: close time.busy=2.63ms time.idle=64.4µs

session-initiate.png:

participant-added-988a0a26.png:

Sorry @jbg, I don't want to inundate you with questions!
I notice that when I run the exact example (ie using --recv-pipeline-participant-template for recording individual participant webm files), the pipeline constructs correctly without the errors above.
Full debug log at gist here (too many characters for comment field): https://gist.github.com/danryu/06d377b94436131715c9c125c657bae7

However there is still no content written to the webm file - it is created, but remains at 0 bytes size.
I noticed your comments in https://github.com/avstack/gst-meet/issues/69#issuecomment-1451186153 where you said that gst-meet should work fine "if run against an older backend".
I am currently testing against a docker-jitsi-meet installation of version stable-7439-2 (see https://github.com/jitsi/docker-jitsi-meet/releases).
I am happy to test/run against any of those releases - could you recommend one (or a range) to run with?
And I can probably then close this issue out, as I suspect it is a duplicate of the GH Issue I referenced above.

If it connects to the room then you're not affected by #69.
If the webm files are created then signalling is working properly — if nothing gets written to them, we are probably not receiving video. This sometimes is caused by JVB deciding that we don't have enough bandwidth to receive video. Check if you see an "endpoints are suspended" message in the JVB logs when gst-meet connects.

Yes! Indeed that's what I get:
JVB 2023-03-02 10:10:34.748 INFO: [58] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet local_ufrag=5m72s1gqgsqf8m] IceTransport.iceStateChanged#341: ICE state changed old=Running new=Completed
JVB 2023-03-02 10:10:34.748 INFO: [58] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet] Endpoint$setupIceTransport$2.connected#343: ICE connected
JVB 2023-03-02 10:10:34.749 INFO: [68] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet] DtlsTransport.startDtlsHandshake#102: Starting DTLS handshake, role=org.jitsi.nlj.dtls.DtlsServer@4e243772
JVB 2023-03-02 10:10:34.749 INFO: [58] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet local_ufrag=5m72s1gqgsqf8m ufrag=5m72s1gqgsqf8m] Agent.logCandTypes#2009: Harvester used for selected pair for stream-7nzjxv5f1hlaaivfsol24uls.RTP: srflx
JVB 2023-03-02 10:10:35.130 INFO: [60] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=0b29ee98 stats_id=Cameron-jqo local_ufrag=13qp11gqgsqhpt ufrag=13qp11gqgsqhpt] Agent.setState#946: ICE state changed from Completed to Terminated.
JVB 2023-03-02 10:10:35.131 INFO: [60] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=0b29ee98 stats_id=Cameron-jqo local_ufrag=13qp11gqgsqhpt] IceTransport.iceStateChanged#341: ICE state changed old=Completed new=Terminated
JVB 2023-03-02 10:10:36.723 INFO: [68] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet] TlsServerImpl.notifyClientVersion#199: Negotiated DTLS version DTLS 1.2
JVB 2023-03-02 10:10:37.064 INFO: [68] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet] Endpoint$setupDtlsTransport$3.handshakeComplete#387: DTLS handshake complete
JVB 2023-03-02 10:10:37.749 INFO: [60] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet local_ufrag=5m72s1gqgsqf8m ufrag=5m72s1gqgsqf8m] Agent.setState#946: ICE state changed from Completed to Terminated.
JVB 2023-03-02 10:10:37.749 INFO: [60] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet local_ufrag=5m72s1gqgsqf8m] IceTransport.iceStateChanged#341: ICE state changed old=Completed new=Terminated
JVB 2023-03-02 10:10:49.740 INFO: [69] [confId=903533b59a12a38d<EMAIL_ADDRESS>epId=7nzjxv5f1hlaaivfsol24uls stats_id=gst-meet] BandwidthAllocator.allocate#379: Endpoints were suspended due to insufficient bandwidth (bwe=75650 bps): 0b29ee98

I will set up a better test platform and report the results.
In the meantime is there a "latest suggested" Jitsi release version to target, bearing in mind the known issues?
Thanks for your help thus far.

I'm now running gst-meet in the same k8s infrastructure as the rest of Jitsi, and unfortunately the resultant files are still 0 bytes in size.
gst-meet \
    --verbose=GST_DEBUG=3 \
    --web-socket-url=wss://d4a5290x.kv.mydomain.live:30237/xmpp-websocket \
    --xmpp-domain=meet.jitsi \
    --muc-domain=muc.meet.jitsi \
    --room-name=video \
    --video-codec=vp9 \
    --recv-pipeline-participant-template="webmmux name=muxer ! queue ! filesink location={participant_id}.webm
                                            opusenc name=audio ! muxer.audio_0
                                            vp9enc name=video ! muxer.video_0"

From gst-meet, the main errors that I can see are this - probably unrelated?
2023-03-04T14:13:05.542382Z  WARN failed to parse frame on colibri websocket: Error("invalid type: null, expected f32", line: 0, column: 0)
frame: {"colibriClass":"EndpointStats","from":"beff855e","bitrate":{"upload":726,"download":0,"audio":{"upload":0,"download":0},"video":{"upload":726,"download":0}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":null,"jvbRTT":285,"maxEnabledResolution":720}

In JVB I see this error - also not sure if it's related:
JVB 2023-03-04 14:14:02.311 SEVERE: [35] [confId=2e39bbafdcfe4daf<EMAIL_ADDRESS>epId=fwgwhrmz5zdcdnx8mkxznj9q stats_id=gst-meet] EndpointMessageTransport.webSocketError#410: Colibri websocket error: null
gst-meet.log
jvb.log
@jbg Which version of Jitsi upstream are you successfully running against?
I would love to get at least a proof of concept running.

Hey @danryu, sorry for bothering you.  Did you finally manage to save the video?  I am saving an empty file too. Thanks

I don't think 8319 will work. At least, you will need to disable multiple video streams per participant, but I think there are other incompatible signalling changes. I can find out tomorrow which version our customer is using gst-meet in production with, but based on what our automated tests are using, I think a compatible version is probably somewhere around 7287 or maybe even as early as 7001.

I think a compatible version is probably somewhere around 7287 or maybe even as early as 7001.
That's great, I will begin with 7287 to start the tests. Any further confirmation on operational versions warmly received :)
Also looking forward to the discussed updates on this month's roadmap!

Ok I am testing (unsuccessfully :/) with release 7287.
I'll outline the full test set-up for clarity below. I am using as vanilla as possible an installation of Jitsi 7287, to reduce the potential error scope.
@jbg I'm hoping that something in the config or logs shows itself as obviously wrong to you in some way.
I can go ahead and test 7210 and 7001 - but after that I'm totally out of ideas ....
gst-meet build

build from koord-live/gst-meet fork, which incorporates these changes: https://github.com/avstack/gst-meet/compare/master...koord-live:gst-meet:master

reverse commit - "use correct Semantics type" - https://github.com/avstack/gst-meet/commit/6ba1959d6ae4c981d203bf10b88111bb62ec69ff
fork xmpp-rs to use rxml 0.9.1 - to overcome https://github.com/avstack/gst-meet/issues/64

built using this Dockerfile:
Dockerfile.txt

jitsi-meet test setup

standard installation, vanilla, using specific versions in apt repo to correspond to 7287 release (see install script below)
using pre-made valid TLS certificate/key
for xmpp-websocket endpoint

do configuration as per https://community.jitsi.org/t/how-to-how-to-enable-websockets-xmpp-websocket-and-smacks-for-prosody/87920
ASSUMPTIONS/ERRORS made here? documentation is sparse on this apart from above community post
also nothing in gst-meet docs AFAICT regarding Jitsi configuration, including this xmpp-websocket endpoint

deployed using this script:
install_vanilla_jitsi.sh.txt

Resultant config:
jvb_config.txt
jvb_jvb.conf.txt
jvb_sip-communicator.properties.txt
nginx.conf.txt
prosody.cfg.lua.txt
jitsi_meet_config.js.txt
gst-meet test

run separate VM  - Ubuntu 22.04 for easy gstreamer 1.20 installation
install gstreamer:  sudo apt install     gstreamer1.0-plugins-base     gstreamer1.0-plugins-good     gstreamer1.0-plugins-bad     gstreamer1.0-plugins-ugly     gstreamer1.0-libav     gstreamer1.0-nice     openssl     libnice10
install gst-meet from above build to /usr/local/bin

Test execution:
gst-meet \
    --verbose=GST_DEBUG=3 \
    --web-socket-url=wss://koh1jlfv.kv.mydomain.com/xmpp-websocket \
    --room-name=video \
    --video-codec=vp9 \
    --recv-pipeline="webmmux name=muxer ! queue ! filesink location=Recording1.webm
                        opusenc name=audio ! muxer.audio_0
                        vp9enc name=video ! muxer.video_0"

Result:

webm recording file is 0Kb in size
errors in gst-meet.log:

2023-04-20T16:58:37.715925Z ERROR handling pad-added: no suitable sink pad provided by sink element in recv pipeline
2023-04-20T16:58:37.716034Z DEBUG depayloader requested extension: 1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
2023-04-20T16:58:37.716398Z DEBUG depayloader requested extension: 5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
2023-04-20T16:58:37.716505Z ERROR handling pad-added: no suitable sink pad provided by sink element in recv pipeline
2023-04-20T16:58:37.716611Z DEBUG depayloader requested extension: 5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
2023-04-20T16:58:37.727349Z ERROR ../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstNiceSrc:nicesrc0:
streaming stopped, reason not-linked (-1)

There are simultaneous errors in JVB, but from searching in forums I am not sure this is directly related:
JVB 2023-04-20 16:58:35.653 WARNING: [67] [confId=68d2f1f9c2bed9dd<EMAIL_ADDRESS>gid=-2 epId=0udidfcflprfe7b9 stats_id=gst-meet local_ufrag=cluth1gufpkugt ufrag=cluth1gufpkugt] ConnectivityCheckClient.startCheckForPair#375: Failed to send BINDING-REQUEST(0x1)[attrib.count=6 len=92 tranID=0x00819A9F8701943B197F4924]

Full logs:
gst-meet.log.txt
jvb.log (gst-meet test is from time 16:58 onwards)

@jbg Was there any follow-up with your clients re which version they're running in production?
And/or any comment on the test output above?
I'm really struggling to see what I could be doing wrong. Is there any specific setup or configuration that is assumed that perhaps I haven't done ... ?
Otherwise - anybody out there with gst-meet actually running and recording video - please let me know how you do it!

Thanks for all the testing & information here.
I've pushed updates to the code for compatibility with modern Jitsi Meet, and tested the .webm recording example on an up-to-date Jitsi Meet stack (8615) which worked successfully.
cargo run --release -- \
  --verbose \
  --web-socket-url wss://avstack.onavstack.net/avstack/xmpp-websocket \
  --room-name gst-meet-test-zz4zbgtlekahdzkz \
  --video-codec=vp9 \
  --recv-pipeline-participant-template="
    webmmux name=muxer ! queue ! filesink location={participant_id}.webm
    opusenc name=audio ! muxer.audio_0
    vp9enc name=video ! muxer.video_0
  "

This updated version hasn't been released yet as I'm waiting for minidom to make a fixed release. So, please build from source from the repository for now. Let me know if you run into issues using it with your own deployments. Feel free to test against the avstack.onavstack.net stack mentioned in the above command.
I'm closing this issue, but please feel free to re-open if the .webm recording still does not work for you, or file a new issue if you run into a different issue.

Thanks a lot @jbg
I re-built from master and could get the above command (for individual participant recording) to work OK, which is great (using the avstack service as reference).
However I can't get the basic --recv-pipeline example to work ...
gst-meet   \
  --verbose   \
  --web-socket-url wss://avstack.onavstack.net/avstack/xmpp-websocket   \
  --room-name video7717   \
  --video-codec=vp9   \
  --recv-pipeline="
  webmmux name=muxer ! queue ! filesink location=test.webm
  opusenc name=audio ! muxer.audio_0
  vp9enc name=video ! muxer.video_0
"

This always fails with this error, and results in a file of zero bytes being generated:
2023-05-18T19:35:34.682859Z DEBUG rtpbin pads:
  send_rtp_src_0, peer=identity2.sink, caps=""
  send_rtp_sink_0, peer=rtpfunnel0.src, caps=""
  recv_rtp_sink_0, peer=identity0.src, caps="application/x-rtp"
  recv_rtcp_sink_0, peer=identity1.src, caps=""
  send_rtcp_src_0, peer=identity3.sink, caps="application/x-rtcp"
  recv_rtp_src_0_1498395925_111, peer=rtpopusdepay0.sink, caps="application/x-rtp, payload=(int)111, media=(string)audio, encoding-name=(string)OPUS, clock-rate=(int)48000, extmap-1=(string)urn:ietf:params:rtp-hdrext:ssrc-audio-level, extmap-5=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, ssrc=(uint)1498395925"
2023-05-18T19:35:34.683191Z ERROR handling pad-added: no suitable sink pad provided by sink element in recv pipeline
2023-05-18T19:35:34.683287Z DEBUG depayloader requested extension: 1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
2023-05-18T19:35:34.683547Z DEBUG depayloader requested extension: 5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
2023-05-18T19:35:34.726807Z ERROR ../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstNiceSrc:nicesrc0:
streaming stopped, reason not-linked (-1)

This is running on Ubuntu 22.04 with gstreamer 1.20 - I haven't found a convenient way to install 1.22 yet, though I notice that 1.22 is now marked as dependency for gst-meet.
Any clue on this error above? Is it happening on your side too?


Upgrade codegen base container image to use go v1.20.5

Currently, the pipecd codegen workflow still uses the previous v0.37.x codegen container image, which is based on golang:v1.19.3-alpine3.15 container image.

gen workflow fails in generating mock because errors.Join was introduced in v0.44.2, which is only available for go1.20.
# github.com/pipe-cd/pipecd/pkg/app/piped/platformprovider/kubernetes
../pkg/app/piped/platformprovider/kubernetes/loader.go:99:16: undefined: errors.Join
note: module requires Go 1.20
# github.com/pipe-cd/pipecd/pkg/app/piped/platformprovider/kubernetes
../loader.go:99:16: undefined: errors.Join
note: module requires Go 1.20
go: finding module for package github.com/golang/mock/mockgen/model
go: finding module for package github.com/pipe-cd/pipecd/pkg/app/piped/platformprovider/kubernetes
go: downloading github.com/pipe-cd/pipecd v0.44.2
# github.com/pipe-cd/pipecd/pkg/app/piped/platformprovider/kubernetes
/go/pkg/mod/github.com/pipe-cd/pipecd@v0.44.2/pkg/app/piped/platformprovider/kubernetes/loader.go:99:16: undefined: errors.Join
note: module requires Go 1.20
2023/07/12 13:00:06 Loading input failed: exit status 2

was it proto related problem that we cannot use the latest image?

well, the latest codegen image which based on go 1.20.5 can not generate proto as expected, that is why we still use the old one. Maybe the problem on proto tool chain 🤔

Let's find out the problem of this 👍  Otherwise, we cannot pass the CI workflow.

Fixed by https://github.com/pipe-cd/pipecd/pull/4498


Chinese Rubber Embargo

It might be nice to add some flavour to Communist China, USA and Indonesia by having an event chain to simulate the US's Rubber Embargo on China.
It should have 1 end in which China changes some of the resources of Yunnan to growing rubber.
Perhaps it could start with the US embargo, increasing China's import costs.
Then Indonesia has an option to sell China a large amount of rubber, in exchange for money and increased influence/relations with China and decreased with US.
Whether it's accepted or not China could then have the option to begin trying to grow it themselves (At an initial efficiency hit)
If you want any more info: http://www.tandfonline.com/doi/abs/10.1080/09592290801913700

Great idea. Please make the event chain. It will get into the mod.

Will change the content of this issue to contain two points

Nerfing China by more general US embargo on Communist China.
Nerfing India by start of game Raj heritage of "deindustrialization".


Insert by period bug

fixes: #67

I suppose this is no longer needed? If so, let me know what has to change or reopen the PR based on current main branch.


[DropDown]can not initial a dropdown in disabled state with one dropdownoption selected

Describe the bug
can not initial a dropdown in disabled state with one dropdownoption selected
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

I am unable to reproduce this in our Storybook. Can you provide some more information, or create a reproduction in CodeSandbox?

Closing since this issue has gone stale and is still not reproducible with no further details.