Driver incorrectly trying to format a LUN which already has XFS file system after move to different worker node

I did a little bit more testing and I'm running into issues when k8s tries to re-deploy the mongodb with the FlexVolume LUN to another worker node because the first node failed (shut down).
My assumption would be that k8s keeps track of this helm chart deploy and tries to ensure that one POD is running at all times on one of the worker nodes. As this is a database and I'm using persistent volume to host the data of the database, I'd expect the LUN and the POD to move to another worker and then the container "just starts up" with the LUN mounted to "/data/db" in the container, without modifying any data on that LUN in the process. The expected end result is the mongodb being up-and-running with the same data as it was before the re-deploy to new worker node.
This is what I see in reality and where it fails in your driver on the destination worker node:
Environment: worker2 was original deploy location, worker1 is the new deploy location
master: <IP_ADDRESS>
worker1: <IP_ADDRESS>
worker2: <IP_ADDRESS>
credentials: - available on request by email to<EMAIL_ADDRESS>POD: pod mongodb-t1-ibm-mongodb-dev*; current failing deploy: mongodb-t1-ibm-mongodb-dev-76c998b87f-7qqvb
Storage class used for deploy:
kbs describe storageclass ssd-retain
Name:                  ssd-retain
IsDefaultClass:        No
Annotations:
Provisioner:           ibm/powervc-k8s-volume-provisioner
Parameters:            fsType=xfs,type=icp-v7k3-ssd
AllowVolumeExpansion:
MountOptions:
ReclaimPolicy:         Retain
VolumeBindingMode:     Immediate
Events:
Scenario:

Deployed mongodb helm chart via GUI and successful to worker2
Shut down worker 2 to mimic server failure
Started worker 1 --> k8s started to deploy the mongodb pod to worker 1, but blocked by old pod which was in Terminating state
deleted old pod (this hang until I restarted worker2 in next step)
Started worker 2 --> old pod disappeared, and delete pod command returned successfully and the following happened:

LUN is unmapped from worker2 (ok), BUT device is NOT correctly removed and hyperkube complains, as well as the Linux path checker. Extract from /var/log/messages on worker2:

On worker 2, which previosly owned the POD, /var/log/messages shows
Jan 30 16:37:05 aop93cl124 hyperkube: E0130 16:37:05.071283    4536 kubelet_volumes.go:140] Orphaned pod "a0a236ad-23df-11e9-b738-fa99c511ef20" found, but volume paths are still present on disk : There were a total of 1 errors similar to this. Turn up verbosity to see them.
Jan 30 16:37:05 aop93cl124 multipathd: mpathh: sdc - tur checker reports path is down
Jan 30 16:37:06 aop93cl124 multipathd: mpathh: sdx - tur checker reports path is down
Jan 30 16:37:07 aop93cl124 hyperkube: E0130 16:37:07.062533    4536 kubelet_volumes.go:140] Orphaned pod "a0a236ad-23df-11e9-b738-fa99c511ef20" found, but volume paths are still present on disk : There were a total of 1 errors similar to this. Turn up verbosity to see them.
Jan 30 16:37:07 aop93cl124 multipathd: mpathh: sdo - tur checker reports path is down
Jan 30 16:37:09 aop93cl124 hyperkube: E0130 16:37:09.068412    4536 kubelet_volumes.go:140] Orphaned pod "a0a236ad-23df-11e9-b738-fa99c511ef20" found, but volume paths are still present on disk : There were a total of 1 errors similar to this. Turn up verbosity to see them.
Jan 30 16:37:09 aop93cl124 multipathd: mpathh: sdf - tur checker reports path is down
Jan 30 16:37:09 aop93cl124 multipathd: mpathh: sdi - tur checker reports path is down
Jan 30 16:37:09 aop93cl124 multipathd: mpathh: sdl - tur checker reports path is down
Jan 30 16:37:09 aop93cl124 multipathd: mpathh: sdr - tur checker reports path is down
Jan 30 16:37:09 aop93cl124 multipathd: mpathh: sdu - tur checker reports path is down
Jan 30 16:37:10 aop93cl124 multipathd: mpathh: sdc - tur checker reports path is down
2) LUN is mapped to worker1 (ok) - verified in PvC and on worker1
3) LUN shows as "attached" in worker1 (ok)
4) ... but then your driver fails as it seems to be trying to create a new XFS file system on the already XFS formatted LUN. I had excepted that your driver does not try format a LUN if it already contains a valid file system but just mounts it for use by the container?
Here the logs from worker1:
On worker 1, which has the LUN attached under multipath device "mpathi"
Jan 30 16:42:02 aop93cl107 hyperkube: W0130 16:42:02.510705    4280 plugin-defaults.go:32] flexVolume driver ibm/powervc-k8s-volume-flex: using default GetVolumeName for volume pvc-a09ed93e-23df-11e9-b738-fa99c511ef20
Jan 30 16:42:02 aop93cl107 hyperkube: W0130 16:42:02.510765    4280 plugin.go:134] flexVolume driver ibm/powervc-k8s-volume-flex: GetVolumeName is not supported yet. Defaulting to PV or volume name: pvc-a09ed93e-23df-11e9-b738-fa99c511ef20
Jan 30 16:42:05 aop93cl107 hyperkube: I0130 16:42:05.755221    4280 operation_generator.go:498] MountVolume.WaitForAttach succeeded for volume "pvc-a09ed93e-23df-11e9-b738-fa99c511ef20" (UniqueName: "flexvolume-ibm/powervc-k8s-volume-flex/pvc-a09ed93e-23df-11e9-b738-fa99c511ef20") pod "mongodb-t1-ibm-mongodb-dev-76c998b87f-7qqvb" (UID: "e4856847-24cf-11e9-b738-fa99c511ef20") DevicePath "/dev/dm-8"
Jan 30 16:42:05 aop93cl107 hyperkube: W0130 16:42:05.759833    4280 plugin-defaults.go:32] flexVolume driver ibm/powervc-k8s-volume-flex: using default GetVolumeName for volume pvc-a09ed93e-23df-11e9-b738-fa99c511ef20
Jan 30 16:42:05 aop93cl107 hyperkube: W0130 16:42:05.759875    4280 plugin.go:134] flexVolume driver ibm/powervc-k8s-volume-flex: GetVolumeName is not supported yet. Defaulting to PV or volume name: pvc-a09ed93e-23df-11e9-b738-fa99c511ef20
Jan 30 16:42:05 aop93cl107 hyperkube: E0130 16:42:05.783006    4280 driver-call.go:258] mountdevice command failed, status: Failed, reason: Could not create file system on attached volume directory /dev/dm-8. Error is exit status 1
Jan 30 16:42:05 aop93cl107 hyperkube: E0130 16:42:05.783302    4280 nestedpendingoperations.go:267] Operation for ""flexvolume-ibm/powervc-k8s-volume-flex/pvc-a09ed93e-23df-11e9-b738-fa99c511ef20"" failed. No retries permitted until 2019-01-30 16:44:07.783222622 -0500 EST m=+3534.661304581 (durationBeforeRetry 2m2s). Error: "MountVolume.MountDevice failed for volume "pvc-a09ed93e-23df-11e9-b738-fa99c511ef20" (UniqueName: "flexvolume-ibm/powervc-k8s-volume-flex/pvc-a09ed93e-23df-11e9-b738-fa99c511ef20") pod "mongodb-t1-ibm-mongodb-dev-76c998b87f-7qqvb" (UID: "e4856847-24cf-11e9-b738-fa99c511ef20") : mountdevice command failed, status: Failed, reason: Could not create file system on attached volume directory /dev/dm-8. Error is exit status 1"

The issue has been fixed at our internal github. This will get closed formally once the code is synchronised from internal github, which will be once the release of new version of driver is done.

Fixed with latest merge


Fixed javadoc error in Context

Added the appropriate namespacing for javadoc annotations in Context.
Fixes #1768!

Great, thank you @mjh316 !


Please fix screenshot size/resolution

Issue in ./help/quicksilver/manage-work/tasks/task-constraints/latest-available-time.md
Throughout your docs, the screenshots are low-res and no larger view is available. Makes them useless.
Please allow me to view a larger version by clicking the embedded screenshot (like any other CMS does these days)
screenshot at 175%

I have uploaded a new image. Thanks for letting us know about this. Please let us know every time you find a low-resolution picture. We are working to correct this, but we might not be aware of all the instances. Thanks, again!
https://experienceleague.adobe.com/docs/workfront/using/manage-work/tasks/task-constraints/latest-available-time.html?lang=en


Device not correctly update

Observed on our dev infrastructure. User device information is not registered in the DB user object when connecting.

The problem appears to be located in the backend:
2020-06-26T11:47:00.746Z kdk:core:devices:service Updating device dCnv5LV8a9A:APA91bHet_SN2q-RKB6lb1F0m0TsOqvDPcufyN9BGjrynh6XPBRduqB6TnGaPL3zo5VNYf3u_DPHNJtwfVuXOaJzO2MM4b3GJL9tmW8_f1921t9HHGdPGhXA-0fUIj1sbGH_3wtNb0hH {
  available: true,
  platform: 'Android',
  version: '8.0.0',
  uuid: '7c042bc479e7916d',
  cordova: '8.0.0',
  model: 'SM-G930U',
  manufacturer: 'samsung',
  isVirtual: false,
  serial: 'a6084eba',
  registrationId: 'dCnv5LV8a9A:APA91bHet_SN2q-RKB6lb1F0m0TsOqvDPcufyN9BGjrynh6XPBRduqB6TnGaPL3zo5VNYf3u_DPHNJtwfVuXOaJzO2MM4b3GJL9tmW8_f1921t9HHGdPGhXA-0fUIj1sbGH_3wtNb0hH'
}
2020-06-26T11:47:00.764Z kdk:core:devices:service Binding new device {
  available: true,
  platform: 'Android',
  version: '8.0.0',
  uuid: '7c042bc479e7916d',
  cordova: '8.0.0',
  model: 'SM-G930U',
  manufacturer: 'samsung',
  isVirtual: false,
  serial: 'a6084eba',
  registrationId: 'dCnv5LV8a9A:APA91bHet_SN2q-RKB6lb1F0m0TsOqvDPcufyN9BGjrynh6XPBRduqB6TnGaPL3zo5VNYf3u_DPHNJtwfVuXOaJzO2MM4b3GJL9tmW8_f1921t9HHGdPGhXA-0fUIj1sbGH_3wtNb0hH'
}
2020-06-26T11:47:00.769Z kdk:core:pusher:service pusher service called for create action=device
error: error: api/pusher - Method: create: Invalid parameter: PlatformApplicationArn Reason: An ARN must have at least 6 elements, not 1
error: error: api/devices - Method: create: Invalid parameter: PlatformApplicationArn Reason: An ARN must have at least 6 elements, not 1
error: error: api/devices - Method: update: Invalid parameter: PlatformApplicationArn Reason: An ARN must have at least 6 elements, not 1

Seems to be related to a wrong environment configuration, application ARN SNS_ANDROID_ARN & SNS_IOS_ARN are empty.


README has spelling and grammar issues

I get the feeling that @jcouyang is not a native English speaker.  The README has a fair number of spelling and grammar issues.
This is a really cool library and I don't want people to dismiss it because of low quality documentation.

If I get some time, I'll go through the README, fix up some things, and make a PR.  If someone else has time before me, please, be my guest.

https://github.com/reactive-react/react-most/pull/12

This issue can be closed now that #12 is merged.


Docs improvements tracker

Here's stuff that's been used so far during the learn-glow book that we should put in docs for on the trait:

[ ] clear_color
[ ] clear

@Lokathor Is the learn-glow book available anywhere (or is it being written privately)? Searched GitHub, only found this issue and #41.
Looks like it used to be at https://github.com/rust-tutorials/learn-glow but this repository no longer exists? (found this cached page: https://webcache.googleusercontent.com/search?q=cache:MYU38SJCxgwJ:https://github.com/rust-tutorials/learn-glow/issues/3+&cd=1&hl=en&ct=clnk&gl=ca)

I didn't end up developing it at all. To avoid confusion about having a repo with no useful content i got rid of it.
If anyone wants to work on the project I can add them to the github org and get them set up to do it.


template project shouldn't expose info.* properties

as of Spring Boot 1.4, the build plugin has a new goal build-info. It generates some information about the build and expose that automatically in the info endpoint.
The following is a pre 1.4 way of doing this:
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
See the documentation

Thanks for raising that. Will get right on that.

Fix that in master. Thanks.


OOM of model trained on 0.22.0 with 0.23.0

System Info
Working config:

- `Accelerate` version: 0.22.0
- Platform: Linux-5.15.0-84-generic-x86_64-with-glibc2.31
- Python version: 3.10.12
- Numpy version: 1.24.4
- PyTorch version (GPU?): 2.0.1+cu118 (True)
- PyTorch XPU available: False
- PyTorch NPU available: False
- System RAM: 2015.35 GB
- GPU type: NVIDIA H100 80GB HBM3
- `Accelerate` default config:
        Not found

Config with issue:
- `Accelerate` version: 0.23.0
- Platform: Linux-5.15.0-84-generic-x86_64-with-glibc2.31
- Python version: 3.10.12
- Numpy version: 1.24.4
- PyTorch version (GPU?): 2.0.1+cu118 (True)
- PyTorch XPU available: False
- PyTorch NPU available: False
- System RAM: 2015.35 GB
- GPU type: NVIDIA H100 80GB HBM3
- `Accelerate` default config:
        Not found

Information

[ ] The official example scripts
[X] My own modified scripts

Tasks

[ ] One of the scripts in the examples/ folder of Accelerate or an officially supported no_trainer script in the examples folder of the transformers repo (such as run_no_trainer_glue.py)
[X] My own task or dataset (give details below)

Reproduction
I was resuming from a checkpoint of lmsys/longchat-7b-v1.5-32k on Huggingface trained on 0.22.0 using HF Trainer. When resuming on 0.22.0, the experiment continues. However, when resuming on 0.23.0, it hits OOM. I'm wondering if there is a backward compatibility issue.
I even tried restarting without resume_from_checkpoint option in Trainer and giving it the checkpoint file as the model directly, this also gives me the same behavior as above.
Expected behavior
Run would resume with 0.23 as with 0.22

Can you provide a full reproducer for me please? When testing in accelerate native I got the same memory results. And more specifically your versions of transformers please


Use a combination of strings and a spellchecker to automatically suggest filenames

http://stackoverflow.com/q/17195924/27641

Not going to implement this; not focused on core date-time prefixing.


FormatBytes

If the user already has a byte array they can avoid needing to convert it to string with FormatBytes.
Thanks for the consideration!

LGTM


Improving documentation of "Html Format Options" (Command-line Options)

Description
It would be nice if there was more information (e.g., being more explicit about what is being set or produced with the flags) provided in the help file and the manpage for the "Html Format Options" as they are currently labeled in those files. See https://ietf-tools.github.io/xml2rfc/#name-html-format-options
Please note that the label "Html Format Options" is inaccurate as many flags documented in the section can be used to produce PDF and text output also.
Code of Conduct

[X] I agree to follow the IETF's Code of Conduct

Also "Html" -> "HTML" in text.

I think there are also bugs with the current implementation of the reference base command line options that make things even more confusing. A pass explaining what happens will help us make sure we've well documented what's supposed to happen.


Can someone help me run Steam Authenticator app from iOS please?

Hello can someone help me run Steam Authenticator app from iOS please? Im in desperate need of it and the unofficial app from windows store seems fishy. I really need the app on my windows phone. Anyone able to "convert" it from iOS to WP10 please?

Be sure to pass your request along to Valve!  If they are interested in evaluating Islandwood to see if it's a good fit for porting their iOS app, we would be happy to help!
(Note that Islandwood is not an emulator and cannot be used to run iOS apps on Windows.  It is a porting solution that enables iOS developers to leverage some of their existing source code and skills to build an app for Windows)


Add suspend/resume operations to SPI NOR FLASH driver

Some serial NOR flash devices can suspend program/erase operation in favour of read operation. Program/erase can be time consuming operation and instead of waiting for its completion it should be possible to read data in the meanwhile.
This PR adds that feature to the spi_nor.c flash driver and provides tests for the feature.

@de-nordic Added Kconfig symbol to conditionally compile in the suspend/resume feature

rebased on main

@de-nordic please take a look, footprint of the driver shouldn't be affected

@de-nordic please take a look, footprint of the driver shouldn't be affected

Sorry, got stuck under stuff. I will take a look at this, need to run the change on board with flash that supports it.

@maass-hamburg Would you mind looking here? I see that you know thing or two about SPI nor devices.


Page Says to make sure you have .Net 4.6.2 but the Picture is 4.5.2 and there is no 4.6.2

Title says it all

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

ID: bc997189-b9f4-653c-1188-5663e1a6367e
Version Independent ID: 3113cafa-56e7-0e45-999f-fa18d50e28cb
Content: Deploy packages using Package Deployer and Windows PowerShell - Power Platform
Content Source: power-platform/admin/deploy-packages-using-package-deployer-windows-powershell.md
Service: powerapps
GitHub Login: @Mattp123
Microsoft Alias: matp

@mgernaey - This article suggests there is a .NET version 4.6.2. .NET Framework 4.6.2
Closing issue.

Tue issue isn't whether there is or isn't, it is that it says to use 4.6.2 but the picture shows 4.5.2, we should be consistent between the images and the words

and the page literally says
Ensure that .NET Framework 4.6.2 is selected.
Select Dynamics 365 Package.
Specify the name and location of the project, and click OK.
Ensure that .NET Framework 4.6.2 is select and we have 4.5.2 selected lol :-)


Matching username formatting

Similar to #14 I was wondering if there were plans to match the user/nickname of the Discord user with their in-game name, and thus format it the same, so people don't see two different names/name styles.
I'll try to get some screenshots of what I'm referring to so it's easier to understand.

@BigJazzz You can already accomplish this with the Role Based configs if you have the same Discord roles as Minecraft ranks. I personally already have mine set up this way.

As promised, here's the screenshot: https://www.dropbox.com/s/i3kj9vr97c8e560/253506170200.png?dl=0 (Doing this on my phone at the moment, so apologies for the Dropbox link).
As you can see, in game I have my name formatted, however the messages from Discord comes through plain.
On the topic of prefixes, would you mind providing a quick example of your setup with roles/prefixes? I'm not sure how the prefixes array in the config file should be structured.

Oh ya that's not gonna happen... at least the name won't. There's no real link between Discord and Minecraft account yet to be able to read your nickname/displayname. But the rank you can do...
https://github.com/nguyenquyhy/DiscordBridge/blob/master/examples/config-multiple.json

Damn! That would be amazing if the stars aligned and it could work.

Actually this may work if the player already did /discord login. I will try to play around with this.

Thank you.


Keyboard accessibility issues on Android (TextInput but also beyond)

Description
Can not operate TextInput with external keyboards and it seems that TextInputs  "block" focus for other elements if those are between two TextInputs.
We can not really use TextInputs for applications that need to be accessible (app is failing WCAG and EN 301 549 accessibility standards).
This issue is also reopening https://github.com/facebook/react-native/issues/31820 (that was closed because it was stale)...
Steps to reproduce

Connect a physical keyboard to Android device (I've used both PC with direct connection to Android and external Bluetooth keyboard that works with other apps).

Open Expo snack (https://snack.expo.dev/aAQHfOdiVoSZF6jo6TzWN) or basically run this code:

<Button
  onPress={() => onPressLearnMore("First")}
  title="First focus"
  color="#841584"
/>
      <TextInput
        style={styles.input}
        onChangeText={onChangeText}
        value={text}
      />

      <Button
  onPress={() => onPressLearnMore("between")}
  title="Focus in between"
  color="#2196F3"
/>
      <TextInput
        style={styles.input}
        onChangeText={onChangeNumber}
        value={number}
        placeholder="1234"
        keyboardType="numeric"
      />

            <Button
  onPress={() => onPressLearnMore("Last")}
  title="Last focus"
  color="#000"
/>

try to focus in either of TextInput's or try to focus and activate the button in between them....

React Native Version
0.74.3
Affected Platforms
Runtime - Android
Output of npx react-native info
N/A

Stacktrace or Logs
Nothing reported...

Reproducer
https://snack.expo.dev/aAQHfOdiVoSZF6jo6TzWN
Screenshots and Videos
https://www.youtube.com/watch?v=EZmllQhzzMU

As a temporary solution we can use https://www.npmjs.com/package/react-native-external-keyboard or https://github.com/ArturKalach/react-native-a11y from @ArturKalach.
But would be great if React Native would just support this out of the box as many don't test for external keyboard support and therefore introduce barriers to folks without being aware.


Bootstrapping the value function?

Currently, the target for the value function is the discounted sum of all future rewards. This gives unbiased estimate but will result in higher variance. An alternative is to use bootstrapped estimate, i.e. something like
target[i] = rewards[i] + gamma * prev_values * masks[i]
Bootstrapping is often preferred due to low variance, even though it results in biased gradient estimate.

This is done in Tianshou, check it out at https://github.com/thu-ml/tianshou If you are still interested. @XuchanBao


Create & schedule weekly tweets about Becoming a Blog/video Contributor

Minimum requirements:

add link to blog guidelines

create a template for blog design as the banner of tweet

recommended hashtags:
#writethetalk, #sharingIScaring #OpenSource #Community

I recommend 1 tweet for week, Wednesdays as a recurring tweet for the rext of 2019, ending on Dec 25th, 2019.

@rsjames should you need help with the description of this tweet, happy to provide back up. :)

brainstorming description:
@MicroProfileIO💛 Contributors prioritize sharing what they learn with MP! #MicroProfilers feed of video/tutorials/written valuable content to the #MPblog is amazing💪🏽! If you are not a #MPcontent contributor, join the fun https://bit.ly/2OiPWkD. #OSS #community #sharingIScaring

@rsjames where are we with this?

@aeiras Changed the tweet a bit. I feel it reads a lot easier. Visual is bellow.
Are you a #MPContributors? Have you shared what you have learn with @MicroProfileIO 💛? Share your MP video/tutorials/written valuable content to the #MPblog 💪🏽! If you are not a #MPcontent contributor, join the fun https://bit.ly/2OiPWkD #OSS #community #sharingIScaring

you are correct @rstjames, it reads better. Let’s correct grammar in both: the design and description:
#MPContributor is singular.
... have you shared what you are learning  with @MP gold heart?

@aeiras found a couple other grammatical errors and fixed them.
Are you a #MPContributor ? Have you shared what you have learned with @MicroProfileIO 💛? Share your MP videos/tutorials/written content to the #MPblog 💪🏽! If you are not a #MPcontent contributor, join the fun https://bit.ly/2OiPWkD
#OSS #community #sharingIScaring #opensource

All scheduled on twitter

just fantastic Ryan, you rock!


Bluetooth: controller: split: Stop pre-empt timer

Add pre-empt timer stop when a prepare is executed so that
when the pipeline has another event queued, the firing of
the pre-empt timer does not pre-empt the just executed
prepare.
Relates to #19685.
Signed-off-by: Vinayak Kariappa Chettimada<EMAIL_ADDRESS>

@thoh-ot @wopu-ot could you take a look? thanks!


Linter for self-definable baselines in simplified language.

Good Morning, I'm sure this will be a long process, but I wanted to get it started and see what I need to do next. This is a linter built for ingesting baselines defined in a simple json schema (ingestion still a work in progress), in the meantime it successfully lints  MVC, Horizontals content including importing includes.
Uploading vlc-record-2021-08-05-11h06m28s-[Extension Development Host] - create-custom-policy-definition.md - automation - Visual Studio Code-.mp4…

@bobbytreed can you provide more context on what these changes are? Possibly a gif and how to test the changes? Also it looks like there is a merge conflict in the package.json.
cc @IEvangelist @meganbradley @lamebrain

Hi @bharney0 - I was collaborating with Bobby and a few others on this effort. With that said, this was a huge port. Essentially, Bobby has had tooling (in .NET) in place for years now that is capable of deeply understanding markdown hierarchies as it relates to our contributor guidance. He could reason about various things, such as "this MD file is this type, so it requires a specific section" for example. And from there it gets a lot more granular, the level of control is seemingly infinite. @bobbytreed can provide more context, and details.

@bobbytreed @IEvangelist just wanted to keep you guys posted. There was a lot of feedback from the Authoring Pack Extensions that fell by the wayside over the last year. And we felt like there was no feedback mechanism for the community about the Extensions. With numerous problems and lack of resources, we will be trying to stabilize the Extension Pack over the next few weeks. We are unarchiving this repo, and removing the code to allow users to report issues. But will not be taking open source contributions. The actual code will live in ADO and will be maintained by the authoring team.
As for this extension and PR, I will be closing this. I would discuss with @meganbradley about getting the linter extension in front of authors.
Without a doubt we could have been more transparent, and left you guys in a lurch.  Sorry if we sent the wrong message by suddenly close sourcing this project without communicating to the community.


Clearfix to block group not working when applying Pocket Grid in CSS

Hello
I have been using Pocket Grid on my less code (http://codepen.io/mdmoura/pen/hapox).
However to make this work correctly I need to "manually" add a clear to block-group.
If I add block group to the element class then it works.
Any idea why?
Thank You,
Miguel

Class .items must have clearfix. I don't now why less not exntended :before and :after.


Uncaught TypeError: Invalid Point: (27, NaN)

[Enter steps to reproduce below:]

...
...

Atom Version: 1.4.0
System: Mac OS X 10.11.2
Thrown From: linter package, v1.11.3
Stack Trace
Uncaught TypeError: Invalid Point: (27, NaN)
At /Applications/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/point.js:63

TypeError: Invalid Point: (27, NaN)
    at Function.module.exports.Point.assertValid (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/point.js:63:15)
    at TextBuffer.module.exports.TextBuffer.clipPosition (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/text-buffer.js:1015:13)
    at TextBuffer.module.exports.TextBuffer.clipRange (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/text-buffer.js:1003:20)
    at MarkerLayer.module.exports.MarkerLayer.markRange (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/marker-layer.js:204:46)
    at TextEditorMarkerLayer.module.exports.TextEditorMarkerLayer.markBufferRange (/Applications/Atom.app/Contents/Resources/app.asar/src/text-editor-marker-layer.js:78:52)
    at DisplayBuffer.module.exports.DisplayBuffer.markBufferRange (/Applications/Atom.app/Contents/Resources/app.asar/src/display-buffer.js:1100:38)
    at TextEditor.module.exports.TextEditor.markBufferRange (/Applications/Atom.app/Contents/Resources/app.asar/src/text-editor.js:1339:59)
    at /Users/aubrianhalili/.atom/packages/linter/lib/editor-linter.js:50:34
    at Function.module.exports.Emitter.simpleDispatch (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:125:28)
    at EditorLinter.addMessage (/Users/aubrianhalili/.atom/packages/linter/lib/editor-linter.js:137:20)
    at /Users/aubrianhalili/.atom/packages/linter/lib/linter-views.js:104:22
    at Array.forEach (native)
    at LinterViews.notifyEditorLinters (/Users/aubrianhalili/.atom/packages/linter/lib/linter-views.js:102:11)
    at LinterViews.render (/Users/aubrianhalili/.atom/packages/linter/lib/linter-views.js:59:10)
    at /Users/aubrianhalili/.atom/packages/linter/lib/linter.coffee:39:14
    at Function.module.exports.Emitter.simpleDispatch (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:125:28)
    at MessageRegistry.updatePublic (/Users/aubrianhalili/.atom/packages/linter/lib/message-registry.js:84:18)
    at UpdateMessages (/Users/aubrianhalili/.atom/packages/linter/lib/message-registry.js:24:16)

Commands
     -0:13.4.0 project-manager:list-projects (atom-text-editor.editor.is-focused)

Config
{
  "core": {},
  "linter": {
    "errorPanelHeight": 171
  }
}

Installed Packages
# User
autocomplete-paths, v1.0.2
color-picker, v2.0.14
docblockr, v0.7.3
emmet, v2.3.18
file-icons, v1.6.14
highlight-line, v0.11.0
highlight-selected, v0.11.1
linter, v1.11.3
linter-jshint, v1.2.2
minimap, v4.19.0
pigments, v0.19.7
project-manager, v2.7.3

# Dev
No dev packages

That is a very interesting error you hit there, can you please provide a repro for this?

Had the same issue, have not been able to reproduce it reliably.
Atom Version: 1.4.0
System: Microsoft Windows 7 Professional
Thrown From: linter package, v1.11.3
Stack Trace
Uncaught TypeError: Invalid Point: (17, NaN)
At C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\text-buffer\lib\point.js:63

TypeError: Invalid Point: (17, NaN)
    at Function.module.exports.Point.assertValid (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\text-buffer\lib\point.js:63:15)
    at TextBuffer.module.exports.TextBuffer.clipPosition (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\text-buffer\lib\text-buffer.js:1015:13)
    at TextBuffer.module.exports.TextBuffer.clipRange (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\text-buffer\lib\text-buffer.js:1003:20)
    at MarkerLayer.module.exports.MarkerLayer.markRange (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\text-buffer\lib\marker-layer.js:204:46)
    at TextEditorMarkerLayer.module.exports.TextEditorMarkerLayer.markBufferRange (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\src\text-editor-marker-layer.js:78:52)
    at DisplayBuffer.module.exports.DisplayBuffer.markBufferRange (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\src\display-buffer.js:1100:38)
    at TextEditor.module.exports.TextEditor.markBufferRange (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\src\text-editor.js:1339:59)
    at C:/Users/RShackleton/.atom/packages/linter/lib/editor-linter.js:50:34
    at Function.module.exports.Emitter.simpleDispatch (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\event-kit\lib\emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\event-kit\lib\emitter.js:125:28)
    at EditorLinter.addMessage (C:/Users/RShackleton/.atom/packages/linter/lib/editor-linter.js:137:20)
    at C:/Users/RShackleton/.atom/packages/linter/lib/linter-views.js:104:22
    at Array.forEach (native)
    at LinterViews.notifyEditorLinters (C:/Users/RShackleton/.atom/packages/linter/lib/linter-views.js:102:11)
    at LinterViews.render (C:/Users/RShackleton/.atom/packages/linter/lib/linter-views.js:59:10)
    at file:///C:/Users/RShackleton/.atom/packages/linter/lib/linter.coffee:39:14
    at Function.module.exports.Emitter.simpleDispatch (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\event-kit\lib\emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (C:\Users\RShackleton\AppData\Local\atom\app-1.4.0\resources\app.asar\node_modules\event-kit\lib\emitter.js:125:28)
    at MessageRegistry.updatePublic (C:/Users/RShackleton/.atom/packages/linter/lib/message-registry.js:84:18)
    at UpdateMessages (C:/Users/RShackleton/.atom/packages/linter/lib/message-registry.js:24:16)

Commands
     -0:17.4.0 core:select-up (atom-text-editor.editor.is-focused)
     -0:17.1.0 editor:select-to-end-of-line (atom-text-editor.editor.is-focused)
     -0:16.4.0 core:select-left (atom-text-editor.editor.is-focused)
     -0:16.1.0 core:select-up (atom-text-editor.editor.is-focused)
     -0:15.7.0 core:cut (atom-text-editor.editor.is-focused)
  3x -0:15.4.0 core:move-up (atom-text-editor.editor.is-focused)
     -0:14.7.0 editor:move-to-end-of-screen-line (atom-text-editor.editor.is-focused)
     -0:14.4.0 editor:select-to-first-character-of-line (atom-text-editor.editor.is-focused)
     -0:14.2.0 core:paste (atom-text-editor.editor.is-focused)
     -0:12.8.0 atom-beautify:beautify-editor (atom-text-editor.editor.is-focused)
 15x -0:12 core:move-up (atom-text-editor.editor.is-focused)
     -0:10.5.0 core:move-down (atom-text-editor.editor.is-focused)
     -0:10.2.0 editor:newline (atom-text-editor.editor.is-focused)
     -0:10 snippets:next-tab-stop (atom-text-editor.editor.is-focused)
     -0:10 snippets:expand (atom-text-editor.editor.is-focused)
     -0:10 editor:indent (atom-text-editor.editor.is-focused)

Config
{
  "core": {
    "disabledPackages": [
      "emmet"
    ]
  }
}

Installed Packages
# User
atom-beautify, v0.28.21
atom-tfs-auto, v0.2.0
color-picker, v2.0.14
language-aspx, v0.4.0
linter, v1.11.3
linter-jshint, v1.2.2
minimap, v4.19.0
minimap-linter, v1.1.1
minimap-pigments, v0.1.7
pigments, v0.19.7
project-manager, v2.7.3

# Dev
No dev packages

Looks like both of you only have linter-jshint installed as a linter provider, so I'm assuming it's passing in an invalid range, but we should be validating it here before attempting to send it off to Atom for markup in any case.
If you could find a file that reproduces this that would be most helpful!

[Enter steps to reproduce below:]
1.Open JS File
Atom Version: 1.4.0
System: Mac OS X 10.11.3
Thrown From: linter package, v1.11.3
Stack Trace
Uncaught TypeError: Invalid Point: (123, NaN)
At /opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/point.js:63

TypeError: Invalid Point: (123, NaN)
    at Function.module.exports.Point.assertValid (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/point.js:63:15)
    at TextBuffer.module.exports.TextBuffer.clipPosition (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/text-buffer.js:1015:13)
    at TextBuffer.module.exports.TextBuffer.clipRange (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/text-buffer.js:1003:20)
    at MarkerLayer.module.exports.MarkerLayer.markRange (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/text-buffer/lib/marker-layer.js:204:46)
    at TextEditorMarkerLayer.module.exports.TextEditorMarkerLayer.markBufferRange (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/src/text-editor-marker-layer.js:78:52)
    at DisplayBuffer.module.exports.DisplayBuffer.markBufferRange (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/src/display-buffer.js:1100:38)
    at TextEditor.module.exports.TextEditor.markBufferRange (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/src/text-editor.js:1339:59)
    at /Users/dimonn/.atom/packages/linter/lib/editor-linter.js:50:34
    at Function.module.exports.Emitter.simpleDispatch (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:125:28)
    at EditorLinter.addMessage (/Users/dimonn/.atom/packages/linter/lib/editor-linter.js:137:20)
    at /Users/dimonn/.atom/packages/linter/lib/linter-views.js:104:22
    at Array.forEach (native)
    at LinterViews.notifyEditorLinters (/Users/dimonn/.atom/packages/linter/lib/linter-views.js:102:11)
    at LinterViews.render (/Users/dimonn/.atom/packages/linter/lib/linter-views.js:59:10)
    at /Users/dimonn/.atom/packages/linter/lib/linter.coffee:39:14
    at Function.module.exports.Emitter.simpleDispatch (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:25:14)
    at Emitter.module.exports.Emitter.emit (/opt/homebrew-cask/Caskroom/atom/1.2.4/Atom.app/Contents/Resources/app.asar/node_modules/event-kit/lib/emitter.js:125:28)
    at MessageRegistry.updatePublic (/Users/dimonn/.atom/packages/linter/lib/message-registry.js:84:18)
    at UpdateMessages (/Users/dimonn/.atom/packages/linter/lib/message-registry.js:24:16)

Commands
     -0:07.2.0 emmet:insert-formatted-line-break-only (atom-text-editor.editor.is-focused)
     -0:07.1.0 editor:newline (atom-text-editor.editor.is-focused)

Config
{
  "core": {
    "destroyEmptyPanes": false,
    "disabledPackages": [
      "about",
      "archive-view",
      "autoflow",
      "background-tips",
      "bookmarks",
      "deprecation-cop",
      "dev-live-reload",
      "go-to-line",
      "metrics",
      "styleguide",
      "welcome",
      "package-generator",
      "symbols-view"
    ],
    "themes": [
      "atom-material-ui",
      "atom-material-syntax"
    ]
  },
  "linter": {
    "gutterPosition": "Left"
  }
}

Installed Packages
# User
atom-alignment, v0.12.1
atom-material-syntax, v0.2.10
atom-material-ui, v0.8.0
autocomplete-paths, v1.0.2
color-picker, v2.0.14
emmet, v2.3.18
file-icons, v1.6.14
highlight-selected, v0.11.1
language-ejs, v0.2.0
language-jade, v0.6.2
linter, v1.11.3
linter-jshint, v1.2.2
pigments, v0.20.0
symbols-tree-view, v0.11.0
terminal-plus, v0.14.5

# Dev
No dev packages

@aubrian-halili-ags @rshackleton-netc @dimonnwc3
Without a file that triggers this we can't debug what is going on, do any of you have some code that triggers this that you can share? Or steps to reproduce this?

Unfortunately it happened for me when I opened a comment (/*) and a function was commented out before I closed it. I tried following the same steps but the error didn't appear again.

I ran into this today. Here is an example that makes it happen for my setup.
Given this file:
var item = { item1: 'item1', _item2: 'item2' },
    value = item['_item2'];

Edit it so that you remove the [' to get item_item2. This causes the Invalid Point issue every time for me.

@mmoulton, @aubrian-halili-ags, @rshackleton-netc, @dimonnwc3: I'm pretty sure this is due to the esprima bug that has been cropping up all over the place lately, probably due to us actually warning about it instead of silently ignoring the invalid input.
I would recommend using a JS linter that allows specifying an alternative parser such as linter-eslint or linter-jscs.
jshint in particular seems to blow up rather badly on this bug, exploding the single issue into 3 different ones (one of which triggers this bug), while the other linters (when using esprima) simply have a single bug with an incorrect column. You can verify that this is an issue with the linter itself by running it from a terminal and checking the output for column's past the end of the line.
I'm marking this as closed since this is almost certainly an issue with the linter program itself. Feel free to keep posting here though if you have further questions.

Another bug that is triggered on this_kinda_case in jshint https://github.com/jshint/jshint/pull/2846


greetings

Describe your changes
I have added a workflow which greets contributors when they open a PR or a Issue
Screenshots - If Any (Optional)

Issue ticket number and link
Checklist before requesting a review

[x] My code follows the style guidelines of this project
[ ] I have commented my code, particularly in hard-to-understand areas
[x] I have performed a self-review of my code
[ ] If it is a core feature, I have added thorough tests.
[ ] New and existing unit tests pass locally with my changes

Please open the PR against the dev branch (Unless the PR contains only documentation changes)

Hi, Can you pls add screenshots of the proposed changes

@dwertent , will this work?

Thanks 👍🏻


use py-template for CI

Update ci

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@889a3ce). Click here to learn what that means.
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #67   +/-   ##
=======================================
  Coverage        ?   93.37%
=======================================
  Files           ?        8
  Lines           ?     1087
  Branches        ?       96
=======================================
  Hits            ?     1015
  Misses          ?       44
  Partials        ?       28

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Intent to implement: Vue SFC integration

Current State: Research
This ticket will guide the discussion of implementing css-blocks in Vue Single File Components.
Motivation
Vue provides a rich interface for creating single file components. In the ecosystem, vue-loader provides both an implementation of scoped styles and easy hooks into css-modules. Scoped styles work well until they don't. Css-modules relies on a lot of dynamic class bindings and has its own set of issues making it a non-optimal solution. I think css-blocks has an opportunity to shine.
Scope

The implementation will only cover SFC style blocks
The implementation will work with vue-loader 15+

Notes

vue-template-compiler's compile method returns an ast for the template. Hopefully that'll ease the block parsing phase.
Vue's templates have the ability to use preprocessors. That means if we integrate with vue-loader we'll need to being the css-blocks processing after the preprocessor transforms, but before vue-loader compiles the template. I think one option would be to make a wrapper around vue-template-compiler and tell vue-loader to use that compiler instead.
A personal desire of mine is to have this functionality by default on all style tags in SFCs. No scoped attributes needed. I'm uncertain if we should provide an escape hatch to have css-blocks not parse certain style tags.

@chriseppstein I'm sure I'll have a lot of questions. Once we can work through the basic approach I'll create a POC PR.

I'd definitely like this to be part of the monorepo, so it can be more easily maintained as things evolve.
I don't know much about Vue's SFC format, so I have some questions about how it works and what expectations developer have based on what I read in the documentation.

It looks like the goal of the
<template>

    <Dropdown :open="false">
      I close the dropdown
    </Dropdown>

   // this can be statically analyzed because the use of styles in the component can transferred
   // onto the inheriting block of styles. The style swapping is done by passing a simple id
   //  into the component that lets the component switch between all the possible blocks
   // that can replace the component's default block.
  <Dropdown :style="FancyDropDown">
    I close the dropdown
  </Dropdown>

</template>

/deep/ only applies to scoped components. That wouldn't be a consideration in our case because we wouldn't be utilizing the scoping mechanism.
My thoughts were
<template>

Blah blah blah

blah

    <child-component class="child"/>

</template>

I do have major questions about state selectors. We could specify a special state prop and require that to explicitly list the possible states.

Hello, I'm also interested in using css-blocks with Vue! There are a couple of notes related to current state notes:

A personal desire of mine is to have this functionality by default

I believe this could be a stop sign for existing Vue projects to start using css-blocks.
Also plain styles are useful at some point. Mixing them with scoped ones also a well-known practice. That's why limiting style tags to one per file may be not a good choice.
Can't we just introduce a new keyword for style tags like scoped and module?
E.g.
<template></template>

Anyway, for SFCs compilation there is a set of utils: https://github.com/vuejs/component-compiler-utils may be useful!

In case it is possible to get template AST we could introduce a new directive to handle state related logic:
<template>
  <button v-state:inverse="inverse" v-state:size="size">...</button>
</template>

Directive could be removed from the AST and proper code to handle classes added.

I believe this could be a stop sign for existing Vue projects to start using css-blocks.

Also plain styles are useful at some point. Mixing them with scoped ones also a well-known practice. That's why limiting style tags to one per file may be not a good choice.

The static analysis requirement of css-blocks, coupled with the way that opticss takes liberties with selector specificity and order, means that mixing styles from css-blocks with other styles on the same element is unpredictable. it could work right now and later, the optimizer might change or the styles of the app might change such that it triggers an optimization that it didn't used to and then the element's style is broken.
Mixing styles in the same component is doable, but we'd have to make sure the syntax is unambiguous about which styles are being referenced.
Mixing css-blocks with other styling systems at component boundaries is an expected use case, but css-blocks styles cannot be "passed" to a non-css-blocks component (lest they mix them).
But this isn't as big of a deal as it sounds, Scoped styles are different from css-blocks, and I think @zephraph has it right by not wanting them to be called "scoped". Styles from CSS Blocks are globally addressable and guaranteed to be globally unique within an application. To accomplish this, the styles must be addressed in a way that is unambiguous. So I would not assume that the use cases that applied to scoped styles will automatically apply to css-blocks.

Can't we just introduce a new (block) keyword for style tags like scoped and module?

It seems good to me. I think there needs to be an unambiguous way of saying "these styles are block styles", we use a filename convention of *.block.css for that, but there's no filename in the SFC context.

And require only one style with block keyword for the component?

This limitation isn't an obvious requirement to me. I think there can be only one "default" block, but I think we could allow several blocks to be created in the SFC, with one block per


Dead links in the readme

There are a few links leading to nowhere in the readme:
Helia

Docs

FAQ

Thanks for reporting this. Addressed in #1100


Backoff retry

Fixes #562 .
Notes:

Made max number of clients reached a retryable error
Backoff Max Time is configurable via config options

Please let me know if I need to adjust anything to make this PR mergable... Thanks!

There is no point in retrying ErrPoolTimeout. If you are willing to wait more for a connection then you can just increase PoolTimeout * number of retries.

Overall looks fine, but please fix the build

I will finish this after merging. Thanks for contributing this!

Also, I noticed that err = readReply(cn) (https://github.com/go-redis/redis/pull/570/files#diff-bbc64daf788a83d9a6daf7056d49d2a8R124) is missing a corresponding cmd.setErr(err). Is that necessary to run that function when readReply returns error?

It is confusing and requires cleanup, but readReply is reponsible to set cmd.value and cmd.err.


Update Enum.values/2 spec

fixes https://github.com/elixir-ecto/ecto/issues/4484

Thanks for this fix.
Now Dialyzer is passing for us too.


added timezone column in Events table

Coverage increased (+0.005%) to 81.033% when pulling 43e2200f6ddcfa45eea326f4563540ffac87c4ed on timezone into fc82806717b83d51d95b5e2199a8dc93f8a8ead8 on master.


Update to Airbase 98

This failed on
Failed to execute goal on project presto-kafka: Could not resolve dependencies for project io.prestosql:presto-kafka:presto-plugin:331-SNAPSHOT: Failed to collect dependencies at org.apache.kafka:kafka_2.12:jar:1.1.1: Failed to read artifact descriptor for org.apache.kafka:kafka_2.12:jar:1.1.1: Could not transfer artifact org.apache.kafka:kafka_2.12:pom:1.1.1 from/to central (https://repo.maven.apache.org/maven2): Connection timed out

Done in #3137


fix: Fetch form dialog templates behind the flag

Description
Puts fetching form dialog templates behind the flag
Task Item
closes #4386

@hatpick our CI is having some issues at the moment. Can you run the CI pipeline tasks locally? If they pass I will go ahead and merge this.
yarn && yarn build:dev && yarn test:coverage


Make the generator escape description strings

Rppc doesn't escape single quotes in the description field which causes all kinds of problems in the generated setup.py. You probably want to do a bit more escaping than just for quotes as well -- it's just a description string and you want to be sure it stays that.

Just glanced at the code -- solving this should probably involve escaping / validating all the input values, not just description.

Hahah no worries! Figured you wouldn't want to forget about it!


to improve insertion perfomance

Hi,
Thanks for your great Clickhouse, it really helps us a lot. Recently ,we are trying to use Clickhosue timeseries database, and we are now stuck in insertion performance. We have 64c/300g/nvme server, but we kept encountering "merge is slower than insert".
I wonder if we could write data directly into memory on insertion , merge data in memory in background and finally write merged data to disk.

It could be much slow if we merge on disk.

Did you check https://clickhouse.yandex/docs/en/operations/table_engines/buffer/ it seem the pretty same.

Yes, I did check memory/buffer part before I post this issue. But I wonder if buffer engine works as I expect: merging in memory and writing merged block to disk.

Each separate insert to MergeTree  creates one part stored as a separate directory on filesystem.
So the only acceptable way of inserts to MergeTree is bulk inserts.
Buffer engine definitely works in memory and allows to form a bigger parts, combining multiple smaller inserts into one bigger.
Merges will be executed (and should be executed) on disk afterwards. But most probably (if you have enough memory) it will happen in memory because of OS file caching.
So for example if you do 10K one-row inserts to MergeTree it will create 10K folders and clickhouse will try to merge that selecting few parts at once it will work slow because it will now use advantages of bulk (SIMD) processing and because of lot of filesystem operations.
If you insert 100K row in one bulk insert they will form one big bulk, and one directory on filesystem, so it is already merged (but still it will be merges with other bigger parts from the same partition). Buffer allows you to form one insert to MergeTree  from lot of inserts to Buffer table. So it allows to avoid lot of merges if you insert data in single rows.

In-memory data parts are implemented in #10697 but they are experimental and not enabled by default.


serviceRouter.post() code is missing next(), which prevents error middleware to kick in when error occurs

In the connect application template for service and event type of applications, I noticed the code is not calling the next method from express framework, which prevents error middleware from handling errors.
Currently:
serviceRouter.post('/', async (req, res) => {
  logger.info('Cart update extension executed');

  res.status(200).send();
});

Suggestion:
serviceRouter.post('/', async (req, res, next) => {
  logger.info('Cart update extension executed');

  try {
    const { action, resource } = req.body;
    res.status(200).send();
  } catch (error) {
    next(error); // Pass the error to the error handling middleware
  }
});

### Tasks

This issue is being addressed in #83


Generate api from probuf

Codecov Report
Attention: 5 lines in your changes are missing coverage. Please review.

Comparison is base (2e85215) 48.11% compared to head (452ef37) 49.55%.

Files
Patch %
Lines

internal/handler/web.go
0.00%
3 Missing :warning:

internal/handler/api.go
86.66%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #124      +/-   ##
==========================================
+ Coverage   48.11%   49.55%   +1.43%
==========================================
  Files           4        4
  Lines         345      335      -10
==========================================
  Hits          166      166
+ Misses        161      153       -8
+ Partials       18       16       -2

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Update the URL and read the API key from the env

It seems that the API has changed and now it's necessary to append the API key in the HTTP request for the package to work.

Thanks! It's too bad that they now require an API key. Most of the free exchange rate services do.
The European Central Bank provides rates without a key, but the format is XML. Would it be good enough to use that?

Actually, I wanted to make a minimal change for the package - I had a certain need and I found that this package works perfectly for me and hopefully for others.
Also, it seems that the ECB XML doesn't have the same variety of currencies.

OK, let's add support for multiple backends. I'll add a customizable user option, currency-convert-exchangeratesapi-key.

I just pushed code to the master branch to add the user option. M-x customize-group currency-convert. Can you check that it works. The new code should be in MELPA in about an hour.
I'll make an issue about adding the ECB XML parsing later.

Yup, I can confirm that this works.
The only question I have is whether I should now add the getenv based value for the API key into currency-convert-exchangeratesapi-key or does should I allocate the key to the variable within my config file?

Btw, closing the PR as this is now resolved - thanks Lassi! 🎉

Yup, I can confirm that this works.

Good to hear!

The only question I have is whether I should now add the getenv based value for the API key into currency-convert-exchangeratesapi-key or does should I allocate the key to the variable within my config file?

The environment variable is not necessary - you can paste the key straight into the field in the M-x customize UI. If you want to use the env var anyway, e.g. to share the key with other programs, the easiest way to do it is probably (setq currency-convert-exchangeratesapi-key (getenv "EXCHANGERATEIO_API_KEY")) in your Emacs init file.

Since I'm using the doom-emacs distro the M-x customize is not the ideal option, plus as you said I'd like to keep these tokens in a centralized location therefore Env Variables is what works for me.
Thanks again for this package, this is helpful for sure!


LetsEncrypt support for sandboxes

This is a followup issue to the Allow usage of own certificate per project + HTTP-->HTTPS redirect PR.
Once LetsEncrypt adds wildcard cert support, we'll want to explore the option to integrate that into the CI sandboxes workflow. Using wildcard certs should help with the rate limits LE has.
docksal/vhost-proxy is "heavily inspired" by https://github.com/jwilder/nginx-proxy, which has LE integration available via a companion container.
Note: LE won't work for local domains (e.g. *.docksal).

Setting DOCKSAL_DNS_DOMAIN= in .docksal/docksal.env one can setup a real internet domain to use with Docksal. One must of course make sure that DNS, (dynamic, internet, router, local, etc.) is setup correctly to resolve the internet domain.
Since the ability to set a real internet domain name to use with Docksal has already been added, this should be taken into account when LetEncrypt support is added.

LetsEncrypt released wildcard cert support a few days ago!
https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579

I've got a POC with automatic LetsEncrypt cert generation working using GUI/lua-resty-auto-ssl (on a sandbox server, where LE can verify the domain ownership).
Here's a good article on this approach:
How We Generate SSL Certificates for Custom Domains using Let’s Encrypt

@lmakarov have you been able to commit this into a branch somewhere or is the POC available to check? I am having a similar issue where I need LE for a project using sandboxes.

@sean-e-dietrich  I see a branch feature/certs here on github on this repo. It has three commits ahead of the develop branch. The last commit was on June 19, so it may or may not have all @lmakarov final work from his POC.

@lmakarov ping on this, just curious where this stands? I'm trying to get automatic LetsEncrypt cert generation working right now and just found this issue.

@lpeabody this is on hold. There may be a larger overhaul of the vhost-proxy service coming in the next few months, which will replace nginx/openresty altogether.
Internally (at FFW) we use certbot to generate a wildcard cert for our sandbox server domain every 3 months. The cert is installed (copied over manually) and picked up by vhost-proxy. The docs for this are in this repo's README. There's also an issue in the main project to cover this used case better on docs.docksa.io.
While that is not a fully automated approach, it does not present a lot of overhead and works just fine for us.

Thanks for feedback @lmakarov. Mind if I ask what domain validation method you are using? DNS record or file?
We currently have Certbot generating the wildcard cert, copying that into ~/.docksal/certs and setting DOCKSAL_VHOST_PROXY_DEFAULT_CERT="ci.docksalsandbox.com", and run fin system reset vhost-proxy and that is working very well.
However, to fully automate the process we need to automate the domain validation portion of it as well. As state above, we don't have a mechanism for automating the DNS method, but we can do it using the file method. We'd have to serve that file somewhere in a path off of ci.docksalsandbox.com, which means vhost-proxy would have to serve that file.
I won't push the issue since the openresty implementation of vhost-proxy is being phased out, but I'm just wondering if you have any insight into how you would go about modifying vhost-proxy to serve that single file if requested directly on the ci.docksalsandbox.com domain?

Wildcard certs can only be validated using the DNS method, so that's what we are using. It's a manual process for us as well. While it could be automated in our case (AWS Route 53), the overhead has not been large enough to pursuit this.
The HTTP challenge (file) method can only be used for individual domains. This is what GUI/lua-resty-auto-ssl plugin does (used on the POC). I don't know if this can be easily done using just certbot and pure nginx config.

Awesome, that helps simplify some things for us. Thank you very much for the insight!

@lpeabody if your DNS registrar has an API the chances are good that the automate tools that are out there to renew Let's Encrypt wildcard certificates will work for you. I have seen several of these recently but can't remember their names. Let me know if you need help tracking them down.

Automated LE support was implemented in docksal/sandbox-server a while ago. That integration assumes that all projects on the server use the same base wildcard domain. I believe this covers the original scope of this issue.
Supporting LE with custom domains falls more into the production hosting category, which is a different use case. While vhost-proxy can be used there, it has not been designed for that use case.
Traefik is something that can be used in prod. If interested, take a look at the "Docksal in production" POC I put together a while ago: https://github.com/lmakarov/docksal-prod-poc


Additional small tests on TopAnat page

In GitLab by @marcrr on Jan 10, 2019, 16:19
We could test and report whether the gene list is more or less

tissue-specific
sex biased
highly expressed
etc

than the background. Simple and informative.

In GitLab by @fbastian on Jan 10, 2019, 17:57
I'm not sure to see how it is simple. For tissue-specificity and level of expression for instance, you're thinking of a t test on tau/rank values?

In GitLab by @marcrr on Jan 11, 2019, 09:30
Simple in its implementation (pipeline, web interface) I think, once we've decided on the tests.

In GitLab by @marcrr on Jun 20, 2019, 08:59
moved to Roadmap suggestions


General error: 1366 Incorrect integer value: 'anon.' for column 'user_created_id' at row 1

As in subject. User must be logged in prior to create a ticket..
Error occurred in the demo app.

I'll have a look at this tonight.
I never expected an anon user to post a ticket, but there is no be a reason they shouldn't.

I have partially fixed this in 1.1.0
Ticket is now created, but when redirected to ticket, throws a permission denied.
This is because there is no user to validate against.

Was this a desired use case?


Implement Staged Tile Loading Pipeline

When loading tiles, implement a new staged pipeline where network requests are dispatched separately from processing work.
This achieves a 15-25% loading time reduction in some test cases.
The new "pipelined" code structure also helps enable future work like:

More "throttled group" enhancements (decoding, decompression, etc)
Load cancellation logic #564

Closes #473 and #746.
In depth
Simplified view of existing tile loads

This PR introduces this structure

The best place to start looking at the code changes would be in Tileset:: _processWorkerThreadLoadQueue.
Previous load requests were handled immediately, but now they are now passed to TilesetContentManager, which transforms the requests into new data that TileWorkManager can work with, a generalized TileLoadWork. TileWorkManager handles the critical logic to queue / throttle / and execute TileLoadWork objects.
Performance Tests Summary (Cesium for Unreal Performance Tests)
SampleLocaleDenver (cold cache) - 16% load time slow down
SampleLocaleDenver (warm cache) -22% load time slow down
SampleLocaleMelbourne (cold cache) - about the same
SampleLocaleMelbourne (warm cache) - about the same
GoogleTiles.LocaleDeathValley (cold cache) - 25% load time improvement
GoogleTiles.LocaleDeathValley (warm cache) - 44% load time slow down
GoogleTiles.LocaleChrysler (cold cache) - 17% load time improvement
GoogleTiles.LocaleChrysler (warm cache) - 48% load time slow down

Complete Testing Data
cesium-native main
--------------------------------------------------------------------------
SampleLocaleDenver (27 MB)
	Cold cache - 2.09, 2.13, 2.20 | 3.22, 2.70, 4.18, 3.06 - 2.14 avg (best 3)
	Warm cache - 0.71, 0.77, 0.80 | 0.82, 0.82, 0.82, 0.87 - 0.76 avg (best 3)
SampleLocaleMelbourne (89 MB)
	Cold cache - 4.23, 4.28, 4.36 | 4.58, 4.55, 4.36, 4.40 - 4.29 avg (best 3)
	Warm cache - 1.74, 1.74, 1.75 | 2.40, 1.89, 1.92, 2.00 - 1.74 avg (best 3)
GoogleTiles.LocaleDeathValley (33 MB)
	Cold cache - 4.34, 4.53, 4.54 | 5.38, 5.10, 5.72, 5.85, 5.06, 5.65, 5.18 - 4.47 avg (best 3)
	Warm cache - 1.48, 1.46 - 1.47 avg (request limit hit)
GoogleTiles.LocaleChrysler (62 MB)
	Cold cache - 6.47, 6.51, 6.54 | 6.77, 6.46, 7.10, 8.22, 6.59, 6.68, 6.56 - 6.50 avg (best 3)
	Warm cache - 2.22, 2.23, 2.23 | 2.26, 2.25, 2.29 - 2.22 avg (best 3)

this PR
--------------------------------------------------------------------------
SampleLocaleDenver (27 MB)
	Cold cache - 2.41, 2.53, 2.54 | 2.62, 3.54, 2.64, 2.56 - 2.49 avg (best 3)
	Warm cache - 0.92, 0.94, 0.97 | 1.01, 0.99, 0.99, 1.05 - 0.93 avg (best 3)
SampleLocaleMelbourne (89 MB)
	Cold cache - 4.22, 4.30, 4.38 | 7.38, 5.20, 4.42, 5.49 - 4.3 avg (best 3)
	Warm cache - 1.32, 1.90, 1.92 | 2.31, 1.98, 2.10, 2.21 - 1.71 avg (best 3)
GoogleTiles.LocaleDeathValley (33 MB)
	Cold cache - 3.22, 3.26, 3.61 | 4.24, 4.16, 4.83, 3.93, 3.68, 3.73, 4.57 - 3.36 avg (best 3)
	Warm cache - 2.12, 2.13, 2.15 | 4.63, 2.19, 2.16 - 2.13 avg (best 3)
GoogleTiles.LocaleChrysler (62 MB)
	Cold cache - 5.33, 5.45, 5.47 | 6.68, 7.32, 7.64, 6.68, 8.09, 7.45, 6.63 - 5.41 avg (best 3)
	Warm cache - 3.22, 3.30, 3.34 | 3.35, 6.18, 3.36 - 3.28 avg (best 3)

TO DO

[x] Fix TileLoadWork parent / child queuing problem
[x] Solve shutdown problems (Ex. performance test timing out)
[x] Look for any C++ modernization opportunities
[x] Fixup all unit tests
[x] Self review, remove any unnecessary changes
[x] Merge with latest
[x] Fixup last failing unit test (TestSubtreeAvailability)
[X] Self review,  resolve any remaining TODOs
[x] Test tilesets in Unreal samples
[x] Test tilesets in Unity samples
[ ] Run all performance tests (Unreal). Post results here
[ ] Investigate Google P3DT warm cache slowdown
[ ] Peer review / approval
[ ] Test ion token becoming invalid mid session
[ ] Test level sequences (Unreal movie render queue)
[ ] Merge

All major restructuring is done and have posted (in the PR description) the latest Google P3DT performance numbers using Cesium for Unreal performance tests.
A snippet...
 Oddly enough, looks like we're still seeing roughly the same improvements as originally guessed back in November, when the original issue was written, 17%-25% improvements for Google P3DT scenes in Unreal. And we're doing that without increasing the max simultaneous loads (still 20).
Unfortunately, the warm cache numbers got worse. The reason is not obvious, but there may be something we can do to make this better. Will add a check box to the TO DOs.

This is a total guess, but one thing to watch out for is that the warm cache case is especially suceptible to slowdowns caused by waiting to run tasks. For example, a simple thenInMainThread somewhere in the load processing can cause a delay of 16ms (at 60FPS) before that part of the task can run, which is quite a long time with a warm cache.

Finished performance testing and updated the missing numbers.
A snippet
SampleLocaleDenver (cold cache) - 16% load time slow down
SampleLocaleDenver (warm cache) -22% load time slow down
SampleLocaleMelbourne (cold cache) - about the same
SampleLocaleMelbourne (warm cache) - about the same

A little odd that Denver slowed down a bit. It is our smallest test, and already pretty fast. First guess is that this PR is indeed batching content requests better as shown for the google levels. But for cached (or very fast) content requests, it may be introducing delay (or more overhead) for processing. Like @kring said, this could be an errant thenInMainThread, or something similar that is fixable.
I think this is ready for review and to talk a bit more about performance numbers.
Making this a non-draft PR...

I think I have a solid lead for the slowdown in the Google warm cache case...
If I turn off the time budget in Tileset::_processMainThreadLoadQueue, the loading times in Google Chrysler (warm) between main and this PR become almost the same (within .1s).
This function is throttling the final stage of tile loading based on a time budget, to keep a reasonable frame rate.
In the context of this PR, we can think of it as the final 'stage' in our staged loading pipeline. And taking into account what this PR is doing, it seems likely that it's pushing the same amount of work through this stage, but with bigger batches of work, later in time, ultimately leading to longer load times.
Will think on this a bit more...

Found the slowdown in the Google warm cache case! (finally).
TLDR, the reference branch (based on main) I'm comparing to had a bug where it completed too early.  Fixing the bug and doing a quick retest showed me that this PR doesn't seem to introduce any weird slow downs in this case anymore. Will retest to verify.
I've fixed it in my branch here, but it could optionally be its own PR as well, since it's a bug in main too.
More in depth, the problem is in ::computeLoadProgress and is reporting 100% done before we are actually done. It uses this code to determine if there's any work in the any of our loading queues...
int32_t queueSizeSum = static_cast<int32_t>(       this->_workerThreadLoadQueue.size() + this->_mainThreadLoadQueue.size());
Unfortunately, _mainThreadLoadQueue gets cleared every frame, so this is always 0, and any progress that is computed is ignoring any main thread loading that happened, or was ever queued.
This behavior coincides with what I saw in the original tests. Inexplicably fast performance compared to my PR, where I had inadvertently fixed this bug through refactoring. It also coincides with my observation of equal performance when turning off time budget. Doing this clears the main thread queue every frame, which essentially makes it always 0 when ::computeLoadProgress is called.

Another update to the performance test numbers...
Good news: the performance wins from this PR went up! (now 25-32% improvements for the google tests)
Mediocre news: although the inexplicable "warm cache is really slow" problem is gone, warm cache results are still slightly slower in this PR (9-21% slower). Denver cold cache falls into this category too. I have a pretty good reason to believe that the problem is here, which coincides with @kring 's recommendation to look out for main thread continuations.
The fix would be to dispatch processing work immediately, rather than waiting to dispatch on the main thread. Not a trivial change, but not an unreasonable amount of work either.
A snippet
SampleLocaleDenver (cold cache) - 21% slow down
SampleLocaleDenver (warm cache) -15% slow down
SampleLocaleMelbourne (cold cache) - 5% improvement
SampleLocaleMelbourne (warm cache) - about the same
GoogleTiles.LocaleDeathValley (cold cache) - 32% improvement
GoogleTiles.LocaleDeathValley (warm cache) - 15% slow down
GoogleTiles.LocaleChrysler (cold cache) - 25% improvement
GoogleTiles.LocaleChrysler (warm cache) - 9% slow down

I'm seeing frequent crashes just by press Play and flying around in the 01_CesiumWorld level.
Here's one example:
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!CesiumUtility::ReferenceCounted<CesiumRasterOverlays::RasterOverlayTileProvider,0>::addReference() Line 68	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!CesiumUtility::IntrusivePointer<CesiumRasterOverlays::RasterOverlayTileProvider>::addReference() Line 187	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!CesiumUtility::IntrusivePointer<CesiumRasterOverlays::RasterOverlayTileProvider>::IntrusivePointer<CesiumRasterOverlays::RasterOverlayTileProvider>(CesiumRasterOverlays::RasterOverlayTileProvider * p) Line 24	C++
>	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TilesetContentManager::dispatchRasterWork(Cesium3DTilesSelection::RasterProcessingData & processingData, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & responseDataMap, Cesium3DTilesSelection::TileWorkManager::Work * work) Line 1802	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TilesetContentManager::createWorkManager::__l2::<lambda>(Cesium3DTilesSelection::RasterProcessingData & processingData, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & responseDataMap, Cesium3DTilesSelection::TileWorkManager::Work * work) Line 913	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::invoke<void <lambda>(Cesium3DTilesSelection::RasterProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) &,Cesium3DTilesSelection::RasterProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>(Cesium3DTilesSelection::TilesetContentManager::createWorkManager::__l2::void <lambda>(Cesium3DTilesSelection::RasterProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) & _Obj, Cesium3DTilesSelection::RasterProcessingData & _Arg1, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Args2_0>, Cesium3DTilesSelection::TileWorkManager::Work * && <_Args2_1>) Line 1587	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::_Invoker_ret<void>::_Call<void <lambda>(Cesium3DTilesSelection::RasterProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) &,Cesium3DTilesSelection::RasterProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>(Cesium3DTilesSelection::TilesetContentManager::createWorkManager::__l2::void <lambda>(Cesium3DTilesSelection::RasterProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) & _Func, Cesium3DTilesSelection::RasterProcessingData & <_Vals_0>, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Vals_1>, Cesium3DTilesSelection::TileWorkManager::Work * && <_Vals_2>) Line 674	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::_Func_impl_no_alloc<void <lambda>(Cesium3DTilesSelection::RasterProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *),void,Cesium3DTilesSelection::RasterProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>::_Do_call(Cesium3DTilesSelection::RasterProcessingData & <_Args_0>, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Args_1>, Cesium3DTilesSelection::TileWorkManager::Work * && <_Args_2>) Line 834	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::_Func_class<void,Cesium3DTilesSelection::RasterProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>::operator()(Cesium3DTilesSelection::RasterProcessingData & <_Args_0>, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Args_1>, Cesium3DTilesSelection::TileWorkManager::Work * <_Args_2>) Line 875	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TileWorkManager::transitionProcessing(std::shared_ptr<Cesium3DTilesSelection::TileWorkManager> & thiz) Line 558	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TileWorkManager::transitionRequests::__l23::<lambda>() Line 476	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!async::detail::invoke_fake_void<void <lambda>(void),void>(Cesium3DTilesSelection::TileWorkManager::transitionRequests::__l23::void <lambda>(void) && f) Line 103	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!async::detail::invoke_fake_void<void <lambda>(void)>(Cesium3DTilesSelection::TileWorkManager::transitionRequests::__l23::void <lambda>(void) && f, async::detail::fake_void __formal) Line 113	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!async::detail::continuation_exec_func<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::QueuedScheduler>,async::task<void>,async::detail::fake_void,void <lambda>(void),std::integral_constant<bool,1>,0>::operator()(async::detail::task_base * t) Line 550	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!async::detail::task_func<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::QueuedScheduler>,async::detail::continuation_exec_func<CesiumAsync::CesiumImpl::ImmediateScheduler<CesiumAsync::CesiumImpl::QueuedScheduler>,async::task<void>,async::detail::fake_void,void <lambda>(void),std::integral_constant<bool,1>,0>,async::detail::fake_void>::run(async::detail::task_base * t) Line 398	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!async::task_run_handle::run() Line 134	C++

The immediate problem here appears to be that in TilesetContentManager::dispatchRasterWork, pRasterTile->getLoadingTile() is returning an invalid pointer.

Here's another example:
>	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::_Func_class<CesiumAsync::Future<Cesium3DTilesSelection::TileLoadResult>,Cesium3DTilesSelection::TileLoadInput const &,Cesium3DTilesSelection::TilesetContentLoader *>::operator()(const Cesium3DTilesSelection::TileLoadInput & <_Args_0>, Cesium3DTilesSelection::TilesetContentLoader * <_Args_1>) Line 873	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TilesetContentManager::dispatchTileWork(Cesium3DTilesSelection::TileProcessingData & processingData, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & responseDataMap, Cesium3DTilesSelection::TileWorkManager::Work * work) Line 1692	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TilesetContentManager::createWorkManager::__l2::<lambda>(Cesium3DTilesSelection::TileProcessingData & processingData, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & responseDataMap, Cesium3DTilesSelection::TileWorkManager::Work * work) Line 905	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::invoke<void <lambda>(Cesium3DTilesSelection::TileProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) &,Cesium3DTilesSelection::TileProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>(Cesium3DTilesSelection::TilesetContentManager::createWorkManager::__l2::void <lambda>(Cesium3DTilesSelection::TileProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) & _Obj, Cesium3DTilesSelection::TileProcessingData & _Arg1, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Args2_0>, Cesium3DTilesSelection::TileWorkManager::Work * && <_Args2_1>) Line 1587	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::_Invoker_ret<void>::_Call<void <lambda>(Cesium3DTilesSelection::TileProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) &,Cesium3DTilesSelection::TileProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>(Cesium3DTilesSelection::TilesetContentManager::createWorkManager::__l2::void <lambda>(Cesium3DTilesSelection::TileProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *) & _Func, Cesium3DTilesSelection::TileProcessingData & <_Vals_0>, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Vals_1>, Cesium3DTilesSelection::TileWorkManager::Work * && <_Vals_2>) Line 674	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::_Func_impl_no_alloc<void <lambda>(Cesium3DTilesSelection::TileProcessingData &, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> &, Cesium3DTilesSelection::TileWorkManager::Work *),void,Cesium3DTilesSelection::TileProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>::_Do_call(Cesium3DTilesSelection::TileProcessingData & <_Args_0>, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Args_1>, Cesium3DTilesSelection::TileWorkManager::Work * && <_Args_2>) Line 834	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!std::_Func_class<void,Cesium3DTilesSelection::TileProcessingData &,std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> const &,Cesium3DTilesSelection::TileWorkManager::Work *>::operator()(Cesium3DTilesSelection::TileProcessingData & <_Args_0>, const std::map<std::string,CesiumAsync::ResponseData,std::less<std::string>,std::allocator<std::pair<std::string const ,CesiumAsync::ResponseData>>> & <_Args_1>, Cesium3DTilesSelection::TileWorkManager::Work * <_Args_2>) Line 875	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TileWorkManager::transitionProcessing(std::shared_ptr<Cesium3DTilesSelection::TileWorkManager> & thiz) Line 554	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TileWorkManager::TryDispatchProcessing(std::shared_ptr<Cesium3DTilesSelection::TileWorkManager> & thiz) Line 249	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::TilesetContentManager::processLoadRequests(std::vector<Cesium3DTilesSelection::TileLoadRequest,std::allocator<Cesium3DTilesSelection::TileLoadRequest>> & requests, Cesium3DTilesSelection::TilesetOptions & options) Line 963	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::Tileset::_processWorkerThreadLoadQueue() Line 1454	C++
 	UnrealEditor-CesiumRuntime-Win64-DebugGame.dll!Cesium3DTilesSelection::Tileset::updateView(const std::vector<Cesium3DTilesSelection::ViewState,std::allocator<Cesium3DTilesSelection::ViewState>> & frustums, float deltaTime) Line 396	C++

Here we're in dispatchTileWork and the immediate problem is that loaderCallback is empty. The assert didn't trigger, though, probably because they're disabled in Unreal.

I'm seeing frequent crashes just by press Play and flying around in the 01_CesiumWorld level.

Those crashes look pretty severe and not obvious.
I can't seem to reproduce them though. I checked several of the sample levels in PIE mode and everything seems to run fine. Ran in these 4 configurations...

Desktop - Windows 10, Unreal 5.4.1, x64-Debug (DebugGame Editor)
Desktop - Windows 10, Unreal 5.4.1, x64-Release (Development Editor)
Laptop  - Windows 10, Unreal 5.1.1, x64-Debug (DebugGame Editor)
Laptop  - Windows 10, Unreal 5.1.1, x64-Release (Development Editor)

(this PR with cesium-unreal main)
Could there be something wrong with your set up?

Could there be something wrong with your set up?

I don't have any reason to think so @csciguy8. But I'll try main to make sure it doesn't happen there. They look like race conditions to me, and I was able to reproduce various crashes in both Debug Editor (with Debug build of cesium-native) and Development Editor (with RelWithDebInfo build of cesium-native).

I switched to main, flew around a whole bunch, and never saw a crash. Switched back to this branch and saw it within seconds. I can easily make it happen at will. I recorded a video, which I'll send to you separately.

I switched to main, flew around a whole bunch, and never saw a crash. Switched back to this branch and saw it within seconds. I can easily make it happen at will. I recorded a video, which I'll send to you separately.

@kring Ready for another look regarding those crashes.
Thanks for the test. Looks like I never tested in cases where tiles would get to the unloading state faster than they would load.

Any progress on this ?
I can't wait for these improvements to come !

This is on hold for the time being, due to other higher-priority work and because the performance we saw with this approach was a bit mixed (some things got notably faster, but others got slower).

Is there any other work being done for performance ?


Error: Error: Input required and not supplied: github_token

The following is the action config I use:
jobs:
  remove_label:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-ecosystem/action-remove-labels@v1
        if: ${{ startsWith(github.event.comment.body, '/done') }}
        with:
          labels: 'todo 🗒'
      - uses: actions-ecosystem/action-add-labels@v1
        if: ${{ startsWith(github.event.comment.body, '/done') }}
        with:
          labels: 'status: resolved ✅'

And it turns out the result:

where "remove" has error, but "add" works

hi @micnncim, when you have time can you look at this fix PR?


Migrate to freezed-like API

Currently, the API requires the user to write a lot of boilerplate code. This is because in the initial design of our API, we tried to follow Isar's API design. The problem is, instead of storing fields as they are, we store the fields inside wrapper classes. Requiring the user to write wrapper classes would be too much boilerplate every time.
After looking into it, I think that it would be best if we could adapt the code generator to be based on a freezed-like style.

#4 would be resolved upon the fixing of this issue.

As an initial implementation, we may have to narrow down the scope by quite a bit by rejecting some valid freezed APIs. Also since we are dealing with models and it is unclear yet how a model would be having an "algebraic" type, we would disallow the syntax for "freezed" unions as well. -- they may be a good way of dealing with migrations...
For now, we assume that in the freezed factory constructor, only named constructors are applied.

Todos:

[ ] #6
[ ] #7
[ ] #13
[ ] #12

I would say that #6 and #7 are not that relevant and may be sort-of separate to this freezed-migration thing. Hence, let's close this issue for now.


Cosmetic changes

With small changes like

simplified check in sbl_parse_header_patched to res < 0
use 3.68 as spoofed version
use _vshSblGetSystemSwVersion for real fw instead of hardcoding 3.60

What's the advantage of "_vshSblGetSystemSwVersion for real fw"?

@yifanlu I had this in h-encore such that the correct version is displayed for each FW 3.65, 3.67 and 3.68.

https://wiki.henkaku.xyz/vita/SceSysmem#sceSysrootSetSystemSwVersionForDriver
then sceSysrootSetSystemSwVersionForDriver
that is called by SceModulemgrForDriver:
ksceKernelGetSystemSwVersion: 0x5182E212
and exported to userland:           _vshSblGetSystemSwVersion: 0x0F529915

It gets the current vita firmware version regardless of spoofing. Been using it in VITAident for a while now.

yes it's better than displaying 3.60 anyway. Thanks TheFloW.


Class error is very high when using COCO pretrained model with Custom Datasets(VisDrone2019)

Hello, Firstly thanks for your brilliant work.
I want to train the TrackFormer in VisDrone2019, which contains objects of vehicles instead of Pedestrians.
Although the object is different, considering that Deformable DETR's pre-trained model (i.e. r50_deformable_detr-checkpoint.pth) should have been pre-trained on the COCO dataset, which contains vehicles. So I think it works.
In converting the VisDrone dataset into COCO format, I only kept the vehicle categories. However, after training two epochs based on r50_deformable_detr-checkpoint.pth model, it was found that class error was basically 100, and various losses did not improve significantly in the later training period. But other evaluation index(such as loss_bbox and loss_ce etc.) seems reasonable,.
During training, it acts like this:

And after two epoch, the average status is:

What is the possible reason for this? or Could you give me some advice?
Thank you very much.

@JackWoo0831 Hello there, how you did solve this problem ?

This has most certainly to do with the class index in the model or dataset. Please read the code carefully to adjust your dataset to it. For example, COCO has pedestrians on index 1 and we set this to index 0 in the repo.


Update dependencies for Angular v12

I would love to see updated dependencies for Angular v12 in lucide-angular package.
Thanks in advance

Thanks I will update them soon!

Fixed by #432


Fix link to cosConfigureHelper script.

Signed-off-by: Jintao Zhang<EMAIL_ADDRESS>Fixes:  #11818

/lgtm
/approve

Do we have a way to try deploy/netlify job again?
/retest

@tao12345666333 try a rebase of your branch onto master (fetch the head) and "git push -f". We are kinda trapped by netlify again.

@tengqm  Thanks. It works now. :+1:

/lgtm
/approve
Thanks for the patience.


DJV 2.0.8 - only 1st clip plays with audio

DO:

open 1st clip with audio
verify audio plays -> fine
open a second clip with audio

HAPPEN

second clip plays with no audio

SHOULD:

all clips should play with audio

NOTES:

1st clip still plays audio
even when 1st clip is closed 2nd clip still plays no audio
closing 2nd clip and re-opening 2nd clip finally gives audio for it
used to work in DJV 2.0.6

I checked in a fix for this and will include it with the next release. I had switched versions of the audio library I was using for 2.0.8, and went back to the previous one that 2.0.6 used.


[Feature Request] Button in basic options to swap out the miner used

This mod is great!  However it is a minor hassle to go into the blueprint to change the miner used by the planner.  I would like to see a button added to the basic options to allow the user to swap out the miner to any custom miner that shares the same footprint as the one in the blueprint.

Thanks for the idea, this is included in version 0.5.0. I've moved all the entity buttons to advanced settings (it was getting cluttered).


NimBLE::deinit crash when a characteristic have a descriptor

Only crash when I add a descriptor, as soon as descriptor is commented out, deinit works perfectly.
It crash with following error:
CORRUPT HEAP: Bad head at 0x3ffcee10. Expected 0xabba1234 got 0x3ffced8c

assert failed: multi_heap_free multi_heap_poisoning.c:253 (head != NULL)

Backtrace: 0x40083729:0x3ffc8be0 0x40092509:0x3ffc8c00 0x40098005:0x3ffc8c20 0x40097c77:0x3ffc8d50 0x40083ac9:0x3ffc8d70 0x40098035:0x3ffc8d90 0x400d3615:0x3ffc8db0 0x400d3fae:0x3ffc8dd0 0x400d3779:0x3ffc8df0 0x400d5e3c:0x3ffc8e10 0x400d4f79:0x3ffc8e30 0x400d462b:0x3ffc8e50 0x400d2a37:0x3ffc8e70 0x400eb8b1:0x3ffc8ed0

  #0  0x40083729:0x3ffc8be0 in panic_abort at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_system/panic.c:408
  #1  0x40092509:0x3ffc8c00 in esp_system_abort at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/esp_system/esp_system.c:137
  #2  0x40098005:0x3ffc8c20 in __assert_func at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/newlib/assert.c:85
  #3  0x40097c77:0x3ffc8d50 in multi_heap_free at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/heap/multi_heap_poisoning.c:253
      (inlined by) multi_heap_free at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/heap/multi_heap_poisoning.c:245
  #4  0x40083ac9:0x3ffc8d70 in heap_caps_free at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/heap/heap_caps.c:361
  #5  0x40098035:0x3ffc8d90 in free at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/newlib/heap.c:39
  #6  0x400d3615:0x3ffc8db0 in NimBLEAttValue::~NimBLEAttValue() at .pio/libdeps/esp32dev/NimBLE-Arduino/src/NimBLEAttValue.cpp:45
  #7  0x400d3fae:0x3ffc8dd0 in NimBLEDescriptor::~NimBLEDescriptor() at .pio/libdeps/esp32dev/NimBLE-Arduino/src/NimBLEDescriptor.cpp:98
  #8  0x400d3779:0x3ffc8df0 in NimBLECharacteristic::~NimBLECharacteristic() at .pio/libdeps/esp32dev/NimBLE-Arduino/src/NimBLECharacteristic.cpp:64 (discriminator 1)
  #9  0x400d5e3c:0x3ffc8e10 in NimBLEService::~NimBLEService() at .pio/libdeps/esp32dev/NimBLE-Arduino/src/NimBLEService.cpp:69 (discriminator 1)
  #10 0x400d4f79:0x3ffc8e30 in NimBLEServer::~NimBLEServer() at .pio/libdeps/esp32dev/NimBLE-Arduino/src/NimBLEServer.cpp:65 (discriminator 1)
  #11 0x400d462b:0x3ffc8e50 in NimBLEDevice::deinit(bool) at .pio/libdeps/esp32dev/NimBLE-Arduino/src/NimBLEDevice.cpp:948 (discriminator 1)
  #12 0x400d2a37:0x3ffc8e70 in loop() at src/main.cpp:65 (discriminator 10)
  #13 0x400eb8b1:0x3ffc8ed0 in loopTask(void*) at C:/Users/<user>/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50

Here's the sample code:
void loop()
{
    // log("free heap - loop: " + String(ESP.getFreeHeap()));

    // init / deinit - memory usage test
    delay(2000);
    NimBLEDevice::init("BLE_ESP32_1");

    pServer = NimBLEDevice::createServer();
    pServer->setCallbacks(new BleServerCallbacks(), true);

    // create BLE service
    pService = pServer->createService(NimBLEUUID(SERVICE_UUID));

    // create BLE characteristics
    pSetting1Characteristic = pService->createCharacteristic(
        SETTING1_UUID, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE, 50);

    pSetting1Characteristic->setValue<String>(settingOne.c_str());

    // add descriptors to rest of characteristics
    pDescriptorSettingOne = pSetting1Characteristic->createDescriptor("2901",NIMBLE_PROPERTY::READ, 50);
    pDescriptorSettingOne->setValue("Setting One");
    pSetting1Characteristic->addDescriptor(pDescriptorSettingOne);

    log("free heap - BLE init: " + String(ESP.getFreeHeap()));
    delay(2000);

    NimBLEDevice::deinit(true);
    delay(500);
    log("free heap - BLE deinit: " + String(ESP.getFreeHeap()));
}

Thanks, I believe this has been addressed in #706 which will be merged after some testing.

@chall3ng3r Just FYI, this has been addressed in the PR but I also wanted to let you know that the cause is in your code here:
    pDescriptorSettingOne = pSetting1Characteristic->createDescriptor("2901",NIMBLE_PROPERTY::READ, 50);
    pDescriptorSettingOne->setValue("Setting One");
    pSetting1Characteristic->addDescriptor(pDescriptorSettingOne); <<<<< crash cause, this adds the descriptor a second time to the internal vector, which will then try to delete it twice.

Thanks for pointing out my error. I didn't realize that I've been adding descriptors twice.  pSetting1Characteristic->createDescriptor() already created the descriptor, I only needed to set it value. I will fix this my code as well.


Suggest a new formatting function for COD10

I will take a look at this one! Looks doable!

For some reason the tests fail on my machine. Didn't have time to look into details, but for whatever reason, the TypeHelper.Format(Date,'yyyy-MM-dd',''); returns the previous day, instead of the current day. Will have to look into that. Other than that, everything looks good!

On NAV 2017, 10.0.14199 (on a remote computer) this does not compile, I am getting "The function call was ambiguous. No matching method was found.".  On my local computer on NAV 2017, 10.0.18197 this compiles.  Any idea why this fails ?  Operating system or NAV?

I had them do a Windows Update and now everything compiles.  Running on 2012R2 server.

Can you look at this thread ?
https://www.yammer.com/dynamicsnavdev/#/Threads/show?threadId=970623713

We are looking at the discussion you've mentioned. We will wait for a conclusion before going forward with this pull request.

I believe that discussion proves that the String.Format function is working perfectly so it should be safe to add it.

I'm not sure I agree. You are now aware of the difference between a .NET DateTime and DateTime, but a developer who is not, will "loose" a couple of hours depending on which timezone he/she is in when using this format function - that would be a serious bug farm! Until that is resolved, I will part this request. Shouldn't be for long...

The bug was rejected. The .NET format function is for formatting .NET types, not NAV types. Using this formatting method on NAV types, has some unexpected behavior and we will hence not add this function to the library. It would be har to understand, why formatting a DateTime results in a change of time.


Is there a way I can use different serializers for different versions?

I want to have SerializerA for version1, and serializer 2 for version 2 (or API_TRANSFORMER, depends on what is possible)

I just pushed a way.
app('request')->version();


Multimedia screen shows duplicate items NBT ID4 2015 BMW i3

On a 2015 BMW i3 with NBT iDrive 4, the Multimedia screen shows a bunch of apps, one of which is "Audioplayer". If I choose e.g. CloudPlayer, it doesn't do anything (the car shows a loading animation and nothing happens). But if I go to Audioplayer, the apps list in there works beautifully. This may be unfixable due to the iDrive protocol, so maybe this is a doc/FAQ clarification ticket :).

I have since figured out how to toggle the placeholder icons on demand, so disabling the apps in the Music tab updates the displayed apps in the media menu instantly (in 19183b0).


overlay.nix: fix

As of 2fb6740996ccf01212f2efdf1dc2a9241a6acf57, default.nix changed its signature and the overlay was not updated for compatibility.
error: anonymous function at /nix/store/d4m6hpyv09n5k4x65mcxpsdxrdy0crfp-source/default.nix:1:1 called with unexpected argument 'pkgs'

       at /nix/store/d4m6hpyv09n5k4x65mcxpsdxrdy0crfp-source/overlay.nix:4:14:

            3| {
            4|   devshell = import ./. { pkgs = final; };
             |              ^
            5| }

thanks!