cargo install cargo-lambda failing as of Nov 26

We're using cargo-lambda in our CI (github CI, ubuntu-22.04-8core), and it started failing to install (using cargo install cargo-lambda) at some point yesterday.
It also fails to install on my local MacBook Pro.
$ uname -a
Darwin Bryans-M1-MacBook-Pro.local 22.1.0 Darwin Kernel Version 22.1.0: Sun Oct  9 20:15:09 PDT 2022; root:xnu-8792.41.9~2/RELEASE_ARM64_T6000 arm64

I cloned this repo and tried to reproduce locally.

main branch (078159412a3047ee1301f3e086eac9e7d702feb0): ✅ doesn't fail
v1.0.0 branch: ✅ doesn't fail
main branch, but delete Cargo.lock first: ❌ fails
v1.0.0 branch, but delete Cargo.lock first: ❌ fails

Error message:
error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/command/supervisor.rs:124:44
    |
124 | ...                   if let Err(err) = process.signal(sig) {
    |                                                 ------ ^^^ expected `command_group::Signal`, found `nix::sys::signal::Signal`
    |                                                 |
    |                                                 arguments to this method are incorrect
    |
    = note: `nix::sys::signal::Signal` and `command_group::Signal` have similar names, but are actually distinct types
note: `nix::sys::signal::Signal` is defined in crate `nix`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nix-0.27.1/src/sys/signal.rs:25:1
    |
25  | / libc_enum! {
26  | |     /// Types of operating system signals
27  | |     // Currently there is only one definition of c_int in libc, as well as only one
28  | |     // type for signal constants.
...   |
121 | |     impl TryFrom<i32>
122 | | }
    | |_^
note: `command_group::Signal` is defined in crate `nix`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/nix-0.26.4/src/sys/signal.rs:21:1
    |
21  | / libc_enum! {
22  | |     /// Types of operating system signals
23  | |     // Currently there is only one definition of c_int in libc, as well as only one
24  | |     // type for signal constants.
...   |
115 | |     impl TryFrom<i32>
116 | | }
    | |_^
    = note: perhaps two different versions of crate `nix` are being used?
note: method defined here
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/command/process.rs:37:9
    |
37  |     pub fn signal(&mut self, sig: command_group::Signal) -> Result<(), RuntimeError> {
    |            ^^^^^^            --------------------------
    = note: this error originates in the macro `libc_enum` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/fs.rs:309:31
    |
309 |     tags.push(Tag::FileEventKind(nev.kind));
    |               ------------------ ^^^^^^^^ expected `FileEventKind`, found `EventKind`
    |               |
    |               arguments to this enum variant are incorrect
    |
    = note: `EventKind` and `watchexec_events::filekind::FileEventKind` have similar names, but are actually distinct types
note: `EventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-5.2.0/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
note: `watchexec_events::filekind::FileEventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-6.1.1/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `notify` are being used?
note: tuple variant defined here
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-events-1.1.0/src/event.rs:42:2
    |
42  |     FileEventKind(FileEventKind),
    |     ^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/paths.rs:124:5
    |
123 |             .entry(match kind {
    |                          ---- this expression has type `watchexec_events::filekind::FileEventKind`
124 |                 Modify(Data(_)) | Access(Close(Write)) => "WRITTEN",
    |                 ^^^^^^^^^^^^^^^ expected `FileEventKind`, found `EventKind`
    |
    = note: `EventKind` and `watchexec_events::filekind::FileEventKind` have similar names, but are actually distinct types
note: `EventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-5.2.0/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
note: `watchexec_events::filekind::FileEventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-6.1.1/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `notify` are being used?

error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/paths.rs:124:23
    |
123 |             .entry(match kind {
    |                          ---- this expression has type `watchexec_events::filekind::FileEventKind`
124 |                 Modify(Data(_)) | Access(Close(Write)) => "WRITTEN",
    |                                   ^^^^^^^^^^^^^^^^^^^^ expected `FileEventKind`, found `EventKind`
    |
    = note: `EventKind` and `watchexec_events::filekind::FileEventKind` have similar names, but are actually distinct types
note: `EventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-5.2.0/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
note: `watchexec_events::filekind::FileEventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-6.1.1/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `notify` are being used?

error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/paths.rs:125:5
    |
123 |             .entry(match kind {
    |                          ---- this expression has type `watchexec_events::filekind::FileEventKind`
124 |                 Modify(Data(_)) | Access(Close(Write)) => "WRITTEN",
125 |                 Modify(Metadata(_)) => "META_CHANGED",
    |                 ^^^^^^^^^^^^^^^^^^^ expected `FileEventKind`, found `EventKind`
    |
    = note: `EventKind` and `watchexec_events::filekind::FileEventKind` have similar names, but are actually distinct types
note: `EventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-5.2.0/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
note: `watchexec_events::filekind::FileEventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-6.1.1/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `notify` are being used?

error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/paths.rs:126:5
    |
123 |             .entry(match kind {
    |                          ---- this expression has type `watchexec_events::filekind::FileEventKind`
...
126 |                 Remove(_) => "REMOVED",
    |                 ^^^^^^^^^ expected `FileEventKind`, found `EventKind`
    |
    = note: `EventKind` and `watchexec_events::filekind::FileEventKind` have similar names, but are actually distinct types
note: `EventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-5.2.0/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
note: `watchexec_events::filekind::FileEventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-6.1.1/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `notify` are being used?

error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/paths.rs:127:5
    |
123 |             .entry(match kind {
    |                          ---- this expression has type `watchexec_events::filekind::FileEventKind`
...
127 |                 Create(_) => "CREATED",
    |                 ^^^^^^^^^ expected `FileEventKind`, found `EventKind`
    |
    = note: `EventKind` and `watchexec_events::filekind::FileEventKind` have similar names, but are actually distinct types
note: `EventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-5.2.0/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
note: `watchexec_events::filekind::FileEventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-6.1.1/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `notify` are being used?

error[E0308]: mismatched types
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/watchexec-2.3.0/src/paths.rs:128:5
    |
123 |             .entry(match kind {
    |                          ---- this expression has type `watchexec_events::filekind::FileEventKind`
...
128 |                 Modify(Name(_)) => "RENAMED",
    |                 ^^^^^^^^^^^^^^^ expected `FileEventKind`, found `EventKind`
    |
    = note: `EventKind` and `watchexec_events::filekind::FileEventKind` have similar names, but are actually distinct types
note: `EventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-5.2.0/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
note: `watchexec_events::filekind::FileEventKind` is defined in crate `notify`
   --> /Users/bryan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/notify-6.1.1/src/event.rs:198:1
    |
198 | pub enum EventKind {
    | ^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `notify` are being used?

For more information about this error, try `rustc --explain E0308`.
error: could not compile `watchexec` (lib) due to 8 previous errors
warning: build failed, waiting for other jobs to finish...

Follow up: nevermind, we aren't affected by this. Maybe an early warning that updating dependencies might cause a bit of grief, but this isn't a blocker.

The official installation instructions say to use cargo install --locked cargo-lambda. We weren't using the --locked parameter.
cargo install --locked cargo-lambda works locally.
cargo install --locked cargo-lambda works in CI.

Once we changed to using --locked, everything is fine.


Video duration from playlist

video.minutes and video.seconds are undefined when fetching videos from a playlist so I have to use getVideo() using the fetched videos to get the duration

If you take a look at the PlaylistItems overview, you can see that it doesn't include the duration of the video. You must instead call video.fetch() or youtube.getVideo(video) in order to get the duration.
{
  "kind": "youtube#playlistItem",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "channelTitle": string,
    "playlistId": string,
    "position": unsigned integer,
    "resourceId": {
      "kind": string,
      "videoId": string,
    }
  },
  "contentDetails": {
    "videoId": string,
    "startAt": string,
    "endAt": string,
    "note": string,
    "videoPublishedAt": datetime
  },
  "status": {
    "privacyStatus": string
  }
}


Key value of $group operator must be a string (unicode does not work).

If I use code (Python 2.7):

from __future__ import unicode_literals
aggregation = [{'$group': {'_id': {'cid': '$cid'}}}]
aggregated_data = db.events.aggregate(aggregation)

then I get an error:
File "/usr/local/lib/python2.7/dist-packages/mongomock/collection.py", line 1387, in aggregate
out_collection = sorted(out_collection, key=itemgetter(*group_func_keys))
TypeError: itemgetter expected 1 arguments, got 0
I have to do here so:

from __future__ import unicode_literals
aggregation = [{'$group': {'_id': {'cid': b'$cid'}}}]
aggregated_data = db.events.aggregate(aggregation)

https://github.com/vmalloc/mongomock/pull/222

Closed by #236


bug

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:

Steps to Reproduce:

Run the discord bot without debugging
Traceback (most recent call last):
File "c:\Users\iimas\Desktop\Tester command.py", line 2, in
from discord import Option
ImportError: cannot import name 'Option' from 'discord' (C:\Users\iimas\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\discord_init_.py

If u need I can provide the dedicated file with the issue

Please I need this fixing for my discord bot to work

@Charliesproducts This does not seem relevant to VS Code, it looks like you might not have the right version of the discord library, or your environment might not be set up correctly.


Share to Stage for Guest Users

Type of issue
Missing information
Feedback
A scenario where the host shares app content to the stage and the guest can see both the shared screen and the collaborative app content in a  meeting using JavaScript.
Page URL
https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content
Content source URL
https://github.com/MicrosoftDocs/msteams-docs/blob/main/msteams-platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage.md
Author
@v-sdhakshina
Document Id
5ca1f6b3-347e-7182-0d26-d282e26f3614

@joylin2024 - Thank you for reporting your issue. We are not quite clear on the details. Could you please elaborate further?

Hi Teams Platform,
When the host shares their screen, guests can view both the host's screen and another screen from a different URL, allowing guests to interact with the content.
This is a screenshot of the host's example

This is a screenshot of the guest's example

Feel free to reach out if you have any further questions.
Thanks,
Joy Lin

@joylin2024 , thanks for sharing the screenshots for our understanding. Just a quick query here, do you want these to be documented in the official documentation or what is your actual requirement?

Could you please guide me on where to find the code related to this specific feature?
Your help would be greatly appreciated.
Thanks,
Joy

Hello @JoyBlin - Meeting stage sample sample is one of the sample linked to the documentatio.?
https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content#code-sample
You can also refer "Build apps for anonymous users" documentation: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-anonymous-user?tabs=javascript

Hi. Thank you for your prompt response. Unfortunately, I couldn't find the answer in the references you provided.  How can I implement a feature where the host can share their screen while providing an interactive window for guests on the meeting stage?

Hello @JoyBlin - Sorry for the inconvenience.
We will check with the engineering team whether this feature is support or not and let you know the updates.

Thanks for checking with the engineering team. Looking forward to the updates.

We will let you know once we get inputs from engineering team.

Hello @JoyBlin - Sorry for delay in response.
This functionality is not available as a supported scenario in the documentation, So, we are actively checking with engineering team on priority and let you know once we get confirmation.
Thanks for your patience!

@JoyBlin  - Sharing stage and teams screen sharing side by side simultaneously is not possible.

If you don't mind having the interactive experience in the sidepanel, you can have both the screen sharing and interactive abilities concurrently. An example of this can be seen for the Polls app, in which the meeting participant can interact with the sidepanel, while seeing the video stream of the presenter who's presenting their view of Polls.
Presenter:

Meeting participant:

Thank you for the update and for providing an alternative solution.
I understand that sharing the stage and screen simultaneously is not possible at the moment. I will certainly give my feedback in the Teams Feedback Portal as recommended.
Regarding the interactive experience in the side panel, that sounds like a viable workaround. I will explore this option further. Could you please provide example code or additional guidance on how to implement this solution?
If I have any further queries or need additional assistance, I will reach out.
Thank you again for your help.
Best regards,
Joy

Hello @JoyBlin - Meeting stage sample is one of the sample linked to the documentation? https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content#code-sample
You can also refer "Build apps for anonymous users" documentation: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-anonymous-user?tabs=javascript
Sample code: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-anonymous-user?tabs=javascript#code-sample
Please let us know if you have further queries.

@joylin2024 - Please refer these links for all the linked samples, specially below:
https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content#code-sample

Hello @JoyBlin - Please share your valuable feedback for us: Microsoft Teams Developer Community Response Feedback
Also, we will be closing this issue.
Please feel free to reopen it or raise another issue.

Is it possible to enable simultaneous screen sharing alongside a stage display, similar to what I've seen in other applications? I'm interested in learning how to code this functionality. Could you please check with the engineering team for more details?
I look forward to your reply.
Thanks,
Joy

Hello @JoyBlin - Could you please share more details about Teams applications (1st party or 3rd party apps) where you have experienced this functionality (Sharing the stage and screen simultaneously)?
The engineering team already confirmed that this is not supported but still we will check on it once you share the above information.

Here is the screenshot of the app I mentioned.

I would love to hear your thoughts.

Hello @joylin2024 - Thanks for your inputs.
I will check with the engineering team and let you know the updates.

Thank you! I'm eager to hear your updates soon.

@JoyBlin -
As said by engineering team, the functionality to simultaneously screen share and share to stage is implemented by Mentimeter team in their own web iframe. They are only using our share to stage capability. Our share to stage functionality is already documented here: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content#share-to-stage.
I believe there are two options forward:

As we recommended before, use meeting sidepanel for interactivity and stage for screen sharing (https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content#screen-share-content-to-meetings)
Check out Live Share, which is another potential SDK that might help in your goal (Live Share overview - Teams | Microsoft Learn).

You can use meeting sidepanel for interactivity and stage for screen sharing.
Ref Doc: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content#screen-share-content-to-meetings
The implementation of meeting sidepanel is documented here: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-tabs-for-meeting?branch=add-apps-in-meetings&tabs=desktop%2Cmeeting-chat-view-desktop%2Cmeeting-side-panel%2Cmeeting-stage-view-desktop%2Cchannel-meeting-desktop#configure-tab-app-for-a-meeting
Code sample here for meeting sidepanel: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-tabs-for-meeting?branch=add-apps-in-meetings&tabs=desktop%2Cmeeting-chat-view-desktop%2Cmeeting-side-panel%2Cmeeting-stage-view-desktop%2Cchannel-meeting-desktop#code-sample
And the implementation of screen sharing to stage with code sample is documented here: https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cshare-app-content#screen-share-content-to-meetings
Please let us know if you have any other query here.

Great. Thanks!

In  this document,
https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/build-apps-for-teams-meeting-stage?tabs=desktop%2Capp-content%2Cscreen-share-content#screen-share-content-to-meetings
For View Only Screen share
const shareSpecificAppContentScreenShare = (partName) => {
var appContentUrl = "";
microsoftTeams.app.getContext().then((context) => {
appContentUrl = partName == 'todo' ? ${window.location.origin}/todoView?meetingId=${context.meeting.id} : partName == 'doing' ? ${window.location.origin}/doingView?meetingId=${context.meeting.id} : ${window.location.origin}/doneView?meetingId=${context.meeting.id};
microsoftTeams.meeting.shareAppContentToStage((err, result) => {
if (result) {
// handle success
console.log(result);
}
              if (err) {
                  // handle error
                  alert(JSON.stringify(err))
              }
          }, appContentUrl,
              // Optional shareOptions with sharingProtocol set to ScreenShare
              {
                  sharingProtocol: microsoftTeams.meeting.SharingProtocol.ScreenShare
              });
      });
  };

I added this line of code, but it doesn't work. Could you clarify why it isn't working for me?
Looking forward to hear from you soon.
Thanks,
Joy

Hello @JoyBlin - Could you please share any error if you are getting?

On the guest side, I encountered the following error:

Thanks,
Joy

Great. Thanks!

@joylin2024 - Could you let us know which platform you are testing this on (web, desktop, or mobile) and also provide the OS details? Additionally, are you using classic Teams or the new Teams? In the meantime, we are also trying this out.

@joylin2024 - Could you please refer below sample for SharingProtocol.ScreenShare.
Microsoft-Teams-Samples/samples/meetings-stage-view/csharp at main · OfficeDev/Microsoft-Teams-Samples (github.com)
We have tested this sample but getting below error.

We have raised an issue for this: https://github.com/OfficeDev/Microsoft-Teams-Samples/issues/1367

I am currently testing this on the web platform with Windows 11 Pro, version 23H2. I’m using the new Teams for this implementation. I appreciate you looking into this in the meantime!

Hi, I'm having trouble defining the host in my code. I tried using the snippet below, but it's not working as expected. Could you please help me figure out what's wrong?
app.getContext().then((context) => {
let isHost = false;
// Check if the user is the meeting organizer
if (context.meeting.role === meeting.MeetingRole.Organizer) {
isHost = true;
}
})
Thanks,
Joy Lin

Hello @JoyBlin - What error you are getting here?
Could you please check this C# code: https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/meetings-sidepanel/csharp/SidePanel/Controllers/HomeController.cs#L95

Hi, I'm currently working with the @microsoft/teams-js library in a React.js project. I'm finding the code a bit confusing, and I'm struggling to figure out the right approach. Could you please guide me toward a better solution?

@joylin2024 - To get the meeting user role such as guest, attendee, or presenter in Microsoft Teams, you can use the Microsoft Graph API.
You need to retrieve the meeting details using the Microsoft Graph API. You can use the GET /me/onlineMeetings/{meetingId} endpoint to get the details of a specific meeting.
In the response, you will find the participants property, which contains information about the participants in the meeting. Each participant will have a role property that indicates their role in the meeting (e.g., attendee, presenter, guest).
After getting the role you can set the appContentUrl accordingly.
Refer the example here:  https://learn.microsoft.com/en-us/graph/api/onlinemeeting-get?view=graph-rest-1.0&tabs=http#example-2-retrieve-an-online-meeting-by-meeting-id)](https://learn.microsoft.com/en-us/graph/api/onlinemeeting-get?view=graph-rest-1.0&tabs=http#example-2-retrieve-an-online-meeting-by-meeting-id

Hi, thank you for your assistance. I was wondering if there is an alternative method to determine whether someone is a host?

@joylin2024 - Using Get participant API you can get the participant's role in the meeting. For example, 'Organizer' or 'Presenter' or 'Attendee'.

How about LiveShareHost?

@joylin2024 - Please refer below document for Live Share.
https://learn.microsoft.com/en-us/microsoftteams/platform/apps-in-teams-meetings/teams-live-share-overview?tabs=javascript

Hi, I wanted to ask if there's a method to detect when the 'Share to Stage' button is activated so that the appContentUrl for the presenter is set to http://example.com/host, while other viewers receive http://example.com/guest as their appContentUrl?

@joylin2024 - We are checking this with engineering team, we will let you know once we get any input from them.

@joylin2024 - We received an update from the engineering team stating that this scenario is not possible. We can only broadcast a single URL to all participants in the meeting. The engineering team has recommended handling this on the app side and displaying separate UIs for different types of users.

Hello, I would like to know if it's possible to embed a Microsoft Teams meeting into my website. Could you please provide some guidance on how to achieve this?

@joylin2024 - Embedding a Microsoft Teams meeting directly into a website is not natively supported by Microsoft Teams. However, there are alternative approaches you can consider to achieve similar functionality.
You can use the Microsoft Graph API to create the meeting.
https://learn.microsoft.com/en-us/graph/api/application-post-onlinemeetings?view=graph-rest-1.0&tabs=http


BDB submodules are still pointing at spacedock

BDB was changed over to use github recently, but the submodules are still pointing at spacedock.  This seems like an oversight.  At best, this means that users have to download both zip files even when one is cached.  At worst, it could lead to incompatibilities if the files are actually different (e.g. the spacedock version doesn't get updated for a while).  I'd like to hear from @HebaruSan or @CobaltWolf for confirmation first.
https://github.com/KSP-CKAN/NetKAN/blob/86c8ec832126fc6fa8583eb4a94f029fc3ea9783/NetKAN/BluedogDB-Methalox.netkan
https://github.com/KSP-CKAN/NetKAN/blob/86c8ec832126fc6fa8583eb4a94f029fc3ea9783/NetKAN/BluedogDB-CommunityCategoryKit.netkan
https://github.com/KSP-CKAN/NetKAN/blob/86c8ec832126fc6fa8583eb4a94f029fc3ea9783/NetKAN/BluedogDB-RealNames.netkan

Got confirmation on discord: https://discord.com/channels/601452466017665040/601459946684547095/1187775780575510621


Enable debug symbols in image builds of pelican client

This changes cmake settings to use the RelWithDebInfo build type when building the pelican client for the docker images.
For the price of slightly less optimization (O3 to O2), and a slightly larger output binary (1.3M to 7.3M), we get line level debugging, which will make investigating segfaults much easier.

Good call; in fact, RelWithDebugInfo is how we build the xrdcl-pelican RPM.

Approved, pending passing tests. I'll check back in when they're all done running.


SOLR-15089: Allow backup/restoration to Amazon's S3 blobstore

Description
Solr provides a BackupRepository interface with which users can create backups to arbitrary backends. There is now a GCS implementation (see https://github.com/apache/solr/pull/39), but no S3 impl yet.
Solution
This PR adds a BackupRepository implementation for communicating with S3.
Tests
We've added new unit tests at the BackupRepository level as well as tests for the S3 interactions (using S3Mock framework).
Checklist
Please review the following and check all that apply:

[x] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
[x] I have created a Jira issue and added the issue ID to my pull request title.
[x] I have given Solr maintainers access to contribute to my PR branch. (optional but recommended)
[x] I have developed this patch against the main branch.
[ ] I have run ./gradlew check.
[x] I have added tests for my changes.
[ ] I have added documentation for the Reference Guide

We have not yet done the work of adding license files for all the newly added libraries/dependencies. These will be added in a future commit.

@gerlowskija I'll address the cons list first, that seems to me the most salient part to discuss:

Classpath Bloat: Having all blob-store implementations in the same config means that a user using S3 for backups will also be loading a bunch of the GCS (and eventually ABS) related dependencies that they have no intention of ever using. How much it'll matter in practice, idk, but in theory this expanded but unused surface area is a liability in terms of triggering vulnerability scans or true security issues whenever one of these deps has a CVE.

In my mind, if we go the path of using the BlobRepository abstraction, the ultimate goal would be to have it be a separate unit, apart from the S3 or GCS stuff. That could mean...

We have three modules in solr-contrib (e.g., BlobRepository, S3Repo, GCSRepo) [this seems weird though, b/c BlobRepository is an "abstract" layer and that doesn't seem to belong in solr-contrib]
We commit the BlobRepository code directly into the Solr core module, and then have S3Repo and GCSRepo pull from that (this sounds similar to the approach you mentioned "One side note on this question")
We push the BlobRepository code into a separate Git repo, publish a jar that S3Repo and GCSRepo

There may be other options, but for the bloat reasons you mentioned, I never really considered putting all the blob stores into one multi-cloud repo.

Limited Code Reuse: While BlobRepository does allow some pieces to be reused, it's not as much as I was hoping might be possible. IMO the actual code interfacing with the S3/GCS client comprises such a large chunk of the logic here that it dwarfs the smaller bits that are able to be reused. As an "example" of this: GCSBackupRepository and S3storageClient both come in at roughly the same LOC count despite S3StorageClient taking advantage of all the shared logic up in BlobRepository. (Admittedly this is a real shaky comparison: the two code samples are using different client libraries, implement different interfaces, are written in different coding styles with different use of whitespace, comments, etc. And LOC is a dubious stand-in for complexity in any case. But the point that S3StorageClient's code-reuse still leaves the two in the same ballpark still stands.)

Very fair criticism. For me, it's right on the edge of "are we over-architecting this?". It would of course help to have a third blob client (Azure?); perhaps with just two we're underestimating the value that middle layer could provide?

Documentation Complexity: Combining multiple blob-store implementations under the same BackupRepository impl will add some documentation challenges: in calling out which config props affect which blob store "types", in describing the differing expectations on for identifiers like bucket names and paths, etc.

Is this con still relevant if we pick one of the three options I listed above (and not have them all in one)? If each is separate, their docs would also be separate. Or do you mean internal docs (e.g., Javadoc)?
You also asked

What distinguishes a few of the I/O classes in this PR (e.g. BlobIndexInput) from existing alternatives (e.g. BufferedChecksumIndexInput) that do similar things at a quick glance?

In regards to BlobIndexInput, I'll have to defer the 'why' question to @psalagnac. That impl was written when we first wrote this plugin -- it's possible it was to work around a bug, or possible it was oversight that we built it ourselves and didn't use a pre-built impl. If I get some time, I can also try swapping our use for BufferedChecksumIndexInput and see if tests pass.

if we go the path of using the BlobRepository abstraction, the ultimate goal would be to have it be a separate unit

:+1:  I was assuming a different structure, or maybe reading too much into the current structure of the WIP, but this makes a lot of sense and would do a lot to alleviate both the classpath and documentation concerns I had in mind previously.  Of the specific implementations you mentioned, I'm partial to (2) as it seems like a nice middle ground between (1) and (3).  It also seems like the approach that'd make it easiest for a user to use BlobRepository in writing their own plugin.  But admittedly that's a bit handwavy.  Do you have a preference among those options or see other pros/cons there?

it's right on the edge of "are we over-architecting this?". It would of course help to have a third blob client (Azure?)

That's definitely the question.  I lean I think towards skipping the abstraction until we're in a situation where its value is more clear cut.  If someone adds an Azure store next year and more repeated bits of code crop up, we can always add the middle-layer in at that point.  But that's just my leaning - if you guys are confident that it'll be better to leave it in, I'm happy to go with that.  The BlobIndexInput question might shed light on this too.

if we go the path of using the BlobRepository abstraction, the ultimate goal would be to have it be a separate unit

I agree that (2) is the best option out of the 3.

That's definitely the question. I lean I think towards skipping the abstraction until we're in a situation where its value is more clear cut. If someone adds an Azure store next year and more repeated bits of code crop up, we can always add the middle-layer in at that point. But that's just my leaning - if you guys are confident that it'll be better to leave it in, I'm happy to go with that. The BlobIndexInput question might shed light on this too.

I agree with Jason here as well.
I might have missed something, but did you mention at some point that this BlobRepository abstraction code was also going to be used for the blob-replicas that we've heard so much about? Or would that use something completely separate?

Thanks for all you feedback on this PR @gerlowskija

What distinguishes a few of the I/O classes in this PR (e.g. BlobIndexInput) from existing alternatives (e.g. BufferedChecksumIndexInput) that do similar things at a quick glance?

Any implementation of BackupRepository requires a friendly IndexInput for method openInput().
The two only things we have when working with S3 are an InputStream created by AWS client (so can't make much assumptions on its actual implementation) and the total file length. I haven't found any existing implementation of IndexInput in Solr codebase that would work with these two parameters only. Maybe there is one I missed, if so please point me to it.
My understanding is BufferedChecksumIndexInput requires a delegate IndexInput to access data.
BTW, I just found a bug in your implementation of IndexInput for GCS backup repository. We had this similar bug happening in production environments with AWS client. I'm not sure about details of AWS client internals, but there is a buffer somewhere in the stack. Depending exactly on when you invoke read() on the input stream, the buffer may be full or partially full. But the read operation is non-blocking, so if the buffer has less data than you want to read, you only get what's already in the buffer. That's why checking returned number of read bytes was mandatory here. Since contract of IndexInput does not support reading less bytes that initially requires, I had to solve this with a retry loop.
With AWS, it happens for real. With GCP, it may be just theoretical? That may be some code to share between different blob implementations? 😄

Thanks for the clarification @psalagnac. I'll summarize your points to make sure I've got the right idea:
BlobIndexInput really serves two purposes.  First there were no other reusable IndexInputs that wrap an InputStream (which is what the AWS client provides for reading).  Second it builds in an extra retry loop to address the bug you described where IndexInput's contract declares that it reads N bytes, but InputStream may or may not provide that many in a single call depending on timing and internal buffering.
If I've got all that right, then I'm 👍 on keeping it around.  Though maybe it should be renamed to remove the suggestion that the class is blob-specific in some way.  (AFAICT it's equally useful whether you're wrapping a S3InputStream or a StringBufferInputStream, unless I'm missing something?)

I just found a bug in your implementation of IndexInput for GCS backup repository...I'm not sure about details of AWS client internals, but there is a buffer somewhere in the stack...With GCP, it may be just theoretical?

Good catch!  As I understand your description - this bug requires (1) buffering somewhere in the stack underlying the InputStream and (2) non-blocking reads from that InputStream.  I'll take a look and see whether the GCS code "checks" both of those boxes, unless you're saying you've already seen that it does?

The BlobIndexInput question might shed light on this [i.e. whether to include the BlobBackupRepository abstraction] too.

I raised this possibility in my previous comment, and I think I am sold on BlobIndexInput's necessity, but I still lean towards skipping the BlobBackupRepository for now.  Just wanted to close the loop there.

Hey @athrog - anything holding this up, or did you just miss the notification on the latest round of comments?  (If it's a time thing, lmk and I can try to help out a bit myself.)
Seems like the consensus so far would be to (1) remove the BlobRepository abstraction and (2) repurpose/rebrand the contrib you're adding now to be s3-specific, pending any big objections or arguments from your side of things?

Hey @gerlowskija,
Sorry for the late answer here.
Thanks for you feedback. I think we reached an agreement to keepBlobIndexInput and remove the abstraction of the generic blob storage client.
I will work with @athrog on following changes:

Rename BlobBackupRepository to S3BackupRepository, and update docs to target only S3.
Drop BlobStorageClient layer, and directly use AWS APIs in S3BackupRepository
As a second step, implement incremental test (this may came later depending on our bandwidth).

Hi @gerlowskija,
The PR is updated with new class layer. I tried to align to existing implementation for CSG. All classes are now in package org.apache.solr.s3.
I kept calls to AWS API in standalone class S3StorageClient. This for for testing purpose and this class it not intended to be extended or used for nothing else than backups.
Still have to do end-to-end testing and polish docs.

@psalagnac could you merge this with main? I'm trying to build it and test it out locally, but I believe you are haven't captured the changes that fix the lucene version to a stable snapshot, thus I am getting compilation errors locally.

Just pushed a merge commit @HoustonPutman, along with an update for our README. Let me know if you have any trouble testing locally, I can add more documentation if needed.

Also, I'm not sure if it's a problem with my setup or maybe I missed some gradle setting somewhere, but just doing a ./gradlew assemble doesn't seem to put our new blob-repository jar (or it's dependencies) in the classpath? You get NoClassDefFound errors when trying to take a backup. I worked around that by just copying it manually after building. If anyone has seen this before or knows what we're missing, please let me know!

Thank you @madrob for the review. I fixed some of the low hanging fruit, will circle back later for the other comments (that will require testing after changes)

Also, I'm not sure if it's a problem with my setup or maybe I missed some gradle setting somewhere, but just doing a ./gradlew assemble doesn't seem to put our new blob-repository jar (or it's dependencies) in the classpath? You get NoClassDefFound errors when trying to take a backup. I worked around that by just copying it manually after building. If anyone has seen this before or knows what we're missing, please let me know!

@athrog Contribs aren't loaded to the classpath by default. What I'm doing for testing this (not at all recommended for the final product), is adding something to solr/webapp/build.gradle:
under dependencies {:
implementation(project(":solr:contrib:blob-repository"))

Some first thoughts:
* Are y'all planning on renaming the contrib to s3 from blob? It seems like a logical choice

Yes, renaming the module to s3-repository will be in my next commit.

* I mentioned this in a comment, but the errors that are given back are generally not very helpful in fixing problems. I think a lot of them stem from using stuff like Preconditions, which pass a generic error back to the User and doesn't tell them what they need to do to fix the problem. I agree with @madrob , we shouldn't have any Preconditions in this code. Same for `Objects.requireNonNull`.

Sounds like there are two separate issues here: (1) usage of Preconditions/Objects for pre-checking, and (2) a lack of human readable errors when failing those checks.
Regarding (2), I agree slightly -- for methods that use parameters that are user-specified, we should add better messaging that can help remediate. I'm not sure that'll be helpful everywhere though, since some methods are deeper in the call stack and use variables that have already been post-processed in some way.
Regarding (1), I'm fine ripping out Preconditions usages. But we can also add some of these messages without getting rid of Objects.requireNonNull (there's a two-arg method for supplying the message), any objection to that?

@athrog  Do you mind if i push a commit? It lets the S3MockServer use a random port during the Unit Tests instead of 9090 (very useful if you are running the mock locally at the same time). It also fixes two various issues: [1] and [2]. When I run the tests, I have one case fail because of [2], so I included the fix as well.

@HoustonPutman yeah please go ahead! I made the fix for [1] locally and was testing it out right now. It's the same code as you suggested, so I'm not worried about merge conflicts or anything.

Been testing this out some more, and am finding some issues:

Using the async API (not sure about synchronous), I'm seeing status: 0 when the backup actually fails. The directories are created, but an issue with the S3 server did not allow the cloud to save the actual index or metadata files. This is definitely the biggest issue.
The use of AwsRegion means that users can't use anything other than AWS s3 servers, which I don't think we want to lock ourselves down to. We can easily add an "endpoint" config option.
The way that directories are created doesn't 100% work with minio, which isn't 100% required. But it'd be nice if we could support it and AWS s3 at the same time. (You have to add a / at the end of directory names when adding them.)

Regarding minio, I saw this too in my testing (I tried to make it work before moving to S3Mock). Their handling of "directory-like" structure is pretty incompatible with this project. Main problem is

Create a dir foo/
doesObjectExist returns true for foo/
Add a file bar in dir foo.
Now doesObjectExist returns false for foo/ :(

According to https://github.com/minio/minio/issues/6566

We cannot support AWS style it is simply not possible on a POSIX like hierarchy unless we write of course is some form hashed translation but that would defeat the purpose of Minio to be simpler even to look at the backend.

I'll take a look at the async API issue you described. Most of my testing lately (in the Solr 9 codebase) has been with the synchronous APIs, so that's a good callout.
Regarding the AwsRegion comment, what is the use case you had in mind? I would think that if you want to use a different storage substrate, you would want to build a new BackupRepository altogether. I know some substrates (like minio) profess S3 API compatibility, but based on my last point, I'm hesitant to categorically support them in this project.

Regarding minio

Yeah, I changed a few things and got it closer to working, but I guess that problem was the last and unsolvable hurdle...

Regarding the AwsRegion comment, what is the use case you had in mind?

I would say it is at least somewhat common for companies to have S3 compatible alternatives that have to be used in lieu of AWS S3. While it is possible for every company to manage their own plugin, it would be nice to at least have the endpoint configurable for users to try out. If it doesn't work, then nothing lost, they can still create their own. But if it does, then it's a massive weight off their shoulders being able to use the default S3 plugin.
We can make it very explicit in the documentation that this is meant to be used with AWS S3, but users are able to use it with S3 compatible endpoints at their own risk, and point out Minio as an example of an S3 compatible option that does not work with the plugin.
Another point is that users will have to upgrade the plugin if they want to use new regions that AWS introduces after the version of the AWS SDK we are using was cut, which will probably be painful because the version of the plugin will likely be tied to the version of Solr.

Both good points, thanks.

@athrog I went ahead and added the S3 endpoint support I was testing with, along with a bit of documentation in the README. Happy to make any changes you would like, or revert in case you don't want to add it in yet.

@HoustonPutman am I right in thinking that most (but not all?) of your comments have been addressed at this point?  I'm a little unclear on what's still outstanding for me to start helping with so we can get this merged.

@gerlowskija My estimate at this point is that about 75-80% of comments have been addressed? @HoustonPutman and I have been resolving comments that are now fixed, so I'm mainly going off that signal. Sadly, github doesn't have a filter-by-unresolved button...
The biggest remaining work is @HoustonPutman's comment that

Using the async API (not sure about synchronous), I'm seeing status: 0 when the backup actually fails. The directories are created, but an issue with the S3 server did not allow the cloud to save the actual index or metadata files. This is definitely the biggest issue.

I haven't had time to dig deeper and understand why this is the case yet. If you have some spare cycles, that's probably the best area to work on.

Sorry was actually going to comment today. I have some local changes that generally make the experience better, in my opinion. Will probably push soon, but the biggest change is this:
It removes the ability for the s3 object name to start with a /. This is because figuring out the correct location URI to use was beyond confusing to me when the / was required to start. If we auto-remove any / at the begging of the location (and update some of the logic around this), then it's practically impossible for users to pass a location that results in an error.
This is a major change, but I think a big improvement in terms of usability. Is there a reason why you mandated paths that start with / in the first place? This doesn't seem to be an S3 standard, and is definitely not easy to do when creating directories in the S3 UI...
I've made some other changes that I think are good and do not negatively impact s3 performance. Will post this patch when y'all have signed off on the change above ^.
In the meantime there are things that need to be done before this is ready to be merged:

[ ] Documentation of the S3 Repo option in the solr-ref-guide
[ ] The tests currently have a lot of asserts without comments, these should be easy to debug when tests fail. Please add messages to any asserts there.
[ ] Finish debugging the async error, if it still occurs.

Oh another thing I changed locally that has worked out well:
Instead of using a custom header x_is_directory, I set the content-type of directory objects to application/x-directory. Really very little difference when using S3, but there are "compatible endpoints" that do not accept custom headers, but do support content types. Feel like this is a lateral move, so no real downside. Feel free to correct me if there is!

Also found a small issue where in S3 you can have a file (not directory), and the API is checking to see if a directory path exists, without the / ending on the path. This will return true if there is a file with the name matching the requested directory, even if the requested directory doesn't exist. To fix this I've added a createDirectoryUri(String location) method that is a default method on the AbstractBackupRepository class, so that it doesn't break compatibility with 3rd party packages.
When making this I actually realized that createURI is almost always used for directory locations. But there's no harm in keeping the original method anyways.

Ok pushed the changes to show you what I'm talking about. (in two prs, to somewhat separate concerns). Happy to address concerns or revert parts if y'all are unconvinced.

I've made two commits to fix some of the precommit issues, but there are two that remain that still need to be addressed.

[ ] Run ./gradlew :solr:contrib:s3-repository:spotlessApply to fix code style (we should do after we have agreed on the code content, because it will rewrite almost every line of the PR.
[ ] Run ./gradlew updateLicenses and go through and manually add LICENSE and NOTICE files for each dependency.

Thanks again @HoustonPutman for your time and energy on this PR.

This is a major change, but I think a big improvement in terms of usability. Is there a reason why you mandated paths that start with / in the first place? This doesn't seem to be an S3 standard, and is definitely not easy to do when creating directories in the S3 UI...

@psalagnac might know better than me, but looking through our internal commit history, I don't see any clear reason why we chose to require a leading slash. Given our logic for parsing out parent dirs, maybe there was some code in Solr 7 (the version we were on at the time) that choked on it not starting with a slash? I agree with your logic, and no time like the present to fix it.
Your other fixes look good to me -- I like using content-type as an indicator for dirs, and the createDirectoryUri refactor is also nice.
Have you been testing against real s3? Or against the mock s3 locally? After syncing the latest, I'm no longer able to restore with mock s3. Backups work fine (I checked the files on disk), but I get Couldn't restore since doesn't exist: s3://backup1628535176/collection1628535176 error messages when hitting solr/admin/collections?action=RESTORE&repository=s3&location=s3:&name=$BACKUP_NAME&collection=$RESTORED_COLLECTION_NAME

I've been testing out with real S3, but will test it out with mock s3 now. Thanks for finding the issue.

One more comment since I saw you updated the versions.lock file. I noticed that the s3mock project pulls in a few new versions of libs that solr uses. This seemed like a bad thing to me (in that this commit could break other parts of Solr code that use, say commons-codec 1.13 and haven't been tested with 1.15). I have a local commit that explicitly excludes those libs and doesn't negatively impact s3mock, will do some testing around that and push in a bit.

I have a local commit that explicitly excludes those libs and doesn't negatively impact s3mock, will do some testing around that and push in a bit.

That would be awesome!

@athrog & @gerlowskija , I've gotten the precommit to pass (wow this adds a lot of dependencies). The full tests also pass 🎉
As per my comment above, I believe there are 3 areas left to finish before this work can be merged.

[ ] Documentation of the S3 Repo option in the solr-ref-guide
[ ] The tests currently have a lot of asserts without comments, these should be easy to debug when tests fail. Please add messages to any asserts there.
[ ] Finish debugging the async error, if it still occurs. (I will certainly be testing this, so I'll take responsibility for this task)

Once those are done, I will be happy to merge and backport this to 8x. Let me know what your bandwith is, and when you think you can get these done by 🙂  No rush, just want to be able to plan accordingly on my side.
Also just realized that upgrading the jackson smile dependency broke tests, so looking into fixing those currently...

Fixed a weird issue with the upgrade of the smile library. Tests pass now.

Happy to take the other two documentation tasks. @gerlowskija already wrote a short section in the ref guide for the GCS backup repo, so I can modify that for S3 easily. Will try to have those done by the end of the week if I have enough time.

Okay, took my first shot at the ref guide -- let me know what you all think!
One thing that stood out to me while documenting all the params was our use of the blob.* prefix (e.g., blob.s3.bucket.name). It made more sense when we had our blob abstraction, but now just seems superfluous. Any objections to removing it? Easy change to make today, much more difficult once we've shipped :D

One thing that stood out to me while documenting all the params was our use of the blob.* prefix (e.g., blob.s3.bucket.name). It made more sense when we had our blob abstraction, but now just seems superfluous. Any objections to removing it? Easy change to make today, much more difficult once we've shipped :D

Yeah I agree. We should remove blob entirely (variables, methods, config, etc), shouldn't be mentioned at all in the s3-repository contrib module.
And will take a look at the docs!

Documentation looks good to me! The only thing we should possibly add is how to add contribs to the classpath/runtime. I imagine this is already in the ref-guide somewhere, and we should be able to link to that pretty easily. Would be good to add for the GCS section as well.

Yeah good idea. I tried adding this to my _default solrconfig.xml, and I see the libs are added (from a logline), but still getting ClassNotFoundExceptions when taking backups.
  <lib dir="${solr.install.dir:..}/contrib/s3-repository/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:..}/dist/" regex="solr-s3-repository-\d.*\.jar" />

This approach is what some other contribs recommend (tika, clustering)...any reason why it wouldn't work for this repo?

To document how to install plugins, I would simply link here:
<<solr-plugins.adoc#installing-plugins,Solr Plugins>>

Furthermore, I would discourage anyone from declaring <lib .../> in solrconfig.xml.  I don't think it's quite deprecated but it's easy to simply put libs into SOLR_HOME/lib.

Ok, so I tested the async stuff and it's working now.
The only thing I've found is that the indexFileCount and indexSizeMB are incorrect (listed as 0) when listing backups. Fairly confident that this doesn't have to do with this PR. Looking through the code it should be broken for all backup repos?
One last thing I want to do now is remove AdobeMockS3StorageClient, as there isn't much use now that there isn't any difference in the MockS3 client (paths in both cannot start with /). I'll update the docs to specify how to use MockS3, which is basically just pass in the Mock S3 endpoint URL.


:sparkles: Implement a Generic Approach to Composition

E.g.
@dataclass
class Header(ParameterSpecification):
    name: str

composers = Composers()

@composers.composer(Header)
def compose_header(func: Callable, parameter: Parameter[Header], value: Any) -> Any:
    ...

If resolvers are made modular, a class should be used for get_params and get_arguments


Bump mkdirp dependency to 0.5.3

PR checklist

[x] Addresses an existing issue: fixes #4917
[ ] New feature, bugfix, or enhancement

[ ] Includes tests

[ ] Documentation update

Overview of change:
This includes a patched version of minimist.
Is there anything you'd like reviewers to focus on?
In the future, consider bumping mkdirp to 1.x, though this would require
a major version bump as only node > 10 would be supported.
CHANGELOG.md entry:

Thanks for your interest in palantir/tslint, @Eyas! Before we can accept your pull request, you need to sign our contributor license agreement - just visit https://cla.palantir.com/ and follow the instructions. Once you sign, I'll automatically update this pull request.

Done!

Swell, thanks @Eyas! 🎉

Will be released in 6.1.1 soon ?
Thanks

just released 6.1.1


list common layer for multiple images

Many images have slightly different build tools required.. slight difference in dockerfile line make it a different recipe, so docker will have to build from scratch.. making many images having common build-tools layer would allow images to use caching at the cost of increase in docker image size.
Time improvement difference- WIP.

Regular build time: 1 hr 18 mins
This patch: 1 hr 7 mins
Saves about 10 minutes on local build

Would it make sense to create a common base image instead?


Fix build deps compilation for setuptools < 70.1.0

See https://github.com/jazzband/pip-tools/pull/1681#issuecomment-2212541289 for context.
Contributor checklist

[x] Included tests for the changes.
[x] PR title is short, clear, and ready to be included in the user-facing changelog.

Maintainer checklist

[x] Verified one of these labels is present: backwards incompatible, feature, enhancement, deprecation, bug, dependency, docs or skip-changelog as they determine changelog listing.
[x] Assign the PR to an existing or new milestone for the target version (following Semantic Versioning).

Alternatively, it's even better to emulate such a situation with artificial package stubs so that it doesn't need to hit the network.

@webknjaz I reworked the PR; please have a look. Of course there are still the failing Windows tests, can we just drop that horrible Microsoft product ;-)?

Slightly changing the order of assertions should help see more details into the errors:
diff --git a/tests/test_cli_compile.py b/tests/test_cli_compile.py
index c5031fc..8db0038 100644
--- a/tests/test_cli_compile.py
+++ b/tests/test_cli_compile.py
@@ -787,13 +787,13 @@ def test_direct_reference_with_extras(runner):
             "pip-tools[testing,coverage]<EMAIL_ADDRESS>         )
     out = runner.invoke(cli, ["-n", "--rebuild", "--no-build-isolation"])
-    assert out.exit_code == 0
     assert (
         "pip-tools[coverage,testing]<EMAIL_ADDRESS>         in out.stderr
     )
     assert "pytest==" in out.stderr
     assert "pytest-cov==" in out.stderr
+    assert out.exit_code == 0

 def test_input_file_without_extension(pip_conf, runner):

Generally, I prefer to compare out.stderr before checking the status code in tests; if stderr isn't the expected output, pytest will print it when failing the assertion.

@chrysle the windows failure is because of the deprecation warning in pip, right?

Could you elaborate on that? It seems that the resolver only found some pre-versions of a package, only I don't know much because the output is shortened.

Yeah, it's weird. Somebody needs to use https://github.com/marketplace/actions/debugging-with-tmate to see what's happening on Windows. The vars in CI seem to suggest that stderr is incomplete or something. Can it be some output buffering specific to windows? Do we need PYTHONUNBUFFERED=1 in tests?

@chrysle could you try rebasing?

Closed+reopened to re-trigger the CI as the logs got stale and garbage-collected.

Of course there are still the failing Windows tests

Interestingly, the “previous” tests pass, even on Windows. But the “latest” crash all over the place because of the relative vs. absolute path differences. “main” fails as well.
“previous” is set to pip==22.2.* currently.
Honestly, I'm leaning towards making the tests more stable by pinning pip in regular push/PR runs and only having it hit newer versions in nightlies...

I've converted this to draft to prevent accidental merging ahead of time. I'll undraft it once I'm done experimenting.

UPD: it looks like pyproject.toml stubs in the tests that don't have a [build-system] section cause build to crash on Windows trying to access the setuptools.build_meta:__legacy__ fallback.

Oh, it looks like specifying it manually makes another module non-importable: out.stderr="Backend 'setuptools.build_meta' is not available.\nFailed to parse C:\\Users\\runneradmin\\AppData\\Local\\Temp\\pytest-of-unknown\\pytest-0\\popen-gw2\\test_compile_build_targets_set0\\pyproject.toml\n". So that ain't it.
I bet there's some escaping issue with Windows paths and/or PYTHONPATH etc.

(documenting the troubleshooting env setup procedure)
Here's what I do upon connection to the windows job over tmate (== tmux over SSH):
.tox/piplatest-coverage/Scripts/pip install -e .
.tox/piplatest-coverage/Scripts/pytest --no-cov -n0 -svvvvv -l tests/test_cli_compile.py::test_compile_build_targets_setuptools_no_wheel_dep
.tox/piplatest-coverage/Scripts/pip-compile.exe --build-deps-for wheel C:/msys64/tmp/pytest-of-runneradmin/pytest-0/test_compile_build_targets_set0/pyproject.toml --output-file - -vvvvvv

This lets me populate the temporary files for inspection (the pytest command). It also allows me to edit files in-place (Ctrl+b c to create a new tmux tab; Ctrl+b n / Ctrl+b p / Ctrl+b 1 / Ctrl+b 2 to switch tabs) and rerun pytest or pip-compile directly.
Editing files is done via nano since vim does not play well with that windows/cygwin env, I haven't checked why.
Scrolling the terminal output: Ctrl+b PgUp.

.tox/piplatest-coverage/Scripts/pip-compile.exe --build-deps-for wheel C:/msys64/tmp/pytest-of-runneradmin/pytest-0/test_compile_build_targets_set0/pyproject.toml --output-file - -vvvvvv

Better repro without running pytest upfront:
$ .tox/piplatest-coverage/Scripts/pip-compile.exe --build-deps-for wheel tests/test_data/packages/small_fake_with_pyproject/pyproject.toml --output-file - -vvvvvv

I verified that setting the PIP_CONSTRAINT env var is exactly what breaks on Windows. Commenting it out makes the command pass.

# test-venv/Scripts/pip-compile --build-deps-for wheel tests/test_data/packages/small_fake_with_pyproject/pyproject.toml --output-file - -vvvvvv
Using pip-tools configuration defaults found in 'pyproject.toml'.
Creating isolated environment: venv+pip...
tmpfile.name='C:\\msys64\\tmp\\tmpti95poux'
Installing packages in isolated environment:
- setuptools < 70
Getting metadata for wheel...
Backend 'setuptools.build_meta' is not available.
Failed to parse D:\a\pip-tools\pip-tools\tests\test_data\packages\small_fake_with_pyproject\pyproject.toml

I wonder if reversing the slashes is needed or something.

Ah-ha!
I think I understand what's happening now! The temporary file is open and flushed, but the file descriptor remains open, which on Windows prevents other processes from accessing it. So when we call build, it calls pip install that sees PIP_CONSTRAINT, attempts to open it, and likely fails to install the build deps because of permission denied.
It seems like calling .close() upon .flush() (or should it be instead, even?) makes it accessible. We just have to use delete_on_close=False so that .close() does not also remove the file from disk right away. With delete=True (which is the default), the CM will clean it up on exit.
Some of this is mentioned @ https://docs.python.org/3/library/tempfile.html#tempfile.NamedTemporaryFile

Urgh.. looks like delete_on_close got introduced in Python 3.12. At least I now have an idea of a workaround. Will try to complete this PR today.


draft: remove dependency on pyobjc and pyobjc-framework-metal and pyobjc-framework-libdispatch

Roadmap:

[x] make a pyobjc like bridge
[x] autogen_stubs for objc runtime (& libdispatch?)
[x] replace manual objc runtime c bindings with autogened
[x] pass tests without use after free and auto free/release on gc
[ ] figure out release on gc (__del__) slowness when JIT != 2 (related to metal graph)

Open for comments

JIT=2 fixes the slowness when releasing on gc

Closing this because it's not the right approach. Should create static bindings. If I have the motivation to work on it I'll try again.


Fallback to previous render

This might not be something this library can handle but I would appreciate any advice. I'm hoping to fallback to the previously rendered HTML rather than a fallback component, basically doing nothing until the async code has completed.
I realize React 18 has startTransition which can wait for the state to load, but it involves calling setState and starting a new render, which adds a frame to the rendering process as far as I am aware. I want to pause the rendering until the async code is complete, then finish it, without flickering to a fallback component.
For some more context, I have a webworker operation that runs a bunch of calculations in parallel in response to user input. It only takes 2-3ms, so I want to just pause the rendering and wait for this to complete. If I do the calculations with useLayoutEffect and setState, I will end up waiting for react to render the next frame which adds additional lag.

you can do that with starttransition. for instance here https://twitter.com/0xca0a/status/1350214749296996353 i use it to retain the current state. it's still interactive because i wanted it like that, i only show "pending" in the ui, but it could as well freeze the screen, how you interpret pending is up to you.


Temporal Table drop is failing in Schema Compare Apply

Azure Data Studio Version:

Steps to Reproduce:

Compare a schema with temporal table to one without it
try to genrate script or apply
the oder of drop steps seems to be

remove sys versioning
dop anything depepndent on the table
drop the table

order should be

dop anything depepndent on the table
remove sys versioning
drop the table

The current order is causing script to fail. Seems like a dacfx fix for similar temporal issue uncovered this new flow issue.
use the attached dacpac (deploy to a db) as target and empty db as source
MyDemoProjectTest.zip

@udeeshagautam @ssreerama moving this to May release to give more time for this to be fixed in DacFx since code complete for April release is tomorrow

Sure that would be good. Also, this has been completed and merged to the DacFx Dev :)

fixed by https://github.com/microsoft/azuredatastudio/pull/15344


Redis Scaling Issue with Redisson Client

We are running a delayed queue in redis using redisson client. We are using a t3.small elastcache instance and our application has redisson version 3.23.5 with Spring boot 3.x and Java 17.
We are not setting any TTL for our records. Our records go to a blocking queue once its delay period is over. We are seeing high CPU spikes when there is increase in traffic to Redis. How can we mitigate this?
I tried using replicas and clustered mode but apparently they are not working here.
My redis config-
`CommandsLoadBalancer loadBalancer = new CommandsLoadBalancer();
loadBalancer.setAddress("redis://test-0001-002.qqqq.0001.aps1.cache.amazonaws.com:6379");
loadBalancer.setCommands(
List.of(RedisCommands.READONLY.getName(), RedisCommands.LPOP.getName(), RedisCommands.BLPOP_VALUE.getName()));
redisConfig
.useClusterServers()
.setScanInterval(2000)
.setConnectTimeout(5000)
.setIdleConnectionTimeout(5000)
.setTimeout(10000)
.setFailedSlaveReconnectionInterval(1000)
.setRetryAttempts(5)
.setRetryInterval(2000)
.setLoadBalancer(loadBalancer)
//        .setLoadBalancer(new WeightedRoundRobinBalancer())
.setReadMode(ReadMode.SLAVE)
.addNodeAddress("redis://test-0001-001.qqqq.0001.aps1.cache.amazonaws.com:6379")
.addNodeAddress("redis://test-0001-002.qqqq.0001.aps1.cache.amazonaws.com:6379");
redisConfig
    .setTransportMode(TransportMode.NIO)
    .setThreads(64)
    .setNettyThreads(128);
return Redisson.create(redisConfig);`

My redis code-
`public TestRedisDelay(RedissonClient managedClient, String queuePrefix, ObjectMapper objectMapper) {
this.destinationQueue = managedClient.getBlockingQueue(queuePrefix + "test");
this.delayedQueue = managedClient.getDelayedQueue(this.destinationQueue);
this.objectMapper = objectMapper;

}
public void pushToDelayedQueue(TestRequest testRequest) {
try {
String jsonTestRequest = objectMapper.writeValueAsString(testRequest);
this.delayedQueue.offer(jsonTestRequest, 5L, TimeUnit.MINUTES);
} catch (Exception e) {
log.error("ERR_CONVERTING_TO_JSON_NODE :: {} :: REQ- {}", e.getMessage(), testRequest);
}
}
public TestRequest fetchRequests() {
TestRequest testRequest = null;
try {
String revampedQueueRequest = destinationQueue.poll();
if(!Strings.isEmpty(revampedQueueRequest)) {
testRequest = objectMapper.readValue(revampedQueueRequest, TestRequest.class);
}
} catch (Exception e) {
log.error("ERR_FETCHING FROM QUEUE :: {}", e.getMessage());
}
return testRequest;

}`
Can someone please suggest anything?

CommandsLoadBalancer won't help here since LPOP and BLPOP_VALUE commands are always executed on master.

@mrniko
As far as I have read and understood, redis delayed queues are internally created as a sorted set and list. And the sorted set always lies on only one shard. So how will horizontal scaling ie, adding more shards/master nodes help here?
Or is there any other way to add more master nodes in a single shard only?

So how will horizontal scaling ie, adding more shards/master nodes help here?

Yes.


updated COMPONENT_VERSION file for release-2.8

Signed-off-by: dislbenn<EMAIL_ADDRESS>Related Issue:  stolostron/backlog#<ISSUE_NUMBER>
Description of Changes:
What resource is being added:  | N/A
Is this a Hub or Managed cluster change?:
Hub Cluster | Managed Cluster | N/A
Notes:

/hold

/unhold


Separate 'source' and 'sourceGlob'

It might be helpful to differentiate between single file sources, folder sources, and glob sources for transforms.

This isn't necessary and might actually be more confusing.


WIP Add liberapay logo

Add optional logo for Liberapay badges.
Part of https://github.com/liberapay/liberapay.com/issues/1103.

Messages

:book:

:sparkles: Thanks for your contribution to Shields, @mattbk!

:book:

:art: Thanks for submitting a logo. Please ensure your contribution follows our guidance for logo submissions.

  Generated by :no_entry_sign: dangerJS

Thanks for submitting this PR!
👍
Could you remove the extra background elements from the 2nd and 3rd logos,
And also run them through something like svgomg.
I'm not sure how we would be wanting to go about merging multiple logos variants, maybe @paulmelnikow has some ideas about this?
On that note though, i would be fine with just merging the 3rd logo for now () until we get more info on adding the extra variants:
(liberapay3.svg → liberapay.svg) Could either update this PR or open a secondary PR
Examples:
Logo1:

Logo2:

Logo3:

It's a work in progress. I'm running the variants by people at https://github.com/liberapay/liberapay.com/issues/1103 and don't need review yet.

SVG has been optimized and variants removed. Ready for review.

Thanks for the changes,
Logo looks good to me:

Merged!
👍

@mattbk big thank you! do you know how long it usually takes until these badges are online?

do you know how long it usually takes until these badges are online?

Quoting @paulmelnikow:

Deploys usually happen every 1–3 weeks. Thaddée [@espadrine], who has limited time on this project, is the only sysadmin. He's working on giving me access to deploy and logs, but doing so is complicated because the hosting account (and maybe the servers too) are shared with other services he runs.


Use correct build constraints for listen_*.go files

unix.SO_REUSEPORT isn't defined for solaris (or some other non-windows platforms).
The format for build constraints is confusing IMHO, but I'm pretty certain these are correct [ref].
I've confirmed this now builds for solaris/amd64 (cross-compiled from linux/amd64).
This fixes #747.

Codecov Report

Merging #750 into master will decrease coverage by 0.04%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #750      +/-   ##
==========================================
- Coverage   56.18%   56.14%   -0.05%
==========================================
  Files          41       41
  Lines       10796    10796
==========================================
- Hits         6066     6061       -5
- Misses       3643     3647       +4
- Partials     1087     1088       +1

Impacted Files
Coverage Δ

listen_go111.go
77.77% <ø> (ø)
:arrow_up:

listen_go_not111.go
66.66% <ø> (ø)
:arrow_up:

msg.go
77.77% <0%> (-0.63%)
:arrow_down:

server.go
67.65% <0%> (-0.23%)
:arrow_down:

Continue to review full report at Codecov.

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


Use a package.json repository field formatted for npmjs.com

R: @gauntface
https://www.npmjs.com/package/npm-publish-scripts has a broken link to the GitHub repo:

This updates the field to use a shorthand notation that displays nicely on npmjs.com.

That is so weird- could have sworn npm init made it.


please help me to get your lib working on my machine

Hi there!
I've successfully tried the sample from your README.md, but so far I've failed to get the sample loading images from files to work.
I've managed to setup a new rust project with the code from your examples/subimage-finder.rs and make it compile, but with both the default backend ("RuntimeDetectedSimd") and the "scalar" one it never finishes running or produces any output (passed ferris.png and ferris_eyes.png from your README.md in as parameters)
I've tried to also setup the opencv backend, but with that feature enabled, the rust compiler fails:
thread 'main' panicked at 'a `libclang` shared library is not loaded on this thread', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/clang-sys-1.4.0/src/lib.rs:1731:1

Ah, I'm not 100% sure how I solved it, but now it works with opencv:
cargo run -- -backend opencv media/ferris.png media/ferris_eyes.png
   Compiling rust-ocr-playground v0.1.0 (/home/user/Development/rust-ocr-playground)
    Finished dev [unoptimized + debuginfo] target(s) in 4.17s
     Running `target/debug/rust-ocr-playground -backend opencv media/ferris.png media/ferris_eyes.png`
results: [(476, 377, 0.0)]
results_as_grayscale: [(476, 377, 0.0)]

But the other backends just make completely lock one CPU core on 100% and never output anything:
cargo run -- media/ferris.png media/ferris_eyes.png
    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
     Running `target/debug/rust-ocr-playground media/ferris.png media/ferris_eyes.png`


Being able to cancel backdrop filters

backdrop-filter: none; returns a empty list.
An empty list or some non blur filters should be able to remove the previous filter

Nice catch... thanks!


Detect v1.0-draft

Please detect the version v1.0-draft for testing against the draft spec that we are collaborating on, instead of v0.3.
Please synch with recent updates from the source and re-open the PR https://github.com/reconciliation-api/testbench/pull/74 from our main branch.
Related issue in Reconciliation Server: https://github.com/culturecreates/artsdata-reconciliation/issues/16

@AbhishekPAnil Can you check why this is not working for me? Is it a problem with the Artsdata Reconciliation service, or the test bench?

@AbhishekPAnil Can you check why this is not working for me? Is it a problem with the Artsdata Reconciliation service, or the test bench? Perhaps the test bench needs to be deployed to our github page.

You are right.It needs to deployed after the merge.I have deployed .Please check again.
If you face any ssl issue from BE,please open this link https://<IP_ADDRESS>/api and try again in the test bench.Thanks!.


Circe support

Added a little helper to make getting the Json content as bytes easier.
Essentially, convert:
domain.asJson.toString.getBytes

to
domain.asJsonBytes

Feel free to ignore if this doesn't add much value.

Sanj, in a work project I'd definitely use this.
But here I want to keep the domain.asJson.toString.getBytes to illustrate the layering of the app, since that's one of my "modes"


VS2019 Preview 2 - Loads a Blank Solution

I've followed these steps, and when I open the solution, it's empty.  The Solution Explorer shows: "Solution 'BlazorDemo' (0 of 0 projects)".  When I browse to the file system manually it appears the project template did in fact create all the intended artifacts, including 'BlazorDemo.Client', 'BlazorDemo.Server', and 'BlazorDemo.Shared' folders, along with the 'BlazorDemo.sln' file.

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

ID: c07e57dc-526f-9479-4695-de7d8f06eb9a
Version Independent ID: 8226ed72-69b2-3c93-a931-218bd11cf9c8
Content: Get started with Blazor
Content Source: aspnetcore/blazor/get-started.md
Product: aspnet-core
Technology: aspnetcore-blazor
GitHub Login: @guardrex
Microsoft Alias: riande

I don't repro that here, but I'm not on the preview release. I'm on VS2019 v16.0.2.

You may have run into a point-in-time problem with the preview release of VS. The best way to provide feedback about it is by using the Help > Send Feedback > Report a Problem process from within Visual Studio ... that feedback goes directly to the engineering team that handles Visual Studio.
As a temporary workaround, you could open the client project (via its project file), add the server and shared projects (via their project files), and then create the solution that way.
cc: @danroth27

Closing since this appears to be a product issue, not an issue with the documentation.


Transposing MODIS data introduces data artifacts

Dear developers,
thanks for this great package! I've been trying to work with MODIS MOD13Q1 data and ran into some inconsistencies when trying to mask values based on the quality band when transposing the data. This is my first time posting here, so I hope I'm following all guidelines!
It seems when loading the original MODIS data, the longitude and latitude variable are switched, so I transposed them. However, this leads to unexpected results when computing masks.
#Set dates
start_date = ee.Date.fromYMD(2001, 1, 1)
end_date = ee.Date.fromYMD(2024, 1, 1)

#Load MODIS NDVI data
ds = ee.ImageCollection("MODIS/061/MOD13Q1").filterDate(start_date, end_date)
dx = xr.open_dataset(ds, engine = "ee", crs = "EPSG:4326")
dt = dx.transpose('time','lat','lon')

Transposing the values introduces more of the shading artifacts already mentioned in #119.
#Plot transposed and original Summary QA bands

fig, ax = plt.subplots(1, 2, figsize = (8, 4))
dx.SummaryQA[0].plot(ax = ax[0])
ax[0].set_title("not transposed, full filter, then first timestep", fontsize = 8)
ax[0].set_xlim([-90, 90])
dt.SummaryQA[0].plot(ax = ax[1])
ax[1].set_title("not transposed, filter on first time step", fontsize = 8)
plt.tight_layout()

This leads to further issues when conducting masking. In the first case, I filtered the data for all time steps and then took the first time slice, and in the second case I computed the filter only on the first time slice. Theoretically, these should be the same, and they are in case of the non-transposed data (first row of the plots below), but not for the transposed data (second row).
#Do masking on full global data

fig, ax = plt.subplots(2, 2)
dx.SummaryQA.isin([0,1])[0].plot(ax = ax[0, 0])
ax[0,0].set_title("not transposed, full filter, then first timestep", fontsize = 8)
dx.SummaryQA[0].isin([0, 1]).plot(ax = ax[0, 1])
ax[0,1].set_title("not transposed, filter on first time step", fontsize = 8)
dt.SummaryQA.isin([0,1])[0].plot(ax = ax[1, 0])
ax[1,0].set_title("transposed, full filter, then first time step", fontsize = 8)
dt.SummaryQA[0].isin([0, 1]).plot(ax = ax[1, 1])
ax[1,1].set_title("transposed, filter on first time step", fontsize = 8)
plt.tight_layout()

This issue somehow gets worse when looking only at a subarea.
#Masking on subarea

dxa = dx.sel(lon = slice(-100, -30), lat = slice(9, -40))
dta = dt.sel(lon = slice(-100, -30), lat = slice(9, -40))

#Plot masks on subarea

fig, ax = plt.subplots(2, 2)
dxa.SummaryQA.isin([0,1])[0].plot(ax = ax[0, 0])
ax[0,0].set_title("not transposed, full filter, then first timestep", fontsize = 8)
dxa.SummaryQA[0].isin([0, 1]).plot(ax = ax[0, 1])
ax[0,1].set_title("not transposed, filter on first time step", fontsize = 8)
dta.SummaryQA.isin([0,1])[0].plot(ax = ax[1, 0])
ax[1,0].set_title("transposed, full filter, then first time step", fontsize = 8)
dta.SummaryQA[0].isin([0, 1]).plot(ax = ax[1, 1])
ax[1,1].set_title("transposed, filter on first time step", fontsize = 8)
plt.tight_layout()

Bottom left is the mask when transposing, then filtering on all values and taking the first time slice. It should look like the bottom right plot and seems to have some of the correct features (e.g. that little bump), but most values are incorrectly assigned.
My guess was that this has something to do with both the shading issue mentioned in #119 and some other artefacts introduced by the transposing.

Sounds like this is related to #119. We're looking into it.

Marking this a duplicate of #171.


Add  insecure_skip_verify config into prometheus.yml

Proposal
Hello, everyone. I have a little problem related to the default prometheus.yml config file. Our microservices are running with HTTPS on the Kubernetes cluster. When I deploy prometheus-server with Helm, "prometheus-server" configmap is generated automatically. But...Every time I must add the following config to "job_name: kubernetes-pods" section in ConfigMap:
tls_config:
insecure_skip_verify: true
If I don't add this config, prometheus-server can't retrieve the metrics of HTTPS microservices. In this case, I can overwrite all default prometheus.yml configs on values.yml when releasing Helm. But I don't want to overwrite all configs on prometheus.yml. I just need to add "insecure_skip_verify". Could you please help with this issue?

Hello,
I don't think it's a good idea, security wise, to make insecure_skip_verify a global config field in Prometheus.
You should be able to customize insecure_skip_verify for that specific job via the values file, if not you'll need to directly check with the Helm chart's maintainers (on the chart's repo).
To avoid setting insecure_skip_verify: false you can provide a CA to prometheus so it case validate the target's certificate against it.
See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#tls_config
For such usage queries, I recommend using slack, for more efficient and prompt interaction.

Let's close this, see reasons above.


[DO NOT MERGE] SEO edits training-microsoft-teams-landing-page

SEO edits to the description to add a keyword. Edit to the body adding a sentence to include important keywords.
@DaniHalfin

I'm reviewing. Thanks.

@JohanFreelancer9 Copy editing is needed for this PR. Thanks.

@DaniHalfin Hi! Is this PR going to be closed? Thanks!


How to use com-rs?

I have pulled the repository and started build using
cargo build --all-targets --all-features --release
and it has created a directory called ..\target\release\deps
In my project I have inserted these two lines at the top,
use com::run_time::{create_instance, init_runtime};
init_runtime().expect("Failed to initialize COM Library");
and ran
rustc my_prog.rs --extern com=libcom-*.rlib
Compiler error:
init_runtime().expect("Failed to initialize COM Library");
|             ^ expected one of ! or ::
Sorry, I lack the start and any help will be much appreciated.

Hello! It seems you're missing a main function in your project. If you're new to Rust, COM might be a poor place to learn the language. I would suggest giving The Rust Programming Language book a read, and when you've done that, checking out the examples in the examples folder of this repo.

@rylev Are the examples up to date? I have bunch of errors, mainly could not find class in com (but interfaces macro of the same origin works good). Maybe some simple standalone example would help, please.


Add action to the command palette to re-index a project

https://github.com/swiftlang/sourcekit-lsp/pull/1507 added a workspace/triggerReindex request to SourceKit-LSP, which re-indexes a project in SourceKit-LSP if background indexing is enabled.
The request is not intended to be something that users invoke regularly but it is useful as a workaround should SourceKit-LSP’s index up-to-date tracker get out of sync with the project state (which we know can happen in some situations like https://github.com/apple/sourcekit-lsp/issues/1264). The workflow should thus be as follow:

The command palette has a SourceKit-LSP: Re-index project item
When it is selected, the workspace/triggerReindex is sent to the SourceKit-LSP server.
If a methodNotFound error (error code -32601) is returned, a custom error message should be displayed in VS Code that says that says: The installed version of SourceKit-LSP does not support background indexing. If any other error is returned, that error should be displayed as a popup.
If the request succeeds, a popup should be displayed saying something like: Re-indexing a project should never be necessary and indicates a bug in SourceKit-LSP. Please file an issue at https://github.com/swiftlang/sourcekit-lsp/issues/new describing which symbol was out-of-date and how you got into the state. If the user chooses to file an issue, we should enter the workflow to create a diagnose bundle.

Implemented by https://github.com/swiftlang/vscode-swift/pull/964


[Question] What are the dimensional limits of the Infusion Altar - Stability Check.

I've been wondering, ever since TC4, the altar's range for detecting stabilizing objects has changed, items considered as stabilizing has changed and etc. My question here is, at how much blocks of Distance Above, Under and on the sides of the Infusion Matrix do I have on TC6? I would like to avoid having unnecessary items within it's range and add stabilizing items accordingly.
https://www.reddit.com/r/feedthebeast/comments/1z57dg/want_to_know_how_thaumcraft_infusion_symmetry_is/?st=jh973s96&sh=efc72089
This link is the closest I got from an anwser, but it uses TC4's maths. I'd like to make sure it's still the same.

A way to find a similar answer would be this: on a creative world, move arcane pedistals slosly away from the altar and run a test infusion. In theory, if a pedistal is in range, stabilizers should be in range.


fix a reference error.

http:// prefix missed in the reference url for deprecated in C++14, so the redirection is wrong and it will lead to 404.

Good stuff in here, but:

There's too much in this one PR. Each separate issue should be a separate PR.
I appreciate the effort in fixing the build, but I think a better solution is for us to not build against LLVM's trunk, but instead use a specific tagged version. This should make CI more stable.

As far as supporting libc++'s experimental::filesystem implementation, I'll wait until the release of LLVM 3.9.0 before diving too deep into that.
3. I'm not sure I fully understand the bugfix in the last commit. Can you make a separate PR that describes the bug (with reproduction instructions) along with your fix? (Make sure you follow the style guide, too: I'm seeing tabs.)
The fix for STYLE.md is fine, though, so I've cherry-picked that into the develop branch as a58978e4ae7eefe8d21c6c0fd76804dc4dd2ca11.

@skystrife  I'm so sorry that I have do so many commit in one PR, but all commit except the first one is try to fix the build for supporting libc++'s experimental::filesystem.
The last commit is also a bug fix for supporting libc++'s experimental::filesystem. I test the experimental::filesystem feature on my Ubuntu by using the following code which is modified from here:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;

int main()
{
    //fs::create_directory("sandbox/1/2/a"); //This will throw std::experimental::filesystem::v1::filesystem_error if the parent directory `sandbox/1/2` is not exists.
    fs::create_directories("sandbox/1/2/a");
    //std::cout << std::boolalpha << fs::create_directories("sandbox/1/2/a") << std::endl; // It will return false if the directory `sandbox/1/2/a` exists already.
    fs::remove_all("sandbox");
}

So

The modification in src/io/filesystem.cpp is trying to use make_directories instead of make_directory to avoid the std::experimental::filesystem::v1::filesystem_error if the input directory is a subdir of a nonexistent directory.
The modification in src/index/forward_index.cpp and src/index/inverted_index.cpp means that, if the index directory is already exists, the exception throw exception{"Unable to create index directory: " + index_name()}; is misleading, and the function is to create index, I think the index directory should not exists before trying to create directory, so I try to delete the index directory if it's already exists.

If you want to support libc++ experimental::filesystem implementation until the release of LLVM 3.9.0, the other commits will be useless, and hope it will give you some help when you want to support libc++ experimental::filesystem implementation, but if you would like to accept what I have done on experimental::filesystem, please let me know and I will try to do another PR.
Thanks a lot for accepting my PR and hope my poor english will not bother you so much.


Opening the current workspace settings via the explorer should open the settings editor

#16530

VSCode Version: Code - Insiders 1.8.0-insider (c425cd159bd389844e9400be801675f54f2443c7, 2016-12-06T17:07:24.668Z)
OS Version: Linux x64 4.8.0-28-generic
Extensions:

Extension
Author
Version

EditorConfig
EditorConfig
0.3.4

lorem-ipsum
Tyriar
1.0.0

sort-lines
Tyriar
1.1.0

theme-glacier
Tyriar
0.0.10

vscode-svgviewer
cssho
1.2.0

vscode-eslint
dbaeumer
1.1.0

tslint
eg2
0.7.1

git-project-manager
felipecaputo
1.0.0

Theme-Wombat
gerane
0.0.2

md-navigate
jrieken
0.0.1

vscode-scss
mrmlnc
0.6.0

csharp
ms-vscode
1.5.3

typescript-javascript-grammar
ms-vscode
0.0.10

sass-indented
robinbentley
1.2.1

dark-plus-material
vangware
0.1.4

Steps to Reproduce:

Open vscode repository
Open .vscode/settings.json in editor, notice just the file shows
Open workspace settings via command palette, notice the regular .vscode/settings.json editor is replaced by the proper settings editor.

I will disagree to open special settings editor when clicking on settings file. Clicking on settings file should open the file as is.


Enabling PrivateJet Mode to Deploy APIs: Correcting service account name

Purpose

Correcting the SA name refers in the clusterRoleBinding

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


v1.14 Backports 2024-12-09

[x] #36318 (@giorio94)

Once this PR is merged, a GitHub action will update the labels of these PRs:
 36318

/test-backport-1.14


UML-927 Added a triage page on actor side - WIP

Purpose
https://opgtransform.atlassian.net/browse/UML-927
Fixes UML-927
Approach

Added a twig template for the triage page
Added handler
Corrected back links
start page is redundant now
Adding tests - wip

Learning
Any tips and tricks, blog posts or tools which helped you. Plus anything notable you've discovered about the Refunds service
Checklist

[ ] I have performed a self-review of my own code
[ ] I have added relevant logging with appropriate levels to my code
[ ] I have updated documentation (Confluence/GitHub wiki/tech debt doc) where relevant
[ ] I have added tests to prove my work
[ ] The product team have tested these changes

Coverage decreased (-0.1%) to 81.459% when pulling b64e799f5bfa484cd52fa9310924c5125309f825 on UML-927-triage-page into 099f064345c3a169ada465afae323adcdade1437 on master.

triage handler needs the @codeCoverageIgnore  annotation in place if we have Behat tests in place covering the page.

Triage Form needs test in place.


Automated cherry pick of #11279: fix(region): avoid deadlock when resize disk

Cherry pick of #11279 on release/3.6.
#11279: fix(region): avoid deadlock when resize disk

Codecov Report

Merging #11282 (63f1c98) into release/3.6 (b9d30c0) will increase coverage by 2.07%.
The diff coverage is 4.00%.

@@               Coverage Diff                @@
##           release/3.6   #11282       +/-   ##
================================================
+ Coverage         5.86%    7.94%    +2.07%
================================================
  Files              828      107      -721
  Lines           129133    13240   -115893
================================================
- Hits              7577     1052     -6525
+ Misses          120876    12068   -108808
+ Partials           680      120      -560

Flag
Coverage Δ

aFlag
7.94% <4.00%> (+2.07%)
:arrow_up:

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

Impacted Files
Coverage Δ

pkg/apigateway/handler/auth.go
0.00% <0.00%> (ø)

pkg/apigateway/handler/auth_totp.go
0.00% <0.00%> (ø)

pkg/apigateway/handler/idp.go
1.84% <0.00%> (ø)

pkg/apigateway/handler/misc.go
0.00% <0.00%> (ø)

pkg/apigateway/handler/resource.go
0.00% <0.00%> (ø)

pkg/baremetal/cronjobs.go
0.00% <0.00%> (ø)

pkg/baremetal/manager.go
0.49% <0.00%> (-0.01%)
:arrow_down:

pkg/cloudcommon/db/lockman/inmemory.go
64.55% <20.00%> (+0.08%)
:arrow_up:

pkg/monitor/alerting/eval_context.go
34.25% <0.00%> (-3.89%)
:arrow_down:

pkg/util/imagetools/imagetools.go
40.50% <0.00%> (-2.74%)
:arrow_down:

... and 647 more

Continue to review full report at Codecov.

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