image_to_vm: add support for hyperv_vhdx format

Add support for Gen 2 Hyper-V VMs.
See: https://github.com/flatcar/Flatcar/issues/1009
./image_to_vm tool has now a new supported format: hyperv_vhdx, that produces .vhdx dynamic disks.
How to use
 ./image_to_vm.sh --from ../build/images/amd64-usr/developer-latest/ --format hyperv_vhdx

Testing done
[Describe the testing you have done before submitting this PR. Please include both the commands you issued as well as the output you got.]

[x] Changelog entries added in the respective changelog/ directory (user-facing change, bug fix, security fix, update)
[x] Inspected CI output for image differences: /boot and /usr size, packages, list files for any missing binaries, kernel modules, config files, kernel modules, etc.

Images have been produced: https://bincache.flatcar-linux.net/images/amd64/3916.0.0+vhdx/.
I don't like that the images end up being called flatcar_production_hyperv_vhdx_image.vhdx.bz2 (double vhdx).

Images have been produced: https://bincache.flatcar-linux.net/images/amd64/3916.0.0+vhdx/.
I don't like that the images end up being called flatcar_production_hyperv_vhdx_image.vhdx.bz2 (double vhdx).

It is the same naming convention for rackspace and cloudstack. Adding gen2 in the naming would be wrong, and only multiplexing the hyperv image format to create two images .vhd and .vhdx would make sense, but then, it will break the convention I saw in the current implementation, to create only one image file per format.

Images have been produced: https://bincache.flatcar-linux.net/images/amd64/3916.0.0+vhdx/.
I don't like that the images end up being called flatcar_production_hyperv_vhdx_image.vhdx.bz2 (double vhdx).

@jepio I tested the image on a gen 2 vm, and the image does not properly boot with the initrd stage error: hv_utils kernel module not found. Investigation required.

Images have been produced: https://bincache.flatcar-linux.net/images/amd64/3916.0.0+vhdx/.
I don't like that the images end up being called flatcar_production_hyperv_vhdx_image.vhdx.bz2 (double vhdx).

@jepio I tested the image on a gen 2 vm, and the image does not properly boot with the initrd stage error: hv_utils kernel module not found. Investigation required.

Code is failing here: https://github.com/coreos/ignition/blob/v2.18.0/internal/providers/hyperv/kvp.go#L50.
Flatcar kernel is built with hv_utils kernel module, but the module is not present in the /lib/module. Do you know why this happens?
@jepio @pothos

Images have been produced: https://bincache.flatcar-linux.net/images/amd64/3916.0.0+vhdx/.
I don't like that the images end up being called flatcar_production_hyperv_vhdx_image.vhdx.bz2 (double vhdx).

@jepio I tested the image on a gen 2 vm, and the image does not properly boot with the initrd stage error: hv_utils kernel module not found. Investigation required.

Code is failing here: https://github.com/coreos/ignition/blob/v2.18.0/internal/providers/hyperv/kvp.go#L50. Flatcar kernel is built with hv_utils kernel module, but the module is not present in the /lib/module. Do you know why this happens?
@jepio @pothos

Okay, I think I know why, because we are not using the upstream initrd generation for ignition, https://github.com/coreos/ignition/blob/d304850c3d3696822bc05e0833ee4b27df9d7a38/dracut/30ignition/module-setup.sh.
This PR requires a bootengine PR to add that module.

Test results look good, bootengine PR was merged with commit id updated, changelog was added.

Note that the VHDX image file after decompression has 1.1GB in file size.

Bootengine commit was removed, as the flatcar/scripts main is already using the newest bootengine HEAD.

Bootengine commit was removed, as the flatcar/scripts main is already using the newest bootengine HEAD.

Almost^^ I had to push a fix as it was the repo's HEAD.

Bootengine commit was removed, as the flatcar/scripts main is already using the newest bootengine HEAD.

Almost^^ I had to push a fix as it was the repo's HEAD.

I ll have to rebase on https://github.com/flatcar/scripts/commit/f04ba66ef1b4e75bbd502ad1c722df53541321d3, thought the commit was already in at that moment.

A new build is running (.11) and should show up under https://bincache.flatcar-linux.net/images/amd64/9999.9.11+ader1990-hyperv-vhdx-support/


Some hotkeys don't work when the keyboard layout is not set to EN

For example, hitting EN period in the main section won't work when the layout is set to RU

Defined RU period as SLAH but won't fix everything


[runwhen-local-feedback] Consider an in-browser terminal

Observation
A lot of effort goes into trying to write complex one-line commands that are multi-shell compatible, such as bash and zsh, along with OS flavours (linux and macOS). As we grow our troubleshooting libraries, and expand support for script execution, the challenges here will continue to grow - it would be ideal to normalize the execution environment to make these commands easier to write and execute.
Possible Suggestions
While we've considered adding the runwhen execution runtime to the runwhen local container, this doesn't solve the immediate challenges nor does it immediately enhance the user experience (which is currently copy & paste from browser and into a local terminal, hoping that the binary equivalents are compatible - sed/awk are particularly challenging sometimes).
With that said, we should look into adding a terminal app into the browser documentation so that commands can be executed from within the container itself - we can then package the necessary command line interfaces into the container image and reduce testing and compatibility friction. In this case, commands would need to be validated from within that runtime, but not tested against different operating systems.
Any other details or context

Docs are located here
Terminal is:

enabled by default for docker installations (assumes running on a single laptop)
disabled by default running in kubernetes (via Helm installation)


evaluateJavascript() throwing exception in iOS

I am getting the following exception being thrown using your example code while attempting to run it on iOS ( Android is working as expected )
PlatformException (PlatformException(evaluateJavaScript_failed, Failed evaluating JavaScript, JavaScript string was: '$(".note-placeholder").html("Your text here...");'
Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type}, null))

---- following is my flutter doctor data --------------
[✓] Flutter (Channel dev, 1.25.0-4.0.pre, on macOS 11.1 20C69 darwin-x64, locale en-US)
• Flutter version 1.25.0-4.0.pre at /Users/tawilson/development/flutter
• Framework revision a7f5fd5360 (5 weeks ago), 2020-11-30 13:14:13 +0100
• Engine revision 20caf54969
• Dart version 2.12.0 (build 2.12.0-76.0.dev)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /Users/tawilson/Library/Android/sdk
• Platform android-30, build-tools 29.0.2
• ANDROID_HOME = /Users/tawilson/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 12.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.3, Build version 12C33
• CocoaPods version 1.9.3
[✓] Android Studio (version 4.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.52.1)
• VS Code at /Users/tawilson/Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.18.0
[✓] Connected device (3 available)
• SM S367VL (mobile) • 520087f159ef55db                         • android-arm • Android 8.0.0 (API 26) (emulator)
• QuadT (mobile)     • 5ae46cb82de36b7e4b9dc40c0aca59b428ac066e • ios         • iOS 13.7
• iPhone 11 (mobile) • BE5167DD-635B-4DB1-A533-DD91397A6E26     • ios         • com.apple.CoreSimulator.SimRuntime.iOS-13-5 (simulator)
• No issues found!

I have a work around for now...
in your html_editor.dart a modified setHint to use document.getElementsByClassName.
  setHint(String text) {     // String hint = '\$(".note-placeholder").html("$text");';     String hint =         "document.getElementsByClassName('note-placeholder')[0].innerHTML = '" +             text +             "';";     _controller.evaluateJavascript(hint);   }
which works in iOS and Android but seems odd that I had to do that to get it to work in iOS...
(feels like I have a build environment issue but I do not see anything wrong )

I have a work around for now...
in your html_editor.dart a modified setHint to use document.getElementsByClassName.
  setHint(String text) {     // String hint = '\$(".note-placeholder").html("$text");';     String hint =         "document.getElementsByClassName('note-placeholder')[0].innerHTML = '" +             text +             "';";     _controller.evaluateJavascript(hint);   }
which works in iOS and Android but seems odd that I had to do that to get it to work in iOS...
(feels like I have a build environment issue but I do not see anything wrong )

I forked this library and have made some pretty massive changes to it, you can find it here. I've fixed this issue (and many others) in that library.
I would have preferred to create PRs but it seems this library is lacking maintenance so I took it upon myself.


Don't convert VML urls.

Don't convert VML url-node values like the one: behavior:url(#default#VML); as seen in LeafletJS:
https://github.com/Leaflet/Leaflet/blob/master/dist/leaflet.css#L97
This is done by simply checking if the url value starts with a #.

@lukeapage plz review...

@lukeapage ping

@lukeapage tnx for merging!


Highlight Elements does not work with Get Elements

Describe the bug
Get Element(s) return guid which represent an element. If you try to use this guid in the keyword Highlight Elements there is an exception
To Reproduce
Steps to reproduce the behavior:
${elem}=    Get Element     div
Highlight Elements    ${elem}

Expected behavior
That should work

Narrowed this down to difference in how ElementHandle and "normal" selectors are handled and how "$$eval" and "$eval" work differently in these cases. There is a related puppeteer issue https://github.com/puppeteer/puppeteer/issues/2004

This just works wrong in this specific cases where method is eval https://github.com/MarketSquare/robotframework-browser/blob/ab58eb0629fc93e0aac34e9db5cb7518c8636769/node/playwright-wrapper/playwirght-invoke.ts#L86

Should call page.evaluate(myfunction, elementhandler)

Fixed mostly after https://github.com/MarketSquare/robotframework-browser/commit/f849627d5587e11179129e37b88525d69db4031e
This fix does not give possibility to modify the visuals of the highlight.


Negative reported KL divergence for dof>1

I accidentally discovered a strange bug:
np.random.seed(42)
X = np.random.uniform(-1, 1, size=(1000, 2))
Z = TSNE(verbose=True, dof=100).fit(X)

Prints this:
--------------------------------------------------------------------------------
TSNE(dof=100, early_exaggeration=12, verbose=True)
--------------------------------------------------------------------------------
===> Finding 90 nearest neighbors using Annoy approximate search using euclidean distance...
   --> Time elapsed: 0.57 seconds
===> Calculating affinity matrix...
   --> Time elapsed: 0.03 seconds
===> Calculating PCA-based initialization...
   --> Time elapsed: 0.00 seconds
===> Running optimization with exaggeration=12.00, lr=83.33 for 250 iterations...
Iteration   50, KL divergence 1.1914, 50 iterations in 0.4213 sec
Iteration  100, KL divergence 1.3487, 50 iterations in 0.3907 sec
Iteration  150, KL divergence 1.3523, 50 iterations in 0.3916 sec
Iteration  200, KL divergence 1.3521, 50 iterations in 0.4010 sec
Iteration  250, KL divergence 1.3525, 50 iterations in 0.3748 sec
   --> Time elapsed: 1.98 seconds
===> Running optimization with exaggeration=1.00, lr=1000.00 for 500 iterations...
Iteration   50, KL divergence -0.8881, 50 iterations in 0.4196 sec
Iteration  100, KL divergence -0.9152, 50 iterations in 0.4037 sec
Iteration  150, KL divergence -0.9160, 50 iterations in 0.4205 sec
Iteration  200, KL divergence -0.9152, 50 iterations in 0.4224 sec
Iteration  250, KL divergence -0.9163, 50 iterations in 0.4239 sec
Iteration  300, KL divergence -0.9164, 50 iterations in 0.4296 sec
Iteration  350, KL divergence -0.9162, 50 iterations in 0.4356 sec
Iteration  400, KL divergence -0.9164, 50 iterations in 0.4249 sec
Iteration  450, KL divergence -0.9168, 50 iterations in 0.4197 sec
Iteration  500, KL divergence -0.9166, 50 iterations in 0.4186 sec
   --> Time elapsed: 4.22 seconds

The final embedding looks fine, but the KL divergence is negative. It also happens for some other values of dof but not for the default dof=1.

That's strange. Briefly going over the code, there doesn't seem to be any obvious reason as to why this is happening.

Very weird issue... So far I have no idea what it can be due to. But I would like to bump it -- just stumbled upon it again, and it's really annoying. There was yet another Twitter discussion about embedding 2D manifolds and I keep saying that TSNE(dof=100) works better than TSNE() for it. It does: I checked the kNN recall, and it's higher with dof=100. But I cannot check the KL loss, because openTSNE gives me a negative value for dof=100.

Hey, I found the bug!! Fixed it, and confirmed that it now works fine.


bear_classifier notebook not working on Binder

Hi, I am just starting with fastai.
I forked the fastai/bear_voila repo (to this repo), and set it up in Binder.
https://mybinder.org/v2/gh/the-lazy-val/bear_classifier/master?filepath=%2Fvoila%2Frender%2Fbear_classifier.ipynb
After app launch, I get the below error:
There was an error when executing cell [2]. Please run Voilà with --debug to see the error message.
I am using the same pre-trained model (export.pkl) that is already available in the repo.

@the-lazy-val I ran into this same issue. I haven't yet resolved it, but did find an alternate way to publish using Voila:
In your paperspace notebook (I'm using V2), click the Volia button in the top menu (far right):

You should see your working bear classifier open in a new tab. To share, add ?token= plus your notebook token to that url, for example: https://n9eusla3.gradient.paperspace.com/voila/render/fastbook/BearBot.ipynb?token=putyourtokenhere
You can copy your token from the main paperspace notebooks page: https://console.paperspace.com/notebooks:

I'm still new to paperspace and haven't researched implications of sharing your token publicly, but using above you should be able to share at least with trusted people and run from any computer.

Yes I've faced the same issue. I've spent hours on it and can't find the solution yet :/ As @mlapeter suggested, voila works well using Paperspace.

Reproduced the same thing as shown here.

I'm facing the same issue. Seems original repo is working fine in binder because the environment was built already before something broke in binder? Because even new binder requests for original repo is working fine and showing as the environment is already build.
Any solutions for forks?

As temporary solution is to follow this link:
https://forums.fast.ai/t/load-learner-attributeerror-cant-get-attribute-flattenedloss-on-module-fastai-layers/78117/10
Just add this to the first code block:
`import fastai.losses
import fastai.layers
fastai.layers.BaseLoss = fastai.losses.BaseLoss
fastai.layers.CrossEntropyLossFlat = fastai.losses.CrossEntropyLossFlat
fastai.layers.BCEWithLogitsLossFlat = fastai.losses.BCEWithLogitsLossFlat
fastai.layers.BCELossFlat = fastai.losses.BCELossFlat
fastai.layers.MSELossFlat = fastai.losses.MSELossFlat
fastai.layers.L1LossFlat = fastai.losses.L1LossFlat
fastai.layers.LabelSmoothingCrossEntropy = fastai.losses.LabelSmoothingCrossEntropy
fastai.layers.LabelSmoothingCrossEntropyFlat = fastai.losses.LabelSmoothingCrossEntropyFlat
`

@nanospeck
Em, this assumes that we trained a model with fastai <2.0 and want to deploy with fastai>2.0.
However I have the error in with the latest fastai (>2.0) trained model being deployed at binder.

Hi, @the-lazy-val and all,
Faced the same issue too. Now I savled this problem. I found that the problem was due to a mismatch between.pkl and some other packages. I updated my requiretments.txt, add runtime.txt, and change some code to fix it.
This is my requiretments.txt and runtime.txt.
requirements.txt
voila
fastai>=2,<=2.0.6
fastcore==1.0.0
pillow<7
packaging
ipywidgets==8.0.0
torch==1.6.0

runtime.txt
python-3.8.6

and change the code
def on_data_change(change):
    lbl_pred.value = ''
    img = PILImage.create(btn_upload.value[0].content.tobytes())
    out_pl.clear_output()
    with out_pl: display(img.to_thumb(128,128))
    pred,pred_idx,probs = learn_inf.predict(img)
    lbl_pred.value = f'Prediction: {pred}; Probability: {probs[pred_idx]:.04f}'

btn_upload.observe(on_data_change, names=['value'])

my forked repo
https://github.com/supermaxJ/bear_voila_copy


Custom data menu grayed out

I've installed Quantdom from source and from binaries (for Mac).
I can run backtests using Shares/Futures/ETFs data, but I cannot import any custom data as the menu is grayed out.
I've checked that the requirements are correctly installed (especially PyQt5).

Paul,

but I cannot import any custom data as the menu is grayed out.
Please check this comment.

That's a bummer!


[FLINK-9144][network] fix SpillableSubpartition causing jobs to hang when spilling

What is the purpose of the change
This should fix various scenarios where the backlog accounting in the SpillableSubpartition was wrong during spilling buffers and where empty buffers have been spilled (unnecessarily).
Brief change log

improve logging in SpillableSubpartition and a minor optimisation when getting a MemorySegment
make sure that backlog accounting is right in SpillableSubpartition#spillFinishedBufferConsumers() in various cases:
-- empty buffers
-- buffers being spilled multiple times (currently code led to buffers being spilled twice, once empty, and then the final contents)
do not spill empty buffers
always spill all buffers when finishing a stream

Verifying this change
This change added tests and can be verified as follows:

adapt SpillableSubpartitionTest to cover more spilling scenarios, also with partial buffers and with the same pattern that the RecordWriter is actually using it
adapt the batch e2e tests to cover the scenario for this fix (it was blocking)

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no (per-buffer only)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? JavaDocs

LGTM 👍 Will merge.


"People from my organization and trusted organizations"

Please check if "from" should be "in" in this string:
"{1}People from my organization and trusted organizations{2} - Authenticated users and external users from Teams and Skype for Business domains that are in the external access allowlist can bypass the lobby. All other users will wait in the lobby until admitted."
The option elsewhere in this article is "People in my organization and trusted organizations".
Please also verify that the UI options strings mentioned in this article in Fabric references as "People in my organization, trusted organizations, and guests" in Skype fabric tenant, not a single string without the "guests". Since the article mentions Microsoft 365 admin center, I figured out that the options are in Chicago tenant. This is what I found:

If the options are to be found in Skype tenant as this is Teams-related, then there is a source issue: "People from/in my organization and trusted organizations" should be "People in my organization, trusted organizations, and guests". We need to be sure about the correct tenant to search for the correct UI translations to be used in the localized version of the article.

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

ID: 33613b2d-d607-ec47-1254-ae540d07ad59
Version Independent ID: aba728f0-0d3c-73fd-c7fe-68e69b6a753f
Content: Security guide for Microsoft Teams overview - Microsoft Teams
Content Source: Teams/teams-security-guide.md
Service: msteams
GitHub Login: @MSFTTracyP
Microsoft Alias: tracyp

Thanks for your feedback @cdowling1971


add user_hashed_id to combined marts

What are the relevant tickets?

https://github.com/mitodl/hq/issues/5715
Description (What does it do?)

Adding user_hashed_id and unique test to marts__combined__users and other marts so that it can be used for joining. Without this column, it isn't easy to join marts__combined__users.
How can this be tested?

dbt build -select 1+marts__combined__users --- the direct upstream model should be enough
dbt build -select marts.combined
You will get a failed unique test on marts__combined_program_enrollment_detail, which is unrelated to this PR. https://github.com/mitodl/hq/issues/5756 is created to address that.

The mart test takes a while because we now have so much data. @quazi-h Thank you for taking the time to test.


Failures during  parsing

From Clang Power Tools logs:
Sanitizing Z:\src\****.props
Test-Path : A parameter cannot be found that matches parameter name 'and'.
At line:1 char:52
+ (Test-Path("\build\native\Microsoft.Gsl.targets")  -and  !Exists("..\ ...
+                                                    ~~~~
    + CategoryInfo          : InvalidArgument: (:) [Test-Path], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.TestPathCommand

In the props file the line is
  <Import Project="$(PkgMicrosoft_Gsl)\build\native\Microsoft.Gsl.targets" Condition="Exists('$(PkgMicrosoft_Gsl)\build\native\Microsoft.Gsl.targets') AND !Exists('..\packages\Microsoft.Gsl.<IP_ADDRESS>\build\native\Microsoft.Gsl.target')"/>

Hello,
It seems we had issues with conditions/expressions that called Exists() more than once.
We've pushed a fix for this.
Please retest, using the instructions below, and let us know if your project compiles correctly now.
Regards,
Gabriel

This fix is currently live only for the github repository.
The latest Visual Studio extension (2.1) does not contain the fix. It will be included in the next release.
Until then, as a workaround, you can manually replace clang-build.ps1 in the VS extension directory with the latest from github. To locate the extension directory search for clang-build.ps1 in %LOCALAPPDATA%
Don't forget to restart Visual Studio after replacing the script file.

This issue was resolved in version 2.2 released on December 11th.


MDS: KL Divergence & Cosine Distance look the same

The last two here look conspicuously the same--which makes me wonder if there's something going wrong under the hood.

See my comment on your recent PR: the client enumeration only goes up to KL, so anything you put above that is going to clip (hence they look the same)

I guess we could have an issue for sorting out the enum in the client though...


Simulation status

Problem
As of now evaluating (clock) have no return value. So its not possible for the simulator to know if e.g., a halt condition has been encountered.
Solution
Introducing a return type for the Component::clock method.
Something like
enum Condition {
  Error(String),
  Halt(String),
}

And let clock return Result<(),Condition>, where Ok(()) indicates that clocking was successful, and Condition some type of exception. We can later refine the Condition to be more specific if we like but this could work to start out with.

PR https://github.com/perlindgren/syncrim/pull/58 should address the basics, and we can work based on that.

Addressed with #78 .


CANCEL not being forwarded across B2BUA

My UAC<EMAIL_ADDRESS>is attempting to cancel an outbound, unanswered call (to chromebook@foo.com). Instead of the CANCEL being passed into my drachtio-srf B2BUA, it is being consumed by drachtio and I am receiving a 487 Request Terminated from drachtio directly.
I'm running drachtio from docker:latest Starting drachtio version v0.8.5-1-g54cf4b00
and drachtio-srf is 4.4.35
Log from the calling UAC (jssip)
INVITE<EMAIL_ADDRESS>SIP/2.0
Via: SIP/2.0/WSS i2ggpp7cu5c7.invalid;branch=z9hG4bK9248680
Max-Forwards: 69
To<EMAIL_ADDRESS>From: sip:lenny@foo.com;tag=3q257tc1ac
Call-ID: 39tsl930s0ep3ul0mjb8
CSeq: 7113 INVITE
SIP/2.0 100 Trying
Via: SIP/2.0/WSS i2ggpp7cu5c7.invalid;branch=z9hG4bK9248680;received=<IP_ADDRESS>;rport=35334
From: sip:lenny@foo.com;tag=3q257tc1ac
To<EMAIL_ADDRESS>Call-ID: 39tsl930s0ep3ul0mjb8
CSeq: 7113 INVITE
Content-Length: 0
SIP/2.0 180 Ringing
Via: SIP/2.0/WSS i2ggpp7cu5c7.invalid;branch=z9hG4bK9248680;received=<IP_ADDRESS>;rport=35334
From: sip:lenny@foo.com;tag=3q257tc1ac
To: sip:chromebook@foo.com;tag=HeZmmU8cgZBZr
Call-ID: 39tsl930s0ep3ul0mjb8
CSeq: 7113 INVITE
Content-Length: 0
CANCEL<EMAIL_ADDRESS>SIP/2.0
Via: SIP/2.0/WSS i2ggpp7cu5c7.invalid;branch=z9hG4bK9248680
Max-Forwards: 69
To<EMAIL_ADDRESS>From: sip:lenny@foo.com;tag=3q257tc1ac
Call-ID: 39tsl930s0ep3ul0mjb8
CSeq: 7113 CANCEL
Reason: SIP ;cause=486 ;text="Busy Here"
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY
Supported: outbound
User-Agent: JsSIP 3.5.0
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/WSS i2ggpp7cu5c7.invalid;branch=z9hG4bK9248680;received=<IP_ADDRESS>;rport=35334
From: sip:lenny@foo.com;tag=3q257tc1ac
To: sip:chromebook@foo.com;tag=HeZmmU8cgZBZr
Call-ID: 39tsl930s0ep3ul0mjb8
CSeq: 7113 CANCEL
Content-Length: 0
SIP/2.0 487 Request Terminated
Via: SIP/2.0/WSS i2ggpp7cu5c7.invalid;branch=z9hG4bK9248680;received=<IP_ADDRESS>;rport=35334
From: sip:lenny@foo.com;tag=3q257tc1ac
To: sip:chromebook@foo.com;tag=HeZmmU8cgZBZr
Call-ID: 39tsl930s0ep3ul0mjb8
CSeq: 7113 INVITE
Content-Length: 0
--
drachtio log
2020-07-03 21:14:44.477961 tport.c:2801 tport_wakeup() tport_wakeup(0x7f1d055fb010): events IN
2020-07-03 21:14:44.478068 tport.c:2892 tport_recv_event() tport_recv_event(0x7f1d055fb010)
2020-07-03 21:14:44.478140 tport.c:3233 tport_recv_iovec() tport_recv_iovec(0x7f1d055fb010) msg 0x559f66c6c900 from (wss/<IP_ADDRESS>:34426) has 420 bytes, veclen = 1
2020-07-03 21:14:44.478299 recv 420 bytes from wss/[<IP_ADDRESS>]:34426 at 21:14:44.478169:
CANCEL<EMAIL_ADDRESS>SIP/2.0
Via: SIP/2.0/WSS mpuvf5sul1bh.invalid;branch=z9hG4bK7653502
Max-Forwards: 69
To<EMAIL_ADDRESS>From: <sip:lenny@foo.com>;tag=ce7252j644
Call-ID: t6igare2t188ug516k11
CSeq: 2119 CANCEL
Reason: SIP ;cause=486 ;text="Busy Here"
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY
Supported: outbound
User-Agent: JsSIP 3.5.0
Content-Length: 0

2020-07-03 21:14:44.478342 tport.c:3051 tport_deliver() tport_deliver(0x7f1d055fb010): msg 0x559f66c6c900 (420 bytes) from wss/<IP_ADDRESS>:34426 next=(nil)
2020-07-03 21:14:44.478370 nta.c:3039 agent_recv_request() nta: received CANCEL<EMAIL_ADDRESS>SIP/2.0 (CSeq 2119)
2020-07-03 21:14:44.478404 nta.c:3334 agent_check_request_via() nta: Via check: received=<IP_ADDRESS>
2020-07-03 21:14:44.478432 nta.c:3185 agent_recv_request() nta: CANCEL (2119) is going to INVITE (2119)
2020-07-03 21:14:44.478474 tport.c:3285 tport_tsend() tport_tsend(0x7f1d055fb010) tpn = WSS/<IP_ADDRESS>:5060
2020-07-03 21:14:44.478515 tport_type_ws.c:311 tport_send_stream_ws() tport_ws_writevec: vec 0x7f1d055fb200 0x559f66c65220 273 (273)
2020-07-03 21:14:44.478583 tport.c:3531 tport_send_msg() tport_vsend returned 273
2020-07-03 21:14:44.478682 send 273 bytes to wss/[<IP_ADDRESS>]:34426 at 21:14:44.478510:
SIP/2.0 200 OK
Via: SIP/2.0/WSS mpuvf5sul1bh.invalid;branch=z9hG4bK7653502;received=<IP_ADDRESS>;rport=34426
From: <sip:lenny@foo.com>;tag=ce7252j644
To: <sip:chromebook@foo.com>;tag=4DZg20Fva6jFK
Call-ID: t6igare2t188ug516k11
CSeq: 2119 CANCEL
Content-Length: 0

2020-07-03 21:14:44.478718 tport.c:2324 tport_set_secondary_timer() tport(0x7f1d055fb010): reset timer
2020-07-03 21:14:44.478745 SipDialogController::processCancelOrAck: CANCEL
2020-07-03 21:14:44.478788 SipDialogController::processCancelOrAck - Received CANCEL for call-id t6igare2t188ug516k11, sending to client
2020-07-03 21:14:44.478827 ClientController::route_response_inside_invite - sending response to client
2020-07-03 21:14:44.478962 Client::write_handler - wrote 633 bytes: system:0
2020-07-03 21:14:44.479423 SipDialogController::processCancelOrAck - clearing IIP
2020-07-03 21:14:44.480787 Client::read_handler read: 35bfd466-12e7-4505-b4e7-098a41cb9b7f|sip|a0e22f0d-dbeb-4ea3-81b0-b2ead5e2bf88|
SIP/2.0 487 Request Terminated
Call-ID: t6igare2t188ug516k11
cseq: 2119 INVITE
from: <sip:lenny@foo.com>;tag=ce7252j644
to<EMAIL_ADDRESS>Content-Length: 0

2020-07-03 21:14:44.481788 Client::processMessage - got request with 4 tokens
2020-07-03 21:14:44.481971 Client::processMessage - request id 35bfd466-12e7-4505-b4e7-098a41cb9b7f, request type: sip transaction id: a0e22f0d-dbeb-4ea3-81b0-b2ead5e2bf88, dialog id:
2020-07-03 21:14:44.482144 ClientController::addApiRequest: clientMsgId 35bfd466-12e7-4505-b4e7-098a41cb9b7f; size: 1
2020-07-03 21:14:44.482342 SipDialogController::clearIIP:  clearing leg 0x559f66c4cc20, irq: 0x559f66c4cdb0, orq: 0, rel: 0
2020-07-03 21:14:44.482511 SipDialogController::clearIIP:  clearing m_mapIrq2IIP for leg 0x559f66c4cc20
2020-07-03 21:14:44.482696 SipDialogController::processCancelOrAck - done clearing IIP
2020-07-03 21:14:44.482903 SipDialog::~SipDialog - destroying sip dialog with call-id t6igare2t188ug516k11
2020-07-03 21:14:44.483062 nta.c:4630 nta_leg_destroy() nta_leg_destroy(0x559f66c4cc20)
2020-07-03 21:14:44.483414 tport.c:3285 tport_tsend() tport_tsend(0x7f1d055fb010) tpn = WSS/<IP_ADDRESS>:34426
2020-07-03 21:14:44.483629 tport_type_ws.c:311 tport_send_stream_ws() tport_ws_writevec: vec 0x7f1d055fb200 0x559f66c6d840 128 (128)
2020-07-03 21:14:44.483922 tport_type_ws.c:311 tport_send_stream_ws() tport_ws_writevec: vec 0x7f1d055fb200 0x559f66c56984 42 (42)
2020-07-03 21:14:44.484138 tport_type_ws.c:311 tport_send_stream_ws() tport_ws_writevec: vec 0x7f1d055fb200 0x559f66c6d8c0 48 (48)
2020-07-03 21:14:44.484185 tport_type_ws.c:311 tport_send_stream_ws() tport_ws_writevec: vec 0x7f1d055fb200 0x559f66c569ae 50 (50)
2020-07-03 21:14:44.484219 tport_type_ws.c:311 tport_send_stream_ws() tport_ws_writevec: vec 0x7f1d055fb200 0x559f66c6d8f0 21 (21)
2020-07-03 21:14:44.484292 tport.c:3531 tport_send_msg() tport_vsend returned 289
2020-07-03 21:14:44.484403 send 289 bytes to wss/[<IP_ADDRESS>]:34426 at 21:14:44.483621:
SIP/2.0 487 Request Terminated
Via: SIP/2.0/WSS mpuvf5sul1bh.invalid;branch=z9hG4bK7653502;received=<IP_ADDRESS>;rport=34426
From: <sip:lenny@foo.com>;tag=ce7252j644
To: <sip:chromebook@foo.com>;tag=4DZg20Fva6jFK
Call-ID: t6igare2t188ug516k11
CSeq: 2119 INVITE
Content-Length: 0

2020-07-03 21:14:44.484691 tport.c:2324 tport_set_secondary_timer() tport(0x7f1d055fb010): reset timer
2020-07-03 21:14:44.484736 nta.c:6950 incoming_reply() nta: sent 487 Request Terminated for INVITE (2119)
2020-07-03 21:14:44.485002 nta.c:1409 set_timeout() nta: timer shortened to 32000 ms
2020-07-03 21:14:44.485057 tport.c:2324 tport_set_secondary_timer() tport(0x7f1d055fb010): reset timer
2020-07-03 21:14:44.485096 SipDialogController::doRespondToSipRequest thread<PHONE_NUMBER>08384
2020-07-03 21:14:44.485538 SipDialogController::findAndRemoveTransactionIdForIncomingRequest - searching transactionId a0e22f0d-dbeb-4ea3-81b0-b2ead5e2bf88
2020-07-03 21:14:44.485622 SipDialogController::findAndRemoveTransactionIdForIncomingRequest - failed to find transactionId a0e22f0d-dbeb-4ea3-81b0-b2ead5e2bf88, most likely this is a response to an invite we sent
2020-07-03 21:14:44.485750 SipDialogController::doRespondToSipRequest - unable to find irq or iip for transaction id a0e22f0d-dbeb-4ea3-81b0-b2ead5e2bf88
2020-07-03 21:14:44.486473 ClientController::removeApiRequest: clientMsgId 35bfd466-12e7-4505-b4e7-098a41cb9b7f; size: 0
2020-07-03 21:14:44.487055 Client::write_handler - wrote 135 bytes: system:0
2020-07-03 21:14:44.487407 Client::read_handler read: 5f378074-19cd-4395-be86-1798964b0e64|sip|ec522bce-ea8d-4bad-ac72-d719b231c05a|
CANCEL sip:s800tnu6@r7clc3cf02q9.invalid;transport=ws;transport=udp SIP/2.0
Content-Length: 0

2020-07-03 21:14:44.488561 Client::processMessage - got request with 4 tokens
2020-07-03 21:14:44.488826 Client::processMessage - request id 5f378074-19cd-4395-be86-1798964b0e64, request type: sip transaction id: ec522bce-ea8d-4bad-ac72-d719b231c05a, dialog id:
2020-07-03 21:14:44.489108 Client::processMessage - sending a CANCEL request inside a transaction
2020-07-03 21:14:44.489356 ClientController::addApiRequest: clientMsgId 5f378074-19cd-4395-be86-1798964b0e64; size: 1
2020-07-03 21:14:44.489683 ClientController::removeNetTransaction: transactionId a0e22f0d-dbeb-4ea3-81b0-b2ead5e2bf88; size: 0
2020-07-03 21:14:44.490092 tport.c:3285 tport_tsend() tport_tsend(0x559f66c234b0) tpn = wss/<IP_ADDRESS>:38390
2020-07-03 21:14:44.491954 tport.c:4085 tport_resolve() tport_resolve addrinfo = <IP_ADDRESS>:38390
2020-07-03 21:14:44.492226 tport.c:4767 tport_by_addrinfo() tport_by_addrinfo(0x559f66c26de0): found 0x7f1d055da010 by name wss/<IP_ADDRESS>:38390
2020-07-03 21:14:44.492555 tport.c:880 tport_alloc_secondary() tport_alloc_secondary(0x559f66c234b0): new secondary tport 0x559f66c74110
2020-07-03 21:14:44.494066 tport.c:1050 tport_base_connect() tport_base_connect(0x559f66c74110): connecting to wss/<IP_ADDRESS>:38390
2020-07-03 21:14:44.494341 tport.c:2324 tport_set_secondary_timer() tport(0x559f66c74110): reset timer
2020-07-03 21:14:44.494609 tport.c:3821 tport_queue() tport_queue(0x559f66c74110): queueing 0x559f66c58700 for wss/<IP_ADDRESS>:38390
2020-07-03 21:14:44.494815 nta.c:8481 outgoing_send() nta: sent CANCEL (22351641) to wss/<IP_ADDRESS>:38390
2020-07-03 21:14:44.495073 tport.c:4199 tport_pend() tport_pend(0x559f66c74110): pending 0x559f66c58700 for wss/<IP_ADDRESS>:38390 (already 0)
2020-07-03 21:14:44.495188 ClientController::removeApiRequest: clientMsgId 5f378074-19cd-4395-be86-1798964b0e64; size: 0
2020-07-03 21:14:44.495944 Client::write_handler - wrote 568 bytes: system:0
2020-07-03 21:14:44.589878 tport.c:2801 tport_wakeup() tport_wakeup(0x7f1d055fb010): events IN
2020-07-03 21:14:44.590447 tport.c:2892 tport_recv_event() tport_recv_event(0x7f1d055fb010)
2020-07-03 21:14:44.590808 tport.c:3233 tport_recv_iovec() tport_recv_iovec(0x7f1d055fb010) msg 0x559f66c6ccb0 from (wss/<IP_ADDRESS>:34426) has 390 bytes, veclen = 1
2020-07-03 21:14:44.591210 recv 390 bytes from wss/[<IP_ADDRESS>]:34426 at 21:14:44.591078:
ACK<EMAIL_ADDRESS>SIP/2.0
Via: SIP/2.0/WSS mpuvf5sul1bh.invalid;branch=z9hG4bK7653502
Max-Forwards: 69
To: <sip:chromebook@foo.com>;tag=4DZg20Fva6jFK
From: <sip:lenny@foo.com>;tag=ce7252j644
Call-ID: t6igare2t188ug516k11
CSeq: 2119 ACK
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY
Supported: outbound
User-Agent: JsSIP 3.5.0
Content-Length: 0

2020-07-03 21:14:44.591659 tport.c:3051 tport_deliver() tport_deliver(0x7f1d055fb010): msg 0x559f66c6ccb0 (390 bytes) from wss/<IP_ADDRESS>:34426 next=(nil)
2020-07-03 21:14:44.591707 nta.c:3039 agent_recv_request() nta: received ACK<EMAIL_ADDRESS>SIP/2.0 (CSeq 2119)
2020-07-03 21:14:44.591975 nta.c:3334 agent_check_request_via() nta: Via check: received=<IP_ADDRESS>
2020-07-03 21:14:44.592030 nta.c:3178 agent_recv_request() nta: ACK (2119) is going to INVITE (2119)
2020-07-03 21:14:44.592071 tport.c:2324 tport_set_secondary_timer() tport(0x7f1d055fb010): reset timer

that is actually the correct behavior, as far as the incoming leg (aka A leg).  If you had used srf.createB2BUA you should have also seen a CANCEL generated on the B leg.

apologies if I've misunderstood how srf.createB2BUA works, but I thought I had done that. My code is based on your b2bua template, so in my invite handler I call srf.createB2BUA and that is working for call setup and tear-down. Also, if the B leg rejects the call, that is working correctly. I have tried adding srf.use('cancel')... but that is never firing, and I've also tried adding srf.use() to log everything, but it never sees the cancel.

On a cancel you should be falling through to
.catch((err: any) => {
                console.log(`Error connecting call: ${err.message}`);
            });

can you show the full drachtio log, including the initial INVITE?

I've uploaded the full log to https://pastebin.com/i75QgpiU
There is only a single dialog so it's easy to pick out the INVITE, CANCEL and the 200 and 487 responses. To confirm, the B device receives the INVITE and responds with a 100-Trying and a 180-Ringing. There are no other messages.
Am I right in thinking the expected flow is that the CANCEL should be forwarded to the B device, which should then respond with a 487 which is then forwarded to the A device, and that this should happen automagically within srf.B2BUA ?  Again, my apologies if this is simple ignorance on my part.

OK I think this is a bug in drachtio-server, where it fails to forward the CANCEL onwards over the existing websocket connection to the B party.  If I create branch in the drachtio-server repo with a fix, do you have the ability to build and test that?

sorry for the delay. I'm happy to test out the branch

actually, could you actually show me a pastebin of a call that successfully connects?  I would like to compare that with the earlier pastebin showing the CANCEL failure.  That will help me prepare the fix

Here is the pastebin of an answered call from lenny to chromebook
https://pastebin.com/7ZYVUWsy

I don't know if this is related or not, but I am also having a problem sending a CANCEL to one of the B legs with my ring group implementation. Referring to the code in b2b-sugar, I store each reqSent in a map, and when I get an answer, I call a version of your killCalls which calls reqSent.cancel() on each B leg other than the one which answered.
When I check the SIP trace on the unanswered B device, there is no cancel. I also couldn't see any evidence of a cancel in the drachtio-server logs.
My code to store the reqSent...
          let p = srf.createB2BUA(req, res, uri, {headers: optionHeaders, passFailure: false},
                 {
                     cbRequest: (err, reqSent) => {
                         callsInProgress[uri] = reqSent;
                     }
                 }
             );

If you are using wss or tcp as a protocol on the B leg, then I imagine it is related.  I will try to have a patch for you to fix later this evening, or first thing in the am

yes I'm using wss throughout.

I've attempted a fix on branch issue-84 of drachtio-server.  I'd be interested to see a pastebin of a retest with that build

any chance you can validate that fix today?

working on it now

I've repeated my test of initiating a call from lenny to chromebook, and then cancelling the call from lenny before the call is answered. The symptoms are unfortunately the same; no CANCEL is seen on the B leg.
https://pastebin.com/pFeB7vcu
2020-07-10 15:26:21.163518 Starting drachtio version v0.8.6-rc1-3-g69a0a4faf

I'm unable to recreate this issue, however your call flow has one interesting difference:  after sending the INVITE to the B party and before receiving a 100 Trying, you send a SIP MESSAGE request downstream to the B party.  To see if this is the related to the issue, could you revert to the latest develop branch and try your scenario without the MESSAGE request?

If you look at the first pastebin, that is without the MESSAGE from A to B running on latest docker version. It's that the test you want me to run, or a different version?

I reviewed that pastebin again.  There is another difference.  On the INVITE you send to the B party, the sip uri has two transport params:
INVITE sip:hb6e0v71@dqhddqrlsm8t.invalid;transport=ws;transport=udp SIP/2.0

Is this coming from your app?  See if you can actually remove both of them so the INVITE start line is simply
INVITE<EMAIL_ADDRESS>SIP/2.0

I've got to a situation where I have one working configuration, and one failing configuration, ostensibly using the same code. In both cases I have the transport=udp in place and also the out of band MESSAGE.
The working configuration is where all components are running on my local dev lan, the failing configuration is where the drachtio server is running on AWS.
I'll dig deeper into s/w version numbers, config, etc and also do a side by side comparison of the logs to see if anything jumps out. I'll then make the change to lose transport=udp and see if that makes a difference.
I'll post my findings later today.

OK, but having transport=udp is wrong since this is going to go out wss.  Why do you have that there?  Or are you not putting it there (from your app)?
Can you do the test I requested, with the INVITE line on the B leg not specifying a transport (the server will take care of noticing this is a registered client which must go out over wss)

Here are the three tests.

All components on my dev lan. Redundant transport=udp in place. Result is good - B leg receives the CANCEL
https://pastebin.com/enneYnmZ

drachtio and d-srf running on my AWS server. Redundant transport=udp in place. Result is bad - B leg does not see the CANCEL
https://pastebin.com/QVZCNDeL

Configuration same as (2). This time with the redundant transport=udp removed. Result is bad - B leg does not see the CANCEL
https://pastebin.com/YXEfm0wT

I've only looked at it no. 3 since the others are irrelevant (transport=udp is not appropriate)
As far as test no. 3 you are still including a transport=ws header.
2020-07-14 13:54:37.749708 Client::read_handler read: 828fc34d-4149-460b-97c9-b5bf8e7c78d9|sip||

INVITE sip:h8a7figg@ougto1p3s0qn.invalid;transport=ws SIP/2.0

Please do a test with no transport and provide results

I confirm that nowhere in my code do I set transport=ws.
My client uses JsSIP to place the call with this line
<EMAIL_ADDRESS>{mediaConstraints:{audio:true, video:true}, iceServers:{"urls": ["stun:stun.l.google.com:19302"]}})`

I'm talking about your node.js app, not your client app.
Please run the node.js app with DEBUG=drachtio:* and provide that output

Here is the debug log https://pastebin.com/EWQ7gCHx
To confirm, when I say "nowhere in my code" I mean neither server nor client. My server code is your simple B2BUA template in  comment 3 above (now with the transport=udp removed).

Its interesting, because this seems like it is coming from your app:
 drachtio:srf createB2BUA: creating UAC, opts: {"headers":{"X-ch-crid":"54","X-ch-calleepid":"98","X-ch-calleremail":"lenny@foo.com"},"passFailure":false,"uri":"sip:rgmpiu5p@0rmn94tr1ou6.invalid;transport=ws","method":"INVITE","responseHeaders":{},"callingNumber":"lenny","calledNumber":"chromebook

i.e., the uri you are providing is sip:rgmpiu5p@0rmn94tr1ou6.invalid;transport=ws.
Can you share your current code?  Also, please update to the latest drachtio-srf if you have not and run against that

I can categorically confirm that transport=ws (or any permutation of that) does not appear anywhere in my code (client or server). My latest client code is 4 comments up and my server code is a simple B2BUA where I do no manipulation of the URI.
You are right that the initial INVITE does include transport=ws . Here is the trace from the A client ...
INVITE<EMAIL_ADDRESS>SIP/2.0
Via: SIP/2.0/WSS uaipb0vfrtj1.invalid;branch=z9hG4bK5032254
Max-Forwards: 69
To<EMAIL_ADDRESS>From: <sip:lenny@foo.com>;tag=obqlgj22pe
Call-ID: dtjke14vt4cftp8u5vnp
CSeq: 9519 INVITE
X-ch-crid: 54
X-ch-calleepid: 98
X-ch-calleremail<EMAIL_ADDRESS>Contact: <sip:fgnc1fpp@uaipb0vfrtj1.invalid;transport=ws;ob>
Content-Type: application/sdp
Session-Expires: 90
Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY
Supported: timer,ice,replaces,outbound
User-Agent: JsSIP 3.5.0
Content-Length: 6029

... but that is being added by JsSIP, not by me.  I'm happy to raise a bug on JsSIP if you are saying that is incorrect.
Can I emphasise that when I run the same code on my local net, it works.
I'm running drachtio-srf 4.3.5, but I'm happy to pull the master branch and retest.

srf.invite(regMiddleware, (req, res) => {
    let callsInProgress = {};
    const dest = parseUri(req.uri).user;
    if (dest && users.has(dest)) {
        const user = users.get(dest);
        let endpoint_aor;
        const b2buaPromises = [];
        for (let deviceId in user) { // #multidevice this is where I fork the invite to each device
            endpoint_aor = user[deviceId];
            const uri = `${endpoint_aor}`;
            c.log('loop over b2bua still gonan call uri=' + uri);
            const optionHeaders = {};
            for (let name in req.msg.headers) {
                if (name.startsWith('X-ch-')) {
                    optionHeaders[name] = req.msg.headers[name];
                }
            }
            // srf.createB2BUA(req, res, uri, {headers: {'X-ch-crid':req.msg.headers['X-ch-crid']}})
            let p = srf.createB2BUA(req, res, uri, { headers: optionHeaders, passFailure: false }, {
                cbRequest: (err, reqSent) => {
                    // if (this.notifiers.cbRequest) this.notifiers.cbRequest(err, reqSent);
                    callsInProgress[uri] = reqSent;
                    c.log(`CallManager#_attemptOne: launched call to ${reqSent.uri}; calls in progress`);
                }
            });
            b2buaPromises.push(p);
            p.then(({ uac, uas }) => {
                c.log('connected');
                killCalls(callsInProgress, uri);
                uac.on('destroy', () => { uas.destroy(); });
                uas.on('destroy', () => { uac.destroy(); });
                uac.on('info', (req, res) => {
                    res.send(200);
                    uas.request({ method: 'INFO', headers: { 'content-type': req.msg.headers['content-type'] }, body: req.msg.body });
                });
                uas.on('info', (req, res) => {
                    res.send(200);
                    uac.request({ method: 'INFO', headers: { 'content-type': req.msg.headers['content-type'] }, body: req.msg.body });
                });
            })
                .catch((err) => {
                c.log(`Error connecting call: ${err.message}`);
            });
        } // bottom of #multidvice loop
    }
    else {
        c.log(`invite to unknown user: ${req.uri}`);
        res.send(404);
    }
});

Can you log endpoint_aor?
  endpoint_aor = user[deviceId];
  const uri = `${endpoint_aor}`;

I think that will have the transport=ws in it.
Could you try stripping that out (the transport param) when you first save it in your users map, so that we can see what happens when an INVITE goes out just with just the user@host and not the transport param ?

tried, no difference.
Here is the log entry
[Tue, 14 Jul 2020 20:58:48 GMT] loop over b2bua still gonan call<EMAIL_ADDRESS>

In case it helps, this actually seems to be getting worse. My original report was that it was the CANCEL from A that was not being propagated to the B leg. In my initial testing, if B rejected the call with a 486 Busy Here, that was being correctly propagated to A.
In my latest testing, the second case is no longer true. In a scenario where B rejects the call, A is now not receiving any message.
So A sees
Invite ->
<- 100 Trying
<- 180 Ringing
B sees.
<- Invite
100 Trying ->
180 Ringing ->
486 Busy Here ->
At least in this new failure mode, I can catch this in my srf code as the .catch of my srf.createB2BUA. However I only seem to have an err object at this point. Is there any way to access the uac Dialog so I can manually send a 486 to the caller A?

tried, no difference.
Here is the log entry
[Tue, 14 Jul 2020 20:58:48 GMT] loop over b2bua still gonan call<EMAIL_ADDRESS>
Can you supply a pastebin for this attempt?


why can't flutter do this?!

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Use case
on a flutter app, when to choose an option (may be on a popup menu) you'd have to tap twice or thrice on menus. though may be on native apps you could've select by scrolling to the option!
Proposal
on a flutter app:
https://github.com/flutter/flutter/assets/122597295/06895bf3-86e4-42a8-ae09-7015520f1166
this is what i want. (it's true that not everywhere on native apps you could do this.)
https://github.com/flutter/flutter/assets/122597295/952b6450-d2a2-4020-8543-620cf11b6a66

it is/(may be) not implemented, as i just showed a "feature" that could be made default.

imho this should NOT be the default behavior

@idontveapc The default behavior you observe may only be on certain applications or specific devices (as you mentioned above). That being said, it would be more appropriate to have a separate package with your own implementation rather than integrating it into the framework.
This approach will not only provide more flexibility but also ensure that the integration is tailored to your specific needs. By doing so, you'll have greater control over the functionality and can avoid any potential issues that may arise from relying on the default behavior.
If you're still considering integrating it into the framework, I suggest elaborating on the points I mentioned above. Additionally, it should be made clear which relevant components in the framework will help achieve this. Please refer to the feature requests in the repository backlog and provide such detailed information. Thanks!

I was thinking of MenuAnchor or PopupMenuButton, have you tried them?
Although these widgets don't have such animation (splash effect when "swiping" through items), they don't have the error you mentioned ("you have to tap twice or thrice to choose an option"). It could be an implementation issue in your code. So I would suggest you open another issue for that (a bug issue).
What specific widget is this proposal proposing for? I can't bring the issue forward if you don't provide more specific information.


Add context menu to dashboard table row cells to open another dashboard with the selected cell content as a parameter

Fulfilled by dashboard links


feat: add blog authors links on avatars and names

This PR adds a link to the blog author link (only if provided) on all avatars and names, including the view that lists all blog posts but also the blog post itself.
For example:

Look who's a frontend developer now  :trollface:


Static demo enhancements

Add the following to the static demo:
https://ringcentral.github.io/ringcentral-widget-demo/

minimized state on page load
open window on incoming call when in minimized state

Updated on PR #13


TO FIX POST BETA RELEASE
- <step-number>: <bug description>

69: modify this step or the following to force keyword arguments

61: got complaints about the gap between the introduction of list comprehensions and the this step


Error while installing in ember app

I installed the plugin using ember install ui-ember-slider and everything went through fine. But when i went to run the app with ember serve i get this error.
Serving on http://localhost:4200/app/
ENOENT: no such file or directory, stat 'C:\Projects\GIT\app\tmp\concat_with_maps-input_base_path-iM5eFq7U.tmp\0\bower_components\seiyria-bootstrap-slider\js\bootstrap-slider.js'
Error: ENOENT: no such file or directory, stat 'C:\Projects\GIT\app\tmp\concat_with_maps-input_base_path-iM5eFq7U.tmp\0\bower_components\seiyria-bootstrap-slider\js\bootstrap-slider.js'

Maybe related to? https://github.com/broccolijs/broccoli-funnel/issues/53

We are getting that error too. I don't see a blueprint for the app that installs seiyria-bootstrap-slider, but I see index.js trying to pull it in.

The current work around is to run bower install seiyria-bootstrap-slider --save so that it is available for it.

Oops, sorry guys. I'll aim to get this fixed today.

This should be fixed now in npm version 0.2.2. Thanks for pointing this out. I'll close this but please re-open if it's still a problem for either of you.

:+1: that fix worked for me. Thanks for the quick update!


Fail to load the number of  Star / Fork

Hi !
When I created the badges like this:
[![star this repo](http://githubbadges.com/star.svg?user=Yaoshicn&repo=awesome-music-for-programming&background=007ecg&color=bbb&style=flat)](https://github.com/Yaoshicn/awesome-music-for-programming)
It didn't work, just like

this may be because the caching isn't working..

this should be resolved.  pushed commit dd4b055a09f6e7ebc96553765c6cbc6bb0ddf1e9

thanks for reporting it !! :+1:  :smile:

Thanks for fixing it!


Remove favorite methods from Giphy::Search and Giphy::Client

The API no longer has a /favorites endpoint. This resolves #9.

@schonstal could you please fix the conflicts so that I can merge your PR?


DB Sync 12.0.0 sql migration issue

OS
Your OS: Linux Ubuntu
Versions
The db-sync version (eg cardano-db-sync --version): 12.0.0
PostgreSQL version: 11.5
Build/Install Method
using docker
I upgraded my cardano node from 1.30.1 to 1.33.1 and the DB Sync. from 11.0.4 to 12.0.0
The node runs properly as far as I can see that but the DB Sync exits in the migration process:
Sync terminal log:
Connecting to network: mainnet
[db-sync-node:Info:6] [2022-01-20 12:08:59.26 UTC] Schema migration files validated
[db-sync-node:Info:6] [2022-01-20 12:08:59.26 UTC] Running database migrations
[db-sync-node:Info:6] [2022-01-20 12:08:59.26 UTC] Enviroment variable DbSyncAbortOnPanic: False
ExitFailure 3

Errors in file: /tmp/migrate-2022-01-20T120859.log

Log file:
Running : migration-1-0000-20190730.sql
 init
------

(1 row)

Running : migration-1-0001-20190730.sql
 migrate
---------

(1 row)

Running : migration-1-0002-20190912.sql
psql:/nix/store/avpar5par2qvq6nj4lv3igq75mm7vqc9-cardano-db-sync-schema/schema/migration-1-0002-20190912.sql:32: NOTICE:  Dropping view : "utxo_byron_view"
psql:/nix/store/avpar5par2qvq6nj4lv3igq75mm7vqc9-cardano-db-sync-schema/schema/migration-1-0002-20190912.sql:32: NOTICE:  Dropping view : "utxo_view"
 drop_cexplorer_views
----------------------

(1 row)

Running : migration-1-0003-20200211.sql
 migrate
---------

(1 row)

Running : migration-1-0004-20201026.sql
 migrate
---------

(1 row)

Running : migration-1-0005-20210311.sql
 migrate
---------

(1 row)

Running : migration-1-0006-20210531.sql
 migrate
---------

(1 row)

Running : migration-1-0007-20210611.sql
 migrate
---------

(1 row)

Running : migration-1-0008-20210727.sql
 migrate
---------

(1 row)

Running : migration-1-0009-20210727.sql
 migrate
---------

(1 row)

Running : migration-2-0001-20211003.sql
 migrate
---------

(1 row)

Running : migration-2-0002-20211007.sql
 migrate
---------

(1 row)

Running : migration-2-0003-20211013.sql
 migrate
---------

(1 row)

Running : migration-2-0004-20211014.sql
 migrate
---------

(1 row)

Running : migration-2-0005-20211018.sql
 migrate
---------

(1 row)

Running : migration-3-0001-20190816.sql
Running : migration-3-0002-20200521.sql
 migrate
---------

(1 row)

Running : migration-3-0003-20200702.sql
 migrate
---------

(1 row)

Running : migration-3-0004-20200810.sql
 migrate
---------

(1 row)

Running : migration-3-0005-20210116.sql
 migrate
---------

(1 row)

Running : migration-3-0006-20210116.sql
 migrate
---------

(1 row)

Running : migration-3-0007-20211022.sql
psql:/nix/store/avpar5par2qvq6nj4lv3igq75mm7vqc9-cardano-db-sync-schema/schema/migration-3-0007-20211022.sql:29: ERROR:  column "pool_hash" does not exist
CONTEXT:  SQL statement "CREATE INDEX idx_reserved_pool_ticker_pool_hash ON reserved_pool_ticker (pool_hash)"
PL/pgSQL function migrate() line 19 at SQL statement
ExitFailure 3

There are dozens of db-sync instances running version 12.0.x and none of the others have run into this problem. That suggests its something specific to your installation. You need to make sure the old database has been dropped before starting the new version.

:sob: Now at epoch 298 I get a validateEpochRewards failure. That is with PR #1014 merged, I think that will need to be reverted.

I have not deleted the DB. But is that the intended way, that we have to delete the data every time there is a new major version?
I am quite sure that it will work when I drop the DB syncing from the ground up is time consuming.

I have not deleted the DB. But is that the intended way, that we have to delete the data every time there is a new major version?

Yes. That is specified in the release notes.

Sorry you are right! Reading the changelog helps :)


Module/mixcr/1.0

This is an update to mixcr-1.0 and will be migrated to version 1.1. Changes are mostly minor - please see change log.
Also includes a minor fix to the bam2fastq module and reference files workflow.

Thanks for the quick review, @Kdreval!

Could you approve the version bump, @Kdreval?

Sorry Kostia, I ran into a memory problem as soon as you approved this last night. I added a jvmheap memory parameter and increased the default memory request, do you mind approving one last time?


TypeError: unhashable type: 'dict' if functools32 is installed

If you have functools32 installed (python-functools32 on debian), then fetch command will abort:
$  python2 -m flatisfy fetch --config config.json
...
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/gautier/code/docker/flatisfy/Flatisfy/flatisfy/__main__.py", line 220, in <module>
    main()
  File "/home/gautier/code/docker/flatisfy/Flatisfy/flatisfy/__main__.py", line 178, in main
    fetch_details=True)["new"]
  File "flatisfy/cmds.py", line 121, in filter_fetched_flats
    fetch_details
  File "flatisfy/cmds.py", line 62, in filter_flats_list
    config)
  File "flatisfy/tools.py", line 311, in wrapped
    res = f(*args, **kwargs)
  File "flatisfy/filters/__init__.py", line 113, in first_pass
    flats_list = metadata.guess_postal_code(flats_list, constraint, config)
  File "flatisfy/filters/metadata.py", line 139, in guess_postal_code
    "postal_codes": data.load_data(PostalCode, constraint, config)
  File "/usr/lib/python2.7/dist-packages/functools32/functools32.py", line 394, in wrapper
    result = cache[key]
TypeError: unhashable type: 'dict'

Should be fixed by https://github.com/Phyks/Flatisfy/commit/7e35b71c28c84053c58c2b8f5b41c130d1243cf0.
Good catch, the API of data.load_data changed recently, and we missed to test it out with functools installed! Thanks a lot for the reporting!


Problem connecting to the apiserver and rules for ufw

Written in case it can help others (I've been trying to debug this problem for a couple of days). It can be closed (maybe minimal changes in documentation).
I've spun up a "cluster"
$ sudo snap install microk8s --edge --classic
microk8s (edge) v1.11.0 from 'canonical' installed

After a while, journal in snap.microk8s.daemon-<...> seems OK (no strange messages at the end).
Then I enable dns and dashboard
$ microk8s.enable dns dashboard
Enabling DNS
Applying manifest
service/kube-dns created
serviceaccount/kube-dns created
configmap/kube-dns created
deployment.extensions/kube-dns created
Restarting kubelet
DNS is enabled
Enabling dashboard
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
service/monitoring-grafana created
service/monitoring-influxdb created
service/heapster created
deployment.extensions/monitoring-influxdb-grafana-v4 created
serviceaccount/heapster created
configmap/heapster-config created
configmap/eventer-config created
deployment.extensions/heapster-v1.5.2 created
dashboard enabled

However, both dns and dashboard fail to start
$ microk8s.kubectl get all --all-namespaces
NAMESPACE     NAME                                                  READY     STATUS             RESTARTS   AGE
kube-system   pod/heapster-v1.5.2-84f5c8795f-fvs7v                  4/4       Running            0          3m
kube-system   pod/kube-dns-864b8bdc77-jl2lb                         2/3       CrashLoopBackOff   3          3m
kube-system   pod/kubernetes-dashboard-6948bdb78-5k4z4              0/1       CrashLoopBackOff   3          3m
kube-system   pod/monitoring-influxdb-grafana-v4-7ffdc569b8-t42vc   2/2       Running            0          3m

NAMESPACE     NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
default       service/kubernetes             ClusterIP   <IP_ADDRESS>     <none>        443/TCP             10m
kube-system   service/heapster               ClusterIP   <IP_ADDRESS>   <none>        80/TCP              3m
kube-system   service/kube-dns               ClusterIP   <IP_ADDRESS>    <none>        53/UDP,53/TCP       3m
kube-system   service/kubernetes-dashboard   ClusterIP   <IP_ADDRESS>    <none>        443/TCP             3m
kube-system   service/monitoring-grafana     ClusterIP   <IP_ADDRESS>   <none>        80/TCP              3m
kube-system   service/monitoring-influxdb    ClusterIP   <IP_ADDRESS>    <none>        8083/TCP,8086/TCP   3m

NAMESPACE     NAME                                             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/heapster-v1.5.2                  1         1         1            1           3m
kube-system   deployment.apps/kube-dns                         1         1         1            0           3m
kube-system   deployment.apps/kubernetes-dashboard             1         1         1            0           3m
kube-system   deployment.apps/monitoring-influxdb-grafana-v4   1         1         1            1           3m

NAMESPACE     NAME                                                        DESIRED   CURRENT   READY     AGE
kube-system   replicaset.apps/heapster-v1.5.2-84f5c8795f                  1         1         1         3m
kube-system   replicaset.apps/kube-dns-864b8bdc77                         1         1         0         3m
kube-system   replicaset.apps/kubernetes-dashboard-6948bdb78              1         1         0         3m
kube-system   replicaset.apps/monitoring-influxdb-grafana-v4-7ffdc569b8   1         1         1         3m

Looking at the logs
$ microk8s.kubectl logs pod/kube-dns-864b8bdc77-jl2lb sidecar -n kube-system
[...]
Waiting for services and endpoints to be initialized from apiserver... [multiple times]
[...]

Similarly
$ microk8s.kubectl logs -f kubernetes-dashboard-6948bdb78-hf5q7 --namespace kube-system
2018/07/11 16:39:28 Starting overwatch
2018/07/11 16:39:28 Using in-cluster config to connect to apiserver
2018/07/11 16:39:28 Using service account token for csrf signing
2018/07/11 16:39:28 No request provided. Skipping authorization
2018/07/11 16:39:58 Error while initializing connection to Kubernetes apiserver. This most likely means that the cluster is misconfigured (e.g., it has invalid apiserver certificates or service accounts configuration) or the --apiserver-host param points to a server that does not exist. Reason: Get https://<IP_ADDRESS>:443/version: dial tcp <IP_ADDRESS>:443: i/o timeout
Refer to our FAQ and wiki pages for more information: https://github.com/kubernetes/dashboard/wiki/FAQ

While preparing this issue, I came to realise that I have ufw enabled
$sudo ufw disable

solves the problem.
Maybe some reference at
https://github.com/juju-solutions/microk8s/blob/11fe17a5c52055eca1959b65d48510eb488ecd3a/README.md
Or maybe adding the ufw rules required.

Thank you for reporting this.

Thanks @gonfva-bcl , I've opened https://github.com/juju-solutions/microk8s/issues/68 to document this.

@gonfva-bcl Thank you!


[fix][flaky] Fix flakyness in testAutoSchemaFunction

Motivation
testAutoSchemaFunction is flaky because ensureSubscriptionCreated will create a consumer to create the subscription.
By doing so it also adds a schema on the topic.
But that leads to a race when the function consumer uses AUTO_SCHEMA because the new schema is seen as incompatible if the function consumer is already subscribed (We get IncompatibleSchemaException : Topic does not have schema to check).
Note: the issue with the IncompatibleSchemaException is a bug and will be fixed in another PR (see issue https://github.com/apache/pulsar/issues/17354)
Modifications
Use PulsarAdmin to create the subscription instead of a consumer.
Verifying this change

[ ] Make sure that the change passes the CI checks.

This change is already covered by existing tests, such as PulsarFunctionsTest
Does this pull request potentially affect one of the following parts:
no
If yes was chosen, please highlight the changes

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API: (yes / no)
The schema: (yes / no / don't know)
The default values of configurations: (yes / no)
The wire protocol: (yes / no)
The rest endpoints: (yes / no)
The admin cli options: (yes / no)
Anything that affects deployment: (yes / no / don't know)

Documentation
Check the box below or label this PR directly.
Need to update docs?

[ ] doc-required
(Your PR needs to update docs and you will update later)

[x] doc-not-needed
fix

[ ] doc
(Your PR contains doc changes)

[ ] doc-complete
(Docs have been already added)

I hope it fixes the CI. Not totally sure about that. At least it now works on my machine...

/pulsar-bot rerun-failure-checks


Monte Carlo Random Walk Research

In this use case, we ought to develop ChatRnD teams of AI-Agents capable of developing and presenting novel use case of Monte Carlo Algorithm.
As part of this use case the ChatRnD AI-Agents should cover the literature to first introduce existing state of Monte Carlo Algorithm research. Make the basic derivations and cover basic knowledge on the topic related to its application.
The team should then pick a topic of interest to then focus developing improved version that can be tested and utilized.
Finally a report on the development should be made by the team.
The first version out of the box based on ChatDev basic framework has been capable of doing the following:

In which a simple model box for performing monte carlo random walk has been performed.
Improved version of the ChatRnD should be capable of performing statistical analysis and more.

After adjusting for base chat_env and modifying the level of details for the task our ChatRnD team can now produce the following, in which user can specify a specific file, to then save the result for each experiment.

It also generate a bit of overview on the theory such as:

Next, we want to see this be self-iterated by the team and expecting to see them started plotting and performing analysis on the data, maybe also improve on the nature of trajectories noise variation and more.

Another extra iteration for today's test.
Now it can generate specific number of trajectories, then save .csv and also plot the trajectories

The review part also is improving with a bit more equation on it.

This is getting exciting. Will try to reformulate the role recruiting and let them running with iteration when it comes to analyzing the data for more rigor.


Cleanup windows implementation

[ ] associating a socket with a different EventLoop should return an error
[ ] don't unconditionally schedule a new TcpListener accept.

Relates to #360


Remove otr

removed OTR since it's no longer updated and it is ancient at this point

Does it need to be updated? Are there any known vulnerabilities or other problems with the spec, or applications used? I'd like to hear some stronger arguments against OTR first, other than its age or lack of popularity. It is also a shame to throw out XMPP with it. We should at least replace it with a stronger modern recommendation, if warranted.

Cryptography and messengers move fast, you can't afford to be relying on a protocol that hasn't been updated in 8 years seemingly. There are many better options that I think we should recommend.
XMPP is still good, we can add that if you want. I don't use it so I don't know any clients to recommend, but XMPP themselves seem to have a curated list of clients.

I would replace the whole OTR section with a Messenger section.
For chatting with other Apple devices iMessage with new PQ3  is the most secure. For chatting with non-Apple devices is Signal, but Signal sadly use Electron on macOS which itself isn't secure [1].
[1]
https://wojciechregula.blog/post/abusing-electron-apps-to-bypass-macos-security-controls/
https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f
https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/
https://wojciechregula.blog/post/electroniz3r/

I understand your reservations, however iMessage is part of the system and people are going to use it anyway, so I think this guide should at least cover the most secure way to use it. Doesn't have to necessarily be a recommendation, just let people know that if they choose to use it, here's how they should configure it.
Signal is an excellent messenger, but the desktop client isn't a standalone thing and it requires you to sign up with the phone app first and basically sync your messages to the desktop. It's sort of just a box-ticking exercise so they can say they have a desktop client but you're better off just using it on your phone by itself.

I would recommend OMEO for XMPP users, and Signal otherwise. Of course, it depends on your threat model. If you don't want the NSA to read your chats, I wouldn't bet on OTR. If you're trying to ensure the person running your XMPP server doesn't have access, OTR is enough.
I don't know anything about the Apple ecosystem, so no clue about iMessage.

@drduh The number of CVEs has nothing to do with security in first place.
But anyway the more the code is (regularly) checked, the higher the security against unknown gaps.
Also remember that using/ installing non internal programs increase the attack surface so for macOS the best messenger in terms of security is iMessage. Also it's the same for privacy as it's not needed to trust another party.

So yeah no reason to recommend an inferior encryption protocol when a better one exists.

@drduh The number of CVEs has nothing to do with security in first place. But anyway the more the code is (regularly) checked, the higher the security against unknown gaps.

Disagree, especially because the CVEs are being discovered by outside researchers - even without access to source code. As far as I know, the code has never been audited independently, it's closed and proprietary. Are there any third party sources to cite in favor of iMessage security?

Also remember that using/ installing non internal programs increase the attack surface so for macOS the best messenger in terms of security is iMessage. Also it's the same for privacy as it's not needed to trust another party.

Perhaps, but the CVEs listed also demonstrate risks from using iMessage without Lockdown mode, and very severe ones. I don't understand the privacy argument. To me, it makes more sense for the software which handles cryptography to be different from the one doing the storage and delivery.
The security and privacy trade-offs with trusting Apple software ought to be better explained before the recommendation is made.

Disagree, especially because the CVEs are being discovered by outside researchers - even without access to source code. As far as I know, the code has never been audited independently, it's closed and proprietary.

This isn’t a problem. Mostly „outside“ researchers are the ones who find CVEs in closed sources and sometimes even Reverse Engineering the Code so I can’t understand what you’re trying to argument here.

Perhaps, but the CVEs listed also demonstrate risks from using iMessage without Lockdown mode, and very severe ones.

Also I doesn’t understand why you post random years old and fixed CVEs. No software is perfect but you want enforce iMessage usage with Lockdown mode. So why not also for other/all software? Where’s the point?
Sounds only like an dislike against iMessage for non reason.

The security and privacy trade-offs with trusting Apple software ought to be better explained before the recommendation is made.

For me this sounds very Anti-Apple so what’s this guide then for?

Apple has lots of audits and certifications from third parties. In particular, iMessage is covered by ISO/IEC 27001 and ISO/IEC 27018 according to Apple. macOS's cryptography certifications can be seen here. In their blog post about the new encryption algorithm, they mention outside evaluations of the security of iMessage's encryption here and here. Just because it is closed source doesn't mean no one outside Apple ever sees the code, it's just not openly available to the public. Of course Apple also has its own internal team of security researchers that have access to the code.
I can take it out, I just really think it's best to give instructions on how to secure iMessage the best way possible since a lot of people can only be reached on there. It's sort of a network effect problem. I know my whole family uses iMessage and that's the situation for a lot of people. It's also not immediately obvious that you need to turn on Advanced Data Protection and contact key verification and lockdown mode for the best security, so I think it's valuable to mention these things. With messengers you have to meet people where they're at and be realistic. Some people need to use WhatsApp, some need to use iMessage, etc.

This isn’t a problem. Mostly „outside“ researchers are the ones who find CVEs in closed sources and sometimes even Reverse Engineering the Code so I can’t understand what you’re trying to argument here.

The argument is iMessage is closed source and proprietary, and Apple has been dragging their feet closing fixing which are found by external researchers. Look at some of the Project Zero bugs with 90 day disclosure deadlines to appreciate their attitude towards these findings. It really paints a very compelling picture of how vulnerabilities are treated and what incentives exist to fix them, or not. What is your personal first-hand experience with vendor risk management, and how do you think Apple's security program compares, respective to its size and budget?

Also I doesn’t understand why you post random years old and fixed CVEs. No software is perfect but you want enforce iMessage usage with Lockdown mode. So why not also for other/all software? Where’s the point? Sounds only like an dislike against iMessage for non reason.

They're not random or years old. They are recent and highly relevant. They have been actively abused in the wild against journalists and political dissidents. The point of using Lockdown mode is a significant reduction in risk with using this application. Not all software needs such protection, because not all software is capable of receiving multiple prolifically and inherently dangerous media types from anyone on the Internet at any time without one's consent or even knowledge.

For me this sounds very Anti-Apple so what’s this guide then for?

For individuals who critically analyze their choices to trust something or not, and do so piecemeal, rather than blindly and totally. This guide is not meant to be anti-Apple, but is it meant to be critical and perhaps at times even teetering on paranoid. That's the way I would like it to be, even at the expense of some mockery, or whatever.
Look, I understand iMessage is convenient and a rosy picture is presented about its security posture and assurances. Perhaps they are sufficient for most people doing most things. But to the wrong person a recommendation to use iMessage - without clearly explaining the certain risks of using it and what mitigations are available - will be irresponsible, as it can demonstrably increase attack surface and risk.
To make it more confusing, we're replacing a peer-reviewed and long-time trusted RTC recommendation without any apparent cause. Even an expert has qualified OTR as sufficient for most use. This leaves me at a loss as to why we're so vehemently trying to replace one for the other. Can we plainly state why iMessage is more secure, more private, or otherwise better than OTR, if we're going to justify this change? Or maybe the two can co-exist until we are all more informed on potential threats?

Apple has lots of certifications from third parties.

These are standard, almost boiler-plate compliance certifications which do not seriously attest to the actual security of a product, in my personal view. Anyone who has sat in a room with an auditor, and likely had to explain something as basic as public-key authentication to them, can attest to this fact. They are equivalent to saying something is secure because it has "encryption". Don't get me wrong, they are valuable, but only as business tools to make underwriters comfortable and sales moving.
The exception perhaps being FIPS 140-3 on the secure enclave, which is impressive, but not directly related to what we're discussing: software security. For a meaningful understanding of that, either direct access to source code, or a professional audit by a reputable firm is needed, or both. Apple will not even publish the iMessage protocol and by all accounts it is very difficult to reverse it.

In particular, iMessage is covered by ISO/IEC 27001 and ISO/IEC 27018.

Equifax also held ISO 27001 certification when it was breached. How do you think this qualification makes iMessage secure?

macOS's cryptography certifications can be seen here. In their blog post about the new encryption algorithm, they mention outside evaluations of the security of iMessage's encryption here and here.

The cryptography is not on trial here. It is rarely the problem because so many lower hanging fruit exist for adversaries, most do not even bother with learning it. I'll present the same challenge as @beerisgood here: why does quantum-resistance matter with iMessage but not every other encryption mentioned in the guide?

Just because it is closed source doesn't mean no one outside Apple ever sees the code, it's just not openly available to the public. Of course Apple also has its own internal team of security researchers that have access to the code.

That Apple has a security team is not contested, whether they are capable and enabled to prioritize the interests of security and privacy over convenience and product development is. It seems we can only speculate about that for now.

I can take it out, I just really think it's best to give instructions on how to secure iMessage the best way possible since a lot of people can only be reached on there. It's sort of a network effect problem. I know my whole family/all my friends use iMessage and that's the situation for a lot of people. It's also not immediately obvious that you need to turn on Advanced Data Protection and contact key verification and lockdown mode for the best security, so I think it's valuable to mention these things. With messengers you have to meet people where they're at and be realistic. Some people need to use WhatsApp, some need to use iMessage, etc.

Well, this is by design - https://www.zdnet.com/article/apple-confirms-imessage-locks-users-into-ios-and-putting-it-on-android-would-hurt-apple/:
'Craig Federighi, Apple's Senior Vice President of Software Engineering and the executive in charge of iOS, went as far as to say that "iMessage on Android would simply serve to remove [an] obstacle to iPhone families giving their kids Android phones."'
So the network effect is further exacerbated by the recommendation. But we live in the real world and I sincerely agree with what you said, and find your suggestions helpful and practical.  Let's simply present some evidence of whether it is any good by someone other than Apple.

Well the expert recommended OMEMO over OTR, he only said OTR was acceptable if your threat model includes the administrator of your server and not a high resource organization like the NSA. I'll take out iMessage, I think we should listen to him and recommend OMEMO over OTR tho. There's no advantage to using OTR when OMEMO covers everything it does and more.

OMEMO can replace OTR.
Put the Signal recommendation back since it is much better than iMessage.
Remove the stuff about quantum-resistance (which is largely irrelevant) and E2EE: Apple can make those claims in their documentation but what cannot be indepdendently validated should not be in this guide.
Thank you again for taking the time to work on this and other changes.

Done


Working with Wine/Proton games

Hi :grin:
is it possible to use this tool to time emulated runs, like with Wine or Proton?
I'm no expert when it comes to Wine and how memory addresses behave in such cases.
Do you have any experience with that?

Hi,
in theory it could be done. But right now it is not implemented. Wine does something tricky when it starts a windows program, that keeps pyautosplit from acting as a debugger :(
I tried a few approaches, but none were successful


Protecting chrome error parsing from crashes.

This is an initial fix to prevent the unhandled exception that can occur in some processing of angular errors in chrome. Defaults to safe values of 'unknown' until some improvements can be done to the token logic.

Coverage remained the same at 85.5% when pulling 07ecbcb7f348a775076e9a485270f8d5e15f18ca on khaines-errorparsingExceptionPath into a884ed5aed82b3e195d916e98fb7941286cb1ad3 on master.


UI: We want someone to create basic profile

When we click the profile, we want it to link to user profile (No need to add any logic now).

Asc @Suldana, any update?

I Added New Page Profile,  I implemented ProfileUser Component still not Finished I need to make a small change about breakpoint devices so that can be identified on Duolin-- website

Thanks bro, looks good!

Thanks bro, looks good!

thanks, bro also if sista @Suldana is interested she can do the other component I will push this profile page tonight so others can do small components to finish it very soon but first I need to correct the breakpoint tonight insha Allah.

Thanks bro, looks good!

thanks, bro also if sista @Suldana is interested she can do the other component I will push this profile page tonight so others can do small components to finish it very soon but first I need to correct the breakpoint tonight insha Allah.

Ok bro, thanks

Thanks @jamaaldev , I will close this issue.


Move PythonMapInArrowExec to shim for shared 330+ functionality (db11.3) [databricks]

Resolves #7344
Shims the GpuPythonMapInArrowExec overrides so they can be shared by 330+ DB and non-DB shims. There is no common 330 shim right now for the ideal implementation, though that change can/should be handled in a different PR.

build

build


Python function return type causes following lines to lose their expected colors

Using version 2.0.1.
In Python, using a function return type causes the following lines to not color properly. See attached screenshot.
Screenshots
With return type:

Without return type:

Thanks!

Hi,
I recently encountered this issue and if you uninstall the Python for VSCode extension that should fix it
https://stackoverflow.com/questions/59342329/syntax-highlighting-not-working-for-python-in-vs-code-with-type-annotations-afte


[opentelemetry] Roll out OpenTelemetry-collector for logs to Ceph landscapes

Priority
None
Is your feature request related to a problem?

[x] Get cam roles to access st-* ceph cluster for namespace otel to debug OpenTelemetry logs collector
[x] Rollout plugin to Greenhouse prod and afterwards to ceph clusters
[ ] Check ceph grok parsing together with the ceph team

Additional context.
No response
Reference Issues
No response

deployed in ceph cluster via #7263 here: https://github.com/sapcc/helm-charts/blob/master/system/greenhouse-ccloud/templates/opentelemetry-pluginpreset.yaml


[microNPU] Add a pass to reorder copy and compute nodes

This pr adds a pass to reorder Arm(R) Ethos(TM)-U copy and compute nodes in such a way that independent DMA copies, and computes happen in parallel.
cc @lhutton1 @ekalda @manupa-arm

I'd be interested in seeing how that pass interacts with graphs that have mixture of operators with and without weights, e.g. it seems to me that when we have a graph that looks like
pooling -> copy -> copy -> conv2d -> copy -> copy -> depthwise2d
it will end up after this pass as
copy -> copy -> pooling -> copy -> copy -> conv2d ...
I suppose that is intentional, that we start copying the conv2d weights in while the MAC engine is crunching the pooling? Maybe it's worth adding a test that exercises that kind of mixture of ops?

Yes, it is intentional, and the reordering is just what you said. I have added a test too.

Nice thanks @NicolaLancellotti! It looks like we need a re-trigger due to the linting issues CI had last week :)

Looks like it now conflicts with #10344 :/

I have added a parameter to specify the maximum number of movements allowed for a copy.


New version: LiteQTL v0.2.2

Registering package: LiteQTL
Repository: https://github.com/senresearch/LiteQTL.jl
Created by: @GregFa
Version: v0.2.2
Commit: 266f9b7c0c11142062639a69cb996aa9d66d6337
Reviewed by: @GregFa
Reference: https://github.com/senresearch/LiteQTL.jl/commit/266f9b7c0c11142062639a69cb996aa9d66d6337#commitcomment-63833179
Description: A lightweight Julia package for eQTL genome scans near real-time.

@GregFa please see the message above.  Once you fix the automerge issues you can register again the new revision without changing the version number and this pull request will be automatically updated.
[noblock]

@giordano thank you for pointing out the issue.
[noblock]


Percentage of Requests That Can Be Actioned on First Request

User Need
As a Operations Engineering Team
I want some data about DNS requests
so that we understand more about how the service is used so that we can define a problem statement.
Value
Understanding more about the service will help us understand problems that might be valuable to solve.
Functional Requirements:

Collate data on percentage of requests that can be actioned based on initial request (i.e. was the initial request clear enough for the request to be actioned without needing additional information/clarification.

Acceptance Criteria:

We have the data.

Notes:

Raw data - https://docs.google.com/spreadsheets/d/1hJcy7Ni3_8NZkoI7sRlr0dFw8EWYFyaxaCbhpXtHRL8/edit?usp=sharing

Summary:

Action on first request
Count

Yes
133

No
58


[BUG] requestPermissionExtend() does not work correctly with instabug_flutter

Describe the bug
When using the flutter_photo_manager and instabug_flutter in project, requestPermissionExtend returns PermissionState.denied, but permission to access the media is granted. The getAssetPathList method does not return assets on android devices. If you remove instabug_flutter from pubspec.yaml, then photo_manager will return assets. At the same time, checking for media access via permission_handler returns the correct value (granted)
Expected behavior
PhotoManager.requestPermissionExtend() should return PermissionStatus.authorized.
PhotoManager.getAssetPathList(hasAll: false, type: type, filterOption: filterOptionGroup) should return the list of assets
Screenshots
A simple code sample:

Console log:

Flutter version
Channel stable, 2.5.3, on macOS 11.5.2
Smartphone (please complete the following information):

Device: [Samsung Galaxy A9 2018, Samsung Galaxy s21]
OS: [Android 10, Android 11]

Why >=29 is Permission.accessMediaLocation?

Closing, as it seems to be invalid and no further information is provided.

@AlexV525 Sorry for the wait. Here is an example of a main.dart file on which you can reproduce this bug on Android:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:photo_manager/photo_manager.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(title: 'Demo', home: HomeScreen());
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State createState() => _HomeScreenState();
}
class _HomeScreenState extends State {
bool isLoading = false;
String permissionStatus = '';
List importedAssets = [];
Future importPhotos() async {
final List assets = [];
late final String mediaAccessStatus;
final status = await PhotoManager.requestPermissionExtend();

if (status == PermissionState.authorized ||
    status == PermissionState.limited) {
  mediaAccessStatus = 'Access granted';

  setState(() => isLoading = true);

  final List<AssetPathEntity> paths = await getAssetsPaths();
  await Future.wait(paths.map((mediaPath) async {
    if (mediaPath.assetCount > 0) {
      final mediaAssetsList = await mediaPath.assetList;
      assets.addAll(mediaAssetsList);
    }
  }).toList());
} else {
  mediaAccessStatus = 'No access to photos';
}
setState(() {
  permissionStatus = mediaAccessStatus;
  importedAssets = assets;
  isLoading = false;
});

}
Future<List> getAssetsPaths() async {
if (Platform.isAndroid) {
return await PhotoManager.getAssetPathList(hasAll: false);
} else if (Platform.isIOS) {
return await PhotoManager.getAssetPathList(hasAll: true, onlyAll: true);
}
return [];
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Import test')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
TextButton(
onPressed: importPhotos,
child: const Text('Import photos'),
),
if (isLoading)
const CircularProgressIndicator()
else
Text('Imported assets count: ${importedAssets.length}'),
Text(permissionStatus),
],
),
),
);
}
}
And the dependencies I use in pubspec.yaml:
photo_manager: ^1.3.0
instabug_flutter: ^10.9.1
First, build the app on Android device with  photos and without "instabug_flutter: ^10.9.1" dependence in pubspec.yaml. Tap on "Import" button and give permission to access the media. At the bottom, the assets counter should update and the media access should show as "granted".
Then add the "instabug_flutter: ^10.9.1" dependency to pubspec.yaml and rebuild the app. Tap on the "Import" button. The assets counter will show 0, and at the bottom it will say "No access to photos"


[HMRClient] Cannot find update - full reload needed

Describe the bug
I am trying out the Repack5.0 with the ModuleFederationPluginV2, i followed the super-app-showcase repo to configure my project.
But i encountered a bug:
once my mini-app loaded , the devServer of the mini-app says:
[DevServer] File mini-app.233bb634f7c7647b.hot-update.json for android not found in compilation assets (no compilation in progress)
...
the devServer of the host app says:
[HMRClient] Cannot find update - full reload needed
Then the host app will do a fully reload, i never got the chance to render the mini-app.
System Info
None

Re.Pack Version
5.0.0-rc.1
Reproduction
None
Steps to reproduce
i'm not sure if the bug is caused by that i added babel-loader in the mini-app's rspack.config.mjs ,my mini-app relied on some babel plugin so configured the rule like following:
                 {
                    test: /\.[jt]sx?$/,
                    exclude: [/node_modules/],
                    type: 'javascript/auto',
                    use: [
                        {
                            loader: 'builtin:swc-loader',
                            /** @type {import('@rspack/core').SwcLoaderOptions} */
                            options: {
                                parseMap: true,
                                env: {
                                    targets: {
                                        'react-native': '0.74',
                                    },
                                },
                                jsc: {
                                    externalHelpers: true,
                                    transform: {
                                        react: {
                                            runtime: 'automatic',
                                            development: mode === 'development',
                                            refresh: mode === 'development' && Boolean(devServer),
                                        },
                                    },
                                },
                            },
                        },
                        {
                            loader: 'babel-loader',
                            // options: {
                            //     /** Add React Refresh transform only when HMR is enabled. */
                            //     plugins:
                            //         devServer && devServer.hmr
                            //             ? ['module:react-refresh/babel']
                            //             : undefined,
                            // },
                        },
                    ],
                },

Find a error before reloading:
✖ [01:38:34.549Z][Console] Warning: ReferenceError: Property 'exports' doesn't exist

Hey, can you provide some details on what changes you've introduced to the config? Thanks!

I will try to make a reproduction repo

Any luck?

Sorry for the late response, i haven't got the time to make a reproduction,  closing the issue for now , i will reopen it once i made a reproduction repo.

Sorry for the late response, i haven't got the time to make a reproduction, closing the issue for now , i will reopen it once i made a reproduction repo.

no worries - please try to always add a repro in the future, it's very time consuming to work on such issues with little information 👍


Nix cadCAD version update

Update Nix cadCAD package derivation to 0.4.19 release.

@BenSchZA
will ping out after the 0.4.21 release
0.4.20 is the hot fix

@BenSchZA
Hey,
just wanted to check-in
an update for 0.4.22 would be nice
or an update for 0.4.xx using 0.4.22 as a template would be ideal

I'm going to suggest removing Nix from the README and repo. Although I do still extensively use it for other packages and projects, I doubt it adds much value to the greater cadCAD user group, and it adds another step in the update process. I'll close this PR and create a new one to remove it.

I'm going to suggest removing Nix from the README and repo. Although I do still extensively use it for other packages and projects, I doubt it adds much value to the greater cadCAD user group, and it adds another step in the update process. I'll close this PR and create a new one to remove it.


Missing Tests for Unordered List

Component in question:
Unordered List
Description of issue:
This component doesn't have any tests. To fix this issue, please add tests.

@scooooooooby there are missing tests for UnorderedList. Is there additional coverage that should be added in this ticket or should this ticket be closed?
Current test coverage: https://github.com/NYPL/nypl-design-system/blob/development/src/react-components/src/tests/components/UnorderedList-test.tsx

@M0nica I opened this ticket thinking that there weren't any tests for Unordered List... looks like that was incorrect. Thanks for flagging, Monica. I think we can close this out.


Order ZIndex by global index

We should allow pinning items, so these headers can be pinned

Alright, this should be good to go now


graphql_ppx => graphql-ppx

The convention seems to be to use a dash in the name of ppx's. The underscore in the current name is a bit awkward. A dash works better almost in any context. Any opinions here?
Perhaps we can change the repo name at least (no real downsides). And change the npm package name when we move it to the reasonml-community context.

On opam we see more underscored package. And ppx_ at the beginning so when we search we could easily spot wich package has a ppx associated.
7 have ppx at the end
6 have -ppx at the end (One jsoo have -ppx_deriving_json)
1 one have ppx-
Near one hundred have ppx

I think it is more common on OCaml to use ppx_<name> and on Reason it looks like its more common to have <name>-ppx. Given that we mainly target Reason I prefer going for graphql-ppx.

After some discussion it looks like we landed on @reasonml-community/graphql-ppx (on NPM) for 1.0.


SCRD-6374 Translation for logging messages is forced to be English

1.Force English translation of the logging messages in replace server process
2.Updated logMessage to append new line '\n' or no new line based on passed in params (SCRD-6375)
3.Allowed error message from action run to show up in the page banner

Abandon the changes since there are some issues Jeremy found in https://github.com/ArdanaCLM/ardana-installer-ui/pull/265 which this pr depends on.


更新BUG

更新节点的时候,子节点就消失了

me too
when update node,the son node will disapeared.

http://download.csdn.net/download/qq812858143/9801416

Could you please post a fiddle where it's reproducible?

我更新了链接，下载这个http://download.csdn.net/detail/qq812858143/9833920

I'm a bit scared of downloading any unknown file, can you post it here: https://jsfiddle.net/


Update Jackson to 2.17.0

Add a test to ensure that setting limits for JSON is respected when setReadContraints method is used.
https://github.com/FasterXML/jackson-core/issues/1207

Alternative to https://github.com/airlift/airlift/pull/1130