Support IPv6 on C1

Actually, the C1 servers are lacking from native IPv6 support due to hardware limitations.
We are working on workarounds to get this fixed on C1 and we should support it natively in newer generations of the hardware.
This issue will stay open if anybody have suggestions, use cases or feedbacks, so we can get this feature more quickly.

This doesn't really make sense. Maybe the network infrastructure has some restrictions, but the servers themselves? The hardware receives and sends ethernet frames, a layer below IP.
Can you describe those alleged limitations?

The hardware limitation is not on the C1 node itself but on the blade containing the C1 servers, look at this: https://www.scaleway.com/features/, the first photo shows a blade with 18 C1 nodes.
The blade handles the power usage, serial but also the network between the node and the big backbones
Today we have a limitation on the blade and are working to get this fixed.
As soon as the blade and the rest of our network will forward, filter and shape the IPv6 network, you will be able to manually configure the IPv6 address on your node, then we will still need to support DHCP or a script to automatically configure your nodes if possible
Please, stay tuned to this thread as we will update it progressively, so you can try and give us feedbacks

Thanks for the information, it makes more sense now. :)
I assume the deployment will be similar to online.net's servers where you can request a prefix delegation via DHCPv6-PD then. That is a reasonable solution. Can you share more details about the upcoming IPv6 deployment? E.g. what kind (length) of prefixes can we get delegated?
If you have some kind of beta of the IPv6 support, I'd be willing to test as well.

Update: I managed to get IPv6 working between two nodes:
root@distracted-wright:~# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 532
    link/ether 00:07:cb:03:0a:dc brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/23 brd <IP_ADDRESS> scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2::6/64 scope global
       valid_lft forever preferred_lft forever
root@distracted-wright:~# ip -6 neigh show dev eth0
2::4 lladdr 00:07:cb:03:0a:e8 REACHABLE
root@distracted-wright:~# ping6 -I -c 2 eth0 2::4
PING 2::4(2::4) from 2::6 eth0: 56 data bytes
64 bytes from 2::4: icmp_seq=1 ttl=64 time=1.19 ms
64 bytes from 2::4: icmp_seq=2 ttl=64 time=1.20 ms
--- 2::4 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.194/1.197/1.200/0.003 ms
root@distracted-wright:~#

However, I needed to disable some filtering options from the blade, the hardware team is working on a patch

Looks good. Like I stated in the community thread, even simple local IPv6 connectivity would be quite helpful for me already.

I would be also interested in testing beta Ipv6

The kernel configuration need to be updated with that :
CONFIG_NF_CONNTRACK_IPV6=y

@moul, is there any progress with IPv6 on the C1 hardware?

@grigorig we are waiting for the hardware team to release a new software version with ipv6 filtering support
In the meantime, we are preparing our infrastructure, so you should get full ipv6 support (not only local one)
I will update the ticket as soon as we have this feature in beta :)

Why don't you run some 6in4 gateways/tunnel servers on hardware connected to the scaleway network in the meant time for people who want IPv6 NOW?
I mean come on you are a major datacentre I'm sure finding a few servers for that wouldn't be a problem ;-)
If they're on your network they could be reachable from the private IPv4 ranges as well saving on public IP's.

@moul Hi. Is there any ETA yet for native IPv6 support ion C1? Could we try the alpha or the beta?

What they need to do is 4in6 not 6in4 if they have a native IPv6 network which they should

and that requires something called 4rd RFC7600

Native IPV6 support is now available for C2 servers and VPS offers

Unfortunately, the way you implemented IPv6 on C2/VPS is the best example of how not do it I have seen yet. And it's off topic here, too.

@grigorig Hi. Could you argue to better understand your point?

@HLFH sure.
Each server just gets a single IPv6 address in a /127 subnet. The recommendation is to allocate at least a /64 per node, so that's really bad and precludes all of the use cases that are possible with the big address space of IPv6. Furthermore, it looks like a /64 prefix is shared among multiple customers. Since /64 is considered the smallest prefix given to an end node, any IP based blocking in IPv6 land is usually done with the granularity of at least /64. So if one Scaleway customer does something bad and gets blocked somewhere, many are affected.

I agree with @grigorig

@moul Hi. I'm asking if IPv6 reverse DNS delegation is supported? On Online.net, it could work. Does that work too on Scaleway?

@grigorig, @meyskens,
You missed that this is the first step of our IPv6 deployment. We're announcing IPv6 connectivity and as stated, not a full flexible implementation.
To route a /64 on a node, you first need an IPv6 connectivity. ;)
These IPv6 are assigned to nodes and not to customers, there is no reverse DNS delegation on the nodes IPs.
Stay tuned.

OK then. But this is barely usable, there isn't really much point to releasing IPv6 support in such an unfinished state.
Also, can you give any statement about IPv6 support on C1?

Hey, this issue is marked as "help wanted".  What help do you need to get this working on C1?

I am very interested in using your C1 servers, but without IPv6 connectivity with at least /64 allocations, it's not usable to me. Has there been any update @moul?

I also have a C1, and was wondering in what state it is now

FWIW, I deleted my scaleway account yesterday, as this doesn't seem to be happening.

It's a pity, either it should be closed if not feasable or updated if there is a way to do it

@moul Still no updates to provide for the C1?

I'm migrating to VC1 which has ipv6 and same price

@moul Still no updates for the C1?

Please make it happen. I mean it's soon 2017.
Any timeline available?

I think we can close this issue with a won't-fix tag. Because it will never happen on C1.

@QuentinPerez

Any updates on this?

I think C1s are obsolete and not available anymore (except for the already existing instances, of course). As far as I understood, they were replaced with the newer ARMv8 offering - which has better performance and does support IPv6 (poorly implemented, with /127 subnets - but that's another story).

@drdaeman the c1 seems to be still available, also the arm64 offering is virtualized so not baremetal (yet, i hope)

@meyskens Ah, you're right. I was looking at AMS region and thought C1s were gone upon not seeing them listed anywhere. My bad, thanks for pointing this out.

@drdaeman I can see them being replaced by the arm64, but definitely not this year. aarch64 is even less supported than armhf (which over the past 2 years really became big). See Docker for example, they now support armhf but not aarch64.

Keep trying and failing to deploy a C1 because you're out of IPv4 addresses apparently… It's a bit of a pain having to SSH through an existing one.

So, it is possible to have proper IPv6 support on VC1S? It seems that my v6 gateway is reachable, but not my server.
root@me:/home# ip -6 neigh show dev eth0
2001:bc8:4700:2300::1:104  FAILED

It was always possible to have IPv6 support on VC1S (the VPS). This issue is about the C1 (ARM dedicated server). To solve issue with your server create a support ticket instead of spamming unrelated github issues.

Still no news about IPv6 for C1?

I would also like that on my C1 instance.
There has been no update from @moul in the last 3 years, as if they dropped the ball on this.
At the very least, give us an update, so we can know what to expect and react accordingly.


[release] Set up CI for release/0.2

AFAICT there are no PT1.12 mac-os RC binaries yet

Need to work around macos binaries until the next RC

Tests are failing, but it looks like the CI is set up correctly. Merging for now.


Use the latest fonts

Please use Segoe UI Variable (Small variant for tiny text, Text variant for normal text, Display variant for large text) and Segoe Fluent Icons, as the default Sans-Serif font and the icon font - for icons used in Visual Studio Code - respectively, in Visual Studio Code (at least on Windows 11, and maybe Windows 10).

Fonts (Official)
Fluent System Icons

Thank you.

Because VS Code is cross-platform, meaning we support Windows/Mac/Linux/Web, we can't use a single font and rely on the system fonts. In addition to that, we have our own icon system, codicons, that is based off of the Fluent icons. We also have a product icon theme, Fluent Icons, if you are interested in that.
I'll close this issue as as-designed for the reasons above. Thanks for the suggestions!

@misolori we do this today for Windows, would it make sense to prepend the variable font? https://github.com/microsoft/vscode/blob/757517485b8ea54b71d9181f2a8def7c60eeb80d/src/vs/base/browser/ui/contextview/contextview.ts#L398-L402

@sbatten we could try it out in a build, but my concern is having a font-weight clash since we don't normally define these per-font. Do you want to try this out?

Because VS Code is cross-platform, meaning we support Windows/Mac/Linux/Web, we can't use a single font and rely on the system fonts. In addition to that, we have our own icon system, codicons, that is based off of the Fluent icons. We also have a product icon theme, Fluent Icons, if you are interested in that.
I'll close this issue as as-designed for the reasons above. Thanks for the suggestions!

@misolori Ah, I'm aware of the Fluent Icons extension (and I use and love it!), but I felt the newer icons would be better built directly into VS Code - and not as an extension - as that would make it more consistent with Windows 11 (since UI consistency was kept in mind while designing the OS). And as for Segoe UI Variable, making it Windows-only (as @sbatten suggested!) would be great too.
Also, I believe codicons looks more like Segoe MDL2 Assets (mostly due to the sharp corners and the general look of the icons) than Segoe Fluent Icons (the newer, beautiful icon font by Microsoft). Could the codicons SVGs be updated with Fluent System Icon's SVGs (preferable)? Or with the Fluent Icons SVGs? This can make it usable on all platforms, though we could make this Windows-only as well. (I'm not the best at this subject but this shouldn't be a problem as the current icons are already from a Microsoft icon font, and we just have to replace the older icon font with the newer one; or we can "merge"/use the existing assets linked above (like Fluent System Icon), right?)
Thanks for taking the time to reply!

@SFM61319 I could see a future where codicons naturally evolve to be more like Fluent, but it won't ever be replaced given the specific use cases that we have and the missing icons needed.
I'll leave it up to SteVen to decide if we should adopt the variable font on Windows.

Specifying the variable fonts in the fallback list for systems that have it would be a great example of the benefits of progressive enhancement, and would have no negative impact on other systems, because of CSS’ behavior.

Investigating supporting Segoe UI Variable Small/Text/Display
Small is being used on sub 13px text.
Text is being used on 13px-20px text
Display is being used on 20px and up
Here's a small prototype to compare both in the Extensions view:
https://cloud.protopie.io/p/c7529392f3aa1fdd34160b6c
Using Segoe UI

Using Segoe UI Variable

cc @daviddossett


feat: implement writeArg method in MemorySegmentManager

Description
In the MemorySegmentManager structure, we need to implement the writArg method, responsible for loading some data as a function of the type of its argument. This method serves as a fundamental utility in managing memory segments.
Reference

Reference to the Rust implementation: https://github.com/lambdaclass/cairo-vm/blob/8887e60f7ea5459188cb6624acc908ad29e75f60/vm/src/vm/vm_memory/memory_segments.rs#L154-L167
Reference to the Python implementation: https://github.com/starkware-libs/cairo-lang/blob/ee7ce74e1159a349d4b77a5f952241b50b1692de/src/starkware/cairo/lang/vm/memory_segments.py#L180-L183

Will work on this


Discussion: Order between mouse event calls (onEnter and onExit)

The current algorithm of MouseTracker.sendMouseNotifications doesn't really guarantee an order between events (more specifically, the order between onEnter and onExit calls) that is clear or reasonable enough, which has caused some counter-intuitive cases (such as #40000).
To evaluate an alternative algorithm, the following aspects might be considered:

The order between the same kind of events from a layer and those from its descendant.
The order between the same kind of events from a layer and those from its sibling or the descendant thereof.
The order between onEnter and onExit from different layers.
Performance.

I would like an algorithm that meets the following criteria (for each pointer):

The tree is walked only once. Walking the tree is expensive.
A parent always calls onEnter before its descendants, and calls onExit after its descendants. The idea is that, since parents always contain their descendants, as a pointer moves in, it always enters the parent before the descendants, and exit the parent after the descendants.
All onExits are called before onEnters. This is to fix #40000, but honestly this is stricter than necessary, and may not produce the most intuitive result in cases of overlapping sibling layers.

To consider criteria 2, notice that in the traversing order or Layer.findAnnotations (visual order from front to back), a layer is always visually behind its descendants. Therefore we can extend criteria 2 into:
2*. onEnters are always called in reversed visual order, while onExits are always called in visual order.
By combining 2* and 3, we can come up with the following algorithm:

Walk the tree and find the list of annotations that contains the target pointer in visual order, thisAnnotations (an empty list if the pointer is disconnected).
Let prevAnnotations be the similar list during the last frame.
The list of annotations to call onExit on is prevAnnotations.toSet() - thisAnnotations.toSet(). Call each of them in order.
The list of annotations to call onEnter on is thisAnnotations.toSet() - prevAnnotations.toSet(). Call each of them in reversed order.

+cc @gspencergoog @CarlosZ
@mehmetf Does it look like compatible with the way Web works?
Also maybe interested @goderbauer

I think you meant @ferhatb :-)

@mehmetf Oops :) My apology

This seems pretty reasonable to me.

Sounds good.

@dkwingsmt Fine for web as well.

This has been implemented in #42031


chore(main): release 2.3.0

:robot: I have created a release beep boop
2.3.0 (2024-08-21)
Features

mcg24: add down and find functionality for McGraw et al. 2024 (0f497d6)

Styles

find: correct misspellings (c9340e4)

Code Refactoring

find: only chunk by time if it is a dimension (ce01dfe)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v2.3.0
:sunflower:


Investigate/add a code model to supported list

We would study the existing OSS code models and potentially add at least one as supported model.


Parallelize over n data splits for same parameters

Hey guys,
I'm doing 1 Osprey worker / model (n=10) right now and it takes between 5 minutes - 2.5 hours to complete a worker. So it would be nice to be able to parallelize not only over parameter choices, but also over the n data splits.
Chatted with @cxhernandez about this - he pointed out this just needs the n_jobs in https://github.com/msmbuilder/osprey/blob/master/osprey/fit_estimator.py#L22 exposed.

Wont this cause horrific clashes if you have more than one worker running at the same time?

Sure, but the default can be 1. We can also warn about this in the documentation.

Wont this cause horrific clashes if you have more than one worker running at the same time?

What clashes are we talking about here? Running many workers is what I'm planning to do.

If you run multiple multi-threaded workers naively on a single node, you can easily make your jobs more inefficient than a single worker on a single thread.

done in #231!


Bugfix for stale keys

Fix logic that was incorrectly filtering some users and not including others
Security considerations
None

This is the PR associated with the fix: https://github.com/cloud-gov/cg-deploy-prometheus/pull/238


Uncaught Adapter.js is required.

Hey @muaz-khan,
I'm getting
Uncaught Adapter.js is required.

But Adapter.js is initialized as global browser object?

After checking, its related to https://github.com/muaz-khan/RTCMultiConnection/issues/442
It happens when I try to establish a connection between Chrome and Chrome Mobile.

I guess I found the issue, it's not related to the different devices. On my desktop it works, because I have straight access to the camera in Chrome (because it was enabled on beginning). The issue happens, if the camera access isn't available from the beginning on. We are using a "caller" screen. Camera access is requested when the receiver clicks on "accept". That's the reason why it's not working.
   RTCConnection.onNewParticipant = function (participantId, userPreferences) {

        // if OfferToReceiveAudio/OfferToReceiveVideo should be enabled for specific users
        userPreferences.localPeerSdpConstraints.OfferToReceiveAudio = true;
        userPreferences.localPeerSdpConstraints.OfferToReceiveVideo = true;

        userPreferences.dontAttachStream = false; // according to situation
        userPreferences.dontGetRemoteStream = false;  // according to situation

        //Only 1 connection peer user
        if (RTCConnection.getAllParticipants().length >= 1) return null;

        //Accepting now in video_call
        newCallCB(participantId,userPreferences);

    };

And if the user clicks on accept:
RTCConnection.requestMediaAccess = function() {

    RTCConnection.addStream({video:true,audio:true});
    RTCConnection.renegotiate();
};

But this isn't working anymore.

Ahh..finally found the issue. We called the "accept" event in the wrong order:
Wrong:
RTCConnection.acceptParticipationRequest();
RTCConnection.requestMediaAccess();

Correct:
RTCConnection.requestMediaAccess(() => {
            RTCConnection.acceptParticipationRequest();
});

But the problem is that most of the time only 1 side gets a remote stream. To fix that issue, I have to add a timeout:
RTCConnection.requestMediaAccess(() => {
        setTimeout(() => {
            RTCConnection.acceptParticipationRequest(this.participantId(), this.userPreferences());
        },5000);

    });

@muaz-khan Any idea why the timeout is required?

Sometime this error is show with me

Include  in header.
This prolem will be resolve. I think so.


[PyTorch] Branching operations

Description
This PR modifies the operation-based API (https://github.com/NVIDIA/TransformerEngine/pull/707) to support some simple branching behavior: operations can now accept extra tensor inputs and generate extra tensor outputs. This enables fusions like GEMMs with beta=1:
model = te.Sequential(
    MakeExtraOutput(),
    Linear(...),
    AddInPlace(),
)
y, linear_in = model(x, linear_out)  # GEMM with beta=1 into linear_out
...
loss.backward()  # dgrad GEMM with beta=1 into linear_in.grad

Support for multiple inputs will also be necessary for cross-attention (and SSMs?). Note that we are not planning to support more complicated structures since that will take us down the road of general graph compilers.
Type of change

[ ] Documentation change (change only to the documentation, either a fix or a new content)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Infra/Build change
[ ] Code refractor

Changes

Support extra tensor inputs and outputs in operation-based API
Operation for in-place add
Operation for making extra tensor output
Fused operations for GEMM with beta=1

Checklist:

[x] I have read and followed the contributing guidelines
[x] The functionality is complete
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

/te-ci pytorch

/te-ci pytorch

/te-ci pytorch

/te-ci pytorch

/te-ci pytorch

Could you comment on how the change from your last commit helped with the unittest failures? The change from list comprehension to the for loop should not change the behavior, right?

/te-ci pytorch


iOS support

As far as I could test, everything is working fine. I hope it can help people to port games to iOS easier :)

Thank so much for this hugh improvement!


Quick patch for debug info

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-search-documents


CORS configuration not working?

The cors configuration doesn't seem to be working as far as I can tell.
Here is the app:
https://arran4.github.io/trakt-import-github-action/
            let client = new jso.JSO({
.... // removed
                redirect_uri: "https://arran4.github.io/trakt-import-github-action/",
                token: 'https://api.trakt.tv/oauth/token',
                authorization: "https://api.trakt.tv/oauth/authorize",
                response_type: "code"
                //scopes: { request: ["authorization_code"]}
            })

            async function gettoken() {
                console.log("here")
                let token = await client.getToken()
                console.log("I got the token: ", token)
            }

            function logout() {
                client.wipeTokens()
            }

            client.callback().then(e => console.log("here2", e))
            console.log("here3", client);

And this is the error:
Access to fetch at 'https://api.trakt.tv/oauth/token' from origin 'https://arran4.github.io' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
VM221:1          POST https://api.trakt.tv/oauth/token net::ERR_FAILED 200
(anonymous) @ VM221:1
value @ jso.js:1
value @ jso.js:1
(anonymous) @ ?code=76c414f9d6e7eeeff1907325a2be2f72264774f613abc7bdbbd6108345caa013&state=88411544-eeef-4cc9-a45b-a6872be00016:29
VM221:1                  Uncaught (in promise) TypeError: Failed to fetch
    at <anonymous>:1:876
    at t.value (jso.js:1:40246)
    at t.value (jso.js:1:41442)
    at ?code=76c414f9d6e7eeeff1907325a2be2f72264774f613abc7bdbbd6108345caa013&state=88411544-eeef-4cc9-a45b-a6872be00016:29:20

Chrome version: Version 101.0.4951.54 (Official Build) (64-bit)
I am able to replicate the issue when I use the browser api mode in Apiary: https://trakt.docs.apiary.io/#introduction/terminology
Current CORS config on api app page:

Per the API docs, you should use the main Trakt website for the authorize link:
https://trakt.tv/oauth/authorize
I'm not sure that is causing the issue, but that is the first thing to check.

Did fixing the link get it working or is this still an issue?

Yeah I got it eventually. There were a couple issues. Including the one you pointed out.


[Feat] BiDi/Page implements evaluate

As part of the #9100, BiDi/Page should implement evaluate method with proper serialization / deserialization.

Is this done?

I assume so: https://github.com/puppeteer/puppeteer/blob/8acafe2fd91b70b8bbbe10467b6a0b5894b964bb/packages/puppeteer-core/src/common/bidi/Page.ts#L40


[ISV-873] The Release pipeline conditionally updates certification status

…if the indexing happens

I have pushed new changes to https://github.com/redhat-openshift-ecosystem/operator-pipelines/pull/71, which includes changes required for ISV-873. Please take a look there and confirm for me to close this PR.


Add a basic sequencer

started in 71730e4, the code for warpseq that has been added should work but we're focusing on visual feedback for now

The basic sequencer will consist of isobar iso.Psequence() that will hold values 1 for gate on and 0 for gate off. This will be advanced by the tick_callback() and will send a prebaked osc messages for both on and off events.
This sequencer needs to be connected directly to the pad state.
I want to use different sequencers for gate/pitch/accent/mute information and then assemble them later into one message myself so I can have all of those be different lengths.
It looks like we might have issues with baking the sequence index into the sequence itself but I think it's not an issue as the sequences will really only advance forwards. so simple counters should suffice

made clock faster, we could use this to get the underlying 480ppqm clock - along with previously mentioned PCurrentTime() and/or add_event_callback() this would be used to sync sequences

added a basic trigger sequencer in commit ade7b80
closing


UI Improvements

Fixed Browse route Tabs style
Fixed Snippets route Tabs style
Fixed Create route Tabs style
Fixed Search style
Add smooth transition to explore button in index page

Looks good @hassancodess
Thank you for contributing!


Build with GHC 9.2.3. Net.Mac module still broken.

Looking forward to have GHC-9.2.3 compatibility for haskell-ip!

Once new word-compat is released to hackage, I can remove the cabal.project file and merge this in and release it to hackage.


Help getting started

I dont this is the right forum to post this question, but I am really at a loss and I dont know where to post.
I have a graph created in rdflib in python and parsed to a *.rdf file. I would like to load it using pydot and then plot it using Graphviz. Can someone please help me as to the syntax to load a graph using pydot and then to plot it out in literally any format in Graphviz.

This issue tracker is for pydot, which can parse .dot files, but not .rdf files (unless they are dot files too -- I do not know what this format is). The rdflib project appears to be located here. An example of loading and writing to some image format can be found in the tests. Also, in this discussion, and here.


Fix Hash<> not cloneable

What
Implement Clone for the Hash<> type introduced in v21.
Why
The BytesN<> type implements Clone, and the Hash<> type was added to replace BytesN<> in certain situations. It is harder to upgrade code in the wild that was written using BytesN<> because Hash<> isn't cloneable.
Hash<> can be cloned, there's no reason to keep it.
The type is also marked as transparent same as BytesN<> in this change.

Released in 21.4.0.


some improvements

fixed textinput

fixed most bugs
fixed popup window not working
fixed combo not working

update is goign great

new design beter fro readability

updated redme

fixed combo and now working on keybinds

V1.0
added keybinds

fixed keybind system not workign when menu was hidden


Atomicity of WaitHandle.SignalAndWait

The "Features Common to Automatic and Manual Events" section says: "A thread can signal an EventWaitHandle and then block on it, as an atomic operation, by calling the static WaitHandle.SignalAndWait method".
This means that

the WaitHandle.SignalAndWait method is atomic;
the handles to signal and to wait on are the same.

But in the article about WaitHandle.SignalAndWait
https://docs.microsoft.com/en-us/dotnet/api/system.threading.waithandle.signalandwait?view=netframework-4.8
we read: "This operation is not guaranteed to be atomic". And the handles to signal and to wait on in the example are different.
So my questions are:

Is WaitHandle.SignalAndWait actually atomic?
May be it is atomic when toSignal and toWaitOn handles are the same and is not when they are different?
Are there two different use cases when the handles are the same and when they are different?

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

ID: 2b658ffa-560e-4823-0f0e-9c27942df6c8
Version Independent ID: c8154d85-150e-ac3d-5efe-6bb8776b0365
Content: EventWaitHandle
Content Source: docs/standard/threading/eventwaithandle.md
Product: dotnet
Technology: dotnet-standard
GitHub Login: @rpetrusha
Microsoft Alias: ronpet

@kouvel can you answer these questions?

Is WaitHandle.SignalAndWait actually atomic?

No, I think the former doc means to say "as a combined operation" rather than "as an atomic operation".

May be it is atomic when toSignal and toWaitOn handles are the same and is not when they are different?

No, if there are threads already waiting on the wait handle then the signal would typically release one or more different threads, then the wait would wait or accept the signal depending on the type of wait handle.

Are there two different use cases when the handles are the same and when they are different?

Maybe, depends on the implementation, but not guaranteed. You can see roughly what the PAL does on Unixes here: https://github.com/dotnet/coreclr/blob/cea2abf54bcee9c155db39774f2d8a1ccd4b4c66/src/pal/src/synchmgr/wait.cpp#L756-L800
More info here: https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-signalobjectandwait
Curious, if it were atomic, how do you plan to make use of the atomicity?
The main advantage (from .NET perspective) is that this API combines two p/invoke overheads into one. There may be a relatively slight perf advantage in the implementation. I generally would not recommend using this API unless perf really matters and considering the work involved that would probably be a rare thing if at all, with likely better solutions to the perf issue.

No, I'm not using this API, I just wanted to understand what are threads and how they work. Now I'm working with the nice Task API and async/await.
Thank you for the clarification.


Configurable Default Text Colour on Signs

Add config settings for each sign type that allows the default colour of the signs text to be changed
This color will generally only affect the middle rows of the signs as the top and bottom have their own colours that are configurable.
Dark_Oak signs should default to white
All others should be black

Add config settings for each sign type that allows the user to configure the default colour of the signs text.

Wdym "user"? You mean admin, right? As in it is set in the config, not individually by players for their own shop

Add config settings for each sign type that allows the user to configure the default colour of the signs text.

Wdym "user"? You mean admin, right? As in it is set in the config, not individually by players for their own shop

My bad, yes. fixed it above

Fixed in #127


Use the Java API compiler when possible

Context
Gradle will use our JdkApiCompiler, which uses the compiler API from the JDK, by default. However, as soon as one sets javaHome or executable in the fork options, we fallback to the CLI compiler, even if the target compiler does support the compiler API.
This is currently a problem when trying to improve the incremental compiler. We should restrict the CLI compiler to "fallback" mode for things we don't support directly (for example, very old compilers).
This should be considered as part of the "better toolchain support" work.

I think it would be OK to not support incremental compilation for CLI compilers.

@ljacomet I pushed the most recent incarnation of this to this branch before heading out. I'm still not sure if this isn't too risky for 6.7 given I keep seeing random places using Jvm.current. Maybe you can have another look at it until I'm back and see if we can reduce the risk.
Also added another test for cross-compiling with Java 1.7 that doesn't work yet so this is a scenario that we may want to fix as well.

This has been done for the new toolchain support.
Attempting something similar for the other use cases is risky given the number of possible corner cases.
It is not planned to improve the situation when a user manually configures a Java home or an executable.
Toolchain support should be preferred in that case.


Modify RazorPage to use DiagnosticSource for page instrumentation \ BrowserLink.

Fixes #3281

cc @rynowak

What about the functional tests e.g. the RazorPageExecutionInstrumentationWebSite site depending on old way?
Similarly do you have a reaction PR coming for the BrowserLink repo?

:watch:

Closing this for now. The plan's to keep the existing interface calls in place and to supplement it with DiagnosticSource. Once BrowserLink confirms it's able to consume this we'll remove the IPageExecutionInstrumentation pieces.


CI flakes with "fixed" instead of "unknown"

❌ https://github.com/getsentry/eng-pipes/actions/runs/4851405960/attempts/1
    n: 2
    Expected: Anything, Anything, ObjectContaining {"status": "unknown"}
    Received
           1: "required-check", {"id": "18"}, {"status": "unknown", "updated_at": 2023-05-01T13:08:49.474Z}
    ->     2: "required-check", {"id": "16"}, {"status": "fixed", "updated_at": 2023-05-01T13:08:49.474Z}
           3: "required-check", {"id": "17"}, {"status": "unknown", "updated_at": 2023-05-01T13:08:49.474Z}

vs.
✅ https://github.com/getsentry/eng-pipes/actions/runs/4851405960/attempts/2

Again on main. :-/

Again

Again

Again

Again


Publish for other targets, so that it's usable in KorGE

Trying out easy-kotlin-mpp-gradle-plugin, but there are some issues: https://github.com/korlibs/easy-kotlin-mpp-gradle-plugin/issues/10

Done!


Pip: Error in isso setup command: Invalid environment marker: python_version>="3.0"

When I try to install isso using pip on CentOS 7 I get the following error:
$ pip install isso
Downloading/unpacking isso
Downloading isso-0.10.1.tar.gz (95kB): 95kB downloaded
Running setup.py egg_info for package isso
error in isso setup command: Invalid environment marker: python_version>="3.0"
Complete output from command python setup.py egg_info:
error in isso setup command: Invalid environment marker: python_version>="3.0"

Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/gustav/isso/build/isso

It looks like it is asking for Python 3, but I am using Python 2.7.5
(Python 3 is not available on CentOS by default)

Upgrading pip solves the issue:
pip install --upgrade pip


special characters are not rendered

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

VS Code Version:

Version: 1.73.1 (Universal)
Commit:<PHONE_NUMBER>f055b99068d3688932416f2346dd3b
Date: 2022-11-09T02:08:38.961Z
Electron: 19.0.17
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 22.1.0
Sandboxed: No

OS Version:

Ventura 13.0.1
Apple M1 Chip

vscode (stable)

ohmyzsh with p10k and zsh-autosuggestions behaves really weird

.zshrc

# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet

# Path to your oh-my-zsh installation.
export ZSH="/Users/norfeldt/.oh-my-zsh"

DISABLE_UPDATE_PROMPT="true" # Uncomment the following line to automatically update without prompting.
export UPDATE_ZSH_DAYS=13

setopt autocd
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' 'm:{a-zA-Z}={A-Za-z}'
autoload -U compinit
compinit

# History (Heather setup)
if [ -z "$HISTFILE" ]; then
  HISTFILE=$HOME/.zsh_history
fi

HISTSIZE=1000
SAVEHIST=1000

setopt EXTENDED_HISTORY
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_IGNORE_SPACE
setopt HIST_FIND_NO_DUPS
setopt HIST_SAVE_NO_DUPS
setopt HIST_BEEP

source ~/.oh-my-zsh/plugins/git/git.plugin.zsh
source ~/.oh-my-zsh/plugins/autojump/autojump.plugin.zsh
source ~/.oh-my-zsh/plugins/command-not-found/command-not-found.plugin.zsh
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
source ~/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan,bold'
ZSH_HIGHLIGHT_STYLES[alias]='fg=green,underline'

[[ -s `brew --prefix`/etc/autojump.sh ]] && . `brew --prefix`/etc/autojump.sh

# Plugins
plugins=(
  git
  autojump
  command-not-found
  zsh-autosuggestions
  zsh-syntax-highlighting
  history
)

The vscode insiders seems to have fixed that, but is having some bad issues displaying emojis and other special characters

This is how it looks on vscode (stable):

Yes, I upgrade vscode 1.74.0 this morning, and suddenly zsh-autosuggestion stop working
Version: 1.74.0
Commit: 5235c6bb189b60b01b1f49062f4ffa42384f8c91
Date: 2022-12-05T16:37:54.581Z
Electron: 19.1.8
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 22.1.0
Sandboxed: No

I was able to reproduce this at one point, but cannot in Insider's now

works for Chinese and other chars now too

Still broken for me in 1.75.0 Insider, empty profile: trying to type йцукен (Cyrillic)
https://user-images.githubusercontent.com/105274/207462292-223eb41c-be19-4f33-a72c-9871c92a0175.mov

what's the value of $LANG for you @pepelsbey

this reproduces when $LANG is explicitly set as determined by @rzhao271

what's the value of $LANG for you @pepelsbey

@meganrogge en_DE.UTF-8

Confirmation steps on macOS:

Run the "Configure Runtime Arguments" command. Make sure argv.json doesn't have a locale key-value pair
Set the system language to Simplified Chinese and restart the system
Quit and reopen VS Code
Try pasting the phrase 测试 into the terminal (zsh or bash)
:bug: The characters are not rendered properly

Yes, I upgrade vscode 1.74.0 this morning, and suddenly zsh-autosuggestion stop working
Version: 1.74.0 Commit: 5235c6b Date: 2022-12-05T16:37:54.581Z Electron: 19.1.8 Chromium: 102.0.5005.167 Node.js: 16.14.2 V8: <IP_ADDRESS>-electron.0 OS: Darwin arm64 22.1.0 Sandboxed: No
update: @Norfeldt disable terminal.integrated.shellIntegration.enabled and it'll be alright

@ttdatt I did:
  "terminal.integrated.shellIntegration.enabled": false,

and my stable version (which has updated since reporting the issue) looks like this:

Before the change:

After the change:

@Norfeldt what do you get when you type the command echo $LANG into the terminal? My fix does not fix the issue for all locales—it just fixes a regression that broke even more locales.

I install Language pack extension for Chinese, then the terminal can display chinese characters correct

@rzhao271 it's en_SE.UTF-8


Override a setting on específic file

I was trying to make a specific file more readable and on that file, I want to override the prettier extension line width to a little more so I can make it easier to read.
I think in something like:
///prettier.printWidth=200
import something from "somewhere"
[...]

/causedByExtension
I think this would need to be implemented by the extension author.


Use AppVeyor for Pull Request builds

Use AppVeyor for Pull Request builds.
This allows us to :

Build every pull request as a quality gate
Show the build result to everyone

Closed in #48


UnsatisfiedLinkError: couldn't find "librealmc.so"

SDK:
realm-kotlin
Version:
'io.realm.kotlin:library-sync:1.5.0', 'io.realm.kotlin:gradle-plugin:1.5.0'
Observations

How frequent do the crash occur?
Subset of users

Does it happen in production or during dev/test?
Production

Can the crash be reproduced by you?
No. I was unable to reproduce in the Android Emulator on Nexus 7 - Android 8.1

Can you provide instructions for how we can reproduce it?
Seems to be occuring on app launch when calling App.create()

From Firebase Crashlytics:
Nexus 5X - Android 8.1.0
Fatal Exception: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.crystalyze.crystalyze-mp0dbfOJe8A8n38Sjr4jkw==/base.apk"],nativeLibraryDirectories=[/data/app/com.crystalyze.crystalyze-mp0dbfOJe8A8n38Sjr4jkw==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "librealmc.so"
       at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
       at java.lang.System.loadLibrary(System.java:1657)
       at io.realm.kotlin.internal.interop.realmc.<clinit>(realmc.java:16)
       at io.realm.kotlin.internal.interop.RealmInterop.realm_network_transport_new(RealmInterop.java:49)
       at io.realm.kotlin.mongodb.internal.AppConfigurationImpl.initializeRealmAppConfig(AppConfigurationImpl.java:49)
       at io.realm.kotlin.mongodb.internal.AppConfigurationImpl.<init>(AppConfigurationImpl.java:49)
       at io.realm.kotlin.mongodb.AppConfiguration$Builder.build(AppConfiguration.java:68)
       at io.realm.kotlin.mongodb.App$Companion.create(App.java:68)

Galaxy Tab A - Android 7.1.2
Fatal Exception: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.crystalyze.crystalyze-1/base.apk"],nativeLibraryDirectories=[/data/app/com.crystalyze.crystalyze-1/lib/x86_64, /system/lib64, /vendor/lib64]]] couldn't find "librealmc.so"
       at java.lang.Runtime.loadLibrary0(Runtime.java:1001)
       at java.lang.System.loadLibrary(System.java:1562)
       at io.realm.kotlin.internal.interop.realmc.<clinit>(realmc.java)
       at io.realm.kotlin.internal.interop.RealmInterop.realm_network_transport_new(RealmInterop.java:49)
       at io.realm.kotlin.mongodb.internal.AppConfigurationImpl.initializeRealmAppConfig(AppConfigurationImpl.java:49)
       at io.realm.kotlin.mongodb.internal.AppConfigurationImpl.<init>(AppConfigurationImpl.java:49)
       at io.realm.kotlin.mongodb.AppConfiguration$Builder.build(AppConfiguration.java:68)
       at io.realm.kotlin.mongodb.App$Companion.create(App.java:68)

In the APK, librealmc.so exists in
/lib/x86_64
/lib/x86
/lib/arm64-v8a
/lib/armeabi-v7a

Hi @rorbech
This is only happening on the Nexus 5X (Android 8.1.0) and Galaxy Tab A (Android 7.1.2).
<1% of users are affected with only 1 of these users being rooted on a Galaxy Tab A.
No other patterns for now, but I will continue to monitor

Hi @KennethRichards. Thanks for the feedback. Are you by any chance distributing other native libraries than ours in your app? We have seen that if some other library is not available for the exact architecture then it can end up only looking for 32-bit libraries on a 64-bit device, and that library could have been stripped as part of the repackaging in playstore.

Hi @rorbech, I checked the Github repos from the other dependencies in our app but did not find any indication of native libraries. To be honest I'm not quite sure how else to check/verify this.
When inspecting the APK though, I can see that librealmc.so is the only file located in the following directories:
/lib/x86_64
/lib/x86
/lib/arm64-v8a
/lib/armeabi-v7a

We have seen a similar problem with Realm Java, and the root cause is still unclear. It is pretty rare, but our best guess is that either APK's are being side-loaded in the wrong way or the Play Store doesn't send down the correct files.
Currently, in Realm Kotlin, we are just loading the native lib in a naive way, which should work, but has a few known edge cases,  #1215 will introduce a slightly better way, but it isn't a 100% guarantee it will fix this issue.

Hi all, we got a few reports of this issue. Here is some data if it helps.

Using version 1.6.1
The two devices were rooted.

vivo S1 running Android 11
OnePlus8Pro running Android 11

Caused by androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
       at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
       at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)
       at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)
       at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)
       at android.content.ContentProvider.attachInfo(ContentProvider.java:2388)
       at android.content.ContentProvider.attachInfo(ContentProvider.java:2358)
       at android.app.ActivityThread.installProvider(ActivityThread.java:7262)
       at android.app.ActivityThread.installContentProviders(ActivityThread.java:6803)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6720)
       at android.app.ActivityThread.access$1300(ActivityThread.java:239)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1915)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:223)
       at android.app.ActivityThread.main(ActivityThread.java:7680)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Caused by java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
       at java.lang.Runtime.loadLibrary0(Runtime.java:1093)
       at java.lang.Runtime.loadLibrary0(Runtime.java:1013)
       at java.lang.System.loadLibrary(System.java:1664)
       at io.realm.kotlin.internal.interop.realmc.<clinit>(realmc.java:18)
       at io.realm.kotlin.internal.interop.realmc.realm_config_new(realmc.java:262)
       at io.realm.kotlin.internal.interop.RealmInterop.realm_config_new(RealmInterop.kt:120)
       at io.realm.kotlin.internal.ConfigurationImpl.createNativeConfiguration(ConfigurationImpl.kt:2)
       at io.realm.kotlin.internal.ConfigurationImpl.openRealm$suspendImpl(ConfigurationImpl.kt:4)
       at io.realm.kotlin.internal.ConfigurationImpl.openRealm(ConfigurationImpl.kt)

Hi all, got another stack trace related to the above but has some more details.
This occurred on a rooted device.
Fatal Exception: java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: com.getkeepsafe.relinker.MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].
       at android.app.ActivityThread.installProvider(ActivityThread.java:7862)
       at android.app.ActivityThread.installContentProviders(ActivityThread.java:7374)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7081)
       at android.app.ActivityThread.access$1700(ActivityThread.java:277)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2161)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:210)
       at android.os.Looper.loop(Looper.java:299)
       at android.app.ActivityThread.main(ActivityThread.java:8298)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1073)

Hi all, we also had the same issue,

realm version: 1.7.0
Mobile: SM-Samsung G973F
Android version: Android 12 (no rooted)

Exception
MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].
    at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:175)
    at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:180)
    at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)
    at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)
    at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:57)
...
(21 additional frame(s) were not displayed)

StartupException: com.getkeepsafe.relinker.MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].
    at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
    at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)
    at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)
    at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:2516)
...
(13 additional frame(s) were not displayed)

RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: com.getkeepsafe.relinker.MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].
    at android.app.ActivityThread.installProvider(ActivityThread.java:8231)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:7728)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7482)
    at android.app.ActivityThread.access$1600(ActivityThread.java:310)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2281)
...
(7 additional frame(s) were not displayed)

This error happens every time an APK is extracted from the app installed from PlayStore.
java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: com.getkeepsafe.relinker.MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].                  	at android.app.ActivityThread.installProvider(ActivityThread.java:7728)                  	at android.app.ActivityThread.installContentProviders(ActivityThread.java:7216)                  	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6960)                  	at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)                  	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2218)                  	at android.os.Handler.dispatchMessage(Handler.java:106)                  	at android.os.Looper.loopOnce(Looper.java:242)                  	at android.os.Looper.loop(Looper.java:359)                  	at android.app.ActivityThread.main(ActivityThread.java:8133)                  	at java.lang.reflect.Method.invoke(Native Method)                  	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)                  	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)                  Caused by: androidx.startup.StartupException: com.getkeepsafe.relinker.MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].                  	at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)                  	at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)                  	at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)                  	at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)                  	at android.content.ContentProvider.attachInfo(ContentProvider.java:2502)                  	at android.content.ContentProvider.attachInfo(ContentProvider.java:2472)                  	at android.app.ActivityThread.installProvider(ActivityThread.java:7723)                  	at android.app.ActivityThread.installContentProviders(ActivityThread.java:7216)                   	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6960)                   	at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)                   	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2218)                   	at android.os.Handler.dispatchMessage(Handler.java:106)                   	at android.os.Looper.loopOnce(Looper.java:242)                   	at android.os.Looper.loop(Looper.java:359)                   	at android.app.ActivityThread.main(ActivityThread.java:8133)                   	at java.lang.reflect.Method.invoke(Native Method)                   	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)                   	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)                   Caused by: com.getkeepsafe.relinker.MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].                  	at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:175)                  	at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:180)                  	at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)                  	at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)                  	at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:57)                  	at io.realm.kotlin.internal.AndroidUtilsKt.loadAndroidNativeLibs(AndroidUtils.kt:14)                  	at io.realm.kotlin.internal.RealmInitializer.create(RealmInitializer.kt:42)                  	at io.realm.kotlin.internal.RealmInitializer.create(RealmInitializer.kt:30)                  	at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:180)                  	at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)                   	at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)                   	at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)                   	at android.content.ContentProvider.attachInfo(ContentProvider.java:2502)                   	at android.content.ContentProvider.attachInfo(ContentProvider.java:2472)                   	at android.app.ActivityThread.installProvider(ActivityThread.java:7723)                   	at android.app.ActivityThread.installContentProviders(ActivityThread.java:7216)                   	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6960)                   	at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)                   	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2218)                   	at android.os.Handler.dispatchMessage(Handler.java:106)                   	at android.os.Looper.loopOnce(Looper.java:242)                   	at android.os.Looper.loop(Looper.java:359)                   	at android.app.ActivityThread.main(ActivityThread.java:8133)                   	at java.lang.reflect.Method.invoke(Native Method)                   	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)                   	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)

We have around 350 crashes with the same exception, starting with the realm-kotlin integration.
Caused by com.getkeepsafe.relinker.MissingLibraryException: Could not find 'librealmc.so'. Looked for: [arm64-v8a, armeabi-v7a, armeabi], but only found: [].
       at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:175)
       at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:180)
       at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)
       at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)
       at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:57)
       at io.realm.kotlin.internal.AndroidUtilsKt.loadAndroidNativeLibs(AndroidUtils.kt:14)

The problem with this error is that we think this is related to the Playstore distribution and App Bundles and sometimes the app store sends the wrong thing to devices. Unfortunately, this is basically impossible to test and we have never been able to reproduce it.
At the same time, we have seen people manually distributing the wrong app bundles to devices, but this normally happens with custom app distribution frameworks or rooted devices where you try to sideload an APK.
That said, we just pushed a change that is available in 1.10-SNAPSHOT which disables Relinker above API 22. The reason we use Relinker is that Android has known bugs loading native code on API 22 and below, but there is no need to use it above.
So just to be 100% sure this library is not involved in these bugs, it has now been disabled.
Apart from that, the solution we have seen working is to disable App Bundles, unfortunately, the tradeoff there is an increase in APK size.

Are there any updates on this issue or the proposed fix of disabling app bundles? We are also experience this error in one of our production apps.
Devices are for example OnePlus 9 5G with Android 14; Realm Kotlin version currently 1.12.0. Maybe there are fixes in an already released version? The issue is still set to be open therefore I assume it's not fixed yet?

We are also facing this issue. So far we've seen crashes on Galaxy A14 5G Android 13 and Nexus 5x Android 8.

Same problem on OnePlus 9 Android14, on an Kotlin Multiplatform project.
"io.realm.kotlin", name = "library-base" Version = 1.14.0
Caused by androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
       at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
       at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)

Caused by java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
       at java.lang.Runtime.loadLibrary0(Runtime.java:1082)
       at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
       at java.lang.System.loadLibrary(System.java:1661)
       at io.realm.kotlin.internal.AndroidUtilsKt.loadAndroidNativeLibs(AndroidUtils.kt:20)
       at io.realm.kotlin.internal.RealmInitializer.create(RealmInitializer.kt:42)
       at io.realm.kotlin.internal.RealmInitializer.create(RealmInitializer.kt:30)
       at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:180)

Inside my APK
./lib/armeabi-v7a/librealmc.so
./lib/x86/librealmc.so
./lib/arm64-v8a/librealmc.so
./lib/x86_64/librealmc.so

New devices with this error
Huawei ALN-AL00
Fatal Exception: java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
at android.app.ActivityThread.installProvider(ActivityThread.java:9416)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:8919)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:8591)
at android.app.ActivityThread.access$2800(ActivityThread.java:313)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2902)
at android.os.Handler.dispatchMessage(Handler.java:117)
and
Google, Pixel 6 Pro
Fatal Exception: java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
at android.app.ActivityThread.installProvider(ActivityThread.java:7464)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6976)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6747)
at android.app.ActivityThread.access$1500(ActivityThread.java:256)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2091)

I created an Google Issue  See loginCompleted.
https://issuetracker.google.com/issues/336832619

Same problem on OnePlus 6 Android11, Transsion Note 12 Android13, and Oppo Realme Narzo 30 Android12  on an Android project.
"io.realm.kotlin", name = "library-base" Version = 1.13.0
Crash occured for 32 times.
Fatal Exception: java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
       at android.app.ActivityThread.installProvider(ActivityThread.java:7719)
       at android.app.ActivityThread.installContentProviders(ActivityThread.java:7220)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6973)
       at android.app.ActivityThread.-$$Nest$mhandleBindApplication()
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2219)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:204)
       at android.os.Looper.loop(Looper.java:291)
       at android.app.ActivityThread.main(ActivityThread.java:8129)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1019)

Caused by androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
       at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
       at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)
       at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)
       at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)
       at android.content.ContentProvider.attachInfo(ContentProvider.java:2473)
       at android.content.ContentProvider.attachInfo(ContentProvider.java:2443)
       at android.app.ActivityThread.installProvider(ActivityThread.java:7714)
       at android.app.ActivityThread.installContentProviders(ActivityThread.java:7220)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6973)
       at android.app.ActivityThread.-$$Nest$mhandleBindApplication()
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2219)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:204)
       at android.os.Looper.loop(Looper.java:291)
       at android.app.ActivityThread.main(ActivityThread.java:8129)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1019)

Caused by java.lang.UnsatisfiedLinkError: dlopen failed: library "librealmc.so" not found
       at java.lang.Runtime.loadLibrary0(Runtime.java:1082)
       at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
       at java.lang.System.loadLibrary(System.java:1661)
       at io.realm.kotlin.internal.AndroidUtilsKt.loadAndroidNativeLibs(AndroidUtils.kt:20)
       at io.realm.kotlin.internal.RealmInitializer.create(RealmInitializer.kt:42)
       at io.realm.kotlin.internal.RealmInitializer.create(RealmInitializer.kt:30)
       at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:180)
       at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)
       at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)
       at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)
       at android.content.ContentProvider.attachInfo(ContentProvider.java:2473)
       at android.content.ContentProvider.attachInfo(ContentProvider.java:2443)
       at android.app.ActivityThread.installProvider(ActivityThread.java:7714)
       at android.app.ActivityThread.installContentProviders(ActivityThread.java:7220)
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6973)
       at android.app.ActivityThread.-$$Nest$mhandleBindApplication()
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2219)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:204)
       at android.os.Looper.loop(Looper.java:291)
       at android.app.ActivityThread.main(ActivityThread.java:8129)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:601)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1019)

Same here on Nexus 5X (Android 8.1.0) and Pixel 6 Pro (Android 12):
Fatal Exception: java.lang.RuntimeException
Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.mitteloupe.bestchoicemaker-7Fa3BCGrKB0oW6s7-m_jcg==/base.apk"],nativeLibraryDirectories=[/data/app/com.mitteloupe.bestchoicemaker-7Fa3BCGrKB0oW6s7-m_jcg==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "librealmc.so"

Caused by androidx.startup.StartupException
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.mitteloupe.bestchoicemaker-7Fa3BCGrKB0oW6s7-m_jcg==/base.apk"],nativeLibraryDirectories=[/data/app/com.mitteloupe.bestchoicemaker-7Fa3BCGrKB0oW6s7-m_jcg==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "librealmc.so"

Caused by java.lang.UnsatisfiedLinkError
dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.mitteloupe.bestchoicemaker-7Fa3BCGrKB0oW6s7-m_jcg==/base.apk"],nativeLibraryDirectories=[/data/app/com.mitteloupe.bestchoicemaker-7Fa3BCGrKB0oW6s7-m_jcg==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "librealmc.so"

The problem with this error is that we think this is related to the Playstore distribution and App Bundles and sometimes the app store sends the wrong thing to devices. Unfortunately, this is basically impossible to test and we have never been able to reproduce it.
At the same time, we have seen people manually distributing the wrong app bundles to devices, but this normally happens with custom app distribution frameworks or rooted devices where you try to sideload an APK.
That said, we just pushed a change that is available in 1.10-SNAPSHOT which disables Relinker above API 22. The reason we use Relinker is that Android has known bugs loading native code on API 22 and below, but there is no need to use it above.
So just to be 100% sure this library is not involved in these bugs, it has now been disabled.
Apart from that, the solution we have seen working is to disable App Bundles, unfortunately, the tradeoff there is an increase in APK size.

Based on this reply, if it's really because of the Play Store Distribution: Maybe the cause is based on users downloading the app's from third party stores and not from the official Play Store and therefore this file is missing on their installations?
Has anyone subscribed to this topic been able to reproduce this issue?

The problem with this error is that we think this is related to the Playstore distribution and App Bundles and sometimes the app store sends the wrong thing to devices. Unfortunately, this is basically impossible to test and we have never been able to reproduce it.
At the same time, we have seen people manually distributing the wrong app bundles to devices, but this normally happens with custom app distribution frameworks or rooted devices where you try to sideload an APK.
That said, we just pushed a change that is available in 1.10-SNAPSHOT which disables Relinker above API 22. The reason we use Relinker is that Android has known bugs loading native code on API 22 and below, but there is no need to use it above.
So just to be 100% sure this library is not involved in these bugs, it has now been disabled.
Apart from that, the solution we have seen working is to disable App Bundles, unfortunately, the tradeoff there is an increase in APK size.

Based on this reply, if it's really because of the Play Store Distribution: Maybe the cause is based on users downloading the app's from third party stores and not from the official Play Store and therefore this file is missing on their installations?
Has anyone subscribed to this topic been able to reproduce this issue? I assume that everyone here is just posting the stacktraces from the crash monitoring of their choice

I've not been able to reproduce it personally but would like to suggest we rule out the third party stores theory: I get the crashes reported within hours of posting a new release, which I only publish to the Play Store. Unless some third party store picks it up immediately, these are Play Store installations.
Also, the ratio of these crashes for me is about 0.1% of my active users. That's not too bad, but it's still frustrating.
I also noticed that Google closed the ticket that was mentioned earlier.

I have precisely the same crash, and also Nexus 5X Android 8.1.0. Also cannot re-produce on emulator.
Realm version: io.realm.kotlin:library-base:1.16.0


⚠ Secret Website 3 has degraded performance

In f47ee20, Secret Website 3 ($SECRET_WEBSITE_3) experienced degraded performance:

HTTP code: 200
Response time: 5037 ms

Resolved: Secret Website 3 performance has improved in 74eb76d.


Setup access to the dreamobject store

This is what I think I need to do:

Create a new dreamobject user for the lab.
Add two keys: one for me and one for lab members (that I can revoke if ever needed).
Migrate the mechmotum bucket from my personal dreamobject user to the fietslab user.
Make the key available to lab members so they can run the dreamobject.py script.

This is done and is in the lab GDrive.


libdvdread: 6.0.0 -> 6.0.1

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/libdvdread/versions.
meta.description for libdvdread is: '"A library for reading DVDs"'.

Checks done (click to expand)

built on NixOS

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 6.0.1 with grep in /nix/store/aziqpynqmq39kn1k6nk3lxggv48bxvxx-libdvdread-6.0.1

directory tree listing: https://gist.github.com/51ccb84c6b7720bc1e2405046dcc0d29

du listing: https://gist.github.com/a5eb5c714ff817840350b9ecf2e8b4a8

Rebuild report (if merged into master) (click to expand)

381 total rebuild path(s)
131 package rebuild(s)
131 x86_64-linux rebuild(s)
118 i686-linux rebuild(s)
26 x86_64-darwin rebuild(s)
106 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
alarm-clock-applet
anki
appimage-run
audio-recorder
beets
bombono
bomi
brasero
brasero-original
byzanz
cantata
cdimgtools
clementine
clementineUnfree
cozy
cutegram
deepin.deepin-movie-reborn
devede
dragon
dvd-slideshow
dvdauthor
dvdbackup
dvdstyler
empathy
eolie
epiphany
frostwire
gajim
gmrender-resurrect
gmtk
gnome-mpv
gnome3.cheese
gnome3.empathy
gnome3.epiphany
gnome3.gnome-contacts
gnome3.gnome-control-center
gnome3.gnome-disk-utility
gnome3.gnome-music
gnome3.gnome_control_center
gnome3.rhythmbox
gnome3.rygel
gnome3.totem
gnome_mplayer
gradio
gst-plugins-bad
gst-plugins-ugly
gst_all_1.gst-plugins-ugly
handbrake
k3b
k9copy

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/aziqpynqmq39kn1k6nk3lxggv48bxvxx-libdvdread-6.0.1 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A libdvdread https://github.com/r-ryantm/nixpkgs/archive/546abf448de8bac303f87d5597fd1e1c62639e6b.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/aziqpynqmq39kn1k6nk3lxggv48bxvxx-libdvdread-6.0.1
ls -la /nix/store/aziqpynqmq39kn1k6nk3lxggv48bxvxx-libdvdread-6.0.1/bin

cc @wmertens for testing.

The change to the build script is trivial so LGTM, but of course the fact that k9copy doesn't work is not good. Unfortunately I can't access the build info @timokau posted and I'm not in a position to test (no easy access to linux desktop)

@GrahamcOfBorg build k9copy

I just checked out this branch and k9copy builds for me... :thinking:

Looks like the k9copy failure is already on current staging and not caused by this PR. Must've forgotten to check that last time.


Array configuration in commandline

I tried to define multiple extensions using command-line but it seems to only take the last one
rr serve \
    -o "http.address=:80 \
    -o "http.workers.pool.numWorkers=1 \
    -o "http.workers.command='php worker.php'" \
    -o "static.dir='web'" \
    -o "static.forbid='.php'" \
    -o "static.forbid='.htaccess'"

Is there a special syntax for array ?

Hmmm, there is no specific syntax for array yet (we have to create it). :( I wonder if it might be easier to ensure default values for static.forbid config https://github.com/spiral/roadrunner/blob/master/service/static/config.go#L26
I assume most of the people would like to hide .php, .htacess files.

Similar way as in https://github.com/spiral/roadrunner/blob/master/service/http/config.go#L69

RR now support modular configuration, is this issue still an issue?

What do you mean by modular configuration ? The include option ?

Maybe was missed " symbols
rr serve
-o "http.address=:80"
-o "http.workers.pool.numWorkers=1"
-o "http.workers.command='php worker.php'"
-o "static.dir='web'"
-o "static.forbid='.php'"
-o "static.forbid='.htaccess'"

What do you mean by modular configuration ? The include option ?
Yes.

Can you please check @spudro228 response, is this still an issue?

The missing quotes were not present in my command line originally , i've edited the issue.
From what I understand, the include directive allow to define others YAML files to be merged into the final configuration.
It still doesn't allow to define multiple times the same option in the command line.
I could add a yaml file with some defaults, but in my use case I only add a Dockerfile to the project with all the options defined inside, so i can bootstrap a new project by copying just a single file.

See 1.5.3


Fix CI, use clang++ for capnproto-import if detected

Sidenote: Capnp-import fails if it miraculously finds the right version of system-wide capnp binary due to
this format! assuming the binary is in out_dir. Besides that, flake currently imports capnproto version that's not compatible with capnp-import due to this line checking specifically if version is 0.11.0, which it isn't in the flakes.

When copying resulting binary to /usr/bin, I get a following error for capnp-import's test:
error: couldn't read /home/gtdm/Active/capnproto-rust/target/debug/build/capnp-import-11257d17d2240e07/out//usr/bin/capnp: No such file or directory (os error 2)
 --> /home/gtdm/Active/capnproto-rust/target/debug/build/capnp-import-11257d17d2240e07/out/extract_bin.rs:9:25
  |
9 | ... = include_bytes!("/home/gtdm/Active/capnproto-rust/target/debug/build/capnp-import-11257d17d2240e07/out//usr/bin/capnp...
  |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: this error originates in the macro `include_bytes` (in Nightly builds, run with -Z macro-backtrace for more info)

Being able to have it system-wide would help not having to compile it every time - it's what I referred to above.


Make the nix development compatible with flake-less nix

This only changes the internal arrangement of files, allowing folks who don't use flakes to build agda2hs.
The interface exposed to those who use flakes should stay the same.

Running some test builds here and here, both seem okay. (the second one errors out the same way as before and after all library managment has been done)


📝 getting-started-with-webhooks.md

#15  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @RTLS and the rest of your teammates on  Graphite


Power BI Tutorial is out of date

There are some notational inaccuracies ("Data" pane is inaccurately labeled as "Fields") and images in the tutorial that no longer resemble how the UI functions (I'm struggling to complete "Visual 5. Date Slicer" with the current instructions.)
These are just two examples of how out-of-date this tutorial is. It's a very helpful tutorial, and would be much easier to use if it resembled the actual, current Power BI Desktop UI.

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

ID: 1e0083e3-c11c-2462-6f0f-a166759f14c0
Version Independent ID: 927cc95e-d442-db4d-75ae-d4a2fa64ae71
Content: Tutorial: From Excel workbook to stunning report in Power BI Desktop - Power BI
Content Source: powerbi-docs/create-reports/desktop-excel-stunning-report.md
Service: powerbi
Sub-service: pbi-reports-dashboards
GitHub Login: @maggiesMSFT
Microsoft Alias: maggies

Thanks for your comment, @eulerpony. This issue has been assigned to the doc author for review.

Hi @eulerpony, thanks for your feedback. I'm creating a work item in our system for better tracking and management, and will close this issue here now. Thanks again for reaching out!


Docker-compose version 3.4 for start_period property

Environment

Python version: 3.6
Nautobot version: 1.1.2

Steps to Reproduce

type invoke build

Expected Behavior
It should build the images

Observed Behavior
(nautobot-dev) florian@dsrauto-dev1:~/nautobot-florian$ invoke build
Building Nautobot with Python 3.6...
Running docker-compose command "build --build-arg PYTHON_VER=3.6"
The Compose file '/home/florian/nautobot-florian/development/docker-compose.yml' is invalid because:
services.celery_worker.healthcheck value Additional properties are not allowed ('start_period' was unexpected)
services.worker.healthcheck value Additional properties are not allowed ('start_period' was unexpected)
services.nautobot.build contains unsupported option: 'target'

(nautobot-dev) florian@dsrauto-dev1:~/nautobot-florian$ docker-compose --version
docker-compose version 1.24.1, build 4667896b
(nautobot-dev) florian@dsrauto-dev1:~/nautobot-florian$ docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea838
 Built:             Wed Nov 13 07:25:58 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea838
  Built:            Wed Nov 13 07:24:29 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

How to fix it :
Change the docker-compose file version from 3 to 3.4 minimum

Thanks for the report! As mentioned on Slack, this isn't an issue with latest versions of Docker / docker compose as the version property is now deprecated, but for proper backwards compatibility with older versions (such as 19.x.y) it'll be helpful to fix this. Thanks also for the pull request!


listchar: trailing comma error

If listchar contains a trailing comma, e.g.
set listchars=tab:│\ ,nbsp:␣,trail:•,extends:⟩,precedes:⟨,

the plugin crashes with the error:
Error detected while processing /home/andreasw/.config/nvim/plugged/indent-blankline.nvim/plugin/indent_blankline.vim:
line   27:
E5108: Error executing lua vim/shared.lua:423: s: expected string, got nil
stack traceback:
        vim/shared.lua:423: in function 'trim'
        ...ount_nvimLCholV/usr/share/nvim/runtime/lua/vim/_meta.lua:497: in function 'get'
        ...gged/indent-blankline.nvim/lua/indent_blankline/init.lua:32: in function 'setup'
        [string ":lua"]:1: in main chunk

I don't know if a trailing comma is discouraged in Vim. Had it in my init.vim for ages, this was the first time I ran into trouble.

this is a duplicate of #162


Error creating lamda layer: Could not locate source_path "null".

Error creating lambda layer
I'm triying to create a lambda layer using lambda_layer_pip_requirements, creating the layer using the requirements.txt file. The .tf file have this contents:
module "lambda_layer_pip_requirements" {
  source = "terraform-aws-modules/lambda/aws"

  create_layer    = true
  create_function = false

  layer_name          = "testdev"
  compatible_runtimes = ["python3.9"]
  runtime             = "python3.9"

  source_path = "${path.module}/../../../aws/lambda"
}

Module version is 4.12.1. I have checked the path "${path.module}/../../../aws/lambda" and exists. Inside this path exists the requirements file. I have also tried using the absolut path and still getting the same error when running terraform apply.
The complete error is the following:
╷
│ Error: invalid value for name (must match [\w+=,.@-])
│
│   with module.lambda.aws_iam_role.lambda[0],
│   on .terraform/modules/lambda/iam.tf line 97, in resource "aws_iam_role" "lambda":
│   97:   name                  = local.role_name
│
╵
╷
│ Error: invalid value for name (must match [\w+=,.@-])
│
│   with module.lambda.aws_iam_policy.logs[0],
│   on .terraform/modules/lambda/iam.tf line 136, in resource "aws_iam_policy" "logs":
│  136:   name   = "${local.policy_name}-logs"
│
╵
╷
│ Error: External Program Execution Failed
│
│   with module.lambda.data.external.archive_prepare[0],
│   on .terraform/modules/lambda/package.tf line 10, in data "external" "archive_prepare":
│   10:   program = [local.python, "${path.module}/package.py", "prepare"]
│
│ The data source received an unexpected error while attempting to execute the program.
│
│ Program: /home/aitor/.pyenv/shims/python3
│ Error Message: Could not locate source_path "null".  Paths are relative to directory where `terraform plan` is being
│ run ("/home/user/workspace/project/terraform/environments/dev")
│
│ State: exit status 1

I also have tried this source path:
source_path = [
    {
      path             = "${path.module}/../../../aws/lambda"
      pip_requirements = true
      prefix_in_zip    = "python"
    }
  ]

Getting the same error. The path exists and also the requrements file.

I am running into this same issue in 4.17.0. I am on a Windows machine using WSL. Here's the example with absolute path and it also happens using the relative path.
module "lambda" {
  source  = "terraform-aws-modules/lambda/aws"
  version = "4.17.0"
}

locals {
  role_name = "mylambda1"
}
module "lambda_function" {
  source = "terraform-aws-modules/lambda/aws"
  create_role     = true
  create_function = true
  function_name = "mylambda1"
  description   = "My awesome lambda function"
  handler       = "index.lambda_handler"
  runtime      = "nodejs18.x"

  source_path = "/mnt/c/Users/nacls/repos/woebot/src"

  tags = {
    Name = "mylambda1"
  }
}

The source path contains a .js file.
errors:
Plan: 9 to add, 0 to change, 0 to destroy.
╷
│ Error: invalid value for name (must match [\w+=,.@-])
│
│   with module.lambda.aws_iam_role.lambda[0],
│   on .terraform/modules/lambda/iam.tf line 97, in resource "aws_iam_role" "lambda":
│   97:   name                  = local.role_name
│
╵
╷
│ Error: invalid value for name (must match [\w+=,.@-])
│
│   with module.lambda.aws_iam_policy.logs[0],
│   on .terraform/modules/lambda/iam.tf line 137, in resource "aws_iam_policy" "logs":
│  137:   name   = "${local.policy_name}-logs"
│
╵
╷
│ Error: External Program Execution Failed
│
│   with module.lambda.data.external.archive_prepare[0],
│   on .terraform/modules/lambda/package.tf line 10, in data "external" "archive_prepare":
│   10:   program = [local.python, "${path.module}/package.py", "prepare"]
│
│ The data source received an unexpected error while attempting to execute the program.
│
│ Program: /usr/bin/python3
│ Error Message: Could not locate source_path "null".  Paths are relative to directory where `terraform plan` is being run ("/mnt/c/Users/nacls/repos/woebot")
│
│ State: exit status 1


[Request] [lobe-commit] Support custom model name

🥰 需求描述 | Feature Description
Currently Lobe Commit only supports models from OpenAI. There are many alternatives out in the wild. It would be great if we could customize the model name.
🧐 解决方案 | Proposed Solution
Allow custom model name in configuration instead of pre-defined model names from OpenAI.
📝 补充信息 | Additional Information
No response

remove the inactive label


Refactoring & applying code re-usability

Adds support for the following target frameworks:

NET Framework 4.5.1
NET Framework 4.5.2
NET Framework 4.6.1
NET Framework 4.6.2
NET Core 2.0
NET Core 2.1

Applies code re-use in core project & test cases project.
Configures AppVeyor automatic code build.

I'll try to get the time and fix the pipeline .
I'll keep it open for now. Thanks


etcdserver: avoid deadlock caused by adding members with wrong peer URLs

Current membership changing functionality of etcd seems to have a
problem which can cause deadlock.
How to produce:

construct N node cluster
add N new nodes with etcdctl member add, without starting the new members

What happens:
After finishing add N nodes, a total number of the cluster becomes 2 *
N and a quorum number of the cluster becomes N + 1. It means
membership change requires at least N + 1 nodes because Raft treats
membership information in its log like other ordinal log append
requests.
Assume the peer URLs of the added nodes are wrong because of miss
operation or bugs in wrapping program which launch etcd. In such a
case, both of adding and removing members are impossible because the
quorum isn't preserved. Of course ordinal requests cannot be
served. The cluster would seem to be deadlock.
Of course, the best practice of adding new nodes is adding one node
and let the node start one by one. However, the effect of this problem
is so serious. I think preventing the problem forcibly would be
valuable.
Solution:
This patch lets etcd forbid adding a new node if the operation changes
quorum and the number of changed quorum is larger than a number of
running nodes.
Fixes https://github.com/coreos/etcd/issues/3477

@mitake This is what we wanted to do for a while. We will review and get this merged after 2.2 release today. Thanks!

@xiang90 , thanks, I'm looking forward your review :)
BTW, how do you think about an offline tool (etcdck?) for handling this sort of problem e.g. check and manipulate membership forcibly. If this idea is acceptable, I'd like to work on it.

@mitake @xiang90 this seems a little bit violent.

@AdoHe > this seems a little bit violent.
What is your thoughts about it? I think the idea is reasonable: no one would like to have a cluster which loses quorum and is unrecoverable.

@AdoHe This is actually pretty conservative. These member are not even started. So it is safe.

@xiang90 @yichengq I agree with what @xiang90  commented, we should move this code block to checkLiveness func, this makes more sense. For operations which change quorum if liveness is down, it should be forbidden.

@xiang90 , thanks for your review. I updated this PR based on your comments.

@mitake After discussing with @yichengq, we think this has to be done before the command is submitted into raft. This is for backward compatibility reason. Or by running the same set of commands, etcd 2.1 and etcd 2.2 might have different behavior after this pr.

@xiang90 @yichengq Should this check be done in etcdctl?
BTW, is rolling update from 2.1 -> 2.2 supported? If so, I agree with not doing the check in server side. However, if the rolling update isn't supported, the check wouldn't be harmful.
In addition, seems that v2.2.0 is already released. Do you have a plan of backporting this patch to the stable releases? It also affects the compatibility problem.

@mitake We do support rolling upgrade. I need to think though this more.

@xiang90 How about check in both of server and clients (etcdctl and client/ go library)? The effect of this problem is critical, so checking in all components would be useful for defensive purpose. In addition, you can backport client side change to stable releases and prevent the problem without breaking rolling upgrade.

@mitake The problem is that we do not control all clients/ctls. We only control go client. We may add this checking into server side. However, the checking has to be done before sending the reconfiguration into raft.

@xiang90 So do you agree with checking in both of server and etcd official clients?

@mitake Let do it step by step. I think we can do it at server side before sending the command into raft.

@xiang90 ok, I agree with doing it step by step. So what I need to do in this PR is cleaning the code of calculating nmembers, right?

@xiang90 @yichengq updated this PR for unifying changes into single function.

@xiang90 ah, sorry, seems that I misunderstand your intention. Should I insert the check in outside of raft logic? e.g. EtcdServer.AddMember()?

@mitake i think so. This helps to avoid raft-log replay mismatch in 2.1 and 2.2. If you add the check when applying log, it may happen that 2.2 rejects some add command while 2.1 executes it.
Another problem is that etcd needs to support adding 1 member to 1-member cluster because this is a necessary step in disaster recovery today.

@yichengq I understood. However, I think adding the check to raft side would be better for handling a case of member removal. The deadlock problem can happen even in the removal case like this:

a cluster has N + 1 started nodes and N unstarted nodes with wrong peer URLs, quorum is N + 1
user removes one started node: quorum remains N + 1
the deadlock can happen because a number of started node is less than the quorum

I think serializing the checking in raft state machine can prevent this problem. If we do it in requester's side, two removal request can break quorum potentially.
Am I too pessimistic? :) Of course I'd like to esteem maintainers' opinion.
BTW,

adding 1 member to 1-member cluster
what does it mean? I couldn't understand "1-member".

@yichengq BTW, is it impossible to avoid backporting this change to stable releases?
I know nothing about the release style of etcd, sorry :(

@mitake We have to support rolling upgrade, which means that etcd cluster should ALWAYS be able to upgrade from 2.2 to 2.3. Assuming this PR is merged in 2.3, if we add check in apply process, it may break the upgrade path, and that is bad. That is the reason that avoid backporting doesn't solve this problem.
The idea about removing member is another thing, and it is not related to this PR. Let us do it step by step.
I refer 1-member cluster as the cluster that has only 1 member. Check this cluster restore procedure (https://github.com/coreos/etcd/blob/master/Documentation/admin_guide.md#restoring-the-cluster), and you could find it needs to support changing cluster size from 1 to 2.

@yichengq I missed a case of 2.2 -> 2.3, I understand. I'll move the checking to etcdserver side. I'll consider about the removal case in the future.
And thanks for your explanation about 1-member cluster!

@yichengq @xiang90 updated this PR, changed points:

move the checking logic to EtcdServer
handle a 1-member cluster case

@mitake Good move. It no longer affects upgrade correctness now.
One thing is that you need to fix the broken test. You could see continuous-integration/travis-ci/pr is failing.
Another thing is that this is a HTTP API change, and it may break some people still. For example, users may do automatic tests on etcd and check its behavior when keep adding members. Adding a -strict-check flag could be a good choice. /cc @xiang90

@yichengq ah, I'll fix the broken tests.
How about -strict-membership-check as a name of the option?

-strict-reconfig-check sounds better to me because it is more specific.

-strict-reconfig-check seems good, i'll use the name

I updated this PR.

Added a new option -strict-reconfig-check to etcd. If this option isn't passed to etcd, it will keep the existing behavior.
isReadyToAddNewMember() is now a member function of EtcdServer

I forgot to update the test. I'll fix it soon.

It has reached the state that I am almost OK with it. :+1:

@yichengq updated based on your comments, thanks for review!

@yichengq updated again just for removing the log of etcdserver/server.go line 631

@mitake How do you like the idea to make isReadyToAddNewMember a function of cluster struct? It only uses information in cluster.

@yichengq isReadyToAddNewMember depends on EtcdServer.cfg. I think the function should belong to EtcdServer for now.

updated the messages based on @xiang90 's comments

LGTM. Defer to @yichengq

@mitake Thanks so much for your patient and contribution!

@yichengq on the second thought, moving isReadyToAddNewMember to cluster struct would be a good idea. If we call the func from EtcdServer.AddMember and add a condition on cfg to AddMember, it only depends on cluster. I'll fix it.

updated, just moved isReadyToAddNewMember to cluster struct

@jonboulle should I add a unit test and update this PR soon? If so, it would take for a while because I'm new to testing in go, sorry :(

@mitake I think this should have a test before it is merged. To help you out I've started a test table here for you: https://github.com/jonboulle/etcd/commit/9c3c6650bc7258204276d085e571aefb159d48e9
While writing the tests I also discovered that https://github.com/coreos/etcd/pull/3479/files#diff-62824440a438e1c7efbb9cf76299624eR382 should also be checking the cluster size, so as you can see I updated that line too.

The code is totally awesome now.
@jonboulle Thanks for helping on unit test. ;)
@mitake As jon suggests, it is cool if you could add some unit test. Because we have separate the check logic in a single function, it is pretty simple to add a unit test for the new logic. Table testing is a common test method used in Go, and it could cover multiple test cases in an easy-to-read way.

@jonboulle thanks a lot for your help! I'll enhance your test soon.
@yichengq I'll update this PR after enhancing tests.

@jonboulle @yichengq enhanced test for cases of even members (want success) and empty cluster

updated for gofmt style problem

LGTM.
Thanks for the contribution! The PR is quite fantastic now.

Thanks a lot for your review and help, @xiang90 @yichengq @jonboulle !


reject does not work

Hi,
Thanks for OCMock - it's awesome and I really enjoy using it.  :-)
I can't get reject to work (to verify that a method Is NOT called).  For example both of the following tests pass:
// Test 1
id obj = OCMClassMock([NSObject class]);
[obj hash];
[[obj reject] hash];

// Test 2
id obj = OCMClassMock([NSObject class]);
[[obj reject] hash];
[obj hash];

I would expect Test 1 to fail if reject is working.
This is in plain old XCTestCase.  It also happens in Specta test cases with Expecta.
Any ideas?  Is there another way I can verify that a method is NOT called?
Thanks again, I really appreciate OCMock.
Cheers!

Also, the never syntax doesn't work either as described in https://github.com/erikdoe/ocmock/issues/145 .

It also doesn't work on classes that are descendants of NSObject:
id obj = OCMClassMock([NSString class]);
[obj length];
[[obj reject] length];

Any hints?  :-)  I'd be happy to help however I can ...

What I usually do for now is set up an OCMStub(...).andThrow(testFailedException) since the test will fail if there's an uncaught exception.

Maybe this should be even clearer in the documentation. Reject uses the old syntax and works with the old expect-run-verify approach. You have to tell the mock that a certain method should not be invoked. It is not possible (yet) to verify that has not been invoked.
In your case test 2 should work, and it is expected behaviour that test 1 does pass. The mock you are creating is not strict (ie. nice) and therefore accepts the hash method. Afterwards you tell it to reject all invocations of hash from that point onwards, but you never call hash afterwards.

I got this to work, thanks @erikdoe

I definitely got caught by this as a newcomer. I wanted a 'does not call' type of assert.  @joeydong 's approach worked great.

today, I end up using OCMStrictClassMock more often than the default OCMClassMock to have a tighter test spec


errno unsupported platform

Followed README instructions and copy pasted dom example code
> dub --compiler=ldc2 --build=release
Performing "release" build using ldc2 for x86_64.
bolts 0.11.1: building configuration "library"...
optional 0.10.1: building configuration "unittest"...
stdx-allocator 2.77.3: building configuration "library"...
spasm 0.1.7: building configuration "library"...
webasmtest ~master: building configuration "application"...
/home/webfreak/etc-bin/ldc2-1.14.0-linux-x86_64/bin/../import/core/memory.d(924,24): Deprecation: core.stdc.errno.getErrno is not visible from module memory
/home/webfreak/etc-bin/ldc2-1.14.0-linux-x86_64/bin/../import/core/memory.d(927,24): Deprecation: core.stdc.errno.setErrno is not visible from module memory
/home/webfreak/etc-bin/ldc2-1.14.0-linux-x86_64/bin/../import/core/stdc/errno.d(2042,5): Error: static assert:  "Unsupported platform"

app.d
import spasm.bindings;
import spasm.dom;
import spasm.types;

extern (C) export void _start()
{
  auto elem = document.createElement("div").as!HTMLElement;
  elem.style.backgroundColor = "green";
  elem.innerHTML = "BLA BLA!";
  elem.addEventListener("mouseover",(event){
      console.log("onmouseover");
      console.log(event);
      console.log(event.as!MouseEvent.clientX);
    });

  auto root = document.querySelector("body").front;
  root.appendChild(elem);
}

dub.sdl
name "webasmtest"
description "A minimal D application."
authors "webfreak"
copyright "Copyright © 2019, webfreak"
license "proprietary"
dependency "spasm" version="~>0.1.7"

ldc --version
LDC - the LLVM D compiler (1.14.0):
  based on DMD v2.084.1 and LLVM 7.0.1
  built with LDC - the LLVM D compiler (1.14.0)
  Default target: x86_64-unknown-linux-gnu
  Host CPU: znver1
  http://dlang.org - http://wiki.dlang.org/LDC

(precompiled ldc2 from github with wasm targets)

adding
dflags "-betterC"

to dub.sdl fixed it

Thanks, I always put it in there, but didn't know it was required. Thought it was simply propagated from the parent project. Will update readme.