Helm 3.0.3 change to not delete templated CRDs breaks backward compatibility

I noticed after upgrading to Helm 3.0.3 that our CRDs (that were not in the crds directly) are no longer getting deleted when the installed helm release gets deleted. They still are if I use Helm 3.0.2, and that was our desired behavior.
We've avoided the crds directory (and the prior crd-install hook) because for our use case, we do want CRDs to just be treated like normal resources (that is, upgraded and deleted). I understand that puts us in an odd spot relative to the Helm project's plans (i.e. not deleting or upgrading CRDs), but I'd at least expect an upgrade with only a patch number revision (3.0.2 to 3.0.3) to not break backward compatibility in this way.
The commit that changes this behavior seems to be here:
https://github.com/helm/helm/commit/9711d1c6bfd9cd0cebe47b069a18cfc83ac3bfee
We'll plan to get our deployment model for our CRDs in-line with Helm's plans for the long-term future.

I also would like to see this reversed, I'm surprised and disappointed to find out this behavior has changed. For example, our opa/gatekeeper CRDs are in the /templates directory alongside gatekeeper service, deployment, etc. We have two custom resource charts (constraint templates and constraints) that are deployed shortly after the CRD becomes available and gatekeeper manager is running. This is all automated and we do not intend for (or allow) any manual management of custom resources. It's safe and preferred if the CRDs are deleted when we delete the gatekeeper chart so we can actually clean out all gatekeeper-related resources. When gatekeeper is deleted none of the CRDs or custom resources make any difference at all since there's nothing to enforce them, and all resources are in code and can be recreated.

I also would like to see this reversed, I'm surprised and disappointed to find out this behavior has changed. For example, our opa/gatekeeper CRDs are in the /templates directory alongside gatekeeper service, deployment, etc. We have two custom resource charts (constraint templates and constraints) that are deployed shortly after the CRD becomes available and gatekeeper manager is running. This is all automated and we do not intend for (or allow) any manual management of custom resources. It's safe and preferred if the CRDs are deleted when we delete the gatekeeper chart so we can actually clean out all gatekeeper-related resources. When gatekeeper is deleted none of the CRDs or custom resources make any difference at all since there's nothing to enforce them, and all resources are in code and can be recreated.

We were also surprised by this change. We publish an operator that is deployed by a helm chart. We expected that deleting the helm chart would also delete all of the CR objects managed by the operator/controller, since the controller would no longer be available to manage them. Letting helm delete the CRD would cause the CRs to get deleted as well.
We found that we were not able to re-apply our helm chart after deleting it. That makes the helm chart harder to work with, since it would require manual intervention to re-install the helm chart.
Refusing to touch existing CRDs means we cannot extend our CRD, even in a backwards-compatible manner, without bumping the apiVersion, or forcing our customers to take manual intervention.
Helm should allow chart authors to decide how they want their CRDs to be managed. Updates to existing CRDs should be possible. Deleting CRDs should be possible. If the helm chart author wants to explicitly prevent this, then it should be possible as well.
CC: @jvigil-pivotal

Given the amount of pushback, we should probably revert to the original behaviour.
pinging @PhilGrayson for visibility

I support reverting the change.
As it is now, the CRD behavior still isn't consistent because the commit only covers deletion of CRDs in the templates directory. But CRDs in the templates directory are also treated differently than ones in the crds directory in that:

They are templated
They are upgraded by Helm if a newer chart contains a revised version

If I'm understanding this correctly, that makes this only a partial step toward actual consistency. Perhaps the easiest compromise would be to back out this change at least until a more complete change is available.
Alternatively, project maintainers might consider backing out the change and just making CRDs outside the crds directory be treated like normal resources (preserving backward compatibility) as a first-class documented feature. The new functionality is still there with the crds directory, and it'll be incumbent upon Helm chart maintainers that include CRDs outside the crds directory (not Helm itself) to ensure those CRDs can / should be upgraded / deleted like any other resource. That draws a hard line on user expectations of Helm's behavior.
That'd bring about two ways of including CRDs in a chart:

Include them in the crds directory. They will then be installed during helm install, not upgraded, and not deleted.
Include them in the templates directory. They will be given no special treatment and handled like any other resource.

I support reverting to give time to iron out a better approach.
My main motivation was to provide a safe Chart upgrade path that moved the CRDs from templates/ to crds/. Then I could install a new Release of the Chart into the same Kubernetes cluster without Helm erroring because the CRDs were already defined.
My use-case could have been solved with a flag on helm upgade to skip CRD deletion. Or some way to force a release to forget that it's managing a resource.
Also, the documentation could be clearer on the options a Chart author has on managing CRDs. When I was migrating from helm 2 to helm 3 I got the impression that the crds/ method was the recommend way "CRD YAML files should be placed in the crds/ directory inside of a chart".

Closing as change reverted in #7571.
@PhilGrayson It might be beneficial to open a new issue to handle a new approach with deletion of CRDs.

Oh my gosh.... depending on which helm version you have, they all treat crd's differently. Can we please just give up and recommend to users officially to never put a crd inside a helm chart? As a user, it is impossible to know what helm version will work/wont work with any given crd. Not  trying to troll here. Just trying to be pragmatic. Do we still think it is possible for crd's to ever be reliable with helm?

#5871

@bacongobbler are you saying I should comment there?

is it really breaking backwards compatibility if the behavior being relied upon is undocumented? The behavior this brings back contradicts the docs ("CRDs are never deleted", with no clarification that it's only referring to CRDs from the crds directory), as well as historical helm community discussions on leaving CRD life-cycle after initial deploy up to the user.
By default, Helm should behave according to the documentation, and if exceptions are needed, this could be provided in the form of a CLI flag or an annotation on the resource.
This looks like a clear case of "fixing this bug breaks my workflow", where the solution cannot be to simply reintroduce the bug!

crds getting mangled/destroyed can cause some real damage to production systems.... whether its documented or not. Consistency is probably better here. Can fix it in a major version of helm. $0.02


New input format proposition

I finished a draft for a new input.
Unfortunately, I have to change our input a lot. But now it supports some cool things, like overriding "minSdkVersion" for a single flavour or understands things like "each one of these 5 modules depends on 2 of those 5 modules". I remember your idea of "random" dependencies, I think this input will allow us to make it easier. It is also would possible to generate more than one "application" module or have a different amount of activities in different modules.
Please check it very carefully, I believe this is a big decision. I put special attention to the things that should be optional and those that shouldn't, so, please, check that as well.
There is an example of input in "NewInputExample.json". The rest is classes, sometimes a few related classes in one file.
It would be very easy to extend this input format to support AIDL/renderscript, "api" and "implementation" dependencies and hopefully all the other crazy stuff we or somebody else can come up with. :)

I like that the number of packages, classes and methods for java and kotlin are separated now from the total.

I added support for kotlinVersion / androidGradleVersion in #41

Not sure if this is the best place, but could there be a flag to specify the Java source version of the generate code.
In the AGP, this is controlled using this DSL option - https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.CompileOptions.html

@gavra0 do you think it should be specified once per project, or each module should be able to override it?


Need a single-file version of typescript.vim

The typescript.vim file contains:
runtime syntax/common.vim
That might be nice when installing this as a package, but it's not OK when I would include this in the Vim distribution. Not only does it load any "common" syntax laying around, it's also making it slow, since it has to search for files, open them, etc.
Could you make a single file version that could be included in the Vim distribution?
I assume the license is already OK, since it mentions using the Vim license.
Would be nice to have typescript support in Vim out of the box.

Sure! I'm happy to do that and happy to see Vim can include TypeScript's syntax out of box!
I will provide a single version of typescript.vim in this repo. A pull request to vim's repo is also OK.

Thanks for the quick response!

Sure! I'm happy to do that and happy to see Vim can include
TypeScript's syntax out of box!
I will provide a single version of typescript.vim in this repo. A pull
request to vim's repo is also OK.

Perhaps the indent file can also be done?  I expect it to be very
similar to Javascript, but probably still a bit different.
--
All good vision statements are created by groups of people with bloated
bladders who would rather be doing anything else.
(Scott Adams - The Dilbert principle)
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Any progress on making a one-file syntax/typescript.vim ?

Since I'm editing typescript I needed the single file.  I added it to the Vim runtime.  Please make updates as needed.

I'm so sorry I'm too busy with my day jobs. I'll try add a script to generate single file.

I have added a merge scrip to the repo. The output file is named merged.vim

I have added a merge scrip to the repo. The output file is named merged.vim

Thanks.  Can you also change the HiLink commands to "hi def link", like
has been done for all the syntax files in the distribution?
Also, you should set 'cpo', because line continuation is being used.
It's already in indent/typescript.vim but not in the syntax file.
--
Corduroy pillows: They're making headlines!
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


Point release of mclearn

We should make a point release to coincide with your thesis submission, so that we can in future always refer back to it. v0.2? git tag it.

I mean point release on pypi

Latest release is now 0.1.6


Replace knox with knox-s3

A simple drop-in replacement of knox with knox-s3 to support recent versions of Node.

Closing this as it has been made redundant by #35. Thanks for your contribution.


Use new go-git functionality to fetch commits

This avoids shelling out by using the implementation from https://github.com/go-git/go-git/pull/58 / https://github.com/go-git/go-git/commit/8ecd388ae101a0dd88b78dc47ebfef9fe51699df, which is going to be much more performant.

Proof's in the pudding -- here's fetching the first hello-world commit vs fetching the latest, and the resulting "cache directory" size/increase:
$ BASHBREW_CACHE="$HOME/temp/tmp/bashbrew-cache" ~/docker/bashbrew/bashbrew.sh --debug from --uniq https://github.com/docker-library/official-images/raw/b04f64dd645433ff2c70882eb550660969bfb244/library/hello-world
warning: insecure protocol git:// detected: git://github.com/docker-library/hello-world
hello-world:latest: scratch

$ du -hs ~/temp/tmp/bashbrew-cache
64K	/home/tianon/temp/tmp/bashbrew-cache

$ BASHBREW_CACHE="$HOME/temp/tmp/bashbrew-cache" ~/docker/bashbrew/bashbrew.sh --debug from --uniq https://github.com/docker-library/official-images/raw/master/library/hello-world
hello-world:linux: scratch
hello-world:nanoserver-1809: mcr.microsoft.com/windows/nanoserver:1809

$ du -hs ~/temp/tmp/bashbrew-cache
632K	/home/tianon/temp/tmp/bashbrew-cache


Use JS to select good entry in version dropdown

Fixes #121
If a page is the same between versions, it is not possible to select dropdown entry staticaly.
Let's do it by JavaScript

My project is on my computer at work, I'll update my branch considering your 2 comments on monday.
Thanks for your review

Looks good to me. Haven't checked that it actually works though 😉 , just reviewed the code.

Thank you @gza.

@gza @aik099
Sorry to post on an old, closed PR, but I've been running into the exact problem that this PR is trying to fix: when I generate API pages for two versions that are exactly the same, the select widget doesn't initialize to the version you are currently looking at. When you were testing this, were you totally sure that your two branches were the same?
Here's a screenshot of my IDE after running https://github.com/FriendsOfPHP/Sami/commit/ddc33e45dbe5554ed606c805214fbeb480e69797

I have my sami config file open, as well as the generated "sami.js" file for each version I have listed in the config ("master" and "v1.0"). You can see that the two sami.js files have the same value for window.projectVersion, so it's of no use in helping to initialize the drop-down.
Any ideas?

@shmax I can confirm that I'm experiencing exactly the same problem.


Dynamically set Inserting, Editing, Deleting value as true in JSGrid, when initially set the value as false

I have of requirement

While inserting a row, on a checkbox checked, wanted to disable a number fields in JSGrid.
Initially JSGrid Inserting, Editing & Deleting set false. Wanted to set Inserting, Editing & Deleting  value as true on a Button clicked.

Any quick help appreciated.

Have a look at how to use a custom insertTemplate to bind a change event to the checkbox and then manipulate other fields similar to the way dropdowns are handled in #71 with this fiddle http://jsfiddle.net/tabalinas/n982uvx1/13/
See the Custom View example here http://js-grid.com/demos/

@subratasingharoy, did you manage to meet your requirements?


Minor formatting fixes

@BaileyLawson : Thanks for your contribution! The author, @jeffgilb, has been notified to review your proposed change.

Good catches, thanks @BaileyLawson.

#sign-off


Split inflections with multiple possible forms over several lines

e.g., instead of this

Person
Form

we
ninipânân

you and we
kinipânaw / kinipânânaw

Let's have this:

Person
Form

we
ninipânân

you and we
kinipânaw

kinipânânaw

I know this was there before, but this is unsatisfying... I might need to make a new issue for this. Basically, an entirely new row should be made for any alternatives.
Originally posted by @eddieantonio in https://github.com/UAlbertaALTLab/cree-intelligent-dictionary/pull/506

Here's me mocking up what it would look like by messing around with the devtools inspector:

Note also: For "abstract" forms with multiple realizations, it might be that only one of those have been observed in corpora. Therefore, we should refine our paradigm presentation scheme so that only the actually attested and observed word-form is marked as such (bold-face or otherwise), not both/all. This is probably supported in practice by splitting those multiple forms each into their own cell.


Add a balance check to example02

It is helpful when explaining chaincode to have example02 check the balance in tx validation.

I have verified build logs and observed unit tests are failed but could see Travis build status as Passed. Need to re-run this PR once again.

Signed off by Zaki Manian

@zmanian Could you add a behave test for this new feature in example02? They're simple to write if you haven't written one before. Just see the examples in https://github.com/hyperledger/fabric/blob/master/bddtests/peer_basic.feature and add a new one.

@zmanian this is sensible, but I know a number of performance test scripts using this chaincode example to drive throughput without caring about the negative result, so this change will blow up those tests. Maybe just put in a comment and comment out your changes as info for the readers

@binhn I'm on board with your suggestion. Will prepare a suitable comment and update pull request

I would suggest an alternate PR or annotate this as a squash-merge only so any future bisects do not land where the code briefly changed behavior.

@zmanian if chaincode_example02 is modified, its new ID should be placed in chaincode_example04. I get example02's ID by running "go test -run ExecuteInvokeTransaction" in chaincode/ folder.

History squashed and reduced the check a comment.

What's up with a build failure when all the changes are comments?

@zmanian : please take a look at the WARNING comment on top of chaincode_example02.go.
chaincode_exampl04 hardcodes example02's ID (example05 shows how it can be passed as param). If 02 is modified, 04 needs to be updated with the right ID.

What's the easiest way to obtain the new chaincode ID?

deploying the modified example02 would give you the ID. Alternately, I'd just run
go test -run ExecuteInvokeTransaction
That excercises example02 and deployes it for you. You can extract the ID from the test.

This LGTM if the hash can be updated?

If someone has the hash handy, I'll update the pull request. Otherwise I'll generate it shortly.

Any update here?

LGTM, thanks for following up @zmanian

@zmanian we've migrated to Gerrit. If you wouldn't mind transferring this PR there, it would be much appreciated. http://lists.hyperledger.org/pipermail/hyperledger-fabric/2016-July/000168.html Thanks!

Okay, I'll figure out how to use Gerrit :-)

@zmanian we will be transferring the fabric and fabric-api repository and all the corresponding issues and pull requests to the hyperledger-archives org on GH and replacing this repository with a read-only mirror of our Gerrit source. As a result, any automatic GH redirects will be broken. If you haven't already migrated your PR to Gerrit, and intend to do so, you will need to change your git remote to reference the transferred repository (e.g. git@github.com:hyperledger-archives/fabric) on your local clone.

Thanks @christo4ferris I'll close this and open a pull request on github as time permits. Thanks!


build(devs-dep): adopt Jest 29.0.0

Summary

Adopt https://github.com/facebook/jest/releases/tag/v29.0.0
Test plan

Green CI
Does this PR introduce a breaking change?

[x] Yes
[ ] No

Other information

Also this one https://github.com/kulshekhar/ts-jest/blob/e925f10f26d5d65a6b4b887da91910b058c3132e/e2e/native-esm-ts/package.json#L4

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.5%) to 96.508%

Totals

Change from base Build<PHONE_NUMBER>:
0.5%

Covered Lines:
3971

Relevant Lines:
4062

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.5%) to 96.508%

Totals

Change from base Build<PHONE_NUMBER>:
0.5%

Covered Lines:
3971

Relevant Lines:
4062

💛  - Coveralls

I see there are examples with jest@28.
Guess these can only be updated after the release of ts-jest@29
/workspace/ts-jest/examples/js-with-babel/package.json
  13,19:     "babel-jest": "^28.1.3",
  14,13:     "jest": "^28.1.3",
  15,16:     "ts-jest": "^28.0.8",

/workspace/ts-jest/examples/js-with-ts/package.json
  11,13:     "jest": "^28.1.3",
  12,16:     "ts-jest": "^28.0.8",

/workspace/ts-jest/examples/react-app/package.json
  15,19:     "babel-jest": "^28.0.2",
  34,13:     "jest": "^28.0.2",
  35,31:     "jest-environment-jsdom": "^28.0.2",
  36,21:     "jest-resolve": "^28.0.2",
  90,16:     "ts-jest": "^28.0.3"

/workspace/ts-jest/examples/ts-only/package.json
  11,13:     "jest": "^28.1.3",
  12,16:     "ts-jest": "^28.0.8",

I see there are examples with jest@28. Guess these can only be updated after the release of ts-jest@29
/workspace/ts-jest/examples/js-with-babel/package.json
  13,19:     "babel-jest": "^28.1.3",
  14,13:     "jest": "^28.1.3",
  15,16:     "ts-jest": "^28.0.8",

/workspace/ts-jest/examples/js-with-ts/package.json
  11,13:     "jest": "^28.1.3",
  12,16:     "ts-jest": "^28.0.8",

/workspace/ts-jest/examples/react-app/package.json
  15,19:     "babel-jest": "^28.0.2",
  34,13:     "jest": "^28.0.2",
  35,31:     "jest-environment-jsdom": "^28.0.2",
  36,21:     "jest-resolve": "^28.0.2",
  90,16:     "ts-jest": "^28.0.3"

/workspace/ts-jest/examples/ts-only/package.json
  11,13:     "jest": "^28.1.3",
  12,16:     "ts-jest": "^28.0.8",

yes those will be taken care by renovate.

Thanks!


Fix version sort order and add build_version block

What is the intended effect of this PR?

Version sorting in the proper places, and the Version object change makes branches sort under numbered versions.


Missing spaces in client/components/sidebar/sidebarFilters.jade

Hi,
when building today I got these errors:
Warning: missing space before text for line 11 of jade file "client/components/sidebar/sidebarFilters.jade"
Warning: missing space before text for line 30 of jade file "client/components/sidebar/sidebarFilters.jade"

Does this affect something?

It does not, I'll take a look at this


[TW#27440] Requirements for esp_wifi_internal_tx() - new Stack

I removed lwip as the stack over in ESP8266 RTOS V3 IDF and ported in a different stack.
The function that bridged the stack and the internal wifi transmit required an additional 36 bytes preceding the data (used for wifi headers) and need to be allocated from the DRAM heap (IRAM would cause a crash).
I have removed lwif from the ESP32 IDF and am porting in the new stack -- I have questions.
Q1: It appears ESP32 does NOT require the additional preceding 36 bytes for wifi header as was required for ESP8266) -- is this correct? LWIF has PBUF_LINK_ENCAPSULATION_HLEN default to ZERO (0).
Q2: If no wifi header space is required for the data being passed in -- are you coping it into your own internal buffer?
Q3: Is there an alignment and heap CAP requirement associated with the data buffer being passed in? If you are coping the data from my buffer into an internal transmit buffer -- then there might not be a requirement associated with my data.
Thanks.

Hi @jhinklejr, my answers:

Correct.
Yes, WiFi driver makes a copy of high layer data.
No,  WiFi driver has no alignment requirement.

Thanks
Please close

Thanks.


Fix a link to the example script

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


corresponding images dataset download link

Hello
Dear author, I only found the lidar data of the semanti kitti dataset, can I get its corresponding images dataset download link?
or Nuscenes，...
Sorry, I really can't find it.
Thanks!

http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d?
Is that link right?

For Nuscenes
https://www.nuscenes.org/nuscenes#code

For Nuscenes https://www.nuscenes.org/nuscenes#download

Thanks for the reply, I have found the nuscenes and Semantic kitti lidar data.
Could I have the link about the images for kitti segmentation ?
thank!

Did you encounter this problem during the validation phase? There is no problem during the training phase, but it runs with errors during the validation phase. I'm not sure if it's a problem with the data set or the code. Can you share your data set structure, especially the image data added separately?
RuntimeError: stack expects each tensor to be equal size, but got [19961] at entry 0 and [123389] at entry 1.

I only found the laser radar data from the semanti kitti dataset. Can I get the corresponding image dataset download link?

@myself0816 @emilyemliyM
Sorry for missing the question, for SemanticKITTI, please refer kitti odometry
https://www.cvlibs.net/datasets/kitti/eval_odometry.php

@myself0816 @emilyemliyM 很抱歉错过了这个问题，对于语义KITTI，请参考kitti测程 https://www.cvlibs.net/datasets/kitti/eval_odometry.php

But I didn't find the corresponding image data

So the image is the 55g file with the data?

Hope it helps you
Download odometry data set (color, 65 GB)

so I Download odometry data set (color, 65 GB),and
Download KITTI Odometry Benchmark Velodyne point clouds (80 GB)
Download KITTI Odometry Benchmark calibration data (1 MB)
Download SemanticKITTI label data (179 MB).
Finally, I can get the complete dataset that PMF needs, right?

原谅我，第一次整这个，啥都不懂

y

您可以尝试一下，请

感谢您的帮助


Add option to remove item from list in status bottom sheet if present in list

Suggestion / Feature Request
Let's add the remove item thingy in the right place

Already done, closing this


React: Promo banner (behind feature flag)

User Story

As a [user role below]:
IBM.com Library developer

I need to:
create the Promo banner

so that I can:
provide the ibm.com adopter developers components they can use to build ibm.com web pages

Additional information

Story within Storybook with corresponding knobs
Utilize Carbon
See the Epic for the Design and Functional specs information
Prod QA testing issue (TBD)
Feature flag documentation: https://github.com/carbon-design-system/ibm-dotcom-library/blob/master/packages/react/docs/feature-flags.md

Acceptance criteria

[ ] Built as a pure React component/variant
[ ] Build behind a feature flag
[ ] Include README for the react component and corresponding styles
[ ] Add any necessary stable selectors
[ ] A comment is posted in the Prod QA issue, tagging Praveen, when development is finished

@jeffchew this was achieved by passing down an SVG to the heading prop of ContentItemHorizontal. The difference between the one in the Support page L0 and the one available in our library is the spacing between the copy and the CTA. Should we discuss with the team about creating a new pattern from scratch or just add a new variation to the ContentItemHorizontal?

Yes, good idea, I think we can probably have this conco in a slack thread in the engineering channel.

@guilhermelMoraes I just created the Prod QA testing issue (#3952).  You can include the comment on that issue when you are finished.


🚀 : Release v0.1 for docs.langx.io

Basic documentation of litepaper v0.1 by using gitbook
If you want speed up process of this issue, please send 🚀 as a reaction.

Done with https://github.com/langx/docs/releases/tag/v0.1


Squares insead of buttoms in some video players.

For some reasons there are squares instead of bottoms, it happens in 2movieorca.com and lookmovie2.to, other than that works normally as usual, I'm using Windows 7,  maybe that's the reason.

Does your windows 7 have plateform update installed ?

Firefox seems to render those symbols without using the plateform update directwrite (it is able to render emojis in color in W7, when support for color emojis was only added to directwrite since windows 8.1 and never got backported) so it's probably using something else to render those

I think that should be fixed regardless of platform because the older OSes don't have such a "Platform Update" to make those symbols appear correctly (GDI font rendering looks ugly). So DirectWrite could be reverted to the version in v109 (if that's possible).


Kinesis videostream only picked up in console about 1/10 times

I am running the video sample from an LG V20 Android device, running on Android 7.0. The application works, and sometimes I can actually see the video feed from the AWS console, but most of the time I have the No fragments found issue. I don't see what I'm doing differently when it works vs when it does not. I usually have this message, no matter hw long I wait. I've tried with front cam, back cam,

And these are some of the messages appearing in my log while streaming on my device
D/FrameUtility: frame timestamp:<PHONE_NUMBER>641, index: 205, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 205, pts:<PHONE_NUMBER>6410000, dts:<PHONE_NUMBER>6410000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 7024, Duration 20000
D/KinesisVideoAndroidClient: Streamed 7024 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 66ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>706, index: 206, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 206, pts:<PHONE_NUMBER>7060000, dts:<PHONE_NUMBER>7060000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 7468, Duration 20000
D/KinesisVideoAndroidClient: Streamed 7468 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 50ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>756, index: 207, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 207, pts:<PHONE_NUMBER>7560000, dts:<PHONE_NUMBER>7560000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 8499, Duration 20000
D/KinesisVideoAndroidClient: Streamed 8499 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 60ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>817, index: 208, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 208, pts:<PHONE_NUMBER>8170000, dts:<PHONE_NUMBER>8170000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 9637, Duration 20000
D/KinesisVideoAndroidClient: Streamed 9637 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 68ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>884, index: 209, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 209, pts:<PHONE_NUMBER>8840000, dts:<PHONE_NUMBER>8840000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 9274, Duration 20000
D/KinesisVideoAndroidClient: Streamed 9274 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 47ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>931, index: 210, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 210, pts:<PHONE_NUMBER>9310000, dts:<PHONE_NUMBER>9310000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 8087, Duration 20000
D/KinesisVideoAndroidClient: Streamed 8087 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 69ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>000, index: 211, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 211, pts:<PHONE_NUMBER>0000000, dts:<PHONE_NUMBER>0000000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 7194, Duration 20000
D/KinesisVideoAndroidClient: Streamed 7194 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 56ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>056, index: 212, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 212, pts:<PHONE_NUMBER>0560000, dts:<PHONE_NUMBER>0560000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 7410, Duration 20000
D/KinesisVideoAndroidClient: Streamed 7410 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 60ms
D/FrameUtility: frame timestamp:<PHONE_NUMBER>116, index: 213, duration: 2, keyFrame: false, flags: 0
I/AndroidCameraMediaSource: updating sink with frame
D/KinesisVideoAndroidClient: PutFrame index: 213, pts:<PHONE_NUMBER>1160000, dts:<PHONE_NUMBER>1160000, duration: 20000, keyFrame: false, flags: 0
D/KinesisVideoAndroidClient: Data availability notification. Upload handle: 0, Size: 7268, Duration 20000
D/KinesisVideoAndroidClient: Streamed 7268 bytes for stream digigrave with uploadHandle 0
D/EncoderWrapper: frame encoded | threadId=1
D/EncoderWrapper: encoding frame | threadId=1
D/EncoderWrapper: frame sent to encoder | threadId=1
D/EncoderWrapper: time between frames: 55ms

hello @GBoucher42
Sorry to hear you are running into issues. I will take a look at this and get back to you on this thread.

@GBoucher42 hope we can help. It's not immediately clear from the logs whether the issue is on the producer side or the console. In order to shed some light, could I ask you to capture the logs from the moment you've started streaming so we can see whether there is a latency or bandwidth issue (generally, a networking issue).

Ok, the log is quite long, but this is from running the app from Android Studio, streaming for about 20-30 seconds until I get the message that I get no fragments on my console, and pressing  "stop streaming"
viode_producer_log.txt
I've attached a file documents since the logs would not fit.

Thanks for the logs
I see that your stream is around 18 fps and the observed upload rate is around 1.3 Mbps. Your network is able to keep it up with 0 latency (as in the not-yet-streamed buffer duration). I see the ACKs are streaming in - all looks very good.
At the end of the log I see the application being gracefully terminated.
I wonder if you could keep the stream running this particular instance and now view this in the console.

I've leet it run for 3 minutes and still had the same issue, here are the logs. Sometimes it works, but rarely and for no apparent reason.
video_producer_log.txt

This is odd.. The second log also shows perfect streaming from the producer side. I wonder if there is an issue with the connectivity of the console. Can I ask you to do the following please?

Specify what browser you are using.
Attempt to use another browser (like Chrome, FireFox, etc..)
Ensure you are trying to consume the right stream
From the bottom-left, try to specify the server-side timestamps
Try to specify the timeline that was playing "OK" and see if you replay just fine.

This will eliminate a number of issues so we can focus on the main issue.

I am using Chrome, I have tried withwith firefox, same result.
I am sure that the stream is the right one as well. I've changed the name in the code so that it always populated the field with the right name.
The server-side timestamp is the same as my localtime (EDT). Which is also the same as the producer time stamp.
Yes, when I manage to stream, I can replay it afterwards.
I feel like it works more often when I reload the whole thing and relogin in, but I can't really create a working environnement.

@GBoucher42 thanks for the info. So far, what I have is the following and please correct me if I am wrong:

The producer logs indicate no issues at all with the streaming.
The console playback is able to rollback and replay those fragments - consistently. If there were fragments then those will be played back consistently. If there were no fragments then they won't be..?

This sounds like you don't have any issues with the bandwidth on the console side (the consumer) and the logs I looked at just simply didn't catch the time when there was an error in streaming.
If this is the case then I would like to ask you to pinpoint the time when there is a problem in the console and include logs from a few seconds back which might include the time when there was an issue.
If this turns out to be some issue with the console, we could try another consumer - Java based real-time playback.

You can modify the code of the sample java application to consume your own stream from the Android sample application. Check out the render sample from the parser library at:
https://github.com/aws/amazon-kinesis-video-streams-parser-library#example
You might also be able to adapt this for a playback on an Android device

I am not sure I understand your scenario entirely. Are you going to consume the stream using a lambda?
The reason I asked to try a real-time consumer is to understand the following:

Whether your producer has an issue streaming
Whether it's the transpackaging for the console playback
Whether it's your browsers built-in MSE (playback engine)
Whether it's fetching the index/getting the data from the storage that's failing on the backend.

The real-time path should help to eliminate those.
If this turns out to be the producer then we can try to capture the logs when the producer stops streaming so we can debug this issue on your end.

Hi, I've managed to make it work with a certain hack. when I start the stream, if i lock my mobile (stops the stream) and unlock it (resumes the stream), then the console picks it up. I don't know if this helps.
Also, can I stream videos with sound? I don't see alot of documentation about this question.

Interesting observation.. The demo application handles the Android lifecycle events so it resumes.
I am still quite not sure what's going on with the streaming intermittency - please try to get more data so we can help.
Regarding the audio. The processing is very similar to what the demo application does. We will try to add this functionality to the demo application soon. Basically, the idea is to create a new stream which is configured for AAC encoder specifics and enable streaming in parallel to the video. Stay tuned for that.

What kind of data can I accumulate other tahn logs and working/failing scenarios? I will provide anything I can.

The logs you've attached indicate perfect streaming for the period of time they were captured. I am just curious whether it's possible to catch the logs while your console playback is stuttering. Just trying to eliminate the producer side and ensure that the stream is being ingested without any interruptions.

I've managed to change the code slightly and it works well.
In the following method from stream fragment.java, I've added the bolded line, which is called on the method onResume() which was called in my specific scenario. Now it works all the time.
private void createClientAndStartStreaming(final SurfaceTexture previewTexture) {

    try {
        mKinesisVideoClient = KinesisVideoAndroidClientFactory.createKinesisVideoClient(
                getActivity(),
                Regions.US_EAST_1,
                KinesisVideoDemoApp.getCredentialsProvider());

        mCameraMediaSource = (AndroidCameraMediaSource) mKinesisVideoClient
                .createMediaSource(mStreamName, mConfiguration);

        mCameraMediaSource.setPreviewSurfaces(new Surface(previewTexture));

        **super.onResume();**
        resumeStreaming();
    } catch (final KinesisVideoException e) {
        Log.e(TAG, "unable to start streaming");
        throw new RuntimeException("unable to start streaming", e);
    }
}

Thanks a lot for the suggestion. We will evaluate this change and factor it in for the future improvements to the demo application

@GBoucher42  and @MushMal
log-kinesis.txt
i have a similar problem i have tried all the things mentioned here i think. I have tried super.onResume() that didnt work. What happens is that it takes more than 20 seconds till i see the video on Kinesis video streams in management console and then it after every 3-4 seconds it keeps showing loading for 10seconds then resumes.
when i stop the stream and when i replay from the start of the stream i have to wait for the Pause button to become play so that i can replay  which also is a feels like bad UI or maybe i am missing something as in the management console because i cant navigate to the part where i started the stream  because i dont know at which time it started and i cant see a navigation bar..... It is a bit smoother while replaying but still it keeps showing loading for 7-8 seconds after every 4-5 seconds of video.
Sometimes I get fragment missing errors.
I have used aws versions 2.6.14,2.6.17,2.6.18  none working. And the latest version broke something so even the activity to start stream wasnt opening so had to revert to 2.6.14
I am attaching the logs for streaming on 2.6.14
Please help
Thanks

Hi @raghavk92 ,
We are aware of the issue with the latest 2.6.20 and working to fix the issue.

@minbi i had problems with streaming on 2.6.14  as mentioned above. The logs and details are for that. Is that normal?

@raghavk92 log.txt indicates smooth streaming. Initially, your bandwidth was around 300Kbps which lead to accumulating a buffer over 4 seconds. Then, it increased to around 14Mbps so your buffer was streamed out just fine and caught up to the head (aka - the real-time).
The other one - log-kinesis.txt doesn't have enough data in there but there is no error or any issues I can see.

This issue has been closed because of inactivity. Please open a new issue in https://github.com/aws/aws-sdk-android/issues if you are still encountering problems.


Nvidia Driver Out of Date and No Newer Drivers Available

crash_log.txt

In addition to this, I get No CUDA detected error when I start the app. As I have CUDA 6.5, I went about solving it by downloading the previous versions of PyTorch but to no avail.


Nested Content - Live Preview Not working

I've been working with this issue for a while now and I have done as much research as I can to attempt to resolve this. Essentially I have a reasonable number of nested fields and they are not displaying in live preview but do in the live site. It may be how I'm setting up my templates but I would love some input here.

Here is the setup of what I have in the admin:
Page Content (Neo)
- Section (block type)
-- Column (block type)
--- Components (block type, contains basic fields)
-- Column (block type)
--- Components (block type, contains basic fields)

Here is the template code used to display the content:
% Main Block Content %
{# Get background image for section if it is set #}
{% set background = block.children.type('backgroundImage').first() %}

{# Echo background image on section #}

		{# Get Columns #}
		{% set columns = block.children.type('column') %}
		{# If the layout has columns, check for length and output #}
		{% if columns|length %}
			{% set columnCount = 0 %}
			{% for column in columns %}
				{% set columnCount = columnCount + 1 %}

					{% for item in column.children %}
						{# Output column components #}
						{% switch item.type.handle %}
							{% case 'headline' %}
								{% include '_components/headline.html' %}
							{% case 'text' %}
								{{ item.bodyContent }}
							{% case 'button' %}
								{% include '_components/button.html' %}
							{% case 'callToAction' %}
								{% include '_components/cta-basic.html' %}
							{% case 'foregroundImage' %}
								{% include '_components/foreground-image.html' %}
						{% endswitch %}
					{% endfor %}

			{% endfor %}
		{% endif %}

So the final output works fine, but live preview doesn't? Is this a scope issue or a bug? Can you provide any help for resolving this?
Thanks!

 I've gone to great lengths to have Neo support it properly (#21), but due to how LP works it's not always going to play nice.
I suspect it has to do with this line:
{% set columns = block.children.type('column') %}

It should be the case but it might be forcing a database query when filtering by block type. In that case, LP would be operating on the old content, which would explain why it doesn't update.
If you change it to a Twig-only alternative, then it should get LP working again:
{% set columns = [] %}
{% for childBlock in block.children if childBlock.type.handle == 'column' %}
    {% set columns = columns|merge([childBlock]) %}
{% endfor %}

Little more verbose but hey, what can you do.
Let me know if this fixes it.

@benjamminf Thank you for the quick reply.
This does in fact make the content able to display in live preview (odd right?)... but it displays a duplicate of the first object in the grouping.
The output is like this:
Array: ["Craft\\Neo_BlockModel: "]
Column 1
Array: ["Craft\\Neo_BlockModel: ","Craft\\Neo_BlockModel: "]
Column 1 Column 2

With this code as the source:
{% set columns = [] %}
{% for childBlock in block.children if childBlock.type.handle == 'column' %}
	{% set columns = columns|merge([childBlock]) %}
	{{ columns | inspect }}
	{% for column in columns %}
		{% set columnCount = columnCount + 1 %}
		Column {{ columnCount }}
	{% endfor %}
{% endfor %}

Any ideas on what could be causing that? I've included the count variable only as a means to show what and how many columns are being displayed.
Essentially this is happening because of the way LP and Craft communicate and it makes a DB call which either fails and displays nothing or stops?
Thanks again for your help with this.

You just need to replace that one line ({% set columns = block.children.type('column') %}) with what I wrote. The problem is you're looping over the columns twice, but one of them is inside the other. So you'll end up outputting the same column multiple times.

I've found the issue that's causing this in Neo and have fixed it. It'll be available in the next release, so when you upgrade next you can safely revert back to your old template code.

Fantastic! Thank you @benjamminf


WebGUI bind IPv6

I just started to tinker around with vaping but I cannot seem to find relevant information about the IPv6 status of this project.
I would like to be able to bind the WebGUI onto an IPv6 address but the program crashes when I try to configure something like this:
    plugins:

      - name: http
        type: flask
        bind: [::]:7021
        debug: true
        static_url_path: /static
        server: self
        async: thread
        routes:
          /targets : graphsrv->targets
          /graph_data :
            methods:
              - POST
              - GET
            target: graphsrv->graph_data
          /graph : graphsrv->graph_view
          /overview_read_file : graphsrv->overview_read_file
          /: graphsrv->overview_view

Output:
root@graphrx1:~/vaping # vaping start --home=examples/standalone_dns/ --debug
Traceback (most recent call last):
  File "/usr/local/bin/vaping", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/decorators.py", line 84, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/vaping/cli.py", line 72, in start
    update_context(ctx, kwargs)
  File "/usr/local/lib/python3.8/site-packages/vaping/cli.py", line 21, in update_context
    ctx.update_options(kwargs)
  File "/usr/local/lib/python3.8/site-packages/munge/click.py", line 119, in update_options
    self.config = self.config_class(read=self.home)
  File "/usr/local/lib/python3.8/site-packages/munge/config.py", line 54, in __init__
    self.read(kwargs["read"])
  File "/usr/local/lib/python3.8/site-packages/munge/config.py", line 130, in read
    config = munge.load_datafile(config_name, conf_path, default=None)
  File "/usr/local/lib/python3.8/site-packages/munge/codec/__init__.py", line 81, in load_datafile
    return codec().load(open(datafile))
  File "/usr/local/lib/python3.8/site-packages/munge/codec/yaml.py", line 15, in load
    return yaml.safe_load(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/yaml/__init__.py", line 162, in safe_load
    return load(stream, SafeLoader)
  File "/usr/local/lib/python3.8/site-packages/yaml/__init__.py", line 114, in load
    return loader.get_single_data()
  File "/usr/local/lib/python3.8/site-packages/yaml/constructor.py", line 49, in get_single_data
    node = self.get_single_node()
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 36, in get_single_node
    document = self.compose_document()
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 111, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 111, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 82, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/usr/local/lib/python3.8/site-packages/yaml/composer.py", line 110, in compose_sequence_node
    while not self.check_event(SequenceEndEvent):
  File "/usr/local/lib/python3.8/site-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/usr/local/lib/python3.8/site-packages/yaml/parser.py", line 474, in parse_flow_sequence_first_entry
    return self.parse_flow_sequence_entry(first=True)
  File "/usr/local/lib/python3.8/site-packages/yaml/parser.py", line 495, in parse_flow_sequence_entry
    return self.parse_flow_node()
  File "/usr/local/lib/python3.8/site-packages/yaml/parser.py", line 268, in parse_flow_node
    return self.parse_node()
  File "/usr/local/lib/python3.8/site-packages/yaml/parser.py", line 369, in parse_node
    raise ParserError("while parsing a %s node" % node, start_mark,
yaml.parser.ParserError: while parsing a flow node
expected the node content, but found ':'

Don't think we've tested - thanks for bringing it up

The initial error is a yaml parse error because the address needs to be wrapped in quotes.
However once that is addressed, vodka still fails to parse it properly, ticket for the latter issue is created here: 20c/vodka#18

@imp1sh fix for this has been merged to vodka master branch, ill do a pypi release for vodka in tandem with the next vaping release, which should hopefully happen next week the latest.
If you want to test beforehand you can install the current vodka master branch directly:
pip install https://github.com/20c/vodka/archive/refs/heads/master.zip

released 3.2.0 for vodka which should fix this issue, please re-open this ticket if it does not.
To install the update:
pip install vodka==3.2.0

This fix seems to work. Thank you.


I don't know how to make compilation. Can you guys show how to compile heimdall?

a

I don't know how to make compilation. Can you guys show how to compile heimdall?

I see that you are using Windows, therefore read the relevant documentation linked on the project page:
https://raw.githubusercontent.com/Benjamin-Dobell/Heimdall/master/Win32/README.txt
Appendix B - Installing Heimdall Suite from Source
Also please delete this irrelevant PR.


change unfocused tab color

I fixed unfocused tabs text color along the material design guideline ( https://www.google.com/design/spec/components/tabs.html ).

Unfocused tab color: #fff 70%

before

after

:eyes: Thanks!

LGTM! Great fix :)

Thanks!


are the code examples formatted with Github Markdown?

eg for the first example, your page shows...
c:[Type == "[https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid](https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid)",
should it be...
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid",
For users unfamiliar with claims markup language, this is HUGELY frustrating!
[Enter feedback here]

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

ID: 1aed49e2-8470-aaaf-5f92-c8453016582e
Version Independent ID: 6b16acbf-7398-3547-b37e-fd688d547dfd
Content: Migrate to Azure AD MFA with federations - Azure Active Directory
Content Source: articles/active-directory/authentication/how-to-migrate-mfa-server-to-azure-mfa-with-federation.md
Service: active-directory
Sub-service: authentication
GitHub Login: @BarbaraSelden
Microsoft Alias: BaSelden

@anwarmahmood1
Thanks for your feedback! I've assigned this issue to the author who will investigate and update as appropriate.

I have SMEs lookinga tt this for correction this week. Thank you  @anwarmahmood1

@anwarmahmood1 thanks for raising this! It's been fixed. Thanks @BarbaraSelden!

#please-close


Add COSS Token

Added the COSS ERC20 token to MyEtherWallet ethTokens list.

Please include a support email. https://myetherwallet.groovehq.com/knowledge_base/topics/i-just-created-a-new-token-can-you-add-it-to-mew

Please include support email: https://myetherwallet.github.io/knowledge-base/tokens/token-creators-add-your-token-to-myetherwallet.html


2018.6.0 cannot step into standard library even with experimental python

Environment data

VS Code version: Version 1.24.1 (1.24.1) 24f62626b222e9a8313213fb64b10d741a326288
Extension version (available under the Extensions sidebar): 2018.6.0
OS and version: OS X 10.13.5 (17F77)
Python version (& distribution if applicable, e.g. Anaconda): 3.6.5
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): virtualenv
Relevant/affected Python packages and their versions: stdlib argparse

Actual behavior
step-into does not step into library code and merely continues
Expected  behavior
step-into steps into library code
Steps to reproduce:

pyenv install 3.6.5
pyenv virtualenv -p python3.6 3.6.5 scratch-3.6
open vscode, new workspace, new empty folder
new file -> test.py
test.py:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument( 'foo' )

add debug configuration (python OR python experimental)
add breakpoint at line 5: parser.add_argument( 'foo' )
F5
step-into

Logs
Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)
N\A (nothing!)

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help)
/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.main.js:1311  INFO no standard startup: not just one window
/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.main.js:3454 Overwriting grammar scope name to file mapping for scope source.ruby.
Old grammar file: /Applications/Visual Studio Code.app/Contents/Resources/app/extensions/ruby/syntaxes/ruby.tmLanguage.json.
New grammar file: /Users/eedwards/.vscode/extensions/rebornix.ruby-0.18.0/syntaxes/ruby.cson.json

I have the same results using venv and VS Code version 1.25.1 using the Experimental Python debugger.  If I create a new default launch.json with the standard debugger file it ignores my break points completely and just runs through the program.

I can confirm this works in the experimental debugger
Please add the setting "debugStdLib": true in your launch.json.
Here's the config settings from my launch.json:
        {
            "name": "Python Experimental: Current File (Integrated Terminal)",
            "type": "pythonExperimental",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "debugStdLib": true
        },

Yes, that did work.  Though I think there is still something that has changed in my environment because I have a co-worker running on the same version of VS Code, debugging the same program and he does not have that in his launch.json file.  With his, whenever he gets to a "Import" statement it opens up that code being import and you can continue stepping into it.  With mine, it now works inside the module(thanks to adding the debugStdLib) but as soon as it hits an import I get an error regarding "Unable to open '':File not found.  So I'm looking into that now.  I've already done a uninstall/reinstall to try and clear out whatever is breaking it to now avail.

I think my current issue is something outside of VS Code as I have the same issue with pdb.  so setting that variable in launch.json does resolve this issue.

@Bullenj01 @eedwards-sk
It should be fixed, please test the latest development version of the extension. Instructions can be found here https://github.com/Microsoft/vscode-python/blob/master/CONTRIBUTING.md#development-build

Has the fix been released in the latest published version (2018.9.0) yet? I'm guessing not because I'm running into the same error.


use only typescript, no rust?

Total newbie here, trying convert from electron to tauri.
My understanding is that src-tauri is equal to main (background) and src-renderer to renderer processes in electron (that's only my deductive reasoning after attempting use examples from API in renderer:
import { appWindow } from '@tauri-apps/api/window';
console.log(appWindow);

which produces error
[plugin:vite:import-analysis] Failed to resolve import "@tauri-apps/api/window" from "src\main.ts". Does the file exist?

So if I want let's say dynamically change window title I'd need do it in the src-tauri code. I don't know rust, so I'd like to work solely with typescript, however neither the template nor any official documentation mention how to do so.
Any help on this front?
Thank you.

You need install @tauri-apps/api
yarn add -D -W @tauri-apps/api

Oh, thank you. Does it also mean my assumption on how this works also wrong? Like to manipulate window I can do everything from within src-renderer?

Yes, that's correct, you can change in src-render using typescript.
Here are the functions available to handle windows


Filtering + asNavFor + focusOnSelect =  indices all buggered up?

I made two synced sliders for a people profile page- you can click or swipe to the thumbnails on top, and the bottom will move to show that person's full info.
When it's initially showing all the people; it works fine.
After filtering, it's broken. Some of the thumbs will jump the slider to the wrong person, or cycle through all the slides back to the same one, or not work at all. If I inspect the source, I see that there are more than one slide with the same index number, which is probably what's causing that behavior.
The problem may that I have multiple classes assigned- for example, the same person might be classified as both 'faculty' and 'staff.'  My real page is being generated by a Wordpress query where the category names are being inserted into the class attribute of the bio-thumb and bio-info divs. Here's a simplified version:
http://jsfiddle.net/gigablargh/gth8gvLk/28/
I thought to first do "unFilter()" on both sliders before re-filtering them because I thought that might fix the problem; but that doesn't seem to make any difference. Not sure what else to try. Is the filtering known not to work when members are not unique? Or if this is something that should work, what else  am I doing wrong?

Closing as a dupe of #344


Refactor to non-recursive solution for target block

What was wrong?
Issue #19
How was it fixed?
The approach laid out here attempts to reach the target block by measuring the time passed between initial block and the last block given. It is considerably slower than the recursive solution, though addresses the implementation concern. Most likely I'm missing something by not taking advantage of the fact we can look at the block in-between this initial range and search on a smaller set of inputs?
Cute Animal Picture

@corydickson Thanks for the pr! The broken tests are b/c of web3's latest update - I've got a fix coming soon that should solve them

Fix is in - if you rebase against master that should clear up the failing tests

@njgheorghita Thank you, and tho I'm having trouble reproducing the failure in the latest build above
============================================================================================ slowest 10 test durations =============================================================================================
53.84s call     tests/core/test_scraper.py::test_scraper_imports_existing_ethpmcli_dir
41.02s call     tests/core/test_scraper.py::test_scraper_writes_to_disk
26.66s call     tests/core/test_scraper.py::test_get_ethpm_birth_block[4000]
17.98s call     tests/cli/test_registry_cli.py::test_ethpm_registry_commands
13.51s call     tests/cli/test_activate.py::test_activate_etherscan_uri_with_single_deployment
12.91s call     tests/cli/test_install_cli.py::test_ethpm_install_from_etherscan
11.90s call     tests/cli/test_activate.py::test_activate_ipfs_uri_with_factories_and_deployments
10.51s call     tests/cli/test_activate.py::test_activate_registry_uri_with_contract_types_no_deployments
7.12s call     tests/core/test_install.py::test_uninstall_packages[owned-wallet]
6.97s call     tests/core/test_install.py::test_install_multiple_packages
==================================================================================== 120 passed, 1 warning in 627.24s (0:10:27) ====================================================================================

Thank you for the swift review @njgheorghita ! Let me know if you'd like me to squash the previous commits if things look good

@pipermerriam @njgheorghita Thank you both learned a lot !


Allow one composition

Description

Disable stats/rare/head/top in base query autocompletion
Autocomplete suggests multiple indices
Allow application to be created with only one composition
Enable adding trace filter from dashboard table

Issues Resolved
[List any issues this PR will resolve]
Check List

[x] New functionality includes testing.

[x] All tests pass, including unit test, integration test and doctest

[ ] New functionality has been documented.

[ ] New functionality has javadoc added
[ ] New functionality has user manual doc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #557 (c637075) into main (91cacf9) will increase coverage by 18.83%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##               main     #557       +/-   ##
=============================================
+ Coverage     53.49%   72.33%   +18.83%
  Complexity      271      271
=============================================
  Files           236       38      -198
  Lines          7748     2136     -5612
  Branches       1603      236     -1367
=============================================
- Hits           4145     1545     -2600
+ Misses         3407      429     -2978
+ Partials        196      162       -34

Flag
Coverage Δ

dashboards-observability
?

opensearch-observability
72.33% <ø> (-0.21%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

.../org/opensearch/observability/model/Application.kt
4.76% <0.00%> (-0.51%)
:arrow_down:

...lytics/components/config_components/log_config.tsx

...cs/components/config_components/service_config.tsx

...onents/application_analytics/components/create.tsx

...lic/components/common/search/autocomplete_logic.ts

...lic/components/custom_panels/custom_panel_view.tsx

...analytics/components/dashboard/dashboard_table.tsx

.../helpers/custom_modals/reporting_loading_modal.tsx

...omponents/explorer/docTable/surrounding_flyout.tsx

...lytics/components/dashboard/latency_trend_cell.tsx

... and 189 more

Continue to review full report at Codecov.

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


API Documentation for Atom IDE

Summary
atom-ide official API documentation, is somewhere it's available or should I read code and figure how to do things?
Motivation
I'm actually forking ide-yaml package to make it usable for people that write YAML (mainly DevOps things) to implement important features such as autocomplete. https://github.com/ZiQiLN/ide-yaml/issues/1

atom-ide API is available in https://github.com/atom-ide-community/atom-ide-base.

Closing this issue as it seems resolved. Let me know if there is any action expected from the atom team.


[Question] Implement mechanism in another tree library

Hi @diogofcunha !
I have spent the last two days dealing with performance with many nested rows. As a result, I also found react-virtualized. But another research showed that it doesn't work with tree's. Then I found your repository, a plugin for react-virtualized that allows to virtualize tree's.
Over the last year I have created my own implementation of a complete React Tree Component solution (expect virtualization). This component is currently private-only accessible (not published on GitHub) because it isn't that good documentated atm. I am using it within my WordPress plugin... I'll just show you the component:

On the left you can see the tree component. My question is now, is it possible to use your virtualization methodic within another React Tree Component. Just to give a brief insight, so my tree is built like this:
/**
 * Render a tree.
 *
 * @param {object[]} tree The tree
 * @param {boolean} [displayChildren=true] If true the first nodes can have childNodes
 * @param {object} [createRoot] Shows an additional node after the last one with an input field
 * @param {string('tree','static','search')} [context='tree'] The tree context
 * @method
 */
renderTree = (tree, displayChildren = true, createRoot = undefined, context = 'tree') => {
    const nodeAttr = { renderItem, onRenameClose, onAddClose, onSelect, onNodePressF2, renameSaveText, renameAddText } = this.props,
        { isTreeLinkDisabled, rootId, toggleExpandAll } = this.props,
        resultSelectedNodeIdx = this.state.resultSelectedNodeIdx,
        resultTreeLength = typeof resultSelectedNodeIdx === "number" && this.state.resultTree.length,
        expandedState = this.storage.getItem('expandNodes') || {},
        className = classNames({
            'aiot-disable-links': isTreeLinkDisabled,
            'aiot-sortable-one': tree.length === 1
        }, 'aiot-context-' + context);
    let i = -1, anyNodeHasChildren = tree.some(n => n.childNodes?.length > 0);

    return [
        // "All" expander
        context === 'tree' && anyNodeHasChildren && (
 ),
        // List view

        { tree.map(node => {
            i++;
            const searchSelected = i % resultTreeLength === resultSelectedNodeIdx % resultTreeLength && !displayChildren,
                propSearchSelected = context === 'search' ? searchSelected : undefined;

            const createTreeNode = () => (<TreeNode key={ node.id } searchSelected={ propSearchSelected } {...node} onExpand={ this.handleNodeExpand }
                expandedState={ expandedState } {...nodeAttr} onUlRef={ displayChildren ? this.handleSortableTree : undefined } displayChildren={ displayChildren } onPaging={ this.handlePaging } />);

            if (renderItem) {
                /**
                 * This function is called when a node item gets rendered.
                 *
                 * @callback module:react-aiot~Tree~renderItem
                 * @param {function} createTreeNode A function that creates the default tree node (helpful for wrapper functions)
                 * @param {module:react-aiot/components/TreeNode} TreeNode The ReactJS element
                 * @param {object} node The node item
                 * @returns {module:react-aiot/components/TreeNode}
                 */
                return renderItem(createTreeNode, TreeNode, node);
            }else{
                return createTreeNode();
            }
        } ) }
        { !!createRoot && <TreeNode $_create onRenameClose={ onAddClose } renameSaveText={ this.props.renameAddText } {...createRoot} /> }

 ];
}

Don't be scared, but basically the top tree is just rendered and within TreeNode a new tree is built recursively. The TreeNode is a simple
. I hope I don't overwhelm you, but right now I'm a bit desperate about virtualization with nested trees. If my component is also able to virtualize, I think about making it open source.
Best regards,
Matthew :-)

Hi @matzeeable .
This is very hard to reply in here. It's probably possible to add virtualization to your tree but it depends on your implementation details, what you need is not to waste cpu cycles rendering things that are not necessary.
I can advise on how to do that if you share more implementation details with me, could you email me with the details? You can find my email in the details.
Gonna close the issue here


[scripts audit] docs generation changes

In preparation for buildsystems being pulled out into ports.
Part of the "merge 2021-02-26 EOD" group.

/azp run

/azp run

/azp run

Closing in favor of a single PR that contains all of these PRs. (to avoid destroying the CI system)


[benchmark] Add "dashboard" category to scenario_config.py

This allows scenario_config to produce a small superset of tests required to generate the performance dashboard https://grafana-dot-grpc-testing.appspot.com/. This only adds a category to some existing scenarios, and to my knowledge, should not affect any current automation that uses scenario_config.
I plan to use this category to run gRPC-core experiments and produce equivalent dashboards. It seems worth landing this independently of those job configurations, but I'm flexible.

By my count this is 18 C++ scenarios (no other languages).

That is intended. I'm not sure this would be useful for other languages, but if there's a need, it would not be hard to extract the other scenarios from the grafana config.
CC @ejona86 @dfawley


Drop official arctic and pystore support

Arctic is a fantastic tool, but the Python package is not sufficiently actively maintained. At least not actively enough for it to keep up with pandas/numpy releases and supported versions. And that's getting annoying.
Additionally, I haven't used Pystore in ages, and it also adds quite some dependency complexity for IMO minimal gain (PasConnector is easier, and ArcticConnector is faster). I also don't know what the maintenance status of that package is.
I think I will remove arctic and pystore support from testing, which will simplify installation and speed up testing. I will keep optional dependencies defined so users can install requisite packages with
pip install pastastore[arctic]
# or
pip install pastastore[pystore]

I doubt the first install statement will work however because of the new version of pip and deprecation of setup.py installs. The docs will be updated to explain how to install arctic or pystore manually, but probably on a separate page.
It might also be time to find out whether there are some better alternatives with similar speed/compression but better maintenance. Some potential ideas:

redis-py: https://github.com/redis/redis-py/blob/master/tests/test_timeseries.py, https://redis-py.readthedocs.io/en/stable/redismodules.html#redistimeseries-commands
pymongo (use mongoDB directly without Arctic): https://www.mongodb.com/docs/manual/core/timeseries-collections/
timescaleDB: https://docs.timescale.com/timescaledb/latest/quick-start/python/
influxDB: https://www.influxdata.com/blog/getting-started-python-influxdb/

Closed by #80


GPU: skip run on SLES

SLES is not spported for NVIDIA GPU drivers on N-series VM
Ref: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/n-series-driver-setup

From here, there is cuda package for sles, not sure why can't work on azure, I ever tried, also failed, need further investigation here.

From here, there is cuda package for sles, not sure why can't work on azure, I ever tried, also failed, need further investigation here.

Please start an internal thread with Josh to clarify if the docs.microsoft documentation is up-to-date, because if so then it remains as Stefan noted, that no gpu testing on sles is to be done.

Double confirm with PM.

GPU CUDA driver test shall skip if the Guest OS is RHEL 8.x or SUSE. No driver available.

Working on it.


Is it possible to support lower iOS versions?

For example, iOS9.0.

I don't have iOS 9.0 device. so I can't test sorry


[Service Bus] If receiveBatch() failed on receiving new message after timeout, next call try to receive more message during other async call stack

Package Name: @azure/service-bus
Package Version: 1.0.0-preview.1
Operating system: macOS 10.14.3
[ ] nodejs

version: * v10.15.0

[ ] browser

name/version:

[ ] typescript

version:

Is the bug related to documentation in

[ ] README.md
[ ] source code documentation
[ ] SDK API docs on https://docs.microsoft.com

Describe the bug
A clear and concise description of what the bug is.
After receiveBatch() received 0 messages, next receiveBatch(1) call received first message successfully but, it received second message during async processing first one. So the second message can not be handled and skipped with this error Received transfer when credit was 0
SOURCE
const ns = Namespace.createFromConnectionString(connectionString)
const subscriptionClient = ns.createSubscriptionClient(topicName, subscriptionName)
const receiver = subscriptionClient.getReceiver()

const timeout = ms => {
	return new Promise(resolve => setTimeout(resolve, ms))
}

const subscribe = async () => {
	const receiveLoop = async () => {
		console.log('receiveLoop start...')
		const message = await receiver.receiveBatch(1, 5)
		if (message.length) {
			console.log('Message', message[0].body)
			await timeout(5000)
			await message.complete()
		}
		console.log('receiveLoop end...')
		return await receiveLoop()
	}

	return await receiveLoop()
}

subscribe()

OUTPUT
'receiveLoop start...'
// 5 seconds later
'receiveLoop end...'
'receiveLoop start...'
// publish {body: 1}
// publish {body: 2}
// publish {body: 3}
Message 1
Received transfer when credit was 0
'receiveLoop end...'
'receiveLoop start...'
Message 2 (or 3)
'receiveLoop end...'
'receiveLoop start...'
'receiveLoop end...'
...

This solved the problem but I don't think this is the right answer.
const ns = Namespace.createFromConnectionString(connectionString)

const timeout = ms => {
	return new Promise(resolve => setTimeout(resolve, ms))
}

const subscribe = async () => {
	const receiveLoop = async () => {
		console.log('receiveLoop start...')
		// move client & receiver making part to here
		const subscriptionClient = ns.createSubscriptionClient(topicName, subscriptionName)
		const receiver = subscriptionClient.getReceiver()
		const message = await receiver.receiveBatch(1, 5)
		if (message.length) {
			console.log('Message', message[0].body)
			await timeout(5000)
			await message.complete()
		}
		console.log('receiveLoop end...')
		return await receiveLoop()
	}

	return await receiveLoop()
}

subscribe()

Expected behavior
Receiving new messages should be stoped during subsequent async calls after receiveBatch()

Thanks for reporting this @niceandneat and apologies on not responding sooner.
We will look into this and get back to you here soon

Is there any progress on this or a workaround, I am experiencing it as well. And with our api design the OPs workaround is not really practical.
Thanks.

We were able to reproduce the issue using the underlying rhea library and had started investigations there, please see https://github.com/amqp/rhea/issues/204
Apologies as we couldnt back with concrete results sooner, we will revisit this and share any findings we have.
@indis-io Can you share a sample code that mimics the way you are receiving from Service Bus along with the version of Service Bus library you are using?

@indis-io, @niceandneat
Can you also share if you are using partitioned queues/topics or unpartitioned ones?

@ramya-rao-a sorry I am indis-io..i didn't realized i was logged in under another account when i posted. I was able to recreate it intermittently with
let sb=require("@azure/service-bus")

let conn=process.env.CONN
let queue=process.env.QUEUE

let client=sb.ServiceBusClient.createFromConnectionString(conn)

function send(){
    client.createQueueClient(queue).createSender().send({body:"hello"})
}

async function read(){
    console.log("waiting for message")
    client.createQueueClient(queue).createReceiver(sb.ReceiveMode.receiveAndDelete).receiveMessages(1,2)
        .then(m=>{
            if (m && m.length > 0) { console.log("got msg") }
            console.log("poll finish")
            read()
        })
}

read()

setTimeout(() => {
    console.log("send")
    send()
}, 5000)
/*
output:
C:\Users\sampa\Desktop\sbtest>node index.js
waiting for message
send
poll finish
waiting for message
Received transfer when credit was 0
poll finish
waiting for message

*/

Sorry its difficult to mimic what my project is doing...but this seems to cause it after you run it a few times

ok sorry, took me a minute to think it throuth..this reproduces it reliably
let sb=require("@azure/service-bus")

let conn=process.env.CONN;
let queue=process.env.QUEUE;

let client=sb.ServiceBusClient.createFromConnectionString(conn);

(async function read(){
    console.log("waiting for message")
    client.createQueueClient(queue).createReceiver(sb.ReceiveMode.receiveAndDelete).receiveMessages(1,2)
        .then(m=>{
            if (m && m.length > 0) { console.log("got msg") }
            client.createQueueClient(queue).createSender().send({body:"hello"})
            read()
        })
}());

and a trace from the error
Trace: Received transfer when credit was 0
    at Incoming.on_transfer (C:\Users\sampa\Desktop\sbtest\node_modules\rhea\lib\session.js:358:26)
    at Session.on_transfer (C:\Users\sampa\Desktop\sbtest\node_modules\rhea\lib\session.js:749:19)
    at Connection.(anonymous function) [as on_transfer] (C:\Users\sampa\Desktop\sbtest\node_modules\rhea\lib\connection.js:765:30)
    at c.dispatch (C:\Users\sampa\Desktop\sbtest\node_modules\rhea\lib\types.js:910:33)
    at Transport.read (C:\Users\sampa\Desktop\sbtest\node_modules\rhea\lib\transport.js:109:36)
    at SaslClient.read (C:\Users\sampa\Desktop\sbtest\node_modules\rhea\lib\sasl.js:300:26)
    at Connection.input (C:\Users\sampa\Desktop\sbtest\node_modules\rhea\lib\connection.js:504:35)
    at TLSSocket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)

So the observations from the rhea thread you started seem correct the issue is just having multiple connections open at the same time in my case. if I modify the example to the following it works
let sb=require("@azure/service-bus")

let conn=process.env.CONN;
let queue=process.env.QUEUE;

let client=sb.ServiceBusClient.createFromConnectionString(conn);

(async function read(){
    console.log("waiting for message")
    let r=client.createQueueClient(queue).createReceiver(sb.ReceiveMode.receiveAndDelete);
    r.receiveMessages(1,2)
        .then(m=>{
            if (m && m.length > 0) { console.log("got msg") }
            r.close()
            let s=client.createQueueClient(queue).createSender();
            s.send({body:"hello"})
            .then(()=>{
                s.close()
                read()
            })
        })
}());

Just as an aside the following from the old azure-sb package works with no problems
import * as az from "azure-sb"

let conn = process.env.CONN;
let queue = process.env.QUEUE;

let sb = az.createServiceBusService(conn)
async function read() {
    sb.receiveQueueMessage(queue, { isPeekLock: false, timeoutIntervalInS: 1 }, (err, result, response) => {
        console.log("recieve err", err)
        read()
    })
}
read()
async function send() {
    sb.sendQueueMessage(queue, { body: "hello" }, (err, response) => {
        console.log("send err", err)
    })
}
setInterval(send, 2000)

Just making the case that if its a limitation/intended design of the amqp implementation i would like to see the old library (https://github.com/azure/azure-sdk-for-node) receive continued support. In my scenario i cant figure out how to use the amqp based library because my services need to both send and receive...which seems like an odd limitation given the context. (: Thanks for your help.

Thanks for all the details @sampaioletti
Using your code snippet in https://github.com/Azure/azure-sdk-for-js/issues/1303#issuecomment-555764681, I can reproduce the issue if I use an unpartitioned queue in ReceiveAndDelete mode.
I dont see the issue when

using partitioned queue
or when using unpartitioned queue in PeekLock mode

Can you confirm if you are seeing the same behavior as above?
On a side note, is there any reason that you dont want to share a receiver across each request to receive messages?
let client= sb.ServiceBusClient.createFromConnectionString(conn);
let receiver = client.createQueueClient(queue).createReceiver(sb.ReceiveMode.receiveAndDelete);
let sender = client.createQueueClient(queue).createSender();
(async function read(){
    console.log("waiting for message")
    receiver.receiveMessages(1,2)
        .then(m=>{
            if (m && m.length > 0) { console.log("got msg") }
            sender.send({body:"hello"})
            read()
        })
}());

I did the above to mimic my use case. The queue name is dynamic and is passed in as a argument to the method (mocked by the read method) based on a call to our api from our users. We are then using SB to route the message appropriately. It was working quite well with the old library, but we needed the ability to cancel scheduled messages, which is why I was working on upgrading to the newer api.
If it was possible to change the target queue on a receiver that would simplify our use case substantially.
Though I did try moving things around and it didn't make a lot of difference.
Until this is resolved I'm using a receiver from the old library and a sender from this one. I have to parse the messages as they come through with an extra definition, but its working well at the moment.
Thanks for your help.

Thanks for explaining your scenario @sampaioletti
Can you also please answer the question around partitioned vs unpartitioned queues and peeklock vs receiveAndDelete mode?

yes i can confirm that running the example does not result in the credit error when using partitions/peeklock.
But it still feels like something is still wrong, given a new example (sorry this may end up being a different issue, but may be related)
let sb = require("@azure/service-bus");
let performance = require("perf_hooks").performance;
let conn = process.env.CONN;
let queue = process.env.QUEUE;

let client = sb.ServiceBusClient.createFromConnectionString(conn);
let d = new Date();
d.setSeconds(d.getSeconds() + 15);
async function send() {
  let start = performance.now();
  return client
    .createQueueClient(queue)
    .createSender()
    .scheduleMessage(d, { body: "" })
    .then(() => {
      console.log("send done", performance.now() - start, "ms");
    });
};
(async()=>{
    await send()    // send done 2476.8567999973893 ms (a few seconds as its creating connection)
    await send()    // send done<PHONE_NUMBER>963999 ms
    await send()    // send done<PHONE_NUMBER>0025034 ms
    await send()    // send done<PHONE_NUMBER>005245 ms
    send()          // send done<PHONE_NUMBER>9760294 ms
    send()          // send done 25191.575300000608 ms <- first non-blocking call takes 25 seconds
})();

So far the only way i've been able to use the library without any issues is with awaiting all the things, or using a pool pattern (pool of 1 so basically a mutex)
Thank you for the help

@ramya-rao-a @richardpark-msft - It would be great to get this done soon.  It is currently 545 days old as of today.  Thanks, Jon

Hi @sampaioletti, responding to your latest comment about scheduling messages appearing to bottleneck - we have a fix this specific issue (with scheduleMessage) and it will be released in<EMAIL_ADDRESS>(which should be out tomorrow).
I am still looking into the comment about Received transfer when credit was 0

Hi @sampaioletti,
I've tried this a few ways but I seem unable to reproduce the issue laid out here by you and @ramya-rao-a either with our current package (1.1.8) or with 1.0.0 which is our oldest released package.
Just to reiterate I've taken your sample and just pointed it an unpartitioned queue, receiving in ReceiveAndDelete mode.
let conn = process.env.SERVICEBUS_CONNECTION_STRING;
let queue = "unpart-queue";

let client = sb.ServiceBusClient.createFromConnectionString(conn);

(async function read() {
  console.log("waiting for message");
  client
    .createQueueClient(queue)
    .createReceiver(sb.ReceiveMode.receiveAndDelete)
    .receiveMessages(1, 2)
    .then((m) => {
      if (m && m.length > 0) {
        console.log("got msg");
      }
      client.createQueueClient(queue).createSender().send({ body: "hello" });
      read();
    });
})();

If either of you can contribute some more information please let me know.

Just to add some more information about why this issue might not be reproducible:
receiveMessages is a two part process - we ask Service Bus for messages (by adding credits, as the error message alludes to). If by the end of the time interval we do not receive all the messages we asked for we initiate a drain - this flushes any remaining messages and should prevent new messages from arriving until credits are added again.
Recently the Service Bus team has implemented a series of fixes to drain that should improve it's reliability. Given that this issue appears to involve credits not properly clearing this seems a possible culprit.
I'm tagging this issue with 'needs-author-feedback' so we can see if the issue is resolved from the customer end.

Version 1.1.9 of @azure/service-bus has been released which fixes the issue mentioned in this comment.
Package:
<EMAIL_ADDRESS>


”Spermezeu”, ”Dobricel”, ”Dumbrăvița”, ”Hălmăsău” are listed in the drop-down menu

Description:
When user writes ”Spermezeu”, ”Dobricel”, ”Dumbrăvița”, ”Hălmăsău” the locations appear in the drop-down menu next to the comune and the county witch is a part according to the law.
Precondition:
The website is up an running.

Step 1
Write in the search bar "Spermezeu"

Expected results
The location appears in the drop-down menu as "Spermezeu, Bistrița-Năsăud (Spermezeu)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Write in the search bar "Dumbrăvița"

Expected results
The location appears in the drop-down menu as "Dumbrăvița, Bistrița-Năsăud (Spermezeu)".

Step 7
Write in the search bar "Hălmăsău"

Expected results
The location appears in the drop-down menu as "Hălmăsău, Bistrița-Năsăud (Spermezeu)".


Time pattern has been updated to reflect content changes

Format of time has been changed. We start with the day followed by the time. We also use a comma instead of a dash.
Example:

 Update 'Find a support centre' pattern example openning times content format

 Update 'Find a support centre' pattern example openning times content format

 Update 'Find a support centre' pattern example openning times content format

 Update 'Find a support centre' pattern example openning times content format


Build localization without library

The localization is currently built with a library, which is not necessary and should be changed.

@timonegk is it okay, that you fix this issue because I am not that familiar with CMAKE and the cpp build pipeline.

There is no performance or build time disadvantage of the way the localization is currently built. Therefore I would close this issue.


History component added

History section has been refactored into a component.
History filtering added.
Bug, not adding to history after failed request fixed.
Confirm mechanism for clearing history added.

Hey @izerozlu,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 57fc4270-cafc-11e9-8574-4b7115d53811


Permission Issue on Kusto DB in Fabric

Would be great if this would also work in Fabric. I added the service principal (after updating tenant settings) to the workspace with both Member and Admin but still get following error back:
Error:  Issue in running job 'download-dev'
Error:  Issue running Kusto script '.show database schema as csl script' on cluster '<>' / database '<>'
Exception encountered:  Kusto.Data.Exceptions.KustoRequestDeniedException ; Forbidden (403-Forbidden): {
"error": {
"code": "Forbidden",
"message": "Caller is not authorized to perform this action",
"@type": "Kusto.Data.Exceptions.KustoRequestDeniedException",
"@message": "Forbidden (403-Forbidden): {\r\n    "error": {\r\n        "code": "Forbidden",\r\n        "message": "Caller is not authorized to perform this action",\r\n        "@type": "Kusto.DataNode.Exceptions.UnauthorizedDatabaseAccessException",\r\n        "@message": "Principal '<>' is not authorized to read database '<>'.",\r\n
...
"activityType": "DN.FE.ExecuteControlCommand",\r\n
...
Any thoughts? too hard to get it working in fabric?

solved it myself. I added the service pricipal via a kql directly to the database :-)
.add database <> users ('aadapp=<>;<>') '<>'


@craigspaeth => Add ability to import modules via absolute paths

Closes https://github.com/artsy/force/issues/942.
Since I'm about to do a long stint inside of Force I wanted to sweep back through and follow up on a few things I had started thinking about a while back, with absolute module resolution being no.1 (and server-side React being no.2  😄)
What this PR does is set up babel-plugin-module-resolver to take absolute paths encountered in code and remap them to their corresponding file-system location, with aliases set up in .babelrc. There is a similar setup in Prediction. When using ES6+, resolution works seamlessly across the server and client and tests, though CoffeeScript code, while importable, must internally resolve paths the old way. I'm sure this can be fixed (but right now is less of a priority).
Mappings inside of .babelrc
"root": ["./desktop"]
Required by babel-plugin-module-resolver as a sensible default.
Example:
import foo from 'apps/auction/foo' resolves to desktop/apps/auction/foo
This was chosen as all new code is being developed responsively inside of desktop. At some hypothetical future point in time mobile can go away and desktop can be renamed to src.
Additional aliases under alias key:
"desktop": "./desktop",  -- strictly for consistent clarity, if importing desktop code from mobile
"mobile": "./mobile",
"root": "./"

The alias root up above is different from the "root": ["./desktop"]; it's a string alias that means "the root of force".
Example:
import metaphysics from 'root/lib/metaphysics.coffee' resolves to ./lib/metaphysics.coffee

Dope 👌
While I agree that most/all future dev will occur in desktop, I think that aliasing that to be the root path may lead to some confusion when reading code, I’d prefer we be explicit about it and get rid of it once we get rid of the mobile dir.

Nice! I agree with Eloy about ./desktop not being the root—but for a different reason in that we're extracting shared mobile/desktop libs into the root lib folder and it would be nice to be able to import metaphysics from 'lib/metaphysics'

Ok sounds good! Will keep everything explicit (desktop/apps/whatevs), etc

Updated the root path to ./.


Multual exclusiveness

For some reason TS isn't treating the values from .unwrap() as mutually exclusive.
Example
// Presume this function could return either a success or failure in real life
// Result<T> is an alias for ([success of T, undefined] | [undefined, error of E])
function gimmeValue<T>(value: T): Result<T> {
  return success(value)
}

const [res, err] = gimmeValue({ key: 'one' }).unwrap()

if (err) {
  throw err
}

console.log('Result key:', res.key)

One would assume it is safe to index res here since if there wasn't an error res MUST be defined.
ATM I really don't know how to solve this.

My guess is this is a limitation in Typescript? Since it's JS at runtime there probably is no 100% guarantee that res must be defined if err is undefined.

This is handled by later versions of Typescript :)


Remove deprecated RenameActorReminder methods

The RenameActorReminder methods have been removed in the runtime for Dapr 1.13. The methods need to be removed from the SDK.
See dapr/dapr#6945

In most SDKs, methods shouldn't be outright removed, but should return an error saying the method is not implemented instead, to prevent compile-time errors.

Marking this issue as closed as the SDK never implemented RenameActorReminder in the first place.


[CI] Set up test workflow

Closes #15

Checklist

[x] PR has an interpretable title with a prefix ([ENH], [FIX], [REF], [TST], [CI], [MNT], [INF], [MODEL], [DOC]) (see https://neurobagel.org/contributing/pull_requests for more info)
[x] PR links to GitHub issue with mention Closes #XXXX
[x] Tests pass
[x] Checks pass

For new features:

[ ] Tests have been added

For bug fixes:

[ ] There is at least one test that would fail under the original bug conditions.

ah, in case https://github.com/neurobagel/federation-api/issues/19 is simple, mind taking a look at that too?

:rocket: PR was released in v0.1.0 :rocket:


Failed to Attach Process

WinDbG
The debugging session could not be started:
FAILURE HR=0x8007005: Failed to
AttachProcess: 3732

C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.23110.3-0
Microsoft Windows Publisher
33000004500da45d0a6c7a8a57000000000450